Racket – 面向语言的编程语言 – 8.17 版本现已发布
Racket v8.17
由 Stephen De Gabrielle 发布
我们很高兴地宣布,https://download.racket-lang.org/ 现已提供 Racket v8.17 版本。
此版本的新特性:
- 新的
drracket-core
包提供了一个依赖项更少的 drracket 版本。 (https://github.com/racket/drracket/commit/ae16d6bc6e00a9498313cff035537ac98ef71194) - Typed Racket 支持 treelists。
- 包管理器在需要时计算包的 checksums,允许使用和自动升级没有 checksums 的包。
bitwise-first-bit-set
函数返回给定数字的补码表示中设置的最小位。(https://docs.racket-lang.org/reference/generic-numbers.html#%28def.%28%28quote.~23~25kernel%29._bitwise-first-bit-set%29%29)- 更新后的
dynamic-require
函数通过允许使用 syntax-thunk (或 ’eval) 来简化语法绑定的使用。(https://docs.racket-lang.org/reference/Module_Names_and_Loading.html#%28def.%28%28quote.~23~25kernel%29._dynamic-require%29%29) error-module-path->string-handler
参数允许自定义错误消息中模块路径的显示。 (https://docs.racket-lang.org/reference/exns.html#%28def.%28%28quote.~23~25kernel%29._error-module-path-~3estring-handler%29%29)- 通过使用 MSVCRT/UCRT 库,改进了 Windows 平台上某些 numeric functions (
sin
、cos
等) 的精度。 - 在 Racket CS 实现中,对于长字符串列表,
string-append
函数的性能得到提升,内存使用量减少。 对于长度为 100 万的列表,差异非常明显。(https://docs.racket-lang.org/reference/strings.html#%28def.%28%28quote.~23~25kernel%29._string-append%29%29) - TCP ports 使用
SO_KEEPALIVE
,指示内核在等待数据时发送周期性消息,以检查连接是否仍然响应。 - 在 Windows 中,使用终端的 Racket 代码在使用 SetConsoleMode 后可以接收鼠标事件作为虚拟终端字符。(这在 macOS 和 Linux 上也已经可以实现。)有关相关示例代码,请参见 tui-term 包。
- 可以使用
#:replace-malformed-surrogate?
关键字来指定 JSON 输入中格式错误的 unicode 代理项的替换。(https://docs.racket-lang.org/json/index.html#%28part..Parsing.J.S.O.N_.Text_into_.J.S-.Expressions%29) - http-client 模块不再为没有主体的请求发送 “Content-Length: 0”。
- demodularizer (
compiler/demod
) 可以删除更多未使用的赋值。 - Redex 中的几个 judgment 渲染形式被函数替换,从而可以进行更方便的抽象。
- 当发行版不包含教学语言时,DrRacket 的语言对话框配置将移至首选项对话框,“语言”菜单将消失。
- math library 对块对角矩阵有更好的支持,包括 Racket 和 Typed Racket。
- math library 包含 acos 和 matrix-(cos-)angle 的改进实现。
- stepper 再次适用于
big-bang
程序。(https://docs.racket-lang.org/teachpack/2htdpuniverse.html#(part._world._interactive)) - 还有许多其他的修复和文档改进!
感谢
以下人员为本次发布做出了贡献: Alexander Shopov, Andrei Dorian Duma, Bert De Ketelaere, Bob Burger, Bogdan Popa, Bogdana Vereha, Cameron Moy, Chung-chieh Shan, Cutie Deng, D. Ben Knoble, Dario Hamidi, Dominik Pantůček, Gustavo Massaccesi, halfminami, Jacqueline Firth, Jason Hemann, Jens Axel Søgaard, Joel Dueck, John Clements, Jordan Harman, Marc Nieper-Wißkirchen, Matthew Flatt, Matthias Felleisen, Mike Sperber, Noah Ma, owaddell-ib, Philippe Meunier, Robby Findler, Ryan Culpepper, Ryan Ficklin, Sam Phillips, Sam Tobin-Hochstadt, Shu-Hung You, sogaiu, Sorawee Porncharoenwase, Stephen De Gabrielle, Vincent Lee, and Wing Hei Chan.
Racket 是一个社区开发的开源项目,我们欢迎新的贡献者。 请参阅 racket/README.md 了解如何参与这个令人惊叹的项目。
欢迎反馈
欢迎在 Discourse 或 Discord 上的 Racket 社区提问和讨论。
请分享
如果可以,请帮助向用户和特定于平台的仓库打包人员传播该消息
Racket - 面向语言的编程语言 - 版本 8.17 现已从 https://download.racket-lang.org 提供
有关发行公告和亮点,请参见 https://blog.racket-lang.org/2025/05/racket-v8-17.html。