打开网易新闻 查看精彩图片

Gleam 1.14.0版本正式发布,这是一个运行在Erlang虚拟机和JavaScript运行时的静态类型语言的重要更新,主要增强了对外部类型的支持。

该版本于12月25日发布,可在GitHub上获取。据Gleam语言创建者Louis Pilfold介绍,本次更新为外部类型添加了@external注解支持,允许程序员指定要使用的Erlang或TypeScript类型定义。Gleam的外部类型功能用于声明可在Gleam中引用的Erlang或JavaScript类型,但由于这些类型来自Gleam外部,编译器无法在生成的Erlang或TypeScript类型定义中产生精确定义,只能回退到模糊但正确的"any"类型。

增强推理型剪枝优化

Gleam 1.14.0还改进了基于推理的剪枝优化,这项优化能够提升性能并在二进制数据模式匹配时检测出更多冗余模式。新版本将这一优化扩展到整数段,从而提高其有效性。

数字规范化性能提升

该版本还提供了模式匹配分析中的数字规范化功能,使代码运行更快。在Gleam中,数字可以用不同格式编写(十进制、八进制、十六进制等,或使用科学计数法表示浮点数)。编译器现在内部将这些值规范化为单一的规范表示形式,模式匹配分析引擎使用这种表示形式,进一步实现了基于推理的剪枝等优化。

其他改进功能

相等性测试速度得到提升。在编译到JavaScript时,无字段自定义类型变体的==和!=操作符性能有所改善。

记录更新语法现在可以在常量定义中使用,允许从其他常量记录构造常量记录。

该版本更新到最新的Elixir编译器API,修复了之前版本的Gleam与最新版Elixir一起使用时会出现的一些警告。

Q&A

Q1:Gleam 1.14.0的@external注解有什么作用?

A:@external注解为外部类型提供支持,允许程序员指定要使用的Erlang或TypeScript类型定义。之前编译器只能使用模糊的"any"类型,现在可以提供更精确的类型定义。

Q2:推理型剪枝优化能带来什么好处?

A:推理型剪枝优化能够提升程序性能,并在进行二进制数据模式匹配时检测出更多冗余模式。新版本将此优化扩展到整数段,进一步提高了优化效果。

Q3:Gleam 1.14.0在性能方面有哪些改进?

A:主要包括三个方面:数字规范化使模式匹配分析更快,相等性测试速度提升(特别是编译到JavaScript时的==和!=操作),以及推理型剪枝优化的扩展应用。