Crystal 0.31.0 发布,C 的性能,Ruby 的语法

栏目: 软件资讯 · 发布时间: 6年前

内容简介: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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Ruby

Programming Ruby

Dave Thomas、Chad Fowler、Andy Hunt / Pragmatic Bookshelf / 2004-10-8 / USD 44.95

Ruby is an increasingly popular, fully object-oriented dynamic programming language, hailed by many practitioners as the finest and most useful language available today. When Ruby first burst onto the......一起来看看 《Programming Ruby》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具