最新发布的 1.4.0 版本包含错误修复和功能改进,涉及到语法、标准库、集合、加密、文件、语法宏、网络、运行时和规范等,详情查看 release note。
值得关注的变化 初步支持 WebAssembly 1.4.0 版本提供了对 WebAssembly 支持的 MVP 实现(最小可行性产品),目前只支持将 Crystal 程序编译为 WebAssembly,以及与基于 WASI 的 LibC 连接,尚未支持浏览器。更多技术细节查看此 PR。 对实例和类变量提供更好的类型推断 在此版本之前,像下面的简单程序无法推断出实例变量的类型:class DisplayHello
DELAY = 10.milliseconds
@timer_countdown = DELAY
end
在新版本中可正常编译,正确推断出@timer_countdown
变量的类型为Time::Span
。
class DisplayHello
def initialize(delay : Time::Span)
@timer_countdown = delay + 10.seconds
end
end
点此查看更多技术细节。
其他重要变更
- 支持 LLVM 14 (#11905)
- 面向
Int128
提供完整的编译器支持 (#11576) - 在
BigFloat#to_s
中提供对科学计数法的支持 (#10632) - 不再支持无文档 flag
skip_abstract_def_check
(#9217) - ……