这个项目能做什么
Nolang 是一种旨在用于系统编程的新语言,核心设计目标是内存安全且无需垃圾回收(GC)。
## 语言特性
**内存安全**:Nolang 不依赖 GC,通过自动内存管理确保安全。变量在函数作用域结束时自动销毁,禁止手动释放以避免悬垂引用。数组和切片等容器采用值复制语义,与原变量生命周期隔离。
**统一引用传递模型**:所有函数参数默认按引用传递,函数内对参数的修改直接作用于调用方的原始数据,但不可销毁参数本身。
**作用域变量覆盖**:在同一函数作用域内重复使用相同变量名时,Nolang 将其视为覆盖重赋值而非创建新变量。类型不同时语法层面即不允许,杜绝变量遮蔽。
**语言层永不崩溃**:消除隐式崩溃路径,无隐藏歧义。
**预批量堆分配与批量释放**:支持提前批量分配,离开作用域时批量 free,无隐藏分配成本。
## 工具链
提供完整的命令行工具(`no` 命令),支持以下操作:
- `no init` / `no new`:初始化工作区和新建项目包
- `no fmt`:代码格式化
- `no build` / `no run` / `no test`:构建、运行和测试
- `no add` / `no remove` / `no update` / `no sync` / `no list`:依赖管理
- `no install` / `no uninstall`:二进制安装管理
- `no pub`:发布到包注册表
- 支持交叉编译(指定 target)和不同后端编译器(如 Zig)
入口约定:`main.no` 为程序入口,`lib.no` 为库入口,`tests/` 目录下所有 `.no` 文件为测试文件。
## 编辑器支持
- VSCode 插件(含 LSP server)
- 可通过 `make lsp` 从源码构建
## 从源码构建
使用 `make` 命令:`make no` 构建 CLI,`make lsp` 构建语言服务器,`make package` 打包 VSCode 扩展,`make playground` 构建 WebAssembly 在线 Playground。
## 相关项目
- notools:使用 Nolang 实现的 Unix 命令行工具集(cat、ls、grep、wc 等),展示语言在系统编程领域的实际应用。
项目采用 Apache-2.0 许可证,官方文档地址:https://lizongying.github.io/nolang/
评论
0 评分人数达到10人后显示
登录后参与讨论。