Ante:安全、简单的系统语言

2022-02-13 20:34:18

Ante是一种低级函数语言,用于探索求精类型、终身推理和其他有趣的特性。这里';这是一个快速的尝试:

type Person=name:string,job:ref string//推断通过`&;引用的数据不应在此函数中释放make_person name=人名&"程序员";//bob仅在该范围内使用,因此在bob=make_person";鲍勃";//与所有权系统不同,终生推断bob_twin=bobassert(bob.name==bob_twin.name)允许使用别名

一般来说,ante是低级别的(没有GC,默认情况下,值是';t装箱的),同时也试图通过鼓励高级别的方法尽可能提高可读性,这些方法可以在以后使用低级别的细节进行优化。

内置于标准库中的构建系统Ante应该始终能够与任何所需的库一起构建自己,主要问题是构建系统应该如何促进构建其他语言或运行yacc/bison等任意程序的更复杂任务。

编译器仍处于早期状态,因此非常欢迎任何贡献者。请随时为任何已知问题/改进做出贡献(一些在下面的快速任务列表中列出)或任何您认为有用的标准库函数。

代码库中的每个文件都以模块注释作为前缀,解释文件的用途和使用的任何算法。src/main。rs是开始阅读的好地方。

确保所有PRs通过示例目录中的测试。这些测试中有一些命令,goldentests库使用这些命令来运行ante编译器,并根据每个文件的注释中包含的预期输出检查其输出。

跟随安特的最佳地点';s的开发处于编程语言不和谐的前通道中:https://discord.gg/4Kjt3ZE.There也是子Reddit at/r/ante,主要用于有关语言的问题,而不是开发更新。

Ante目前在构建时需要llvm 13.0。如果你已经用资源安装了这个,你可能是单用货物建造的好建筑。如果cargo build抱怨没有找到任何合适的llvm版本,那么构建llvm最简单的方法就是通过llvmenv。在这种情况下,可以使用以下方法从源代码构建:

$cargo install llvmenv$llvmenv init$llvmenv build entry-G Makefile-j7 13.0.0$llvmenv global 13.0.0$LLVM_SYS_130_PREFIX=$(llvmenv PREFIX)$cargo build

如果llvmenv前缀默认为包含空格的路径,则在构建过程中可能会出现错误,因为它找不到llvm的路径。如果发生这种情况,请尝试手动将installationin llvmenv前缀移动到一个不带空格的新目录,将LLVM_SYS_130_前缀更新到此新位置,然后重新运行cargo build。

$cargo install llvmenv$llvmenv init$llvmenv build entry-G VisualStudio-j7 12.0.1$llvmenv global 12.0.1$for/f";代币=*";%a in(';llvmenv前缀';)do(设置LLVM_SYS_120_前缀=%a)$cargo build

如果上述步骤没有';不适合您,您可以尝试使用cmake从Source构建llvm。如果你';重新安装windows这要求您已经安装了Visual Studio 2017或更高版本。

此时,cmake可能会错误地发现它找不到z3或windows SDK,在这种情况下,您可能需要安装它们。对于windows SDK,您可以通过Visual Studio安装程序(在“修改->;单个组件”下)安装它。我使用的是10.0.17763.0版,不过可能新版本也可以。重新运行最后一个cmake命令,以测试所有内容是否安装正确。完成此操作后,继续编译llvm和ante:

$cmake--构建。$cmake——构建--目标安装$cd..$设置LLVM_SYS_120_PREFIX=/absolute/path/to/LLVM build$cargo build