V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
weiwenhao
V2EX  ›  程序员

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

  •  3
     
  •   weiwenhao ·
    weiwenhao · 2023-09-26 09:08:39 +08:00 · 8565 次点击
    这是一个创建于 458 天前的主题,其中的信息可能已经有所发展或是发生改变。

    接之前的帖子 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 有以下特点

    • 类型系统,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 支持,这都是宝贵的动力 💪

    118 条回复    2023-09-28 12:18:45 +08:00
    1  2  
    zhanlanhuizhang
        1
    zhanlanhuizhang  
       2023-09-26 09:17:41 +08:00   ❤️ 1
    语法,看起来有点抽象
    Panameragt
        2
    Panameragt  
       2023-09-26 09:17:54 +08:00   ❤️ 1
    这个图标有点意思
    duanquanyong
        3
    duanquanyong  
       2023-09-26 09:21:45 +08:00   ❤️ 1
    没啥新东西
    LitterGopher
        4
    LitterGopher  
       2023-09-26 09:23:03 +08:00   ❤️ 1
    有配套 IDE 或 VSCode 插件么?其他编辑器插件也行,因为在官网上并没有看到有关的介绍。不然就这样硬写感觉还是挺难受的。
    horizon
        5
    horizon  
       2023-09-26 09:27:39 +08:00   ❤️ 2
    很强。
    我用 rust
    weiwenhao
        6
    weiwenhao  
    OP
       2023-09-26 09:27:53 +08:00 via Android   ❤️ 1
    @LitterGopher 估计再肝一段时间就有 lsp 了,另外已经有伙伴贡献了 vacode 高亮插件,在 issue 可以看到,我自己则是基于 vim 写的高亮插件进行编码。还没有发布
    weiwenhao
        7
    weiwenhao  
    OP
       2023-09-26 09:30:21 +08:00 via Android
    @horizon 第一版我也是 rust 写的,如果当时没有改用 c 就好了,rust 现在是非常受欢迎的编程语言 🥺
    proxytoworld
        8
    proxytoworld  
       2023-09-26 09:43:52 +08:00   ❤️ 1
    为啥好像 go
    proxytoworld
        9
    proxytoworld  
       2023-09-26 09:44:09 +08:00
    不过为啥不用 llvm
    Masoud2023
        10
    Masoud2023  
       2023-09-26 09:51:38 +08:00   ❤️ 34
    一点建议:如果你想认真搞开源,就不要把什么国产化挂在嘴边蹭那堆粉红的热度
    lingxi27
        11
    lingxi27  
       2023-09-26 09:57:20 +08:00   ❤️ 7
    国产可不是什么好词
    duke807
        12
    duke807  
       2023-09-26 09:59:42 +08:00 via Android   ❤️ 1
    什么时候股东分红,分红协议书什么时候公布
    codeself
        13
    codeself  
       2023-09-26 10:02:54 +08:00 via iPhone   ❤️ 1
    遥遥领先遥遥领先👍
    Nazz
        14
    Nazz  
       2023-09-26 10:08:57 +08:00   ❤️ 1
    为什么新语言都喜欢把数据类型搞那么短, 就跟变量命名用 a1, b1, c1 似的
    结构体看起来挺花哨, 像 js function 一样让人很迷
    weiwenhao
        15
    weiwenhao  
    OP
       2023-09-26 10:09:47 +08:00   ❤️ 1
    @Masoud2023 我真心接受你的建议,我很清楚这两个字在 v 站的意义,但是当你评论的时候,其实已经间接的进行了支持。
    weiwenhao
        16
    weiwenhao  
    OP
       2023-09-26 10:11:05 +08:00   ❤️ 1
    @Masoud2023 @lingxi27

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

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

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

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

    接下来我也会用 nature 创造有价值的东西,语言本身没有价值,有价值的是语言创造的东西。比如文中的小型测试用例 parker 我觉得就是一个有价值且有意思的工具。
    qiufengshe
        39
    qiufengshe  
       2023-09-26 10:53:07 +08:00   ❤️ 1
    加油
    yaott2020
        40
    yaott2020  
       2023-09-26 10:53:31 +08:00 via Android   ❤️ 2
    怎么说呢,一会看像 go ,一会看又像 python ,再看一会又像 rust 。。。
    e3c78a97e0f8
        41
    e3c78a97e0f8  
       2023-09-26 10:57:05 +08:00 via iPhone   ❤️ 1
    看到标题我以为是汉语编程语言
    weiwenhao
        42
    weiwenhao  
    OP
       2023-09-26 10:57:11 +08:00   ❤️ 1
    @yaott2020 嗯,当你看到 defer 你可能就知道这是做什么用的关键字,当你看到 fn/i8/i16 这些你也能一眼就明白含义,尽可能的减少了学习的成本。
    weiwenhao
        43
    weiwenhao  
    OP
       2023-09-26 11:00:17 +08:00
    @Nazz 最主要的原因是我想掌握原理,也可以叫自主可控。
    hronro
        44
    hronro  
       2023-09-26 11:22:26 +08:00   ❤️ 1
    既然是自己实现的后端,不知道性能对比起 C/Rust/Go 来说如何,有没有这方面的 benchmark 。

    另外看了下错误处理的语法,感觉不是很现代,不太喜欢。
    c2const
        45
    c2const  
       2023-09-26 11:22:32 +08:00   ❤️ 1
    1.很难盈利,客户也怕你维护慢或者维护不下去了,很难 :(
    2.国产化现在也不是好词了 :(
    littlebrother
        46
    littlebrother  
       2023-09-26 11:26:01 +08:00   ❤️ 1
    只能说牛逼
    weiwenhao
        47
    weiwenhao  
    OP
       2023-09-26 11:28:18 +08:00
    @hronro 无,由于还没有做后端优化,这方面目前是弱势,所以我尽量扬长避短。非标准测试中,fib(40) 这样的 cpu 密集计算耗时是 golang 的 3 倍,GCC -O3 的 6 倍。
    weiwenhao
        48
    weiwenhao  
    OP
       2023-09-26 11:29:28 +08:00
    @hronro 错误处理下一个版本只会进行下面这样的兼容性优化,不会进行大的改动了。

    var err = try {
    stmt1
    stmt2
    }
    weiwenhao
        49
    weiwenhao  
    OP
       2023-09-26 11:31:51 +08:00
    @c2const 维护速度这个,我还是挺有自信的,我现在兼职的情况下,我觉得我速度其实是快过一般编程语言的维护速度的。快的主要原因是我熟悉每一行代码。

    另外原则上不靠编程语言本身盈利,编程语言本身是没有价值的,我会尽量使用 nature 创造有价值的产品。
    skiy
        50
    skiy  
       2023-09-26 12:44:35 +08:00 via iPhone   ❤️ 1
    其实,我更想要一款写 gui 的工具…
    作者现在还肝“编程语言”,感觉是 49 年入国军…现在写代码,流行的编程语言,不懂的还能去问 gpt…小众语言,gpt 也不懂…

    现在搞游戏引擎(图形化)感觉挺不错…rust 的 bevy 都没成熟…
    agagega
        51
    agagega  
       2023-09-26 12:48:05 +08:00 via iPhone   ❤️ 1
    国产这个词确实已经被某些机构组织搞变味了。比如我是中国人,我写了个项目开源出来,某些人跳出来说是国产,总觉得怪怪的,像自己的项目被无偿上交了一样。

    我建议以后把这类项目里的「国产」改为「国人产」。一字之差,好感度上升不少。
    weiwenhao
        52
    weiwenhao  
    OP
       2023-09-26 13:05:51 +08:00
    @skiy 我 44 年的时候入了国军,现在已经没有回头路了。游戏引擎我也很有兴趣,但是这是一个大工程,又要 5 年起步,所以我必须慎重一点启动。
    skiy
        53
    skiy  
       2023-09-26 13:14:21 +08:00
    @weiwenhao 可以将编程语言跟往这方面靠(哪怕是插件、外部库形式),感觉这将是一个爆点。现在也在推信创了,deepin 也在推它的玲珑。感觉这个应该能够来钱。
    Nazz
        54
    Nazz  
       2023-09-26 13:44:29 +08:00
    @weiwenhao 以后可以考虑迁移到 LLVM, 个人的精力是有限的
    dwzfuck
        55
    dwzfuck  
       2023-09-26 13:58:40 +08:00   ❤️ 1
    赞, 话说作者实现自举了没
    weiwenhao
        56
    weiwenhao  
    OP
       2023-09-26 14:06:53 +08:00
    @dwzfuck 没有哦,实现自举的工作量太大了,我更愿意把这些代码量做些好玩有用的东西。
    antonius
        57
    antonius  
       2023-09-26 14:15:38 +08:00   ❤️ 3
    Yet Another Programming Language ;-)
    OP 很厉害,能坚持能做这件事,就已经超越很多人了。

    不过“游戏引擎与游戏制作”的过程中,除去引擎本身运行时的开发,更多的是各种工具/工作流的整合,这是一个巨大的工程。对于一门新生的编程语言,这个目标过于庞大。

    个人的几点建议:
    1. 缩小规模:不先考虑游戏引擎,先考虑对多媒体功能的支持。比如预览 jpeg, png, webp, avif, dds, ktx, basisu 等纹理的工具,压缩/解压/转换纹理的工具等等,或者声音格式 ogg, wav, mp3 等格式的转换工具等等。
    2. 精简游戏运行时框架:不和 Unreal, Unity ,甚至 Godot 比拼。可以参考 Love2D 这样的引擎。
    3. 增加第三方库的 nature 语言绑定,比如业界常用的 dear-imgui ,sdl2 ,box2d ,bullet ,assimp 等等。

    游戏开发也是有生态圈的,维护好生态圈也绝非易事。其实你的语言不必什么都能做,只要在某个方面做到最好,就有一席之地。加油💪!
    antonius
        58
    antonius  
       2023-09-26 14:21:54 +08:00   ❤️ 1
    weiwenhao
        59
    weiwenhao  
    OP
       2023-09-26 14:29:19 +08:00
    @antonius 👍 都是纯 C 。我不会去走正常流程从头做起,现在 nature 可以调用 C 语言库,所以很多方面实现起来比较简单。 另外确实如你所说,我计划就是选择某个特定的方面。尽可能将整体工作量压缩在一年以内,能够已最小代价实现一个 demo 。
    learningman
        60
    learningman  
       2023-09-26 14:49:57 +08:00 via Android
    所以我还是不明白这个语言可以做到什么其他语言做不到的事情
    learningman
        61
    learningman  
       2023-09-26 14:50:25 +08:00 via Android   ❤️ 1
    或者说不叫其他语言做不到,指其他语言不方便,但是这个语言可以很轻松的实现的那种,比如 golang 的协程
    weiwenhao
        62
    weiwenhao  
    OP
       2023-09-26 15:15:16 +08:00
    @learningman nature 是基于 C 语言的改进,有更加现代的类型系统,内置多种数据结构支持,按照模块化管理明明空间,并支持包管理。具备运行时堆栈追踪(而不是 stackoverflow) 等等。 起于 C , 但同时 nature 也可以轻松的与 C 语言的模块进行交互。
    DiamondY
        63
    DiamondY  
       2023-09-26 15:59:47 +08:00   ❤️ 1
    已 star ,哈哈
    diggerdu
        64
    diggerdu  
       2023-09-26 16:40:17 +08:00   ❤️ 2
    @Masoud2023 不喜欢可以不回复 说个不好听的 你自己又做了什么拿的出手的?
    diggerdu
        65
    diggerdu  
       2023-09-26 16:40:38 +08:00   ❤️ 1
    已 star
    Masoud2023
        66
    Masoud2023  
       2023-09-26 16:47:45 +08:00
    @diggerdu #64

    不知道该怎么回复你,想了半天还是回复一个“典”字比较好吧
    Masoud2023
        67
    Masoud2023  
       2023-09-26 16:49:12 +08:00
    @7gugu #35

    这环境已经烂完了,没法建设了。

    开源本来就应该是没有国界的,何必非得强求你是哪国的?
    diggerdu
        68
    diggerdu  
       2023-09-26 17:04:49 +08:00   ❤️ 3
    @Masoud2023 浑身上下除了一张嘴以外什么成果都拿不出来,就连喷人也只能憋出一个“典”的人确实挺典的 这么恨我国怎么不快进到电子宠物?天天这个环境烂了 那个没法建设了 就你世浊独醒 那你做的东西连这些烂的都不如那你是个什么 真给个机会你润了你一样也是个
    keepRun
        69
    keepRun  
       2023-09-26 17:08:20 +08:00   ❤️ 1
    我提个建议:即使是编程语言也要考虑市场需求,比如 java web 端强势,python 语法简洁易用,人工智能是强项,每个语言都有自己的强项,你也得考虑自己的语言应该偏重哪些方向,解决当前技术中哪些痛点
    Masoud2023
        70
    Masoud2023  
       2023-09-26 17:24:34 +08:00   ❤️ 1
    @diggerdu #68

    典,我又恨国了。

    那你去建设啊,我好期待你能建设下我国优秀的开源环境。

    要么贴下你 github ,哦不,别 github 了,贴个我国优秀开源社区的 gitee 的 homepage 看看,看看你对我国优秀的开源环境做了什么贡献?
    Masoud2023
        71
    Masoud2023  
       2023-09-26 17:28:07 +08:00   ❤️ 1
    @diggerdu #68

    你真爱国那你应该现在把你所有梯子全关了,所有镜像站配置全删了,github 之类的账号全注销

    然后老老实实去从 0 开始实现你那伟大全国产开源自主研发宏图大梦🤣
    Aloento
        72
    Aloento  
       2023-09-26 17:31:19 +08:00
    Go + Rust ?缝合
    cyndihuifei
        73
    cyndihuifei  
       2023-09-26 17:35:49 +08:00   ❤️ 1
    加油
    RockShake
        74
    RockShake  
       2023-09-26 17:54:48 +08:00   ❤️ 1
    作为学习完全没问题,但是如果不能有杀手级应用,解决特定问题,最终没法普及使用。
    weiwenhao
        75
    weiwenhao  
    OP
       2023-09-26 17:58:55 +08:00
    @RockShake 是的,杀手级应用就靠我自己了,希望 SAO 能够成为这个杀手
    weiwenhao
        76
    weiwenhao  
    OP
       2023-09-26 18:01:49 +08:00
    @Masoud2023 @diggerdu

    两位冷静一下! 这我都不知道怎么劝你们了。😭
    haha512
        77
    haha512  
       2023-09-26 18:25:58 +08:00   ❤️ 1
    所有国产操作系统内核都是开源的 Linux ,为什么没人搞“国产操作系统内核”呢,不是要追求自主可控吗

    不管怎样支持下,已 star ,不过建议还是不要用“国产”来做卖点,相对于开源的外国产,同为开源的国产项目有什么特别优势呢,仅仅因为作者是中国人吗?

    java 是非国产的,很多在 java 上搞得国产 xx 框架,这就能增加对 java 的自主可控吗

    为啥那么迷恋自主可控呢。1 个国家对 200 个国家 O(∩_∩)O~
    skiy
        78
    skiy  
       2023-09-26 20:09:34 +08:00   ❤️ 1
    有些问题:

    1. 必须安装到 /usr/local/ 下,这个不太好。建议找 full_path 时,可以取得当前 nature 命令的路径后,再查找相找相关路径 。
    2. nature 没有 --help / -h 帮助信息。只能直接跑 build ,不可以 nature run main.n 吗?
    3. README 中的 http.server ,跑不通:main.n:7:22: parser variable definitions error, ')' not a ident 。

    持续关注。以后有问题再到 issue 提。
    B1ankCat
        79
    B1ankCat  
       2023-09-26 20:19:04 +08:00   ❤️ 1
    版本号有点快了,1.0.0 至少得处于可用状态,然后得找个切入方向展示语言优点
    kneo
        80
    kneo  
       2023-09-26 20:22:21 +08:00 via Android   ❤️ 1
    某些人不要颠倒主次了。难道把“国产”去掉就能让一个烂项目变成好项目?
    letianqiu
        81
    letianqiu  
       2023-09-26 20:27:30 +08:00   ❤️ 1
    看到之后第一反应是后端是 llvm ,没想到看了代码之后发现是自己实现的后端。不过目前的后端的确是比较简单/toy 。想问问楼主为什么不用 llvm ?
    2NUT
        82
    2NUT  
       2023-09-26 20:39:18 +08:00
    你怎么有时间做这个的? 分享下时间管理 和 项目管理 以及 精力管理 的经验
    SHF
        83
    SHF  
       2023-09-26 20:49:50 +08:00
    不支持 windows 系统吗?那用都用不了
    weiwenhao
        84
    weiwenhao  
    OP
       2023-09-26 20:56:54 +08:00
    @skiy

    1. 目前就是根据 nature 所在路径查找的 NATURE_PATH, /usr/local 只是推荐路径。
    2. 确实不支持 -h 以及 run, 只支持 build 。
    3. github 用例展示中,标准库还不支持 http ,并且其中 http server 确实有代码问题,第七行参数没有给类型,我记录一下,下一次更新一下用例。

    感谢你认真体验。这让我非常有动力。
    weiwenhao
        85
    weiwenhao  
    OP
       2023-09-26 20:58:07 +08:00
    @B1ankCat 版本号问题不大,只要不能到可用要求,那 0.10 ,0.11 都会往上推进。1.0.0 必须达到商业可用版本。
    weiwenhao
        86
    weiwenhao  
    OP
       2023-09-26 21:01:33 +08:00
    @letianqiu 后端比较简单,但已经不是 toy 了,已经具备了基础的优化框架。不用 llvm 主要是为了对源码开发者友好,能够让开发者掌握更多的核心知识和原理,同时也更加的可控。


    https://github.com/ziglang/zig/issues/16270 zig 也正在脱离 llvm, 作者给到的理由也同样可以参考

    In exchange, Zig gains these benefits:

    All our bugs are belong to us.
    The compiler becomes trivial to build from source and to bootstrap with only a C compiler on the host system.
    We stop dealing with annoying problems introduced by Linux distributions and package managers such as Homebrew related to LLVM, Clang, and LLD. There have been and continue to be many.
    The Zig compiler binary goes from about 150 MiB to 5 MiB.
    Compilation speed is increased by orders of magnitude.
    We can implement our own optimization passes that push the state of the art of computing forward.
    We can attract research projects such as alive2
    We can attract direct contributions from Intel, ARM, RISC-V chip manufacturers, etc., who have a vested interest in making our machine code better on their CPUs.
    weiwenhao
        87
    weiwenhao  
    OP
       2023-09-26 21:03:04 +08:00
    @SHF 目前不支持,现在没有 lsp, 对使用者并不友好。预计再肝半年左右会有给大家使用的社区可用版本。
    weiwenhao
        88
    weiwenhao  
    OP
       2023-09-26 21:05:31 +08:00
    @2NUT 项目管理就是用 Obsidian + TODO list 。 时间没有管理过,我业余时间只有这一件事情做。

    skiy
        89
    skiy  
       2023-09-26 21:08:49 +08:00   ❤️ 1
    @weiwenhao

    1. 我是将 export PATH="$PATH:$HOME/nature/bin"。添加到了 PATH ,运行时找不到标准库。
    2. 我意思是,添加个帮助文档好些,否则不知道有哪些命令。比如现在有 "build" 和 “--version” 这些参数。
    fpure
        90
    fpure  
       2023-09-26 21:15:32 +08:00
    变量的类型前置,函数的类型后置,这么随意的吗
    weiwenhao
        91
    weiwenhao  
    OP
       2023-09-26 21:26:56 +08:00
    @skiy 好的,那应该是 bug, 我记录一下。-h 我也支持一下
    weiwenhao
        92
    weiwenhao  
    OP
       2023-09-26 21:27:56 +08:00
    @fpure 统一类型前置,包括函数的返回值的类型也是前置的,只是省略了 ident.

    fn sum(int a, int b):int c -> fn(int,int):int
    AItsuki
        93
    AItsuki  
       2023-09-27 00:53:32 +08:00   ❤️ 2
    先膜拜下大佬,然后提点建议:

    关于错误处理,比较推荐 go 或 rust 那种显式返回异常的方式,能降低不少心智负担。

    否则就出现 "这个函数要不要 try ,点进去看看",或者 "管他的,try 一下" 这种很让人操蛋的行为。
    Jirajine
        94
    Jirajine  
       2023-09-27 05:00:38 +08:00 via Android
    @Masoud2023 #10 错,强烈支持把“国产”、“自主可控”作为卖点,这样就可以节省时间不用点开看了。
    simpx
        95
    simpx  
       2023-09-27 06:55:20 +08:00   ❤️ 1
    很棒啊!先顶再看,大概瞄了一眼感觉和 zig 有点像啊,作为给 zig donate 了 5$的人,非常期待以后的应用!
    dangyuluo
        96
    dangyuluo  
       2023-09-27 07:45:16 +08:00   ❤️ 1
    赞一个,国内做编译器的人实在是太少了
    sapjax
        97
    sapjax  
       2023-09-27 07:53:57 +08:00   ❤️ 1
    看 OP 两年前还在写 CLox, 进步这么快的?
    hejingyuan199
        98
    hejingyuan199  
       2023-09-27 08:01:30 +08:00   ❤️ 1
    非常感谢。饶有兴趣地读了一遍英文版文档,对我这个非英语母语者来说这个文档写得比 native english speaker 那些文档更容易让我读通顺。
    weiwenhao
        99
    weiwenhao  
    OP
       2023-09-27 08:33:52 +08:00 via Android
    @AItsuki 嗯嗯,考虑过这个问题,实际上支持多返回值是完全兼容 golang 的错误处理方式。 另外其实 try 吃基于 try catch 的,下个版本会开放 var err = try {} 的形式。
    weiwenhao
        100
    weiwenhao  
    OP
       2023-09-27 08:35:13 +08:00 via Android
    @simpx zig 我就完全没有了解过了,倒是和 vlang 超级像,但是绝对不是抄着 vlang 的语法设计,是真的想法一致了 😄
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2690 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:43 · PVG 20:43 · LAX 04:43 · JFK 07:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.