内容简介:Crystal 0.31.0 发布了。Crystal 是一门基于 LLVM 的可编译的静态类型语言,它的整体设计尽可能地接近 Ruby 的体验,语法与各种标准库的接口都几乎和 Ruby 一样(但兼容 Ruby 不是它的目标)。 开发团队表示他们热...
Crystal 0.31.0 发布了。Crystal 是一门基于 LLVM 的可编译的静态类型语言,它的整体设计尽可能地接近 Ruby 的体验,语法与各种标准库的接口都几乎和 Ruby 一样(但兼容 Ruby 不是它的目标)。
开发团队表示他们热爱 Ruby 编写代码的效率,又倾心于 C 语言的性能,所以打造的 Crystal 语言给开发者提供了 Ruby 一样的语法体验,而且还拥有 C 一样的性能。
新版本附带多线程预览、性能改进以及所有常规 std-lib 中的常规修复和改进。以下是此版本的一些更新亮点:
语言变更
Crystal 0.31.0 版本有一种新的、更简洁的方法来声明方法中未捕获的块的类型限制。
无名参数&现在可以出现在列表的末尾。它可以有选择地具有类型限制,编译器和 doc 工具将使用该类型限制。
def foo(x, y, & : Int32 -> Int32)
end
编译器
从 Crystal 0.29 开始,编译器可以发出警告。由于默认设置已更改为 --warnings=all,因此该功能现已退出使用。
LLVM 8.0 在 Linux 官方软件包中使用。 #8155
标准库
多线程(Multithreading)
这是最令人期待的功能之一,即使在合并 #8112 之后,也有一些迭代可修复极端情况并稳定运行时间。
数字(Numeric)
很久以前曾宣布 std-lib 的数字部分进行了一些更改,终于在此发行版中得到了实现。
默认情况下处理溢出。 Int32::MAX+1 将不再环绕。如果需要非溢出操作,则可以使用 Int32::MAX&+1。与 - 和 * 相同。在某些体系结构中,LLVM 需要compiler-rt 库。官方表示移植了所需的内容,因此没有外部依赖性。如果受到新的默认行为的阻止,请使用 -Ddisable_overflow 来保持与 0.30 相同的语义,或者使用 -Dskip_crystal_compiler_rt 来不包含 compiler-rt 端口并链接到其另一个版本。另外,disable_overflow 标志是临时的。
/ 将始终代表算术除法。这也意味着其结果将是浮点数(某种形式)。表达式 a.sum/a.size 将返回平均值,无论 a 中使用的是哪种数字类型。如果要保留左侧运算符类型的整数除法,请使用 //。
集合(Collections)
集合中的主要变化与性能有关。数组和哈希值的变化见 #8017、#8042、#8048、#8087 和 #8116。
序列化(Serialization)
XML 有重大更改,但主要 API 并未更改。可能更具影响力的变更是,JSON 和 YAML 反序列化现在可以处理具有 nilable 字段的 NamedTuple。
Files
优化不仅存在于集合中。Path#join 和 Dir.glob 中也都存在改进。 #8078、#8082、#8081
Networking
不建议使用 HTTP::Server::Response#respond_with_error,而推荐使用 #respond_with_status,它还将处理连接的最终状态和默认状态描述。
内置的 HTTP 服务器将以更受控的方式响应具有较长 URI 或较大标头字段的请求。响应将分别是 414 Request-URI too long 和 431 Request Header Fields Too Large。
Other deprecations
Markdown 模块不再在 std-lib 中公开,它仍在内部使用。目前,最好的替代品是 icyleaf/marked。
Crystal-db 0.7.0
此次还提供了新版本的 crystal-lang/crystal-db。解决了一些可能导致创建的连接数量达到峰值的并发问题,这也是多线程上下文的重要更新。
为避免支持带有 Array 值的列的驱动程序存在歧义,还需要进行重大更改。 db.query(“ SELECT ...”,[1,2])现在表示单个参数:[1,2],而 db.query(“ SELECT ...”,args:[1,2])表示将两个参数传递给查询。
发布公告:https://crystal-lang.org/2019/09/23/crystal-0.31.0-released.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Crystal 0.30.1 发布,C 的性能,Ruby 的语法
- PrismJS 1.13.0 发布,轻量级高性能的语法着色库
- 轻量级 JavaScript 框架 Vue 2.6 发布,新语法和性能优化
- 轻量级 JavaScript 框架 Vue 2.6 发布,新语法和性能优化
- Swift语法快速入门(一)之 Swift基础语法
- 在ES6中使用扩展语法有什么好处?它与rest语法有什么不同?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
设计模式之禅(第2版)
秦小波 / 机械工业出版社 / 2014-2-25 / 89.00元
本书是设计模式领域公认的3本经典著作之一,“极具趣味,容易理解,但讲解又极为严谨和透彻”是本书的写作风格和方法的最大特点。第1版2010年出版,畅销至今,广受好评,是该领域的里程碑著作。深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解将不同的模式组合使用的方法。第2版在第1版的基础上有两方面的改进,一方面结合读者的意见和建议对原有内容中......一起来看看 《设计模式之禅(第2版)》 这本书的介绍吧!