Gleam的V0.14(Erlang VM的一种类型安全语言)已发布

2021-02-19 05:22:05

紧随Gleam v0.13之后的另一个版本是Gleam v0.14。一如既往,让我们来看看其中的一些亮点。

许多动态类型化的BEAM语言都支持Erlang的类型规范,即可以使用Dialyzer工具进行分析的类型注释。虽然不如Gleam的类型系统强大或可靠,但它对于查找Erlang或Elixir代码的问题是有用的工具。 Dialyzer不需要类型规范,但是如果将它们添加到代码中,它将更好地工作。

从该版本开始,Gleam将为Gleam程序中的所有声明的类型生成所有函数的类型规范和Erlang类型定义,从而为您提供了一个额外的工具来帮助您在与Elixir或Erlang一起使用Gleam时编写健壮而可靠的代码。

pub type LinkedList(element){空节点(element,LinkedList(element))} pub fn is_empty(list){list == Empty} pub fn map(list,fun){案例列表{Empty->空节点(i,list)->节点(fun(i),map(list,fun))}}

-模块(linked_list)。 -编译(no_auto_import)。 -导出([is_empty / 1,map / 2])。 -export_type([[链表清单/ 1])。 -类型linked_list(H)::空| {节点,H,链表(H)}。 -spec is_empty(linked_list(any()))->布尔值()。 is_empty(List)->列表=:=空-规格图(linked_list(R),fun((R)-> U))-> linked_list(U)。地图(List,Fun)->空的情况列表->空的 ; {node,I,List @ 1}-> {node,Fun(I),map(List @ 1,Fun)}结束。

Gleam代码中完全不需要注释即可获得完整的typespeccoverage,Gleam的编译器会重用其强大的typeinference算法中的类型信息来确定正确的typespec。

Erlang项目是不寻常的,因为它通常没有以主要功能作为应用程序的入口点,而是定义了一个参与者树,以在程序运行时在线上进行并处理工作项。

这是编写使用运行时的容错功能的长期服务的有效方法,但它不适用于命令行脚本等短期程序。其他语言的新手也会感到困惑。

这些短暂的程序通常使用Erlang脚本,它们是轻量级的Erlang程序,其主要功能是入口点。

为了更轻松地从Gleam中使用这些脚本,gleam new命令现在具有脚本模板,该模板可用于创建escript项目,而无需任何其他配置。

一流的开发人员经验是Gleam项目的主要目标,进一步的工具改进指日可待!

Gleam能够为您的代码呈现HTML文档,并准备将其上传到Hexdocs。

感谢Tynan Beatty,文档看起来比以往任何时候都更好!列表中有太多改进,但是最重要的是,它们现在具有夜间模式!如果您是像我这样的夜猫子,那么在进行深夜编码时,我相信您会喜欢较低对比度的深色调。

听起来好像有破纪录的危险,但Gleam的错误消息已再次得到改善。这是其中一项改进的示例:

错误:语法错误┌─/src/thing.gleam:115:18│115│pub fn overlayedBy(compare,a,b)->布尔{│^^我没想到这一点。预期之一:"("

错误:语法错误┌─/src/thing.gleam:115:18│115│pub fn overlayedBy(compare,a,b)->布尔值{│^^这不是有效的名称。提示:名称以小写字母开头,并且包含a-z,0-9或_。

位字符串语法是Gleam从Erlang继承的功能。它提供了通过文字和模式匹配以声明方式和简洁方式构造和处理原始数据位的方法。

在此Gleam版本中,我们对Gleam程序中使用的位字符串和模式进行了进一步的静态分析,以捕获无效或不正确的代码。

错误:语法错误┌─/Users/a/parser_test/src/a.gleam:2:20│2│<<< 1:size(1)-unit(0)> │^这不是有效的BitString单位值提示:单位必须为整数> = 1和< = 256参见:https://gleam.run/book/tour/bit-strings

到目前为止,Peter一直在非常友好地构建Gleam docker映像,以便在Memo和更广泛的社区中使用。

在此版本中,他将自己的构建自动化移植到了Gleam仓库中,我们可以自动创建OCI / Docker映像,并在每个发行版中自动发布。

这些只是一些亮点,但自上次版本以来,编译器和标准库有很多改进。对于所有详细信息,请查看更改日志文件:

现在是时候再次插入了GLEEM Discord服务器了!社区持续剧烈,让你在那里很棒,所以请点击下面的布特顿。

如果您想尝试将新版本的Gleam头转移到AppertActpage。我很想听到你发现它的发现,并获得你的反馈索霍姆可以继续改善。

想查看一些现有的闪光项目吗?转到令人敬畏的闪光名单。寻找建造ingleam的东西?查看建议跟踪器。

如果您想帮助在ErlangVirtual Machine上进行强烈打字的编程,请通过Github赞助商计划考虑SponsoringGleam。

如果没有支持和为其提供贡献的所有人的支持,此版本就不会成为可能,因此非常感谢他们。