Crystal 0.31.0 发布,C 的性能,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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
F# 4.7 发布,改进编译器和核心库的基础结构
F# 4.7已经发布,该版本重点是编译器和核心库的基础结构更改,首先需要安装: 最新版.NET Core 3.0 最新版Visual Studio 如果你是 Visual Studio 用户,默认情况下将会获取到 .NET Core。一旦安装了 .NET Core 或 Visual Studio 2019,就可以在 Visual Studio、Visual Studio for Mac 或 Visual Studio Code中使用 F# 4.7。具体更新内容如下: FSharp.Core支持.NET Standard 2.0 从 FSharp.Core 4.7.0 和 F# 4.7 开始,放弃对 .NET Standard 1.6 的支持。FSharp.Core开始支持 .NET Standard 2.0,而在 .NET Core 上具有的特性: 依赖关系更加简单(特别是如果使用 Paket 这样的工具) 在FSharpFunc<'T, 'TResult>上的FromConverter和ToConverter静态方法 FSharpFunc<'T, 'TResult&...
- 下一篇
ASP.NET Core 3.0 发布
随着.NET Core 3.0 的 GA,其中的 ASP.NET Core 与Blazor 也相应得到增强,此版本的 ASP.NET Core 的一些重大新特性包括: 使用 C# 构建富交互客户端 Web 应用。 使用 gRPC 创建高性能后端服务。 SignalR 现在支持自动重连接和客户端到服务器(client-to-server)流。 使用 OpenAPI 文档为 Web API 生成强类型的客户端代码。 通过框架集成了端点路由。 Kestrel 默认启用 HTTP/2。 集成 Web API 和单页应用身份验证支持。 支持证书和 Kerberos 身份验证。 集成新的 System.Text.Json 序列化器。 新的通用主机设置了常见的托管服务,例如依赖项注入、配置和日志。 用于构建长期服务的新 Worker Service 模板。 为每秒请求、总请求、当前请求和失败请求创建了新的 EventCounters。 现在会将托管在 IIS 中的启动错误报告给 Windows Event Log。 请求管道集成 System.IO.Pipelines。 整个技术栈的性能改进。 详情...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19