# Racket v9.0

> Clean Markdown view of GeekNews topic #24572. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=24572](https://news.hada.io/topic?id=24572)
- GeekNews Markdown: [https://news.hada.io/topic/24572.md](https://news.hada.io/topic/24572.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-11-24T10:06:25+09:00
- Updated: 2025-11-24T10:06:25+09:00
- Original source: [blog.racket-lang.org](https://blog.racket-lang.org/2025/11/racket-v9-0.html)
- Points: 3
- Comments: 1

## Topic Body

- **Racket 9.0**은 병렬 스레드(Parallel Threads)를 도입한 주요 릴리스로, 기존의 그린 스레드와 futures, places 지원을 확장한 형태  
- 새 스레드는 **`#:pool` 인자**로 생성할 수 있으며, **`#:keep 'results`** 설정 시 `thread-wait`로 결과를 나중에 조회 가능  
- **`black-box` 래퍼**는 최적화 컴파일러가 특정 연산을 제거하지 않도록 방지해 벤치마크 정확도를 높임  
- **`decompile-linklet` 함수**는 링크렛(linklet)을 다시 S-식으로 변환할 수 있으며, **`processor-count`** 는 병렬 수를 반환하도록 변경  
- AArch64용 **“natipkg” 패키지**, **Weibull 분포 추가**, **문서 개선** 등 다양한 업데이트 포함  

---
### Racket 9.0 주요 변경 사항
- 이번 릴리스에서 **병렬 스레드(Parallel Threads)** 기능이 새로 도입됨  
  - Racket은 기존에 그린 스레드, futures, places를 지원했으나 병렬 스레드는 주요 확장 기능로 추가됨  
  - 병렬 스레드는 `#:pool` 인자를 통해 생성 가능하며, `#:keep 'results`로 설정 시 `thread-wait`를 통해 결과를 나중에 조회 가능  

- **`black-box` 래퍼**는 최적화 컴파일러가 특정 계산을 완전히 제거하지 않도록 방지  
  - 벤치마크 수행 시 정확한 성능 측정을 보장하는 데 유용함  

- **`decompile-linklet` 함수**는 링크렛(linklet)을 다시 **S-식(s-expression)** 으로 매핑 가능  
  - 코드 분석 및 디버깅 시 내부 표현을 복원할 수 있는 기능 제공  

- **BC Racket**에서 `processor-count` 함수가 항상 병렬 프로세서 수를 반환하도록 변경  
  - 병렬 실행 환경에서 일관된 프로세서 수 확인 가능  

- **AArch64용 “natipkg” 패키지**가 새로 배포되어 패키지 빌드 및 테스트 인프라에 활용 가능  

### 추가 개선 사항
- **Check Syntax** 기능이 구문 객체의 “origin” 필드 내 더 깊이 중첩된 식별자 추적 지원  
- **`math` 라이브러리**에 **Weibull 분포** 추가  
- 다수의 **버그 수정 및 문서 개선** 포함  

### 커뮤니티 및 참여 안내
- 이번 릴리스에는 **Alexander Shopov**, **Bogdan Popa**, **Matthew Flatt**, **Matthias Felleisen** 등 여러 개발자가 기여  
- Racket은 **커뮤니티 기반 오픈소스 프로젝트**로, 신규 기여자를 환영  
  - 참여 방법은 [racket/README.md](https://github.com/racket/racket/blob/master/README.md#contributing)에서 확인 가능  

### 피드백 및 홍보 요청
- 질문과 토론은 **Racket Discourse** 또는 **Discord** 커뮤니티에서 가능  
- 사용자 및 플랫폼별 패키지 관리자에게 릴리스 소식을 공유하도록 권장  
  - 공식 다운로드: [https://download.racket-lang.org](https://download.racket-lang.org)  
  - 릴리스 공지: [https://blog.racket-lang.org/2025/11/racket-v9-0.html](https://blog.racket-lang.org/2025/11/racket-v9-0.html)

## Comments



### Comment 46718

- Author: neo
- Created: 2025-11-24T10:06:25+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=46023460) 
- 이번 소식의 핵심은 **Racket이 이제 병렬 스레드를 지원**하게 된 것임  
  예전에도 places 같은 병렬화 방법이 있었지만, 이번 방식은 훨씬 가볍고 익숙함  
  Racket으로 뭔가를 만드는 걸 좋아하기 때문에, 이로 인해 Racket의 활용 영역이 넓어지는 건 반가운 일임
  - 릴리스 노트를 읽으면서 나도 놀랐음. 드디어 이런 형태의 **멀티스레딩**이 들어갔다는 게 반가움  
    places는 유연하지 못했음. 람다를 쉽게 전달할 수 없고, serializable-lambda가 전염성 있게 작동해서 실행 시점에는 함수가 아니라 데이터만 보낼 수 있었음  
    그래서 여러 place에 작업을 분산시키는 구조를 만들기 어려웠음  
    이번 새로운 동시성 기능으로는 그게 가능해지길 바람  
    그동안은 이런 이유로 Racket 대신 **GNU Guile**을 써왔음. Guile은 futures나 fibers를 통해 멀티코어 활용이 훨씬 안정적이었음  
    나도 futures를 이용해 병렬 의사결정 트리 모델을 만들어봤는데 거의 선형적인 속도 향상을 얻었음
  - 어떤 종류의 프로젝트를 Racket으로 만드는지 궁금함  
    나는 **Clojure 개발자**라 Lisp 계열을 좋아함. Racket으로는 어떤 걸 만드는지 알고 싶음
  - 버전 9에서야 병렬 스레드가 추가된 건, 홈페이지에서 Racket을 “**성숙하고 다듬어진 언어**”라고 소개하는 것과 좀 모순된다고 느낌

- [이 영상](https://youtu.be/LXhsutNKhec?si=OTC6sn5GNp1-ZxqU)을 보면, Racket은 첫 언어가 아니라면 어렵게 느껴질 수 있지만, 아이들도 배울 수 있을 만큼 쉬운 언어임
  - 정말 멋진 영상임

- 나는 Racket을 정말 좋아함  
  재미로 [Racket 관련 책](https://leanpub.com/racket-ai/read)을 썼고, 온라인에서 무료로 읽을 수 있음  
  Scheme 계열 언어 중에서는 **Racket과 Gerbil**을 추천함  
  Racket은 IDE가 좋고 표준 및 서드파티 라이브러리가 풍부해서 초보자에게 적합하고, Gerbil은 시스템 프로그래밍이나 네트워크 유틸리티에 좋음

- Racket은 정말 멋진 언어임  
  배우기 좋은 **Lisp 계열**이고, DrRacket IDE로 과제를 하던 추억이 아직도 남아 있음

- 나는 80년대 중반에 처음 Lisp을 실험해봤고, 이후에도 새로운 사고방식과 프로그래밍 기법을 배우기 위해 종종 돌아오곤 했음  
  Racket도 여러 번 시도했지만, 뭔가 소프트웨어 자체가 나와 맞지 않았음  
  꾸준히 써보면 괜찮을지도 모르겠지만, 큰 프로젝트를 Racket으로 작성하는 건 아직 상상이 안 됨
  - 예전엔 좋아했지만, 코드가 너무 **느리고 무거워서** 떠났음  
    Python보다도 느렸고, Chez Scheme으로 재작성된 이후엔 개선됐을지도 모르지만, 지금은 빠르고 가벼운 Common Lisp을 씀
  - “소프트웨어”라고 할 때 언어 자체를 말하는 건지, 아니면 **툴링**을 말하는 건지 궁금함

- Racket을 알게 된 건 **John Carmack**이 10년 전 Oculus 관련 작업을 Racket으로 했다는 걸 보고였음  
  [관련 영상](https://youtu.be/ydyztGZnbNs?t=412)
  - 참고로 **HN은 Arc로 작성되었고**, Arc는 Racket으로 만들어졌음  
    [Arc 위키 문서](https://en.wikipedia.org/wiki/Arc_(programming_language))

- Lisp은 그 자체로 **메타 언어**이고, Racket은 그보다 더 메타함  
  사실상 **언어 제작 키트**라고 할 수 있음
  - 이런 말을 자주 들었지만, 실제로 Racket으로 언어를 만드는 PL 개발자는 많지 않음  
    내가 PL 수업을 가르칠 때 Racket을 써봤는데, 학생들은 Java나 Python에 익숙해서 Lisp 문법에 어려움을 겪었음  
    그래서 Racket이 정확히 **누구를 위한 언어인지** 잘 모르겠음

- **Bogdan Popa**의 블로그([defn.io](https://defn.io/))에는 Racket 관련 흥미로운 정보가 많음  
  새 스레딩 기능을 직접 써보길 기대 중임

- Racket을 몇 번 시도해봤지만, IDE가 너무 **직관적이지 않고 어색**했음  
  이게 의도된 디자인인지, 아니면 단순히 더 나은 대안이 없어서 그런 건지 궁금함
  - IDE는 언어 그 자체가 아님  
    Racket은 VSCode(Magic Racket, Langserver), Emacs(Racket Mode), Vim 등에서도 잘 지원됨  
    [공식 문서](https://download.racket-lang.org/releases/9.0/doc/guide/other-editors.html)와 [Langserver 저장소](https://github.com/jeapostrophe/racket-langserver)를 참고할 수 있음  
    DrRacket에는 다른 IDE에 없는 **매크로 스테퍼** 같은 기능이 있어서 여전히 쓸 만함
  - [racket-mode.com](https://racket-mode.com)에서 아주 훌륭한 **Emacs 통합**을 확인할 수 있음

- Racket은 재밌는 언어임  
  우리 대학에서는 1학년 CS 수업에서 Racket의 교육용 버전을 사용함  
  어떤 학생은 싫어하지만, 조용히 좋아하는 사람도 있음
  - 그 수업 이름이 뭐였는지 궁금함
  - 하지만 대부분은 졸업 후에는 다시는 Racket을 쓰지 않겠다고 함, 그게 꽤 의미심장함
