Crystal 编程语言 1.2 发布

Crystal 1.2编程语言已经发布,其开发人员试图将Ruby语言开发的便利性与C语言固有的高应用程序性能结合起来。 Crystal 的语法接近但不完全兼容 Ruby,尽管有些 Ruby 程序无需重新编写即可运行。 编译器代码是用 Crystal 编写的,并根据 Apache 2.0 许可证分发。

该语言使用静态类型检查,无需在代码中显式指定变量和方法参数的类型即可实现。 Crystal 程序被编译成可执行文件,在编译时进行宏评估和代码生成。 在 Crystal 程序中,允许连接用 C 语言编写的绑定。 代码执行的并行化是使用“spawn”关键字进行的,它允许您以称为纤维(Fiber)的轻量级线程的形式以异步模式运行后台任务,而不会阻塞主线程。

标准库提供了大量通用函数,包括用于处理 CSV、YAML 和 JSON 的工具、用于构建 HTTP 服务器的组件以及 WebSocket 支持。 在开发过程中,可以方便地使用“crystal play”命令,该命令会生成一个Web界面(默认为localhost:8080),用于Crystal语言的交互式代码执行。

主要变化:

  • 添加了将泛型类的子类分配给父类的元素的功能。 类 Foo(T); 结束类 Bar(T) < Foo(T); 结束 x = Foo x = 酒吧
  • 宏现在可以使用下划线来忽略 for 循环中的值。 {% for _, v, i in {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • 在宏中添加了“file_exists?”方法。 检查文件是否存在。
  • 标准库现在支持 128 位整数。
  • 添加了 Indexable::Mutable(T) 模块,其中实现了 BitArray 和 Deque 等集合的高级操作。 ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • 添加了 XML::Node#namespace_definition 方法以从 XML 中提取特定的命名空间。
  • IO#write_utf8 和 URI.encode 方法已被弃用,应替换为 IO#write_string 和 URI.encode_path。
  • 对 32 位 x86 架构的支持已移至第二级(不再生成现成的包)。 正在准备转移到 ARM64 架构的第一级支持。
  • 确保对 Windows 平台的全面支持的工作仍在继续。 添加了对 Windows 套接字的支持。
  • 为 macOS 添加了通用包,可在配备 x86 处理器的设备和配备 Apple M1 芯片的设备上运行。

来源: opennet.ru

添加评论