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

2023-09-26 09:08:39 +08:00
 weiwenhao

接之前的帖子 https://www.v2ex.com/t/939430 ,感谢 V 站各位股东们,当时无论是在评论区的鼓励还是 star 支持,都给了莫大的动力,让我极限爆肝了近五个月,在这几个月的 190 多次的 commit log 中,有 60 次是在凌晨以后,18 次是在周末。


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

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

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

在语言层面 nature 有以下特点

上述特性已经集成了 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 支持,这都是宝贵的动力 💪

9725 次点击
所在节点    程序员
118 条回复
weiwenhao
2023-09-26 10:16:25 +08:00
@proxytoworld 最主要的原因是我想掌握原理,也可以叫自主可控? 🤔
weejulius
2023-09-26 10:17:17 +08:00
加油,国产挺好的,v 站的人很多都对国产有生理反应。
Xzong
2023-09-26 10:19:44 +08:00
加油,国内的开源环境真是乌烟瘴气,希望 op 能一直保持初心
Nazz
2023-09-26 10:21:33 +08:00
@weiwenhao 我觉得 go 关键字长度比较适中, 语义性更好. 我觉得如果语法更接近 go, 且实现了方法泛型完善了错误处理, 提供 oop 风格的数据容器, 会更加有吸引力.
ragnaroks
2023-09-26 10:23:21 +08:00
第一眼像是静态版 node ,如果能有稳定的生态应该是不错的选择
gaifanking
2023-09-26 10:25:20 +08:00
自从这两年看了下 go ,kotlin, c++之后对新语言特性就失去了兴趣,大差不差,有点语言 ed 了。
weiwenhao
2023-09-26 10:26:05 +08:00
@ragnaroks 是的,js 语法风格。是否有稳定的生态就看我能坚持多久,脸皮有多厚了。🌼
weiwenhao
2023-09-26 10:27:16 +08:00
@gaifanking 这样刚刚好呀,nature 的设计理念之一就是不要自己创造新的语言特性,不需要学任何东西。不能增加用户的使用成本。
weiwenhao
2023-09-26 10:29:14 +08:00
@Nazz 这关键字部分可能不会再改了,因为这些关键字在 rust 等语言中的评价很不错。oop 风格后续会基于"组合"的思想进行优化。 方法泛型,错误处理都已经完善了。
Nazz
2023-09-26 10:33:51 +08:00
不依赖 llvm 是出于什么考虑?
proxytoworld
2023-09-26 10:35:38 +08:00
@weiwenhao 如果玩具的话可以自己实现,但如果真想弄的话还是基于现有的轮子比较好,像 rust 只是把 llvm 当作一个中间层,用来转化 ir 和 native code
proxytoworld
2023-09-26 10:36:25 +08:00
另外 op 有计划做 Linux 和 Windows 的 FFI 吗
mightybruce
2023-09-26 10:40:47 +08:00
搞新语言和编译器很难盈利的,不是语言特性好不好的问题,而是根本没几个人用。
mightybruce
2023-09-26 10:44:14 +08:00
语言要考虑解决什么工程问题,有很多语言开发最后都虎头蛇尾,比如七牛搞的 Go+, goplus
7gugu
2023-09-26 10:45:44 +08:00
@lingxi27
@Masoud2023

有毒吧,如果想要国产这个词变得正向,不一起建设就只会变得越来越负面,天天搁这嘲讽有啥意思?
zilan2abv
2023-09-26 10:47:42 +08:00
加油

支持坚持国产,V 站很多就是国产 PTSD
weiwenhao
2023-09-26 10:49:38 +08:00
@proxytoworld 在这个版本中,我着重让数据结构变得标准,所以做 FFI 应该不是困难的事情。但是 nature 让其他语言调用我还没有考虑(wasm 除外),调用别的语言的 FFI 我会考虑。
weiwenhao
2023-09-26 10:51:42 +08:00
@mightybruce
@duanquanyong

第一目标是可用,第二目标是爬上巨人的肩膀,第三目标是站在巨人的肩膀上走的更远。

接下来我也会用 nature 创造有价值的东西,语言本身没有价值,有价值的是语言创造的东西。比如文中的小型测试用例 parker 我觉得就是一个有价值且有意思的工具。
qiufengshe
2023-09-26 10:53:07 +08:00
加油
yaott2020
2023-09-26 10:53:31 +08:00
怎么说呢,一会看像 go ,一会看又像 python ,再看一会又像 rust 。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX