Crystal 是一种通用的、面向对象的编程语言,由 Ary Borenszweig、Juan Wajnerman、Brian Cardiff 和 300 多名贡献者设计开发。Crystal 的语法受到 Ruby 的启发,属于编译语言,具有静态类型检查功能,但一般不需要指定变量或方法参数的类型,可实现接近 C/C++ 的性能。它的类型由一个先进的全局类型推理算法来解决。
最新发布的 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
其他重要变更