此新版本在上次发布后7个月来,并带来了用于编译和执行stabel程序的命令行工具,以及模块支持。此版本将项目重命名为stabel(挪威字for stack)。以前的名称与Scala'播放框架以及其他一些项目冲突。
语法已经看到了自上次版本以来的一些微小调整。我' ll只是在这里列出它们,但您可以阅读语言提案以获取更多详细信息。
首先,deftype:已被重命名为defstruct:因为它更精确地描述了你的决定。
没有成员的结构的默认构造函数,现在是类型的名称,而不是gt; typename。
最后,对于多功能,您现在使用默认关键字(:)而不是何时定义分支: Catch-all分支现在是其他:而不是默认关键字。
Stabel现在有一个CLI工具,可以让您从命令行编译和执行程序。当我们目前依赖于节点时,您可以从NPM下载该工具:NPM install -g stabel。
要设置新项目,您可以在新文件夹中运行以下命令:stabel init作者/ projectName。
此命令将创建一个具有单个模块的stabel.json文件和一个src文件夹。 stabel.json列出了项目的元数据,以及查找其他模块和包的位置。
CLI工具不会从中央存储库下载第三方依赖项,但可以使用现在包含的内容写入这样的工具。
要执行特定功能,可以运行:stabel运行/作者/ projectName / module / fn名称。目前,只有与 - int类型签名的函数将工作。
任何以.stbl结尾的文件是稳定模块。模块的名称是文件名,以及来自项目源目录的文件名的相对路径。因此,在文件< project_dir&gt中定义的函数fn; /src/some/module.stbl可以使用以下限定名称引用:如果模块在当前项目中,则某些/模块/ Fn。如果模块定义在第三方库中,则可以使用/某些/模块/ fn引用它(注意前导斜线)。
默认情况下,所有定义都从模块中公开,并在外部模块中引用某些内容,' ll使用其合格名称。但是,您'重新允许通过在模块顶部的模块定义中包括模块定义来调整这些默认值。就像是:
在上面的示例中,只能从外部模块到达FN1。另请注意,您不需要提供模块名称,因为它始终由文件名和相对路径定义。
您还可以使用别名:和导入:关键字,以避免引用具有限定名称的外部内容。有趣的是,它们也可以在函数级别使用,而不仅仅是模块级别,所以这是可能的:
defModule:别名:列表/某些/智能/列表:def:example-listtype: - 列表/ listimport:/ some / smart / list,#导入函数'和#39;来自/某些/智能/列表:列表/空1,2,3
stabel现在有一个标准的库。它将始终包含在每个项目中,并且定义了一些默认导入以使其更易于使用。您可以阅读源代码以了解第一次迭代中包含的内容。
在释放Alpha-1之后,我花了第一个月查看代码并重新考虑...粗糙的比特。这给了我一个良好的起点,即开发下一个释放,我认为现在是明智的。但是,这次i' ll将清理工作作为v0.2.1-alpha释放,以便在他们完成的情况下立即获得任何错误修复程序。
我希望v0.3.0-alpha左右发布,释放的目标是包括增强数量文字(负INTS,Hex-confile),阵列和字符串。其他一些功能可能会成功,但那些是市长的功能。
首先将提出所有功能作为语言提案,在实施开始之前将开放反馈。这些提案将在我们的Zulip Chat中讨论,因此如果您想参与其中,请务必加入我们。