这个项目能做什么

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/