国产系统级编程语言与编译器,轻松与 C 语言进行交互

接之前的帖子 博客:这是一个编程语言的发布贴 各位股东们,当时无论是在评论区的鼓励还是 star 支持,都给了莫大的动力,让我极限爆肝了近五个月,爆肝大概就是在这几个月的 190 多次的 commit log 中,有 60 次是在凌晨以后,18 次是在节假日。

原谅我在标题中使用国产两字吸引眼球 🙇🏻‍♂️ ,经过上次的国产 IDE 事件,想必部分人可能会有些 PTSD。 但我想…

可能这个世界让我们感到失望,但是我依然愿意对这个世界寄予希望 —— 《剑来》


再次介绍一下 nature 项目,这是一个投入近 5 年时间的编程语言与编译器项目。

github github.com/nature-lang/nature 基于 MIT 协议开放源码。

官网 nature-lang.org/zh-Hans/ 有完整可读的中文文档。

在语言层面 nature 有以下特点

  • 类型系统,null 安全,泛型,联合类型
  • 自研编译器/汇编器/链接器,不依赖 llvm。能够编译至 amd64/riscv64/wasm 架构
  • 无入侵的方式与 C 语言等交互进行高效率与高性能开发
  • 渐进式 GC,支持自动与手动 GC
  • 内置 vec/map/set/tup 数据结构
  • 包管理与模块管理
  • 函数标签/闭包/错误提示/运行时堆栈追踪/协程
  • 集成SSA/线性扫描寄存器分配/反射机制/汇编器与连接器

上述特性已经集成了 90%,随着标准库以逐步完善,nature 可以应用于游戏引擎与游戏制作、科学与 AI 计算、操作系统与物联网、WEB 开发。其中游戏引擎将作为 nature 0.7 ~ 1.0+ 的核心任务。

nature 适合于开源创作者/独立创作者以及学习和研究使用,我们不仅希望你能够在语言中得到便利,同样也希望你使用 nature 创作快乐且有趣的事情。


今天发布 0.4.0-beta 版本,详细的更新内容见 发行说明,这里进行简单的总结

  1. 使用 temp 模式与 C 语言等进行交互。在数据结构上和调用规范上完全兼容 C 语言,使用安全指针避免 C 语言中的空指针问题。
  2. 实现编译时错误提示与运行时错误追踪功能,能够使用 nature 进行项目代码编写与调试。
  3. 支持标准库 fmt/syscall/os/strings/time/path/compress
  4. 使用 nature 语言实现小型测试用例 parker,这是一个类似 docker 的轻量级容器,能够将工作目录打包成一个可执行文件,又或者是将 python/php 等脚本语言打包成可执行文件并运行在一个轻量级容器运行时上。
  5. 在之前的 0.2/0.3 两个版本中主要支持了泛型,联合类型,包管理等功能。

预计再肝半年左右,nature 将会推出社区可用版本,届时会有稳定的语法 api,完善的标准库,以及开发工具支持,我也将会基于 nature 启动项目也是大型测试用例 ‘SAO’。

此外,nature 中所有的标准库代码都会合并至主仓库,欢迎来贡献(从其他语言中搬运)。

如果想更进一步关注 nature 的发展,欢迎加入编程语言交流群,我会在这里分享有意思的提案或者是学习的资料,比如最近在进行的协程提案与相关知识。当然也可以通过 github 进行 watch 来了解相关的进度。也希望能够有新的股东 star 支持,这都是宝贵的动力 💪

添加 wechat nature-lang 我拉你进群

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 1年前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15
mengdodo

一句话描述这个编程语言的特点

1年前 评论
Max (楼主) 1年前

真大佬,希望大佬能分享一些编译器和链接器相关的科普文章!

1年前 评论
Max (楼主) 1年前

有没有把包编译为二进制后分发功能,其它人无需源码引用这个包,就像dll文件那样

1年前 评论
Max (楼主) 1年前

先留个印子,能坚持那么久也是不容易

1年前 评论

先膜拜,会继续关注,加油,up!

1年前 评论
porygonCN

十年磨一剑

1年前 评论
梦想星辰大海

道阻且长,已经star。

1年前 评论

如果大佬分等级的话,那么这个应该是神级大佬

1年前 评论
梦想星辰大海 1年前

必须支持。语法看着很舒服(菜鸟角度观察)。

1年前 评论

语法还是有些奇怪,能够看到go,java和zig的影子,最好还是有自己的设计哲学比较好,不然感觉很怪

1年前 评论
liziyu 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!