快速开始
特性
- ✓ 轻量、简洁、一致性的语法设计,轻松掌握并快速上手使用
- ✓ 强类型、静态分析与编译、内存安全、异常处理,轻松编写安全可靠的软件
- ✓ 内置并发原语 go/future/channel/select
- ✓ 直接编译为目标平台的机器码,并支持交叉编译与链接,无需第三方库如 llvm
- ✓ 部署简单,高效编译,基于 musl libc 进行静态链接,具备良好的跨平台特性
- ✓ 完善的类型系统,支持泛型、联合类型、interface、nullable(?)、errable(!)
- ✓ 高性能 GC 实现,具有非常短暂的 STW (Stop The World)
- ✓ 高性能内存分配器实现,参考 tcmalloc
- ✓ 高性能共享栈协程实现,每秒能够进行数百万次的协程切换
- ✓ 基于 libuv 实现的高性能 IO
- ✓ 纯 C 实现的高性能 runtime 和编译器
- ✓ 内置数据结构 vec/map/set/tup 和常用标准库实现
- ✓ 函数调用遵守 system ABI,内置 libc,可以方便地调用 c 标准库函数
- ✓ 集中式包管理系统 npkg
- ✓ 编辑器 lsp 支持
- ○ 更加可控的 GC 实现,如 gc switch,fast free obj 等
- ○ 基于 zig build 源码并重构交叉链接器
- ○ 协作式调度系统完善
- ○ 编译 target 支持 golang、wasm
项目概况
nature 编程语言已经达到早期可用版本,语法 API 基本稳定,在 1.0 版本之前不会有大幅的变化,后续版本会添加一些必要且常用的语法,如 enum,三元运算符,struct label 等。
当前版本编译目标架构包含 linux_amd64、linux_arm64、linux_riscv64、darwin_amd64、darwin_arm64。后续版本会借助 zig ld 编译到 windows 平台。
nature 包含一组测试用例和标准库用来测试基本功能和语法的可用性,包含一组中小型项目测试整体可用性,还未经过大型的项目测试。
安装
1️⃣ 在 https://github.com/nature-lang/nature/releases 下载适用于您系统的二进制压缩包并解压。
2️⃣ 将 nature 文件夹移动到 /usr/local
目录下。如果需要将 nature 安装在其他目录,请手动设置 NATURE_ROOT 环境变量指向 nature 所在目录
/usr/local/nature/
├── LICENSE-APACHE
├── LICENSE-MIT
├── VERSION
├── bin
├── lib
└── std
3️⃣ 将 /usr/local/nature/bin
目录加入到系统环境变量中,例如 cat ~/.zshrc
...
export PATH="/usr/local/nature/bin:$PATH"
...
4️⃣ 运行命令 nature --version
查看当前版本
> nature --version
nature vx.x.x - release build 1970-01-01
5️⃣ 运行命令 nature -h
查看帮助
> nature -h
Nature Programming Language Compiler vx.x.x
Usage:
nature [command] [flags] [arguments]
...
hello world
创建 main.n 文件
import fmt
fn main() {
fmt.printf('hello nature')
}
编译并运行编二进制文件 main
> nature build main.n && ./main
hello nature
指定编译目标平台与架构
> nature build --target darwin_amd64 main.n
指定输出二进制文件名称为 hello
> nature build -o hello main.n
项目示例
mysql/postgresql/redis 驱动 https://github.com/weiwenhao/dbdriver
sqlite 驱动 https://github.com/weiwenhao/nature-sqlite
RESTful api 示例 https://github.com/weiwenhao/emoji-api
轻量级容器打包工具与运行时 https://github.com/weiwenhao/parker
Llama2 推理模型实现 https://github.com/weiwenhao/llama.n
基于 raylib 实现的俄罗斯方块 https://github.com/weiwenhao/tetris
更多语法示例 https://github.com/nature-lang/nature/tree/master/tests/features/cases
编辑器支持
lsp server nls
已经和 nature 安装包一起安装在 /usr/local/nature/bin 目录中,
ls -lh /usr/local/nature/bin
total 44696
-rwxr-xr-x@ 1 root wheel 764K Feb 24 13:18 nature
-rwxr-xr-x@ 1 root wheel 6.1M Feb 24 13:20 nls
-rwxr-xr-x@ 1 root wheel 15M Feb 24 13:20 npkg
在 vscode 扩展商店搜索 nature language 下载 lsp 客户端后即可使用
深入学习
语法文档 https://nature-lang.org/docs/syntax
标准库文档 https://nature-lang.org/stds