快速开始

特性

  • 轻量、简洁、一致性的语法设计,轻松掌握并快速上手使用
  • 强类型、静态分析与编译、内存安全、异常处理,轻松编写安全可靠的软件
  • 内置并发原语 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 支持

概况

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

在线试用 https://nature-lang.org/playground

贡献指南 https://nature-lang.org/docs/contribute