Racket v9.0
(blog.racket-lang.org)- Racket 9.0 là một bản phát hành lớn giới thiệu luồng song song (Parallel Threads), mở rộng hỗ trợ hiện có cho green threads, futures và places
- Có thể tạo luồng mới bằng đối số
#:pool, và khi đặt#:keep 'results, có thể truy xuất kết quả sau đó bằngthread-wait - Bộ bao
black-boxngăn trình biên dịch tối ưu hóa loại bỏ một số phép toán nhất định, giúp tăng độ chính xác của benchmark - Hàm
decompile-linkletcó thể chuyển linklet trở lại dạng S-biểu thức, vàprocessor-countđã được thay đổi để trả về số lượng song song - Bao gồm nhiều cập nhật khác như gói “natipkg” cho AArch64, bổ sung phân phối Weibull, và cải thiện tài liệu
Các thay đổi chính trong Racket 9.0
-
Trong bản phát hành này, tính năng luồng song song (Parallel Threads) được giới thiệu mới
- Trước đây Racket đã hỗ trợ green threads, futures và places, còn luồng song song được bổ sung như một tính năng mở rộng quan trọng
- Có thể tạo luồng song song thông qua đối số
#:pool, và nếu đặt#:keep 'resultsthì có thể truy xuất kết quả về sau quathread-wait
-
Bộ bao
black-boxngăn trình biên dịch tối ưu hóa loại bỏ hoàn toàn một số phép tính nhất định- Điều này hữu ích để đảm bảo đo hiệu năng chính xác khi chạy benchmark
-
Hàm
decompile-linkletcó thể ánh xạ linklet trở lại thành S-biểu thức (s-expression)- Cung cấp khả năng khôi phục biểu diễn nội bộ khi phân tích và gỡ lỗi mã
-
Trong BC Racket, hàm
processor-countđã được thay đổi để luôn trả về số lượng bộ xử lý song song- Giúp kiểm tra số lượng bộ xử lý một cách nhất quán trong môi trường thực thi song song
-
Gói “natipkg” cho AArch64 mới được phát hành để dùng cho hạ tầng build và kiểm thử gói
Các cải tiến bổ sung
- Tính năng Check Syntax hỗ trợ theo dõi các định danh được lồng sâu hơn trong trường “origin” của đối tượng cú pháp
- Thư viện
mathđược bổ sung phân phối Weibull - Bao gồm nhiều bản sửa lỗi và cải thiện tài liệu
Cộng đồng và hướng dẫn tham gia
- Nhiều nhà phát triển đã đóng góp cho bản phát hành này, gồm Alexander Shopov, Bogdan Popa, Matthew Flatt, Matthias Felleisen và những người khác
- Racket là một dự án mã nguồn mở dựa trên cộng đồng, và luôn chào đón người đóng góp mới
- Có thể xem cách tham gia tại racket/README.md
Yêu cầu phản hồi và quảng bá
- Có thể đặt câu hỏi và thảo luận trong cộng đồng Racket Discourse hoặc Discord
- Khuyến khích chia sẻ tin phát hành này tới người dùng và các trình quản lý gói theo từng nền tảng
- Tải xuống chính thức: https://download.racket-lang.org
- Thông báo phát hành: https://blog.racket-lang.org/2025/11/racket-v9-0.html
1 bình luận
Ý kiến Hacker News
Điểm cốt lõi của tin này là Racket giờ đã hỗ trợ luồng song song
Trước đây cũng đã có các cách song song hóa như places, nhưng cách lần này nhẹ hơn nhiều và quen thuộc hơn
Vì tôi thích dùng Racket để làm mọi thứ, nên việc này mở rộng phạm vi ứng dụng của Racket là điều rất đáng mừng
places không đủ linh hoạt. Không thể truyền lambda một cách dễ dàng, và
serializable-lambdahoạt động theo kiểu “lây lan”, nên đến lúc chạy thì chỉ có thể gửi dữ liệu chứ không phải hàmVì vậy rất khó xây dựng cấu trúc phân phối công việc qua nhiều place
Hy vọng tính năng đồng thời mới lần này sẽ giải quyết được điều đó
Trong thời gian qua, vì lý do này mà tôi đã dùng GNU Guile thay vì Racket. Guile ổn định hơn nhiều trong việc tận dụng đa lõi thông qua futures hoặc fibers
Tôi cũng từng dùng futures để tạo một mô hình cây quyết định song song và đạt được mức tăng tốc gần như tuyến tính
Tôi là lập trình viên Clojure nên rất thích họ ngôn ngữ Lisp. Tôi muốn biết mọi người dùng Racket để làm gì
Xem video này thì thấy Racket có thể tạo cảm giác khó nếu nó không phải ngôn ngữ đầu tiên của bạn, nhưng cũng đủ dễ để trẻ em học được
Tôi thực sự rất thích Racket
Tôi đã viết một cuốn sách về Racket cho vui, và có thể đọc miễn phí online
Trong các ngôn ngữ họ Scheme, tôi đề xuất Racket và Gerbil
Racket phù hợp cho người mới bắt đầu nhờ IDE tốt cùng thư viện chuẩn và bên thứ ba phong phú, còn Gerbil thì hợp cho lập trình hệ thống hoặc tiện ích mạng
Racket thực sự là một ngôn ngữ rất tuyệt
Đây là một ngôn ngữ thuộc họ Lisp rất tốt để học, và tôi vẫn còn nhớ những ngày làm bài tập với IDE DrRacket
Tôi lần đầu thử Lisp vào khoảng giữa thập niên 80, và sau đó thỉnh thoảng vẫn quay lại để học những cách tư duy và kỹ thuật lập trình mới
Tôi cũng đã thử Racket vài lần, nhưng có gì đó ở phần mềm này không hợp với tôi
Có thể nếu dùng lâu dài thì sẽ ổn, nhưng tôi vẫn chưa thể hình dung việc viết một dự án lớn bằng Racket
Nó còn chậm hơn cả Python, và sau khi được viết lại bằng Chez Scheme thì có thể đã cải thiện, nhưng giờ tôi dùng Common Lisp vì nó nhanh và nhẹ
Tôi biết đến Racket là vì thấy John Carmack đã dùng nó cho công việc liên quan đến Oculus cách đây 10 năm
Video liên quan
Bài viết wiki về Arc
Lisp tự thân đã là một siêu ngôn ngữ, còn Racket thì còn “meta” hơn nữa
Có thể xem nó gần như là một bộ công cụ tạo ngôn ngữ
Khi tôi dạy môn PL, tôi đã dùng Racket, nhưng sinh viên vốn quen Java hay Python nên gặp khó với cú pháp Lisp
Vì vậy tôi không rõ chính xác Racket là ngôn ngữ dành cho ai
Blog của Bogdan Popa (defn.io) có rất nhiều thông tin thú vị về Racket
Tôi đang mong được tự tay thử tính năng luồng mới
Tôi đã thử Racket vài lần, nhưng IDE quá khó hiểu và gượng gạo
Tôi không rõ đây là thiết kế có chủ ý hay chỉ đơn giản là vì không có lựa chọn nào tốt hơn
Racket cũng được hỗ trợ tốt trên VSCode (Magic Racket, Langserver), Emacs (Racket Mode), Vim và nhiều nơi khác
Bạn có thể tham khảo tài liệu chính thức và kho lưu trữ Langserver
DrRacket vẫn đáng dùng vì có những tính năng như macro stepper mà các IDE khác không có
Racket là một ngôn ngữ thú vị
Ở trường đại học của chúng tôi, phiên bản giáo dục của Racket được dùng trong lớp CS năm nhất
Có sinh viên ghét nó, nhưng cũng có những người âm thầm thích nó