Crystal 是一种通用的、面向对象的编程语言,由 Ary Borenszweig、Juan Wajnerman、Brian Cardiff 和 300 多名贡献者设计开发。Crystal 的语法受到 Ruby 的启发,属于编译语言,具有静态类型检查功能,但一般不需要指定变量或方法参数的类型,可实现接近 C/C++ 的性能。它的类型由一个先进的全局类型推理算法来解决。
Crystal 1.7.0 已发布,此版本包含自 1.6.2 发布以来 38 位贡献者提供的 152 项更改。主要内容如下:
解释器 REPL #12738
解释器的 REPL 接口在可用性方面得到了重大改进。命令提示符现在支持多行输入、命令历史记录和多个键绑定。
由于技术原因,解释器目前仅在 brew 中默认提供。 对于其他平台,需要在 make 选项中使用 interpreter=1 ,从源代码编译。
带有 PCRE2 的正则表达式 #12790
Crystal 依赖 libpcre 作为在 Regex 中执行正则表达式的引擎,1.7.0 版本添加了对其后续版本 libpcre2 的支持。使用上没有重大差异,PCRE2 大部分是向后兼容的,预计不会有很多问题。
PCRE2 将在下一个版本中隐式启用,可能成为默认引擎。 当更新的库不可用时,PCRE 将继续作为后备引擎。
其他杂项
语言
- Lib 函数现在在顶级宏中可见 (#12848)
- 添加了 ArrayLiteral#-(other) 和 TupleLiteral#-(other) (#12646)
- 注解现在支持 @[Deprecated] 注解 (#12557)
- 删除了 oct/bin 浮点文字,该数字语法已被破坏,且不是很有用 (#12687)
编译器
- ⚠️ 过时的 FreeBSD 11 兼容性已被删除 (#12612)
标准库
- ⚠️ File.real_path 更名为 File.realpath, 旧版本已弃用,但在下一个主要版本之前一直有效 (#12552)
- ⚠️ libXML2 的错误处理不会再将错误泄漏到当前上下文之外 (#12663, #12795)
- File#flock_shared 和 File#flock_exclusive 的阻塞不再阻塞线程 (#12861)
- Windows 现在也支持 File#flock_shared 和 File#flock_exclusive (#12766)
- BigDecimal#to_s 支持科学记数法 (#10805)
有关更多详细信息,请访问更新日志 。