Crystal 编程语言 1.5 发布

Crystal 1.5编程语言已经发布,其开发人员试图将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语言的交互式代码执行。

主要变化:

  • 编译器添加了对抽象方法的实现及其定义中的参数名称之间的对应关系的检查。 名称不匹配现在会生成警告:abstract class FooAbstract abstract def foo(number : Int32) : Nil end class Foo < FooAbstract def foo(name : Int32) : Nil p name end end 6 | def foo(name : Int32) : Nil ^— 警告:位置参数 'name' 对应于重写方法 FooAbstract#foo(number : Int32) 的参数 'number',它具有不同的名称,可能会影响命名参数传递
  • 当您将变量的值分配给无类型方法的参数时,该参数现在受到该变量的类型的约束。 class Foo @x : Int64 definitialize(x) @x = x # 参数 x 的类型为 @x end end
  • 允许向方法或宏的参数添加注释。 def foo(@[也许未使用] x); 结束#确定
  • 添加了对使用常量作为元组中的索引和名称的支持。 KEY = "s" foo = {s: "String", n: 0} 放置 foo[KEY].size
  • 向文件 API 添加了新的 File#delete? 方法,用于删除文件和目录。 和 Dir#delete?,如果文件或目录不存在则返回 false。
  • 加强了对 File.tempfile 方法的保护,该方法现在不允许在构成文件名的字符串中出现空字符。
  • 添加了 NO_COLOR 环境变量以禁用编译器和解释器输出中的颜色突出显示。
  • 显着改进了口译模式下的工作。

来源: opennet.ru

添加评论