3 điểm bởi GN⁺ 2025-11-24 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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ằng thread-wait
  • Bộ bao black-box ngă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-linklet có 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 'results thì có thể truy xuất kết quả về sau qua thread-wait
  • Bộ bao black-box ngă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-linklet có 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

Yêu cầu phản hồi và quảng bá

1 bình luận

 
GN⁺ 2025-11-24
Ý 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

    • Tôi cũng đã bất ngờ khi đọc ghi chú phát hành. Thật vui khi cuối cùng kiểu đa luồng này cũng được đưa vào
      places không đủ linh hoạt. Không thể truyền lambda một cách dễ dàng, và serializable-lambda hoạ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àm
      Vì 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 tò mò mọi người làm loại dự án nào với Racket
      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ì
    • Việc phải đến phiên bản 9 mới thêm luồng song song khiến tôi thấy hơi mâu thuẫn với cách trang chủ giới thiệu Racket là một “ngôn ngữ trưởng thành và được trau chuốt
  • 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

    • Video thực sự rất hay
  • 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

    • Tôi từng thích nó, nhưng đã rời đi vì code quá chậm và nặng
      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ẹ
    • Khi bạn nói “phần mềm”, tôi tò mò không biết bạn đang nói đến bản thân ngôn ngữ hay là tooling
  • 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

  • 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ữ

    • Tôi nghe điều này rất nhiều, nhưng thực tế không có nhiều nhà phát triển PL dùng Racket để 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

    • IDE không phải là bản thân ngôn ngữ
      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ứckho 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ó
    • Bạn có thể xem phần tích hợp Emacs rất xuất sắc tại racket-mode.com
  • 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ó

    • Tôi tò mò tên môn học đó là gì
    • Nhưng đa số nói rằng sau khi tốt nghiệp họ sẽ không bao giờ dùng Racket nữa, điều đó khá đáng suy ngẫm