Nature vs Golang: 性能基准测试 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
weiwenhao
1.51D
V2EX    程序员

Nature vs Golang: 性能基准测试

  •  1
     
  •   weiwenhao
    weiwenhao 2 天前 3694 次点击

    nature 是一款较新的编程语言,其轻量简单,易于学习。在设计理念和运行时架构上参考了 golang ,同时有着更丰富的语法特性,更适用于业务开发,并在持续探索更广泛的应用领域。

    性能是衡量编程语言核心竞争力的关键指标,接下来我们将从 IO 并发、CPU 计算、C 语言 FFI 、协程性能四个维度,并以 golang 作为基准对 nature 编程语言进行性能测试。

    测试环境

    配置项 详情
    宿主机 Apple Mac mini M4 ,16GB 内存
    测试环境 Linux 虚拟机( Ubuntu 6.17.8 ,aarch64 架构)
    编译器 / 运行时版本 Nature:v0.7.0 ( release build 2025-12-15 )
    Golang:go1.23.4 linux/arm64
    Rust:cargo 1.85.0
    Node.js:v20.16.0

    所有测试均采用相同的代码逻辑实现,文中代码示例均以 nature 编程语言为例。

    IO 并发

    IO 并发是网络服务的核心能力,本测试通过 HTTP 服务端压力测试,综合考察语言的 IO 调度、CPU 利用率与 GC 稳定性。

    nature 代码示例

    import http fn main() { var app = http.server() app.get('/', fn( http.request_t req, ptr<http.response_t> res):void! { res.send('hello nature') }) app.listen(8888) } 

    ab 工具测试命令

    ab -n 100000 -c 1000 http://127.0.0.1:8888/ 
    • -n 100000: 总请求数 10 万次
    • -c 1000: 并发数 1000

    测试结果

    可以看到 nature 在 HTTP 并发性能上超越了 golang ,这对于早期版本的编程语言来说可以说是不错的成绩。

    由于 nature 和 node.js 均使用 libuv 作为 IO 后端,所以 node.js 也参与到基准测试中(libuv 线程不安全,node.js 和 nature 的事件循环均在单线程中运行),但 nature 作为编译型语言其并发处理能力远胜过 node.js 。

    CPU 计算

    使用经典的递归斐波那契数列计算 fib(45) 来测试语言的 CPU 计算与高频函数调用开销。

    nature 代码示例

    fn fib(int n):int { if (n <= 1) { return n } return fib(n - 1) + fib(n - 2) } 

    测试方法

    time ./main 1134903170./main 2.50s user 0.01s system 101% cpu 2.473 total 

    测试结果:

    nature 和 golang 均采用自研的编译器后端,性能上也相差无几。而耗时高于 rust 的主要原因之一是两者在函数运行前进行了额外处理。

    golang 采用了抢占式调度,不需要关注 GC safepoint ,但仍需要关注协程栈是否需要扩容,也就是下面的汇编指令

    # more stack f9400b90 ldr x16, [x28, #16] eb3063ff cmp sp, x16 540002a9 b.ls 7869c <main.Fib+0x5c> // b.plas 

    nature 采用了协作式调度,所以需要处理 GC safepoint 。但 nature 采用共享栈协程,所以不需要关心栈扩容问题。

    # safepoint adrp x16, 0xa9d000 add x16, x16, #0xeb0 ldr x16, [x16] cmp x16, #0x0 b.ne 0x614198 <main.fib.preempt> 

    nature 的 safepoint 实现仍有优化空间,若后续采用 SIGSEGV 的触发模式,函数调用性能将会得到进一步提升。

    nature 和 golang 采用了截然不同的调度策略和协程设计方案,这会带来哪些不同呢?不妨看看后续的测试

    C 语言 FFI

    通过调用 1 亿次 C 标准库中的 sqrt 函数,测试与 C 语言的协作效率。

    nature 代码示例

    import libc fn main() { for int i = 0; i < 100000000; i+=1 { var r = libc.sqrt(4) } } 

    测试结果

    可以看到在 C FFI 方面,nature 相较于 golang 有着非常大的优势,这是因为 golang 的 CGO 模块有着非常高的性能成本,独立栈协程和抢占式调度设计与 C 语言难以兼容,需要经过复杂的处理。

    而 nature 的共享栈和协作式调度设计与 C 语言更兼容,不仅仅是 C 语言,只要符合 ABI 规范的二进制库,nature 都能直接进行调用。

    在高性能计算、底层硬件操作等场景中,nature 可无缝集成 C / 汇编编写的核心模块,弥补 GC 语言在极致性能场景下的不足,兼顾开发效率与底层性能。

    协程

    协程是现代并发编程的核心组件,本测试通过 “百万协程创建 + 切换 + 简单计算” 场景,评估 Nature 与 Golang 的协程调度效率、内存占用与响应速度。

    nature 代码示例

    import time import co var count = 0 fn sum_co() { count += 1 co.sleep(10000) // ms, Remove this line if no sleep } fn main() { var start = time.now().ms_timestamp() for int i = 0; i < 1000000; i+=1 { go sum_co() } println(time.now().ms_timestamp() - start) // create time int prev_count = 0 for prev_count != count { println(time.now().ms_timestamp() - start, count) prev_count = count co.sleep(10) } println(time.now().ms_timestamp() - 10 - start) // calc time co.sleep(3000) // ms } 

    测试结果

    创建耗时(ms) 计算耗时(ms) 无 sleep 计算耗时(ms) 占用内存
    Nature 540 564 170 900+M
    Golang 1000 1015 140 2500+M

    nature 的协程在综合性能上非常优秀,内存占用更是远低于 golang 。而这是建立在 nature 的协程调度器未进行优化的前提下,预计在后续的版本中 nature 的协程调度器会进一步优化,届时将会有更加亮眼的表现。

    总结

    这是一次非专业的性能测试,但在粗略的测试中,nature 编程语言展现出了超越预期的能力与潜力。作为早期的编程语言,其运行时和编译器还有着非常大的优化空间,在正式版本发布时性能将进一步提升。

    以现在的性能表现来看,nature 无疑是值得关注和尝试的编程语言,尤其是在云原生、网络服务、API 开发等服务端开发领域。


    这是 nature 编程语言的官网 https://nature-lang.cn/ 如果你感兴趣的话也可以加入讨论组,v nature-lang

    74 条回复    2025-12-24 11:41:14 +08:00
    craftsmanship
        1
    craftsmanship  
       2 天前 via Android   1
    又见大佬
    zhanying
        2
    zhanying  
       2 天前   1
    不懂就问,新的编程语言 vibe coding 效果咋样
    weiwenhao
        3
    weiwenhao  
    OP
       2 天前   1
    @zhanying 基于类似 CLAUDE.md 这样的提示词可以达到不错的效果,但是如果是三方库的话,需要有一份 awesome 收集才行。另外就是语法简单,有强类型约束的话 AI 的正确率会更好。
    wweir
        4
    wweir  
       2 天前   1
    gust
    go 的文件头 + rust 的语法习惯
    cmos
        5
    cmos  
       2 天前   1
    从易用性和方便尝鲜的角度来看,我觉得可以实现一个类似 rust 的安装命令(安装在用户目录而不是系统目录),并考虑借鉴 cargo 的功能,填充 Golang 的实用性和 rust cargo 易用性之间的空白区域。
    wfhtqp
        6
    wfhtqp  
       2 天前   2
    golang 也有被当作对手的一天
    weiwenhao
        7
    weiwenhao  
    OP
       2 天前
    @cmos 很有道理,后续如果实现 install.sh 的话就默认安装在用户目录。
    weiwenhao
        8
    weiwenhao  
    OP
       2 天前
    @wfhtqp 我一时都没有理解,这句话指的是 golang 这么强也能当做对手,还是指的 golang 这么弱也配当做对手
    NoobPhper
        9
    NoobPhper  
       2 天前
    文档字体好看 是叫啥
    weiwenhao
        10
    weiwenhao  
    OP
       2 天前
    @NoobPhper Operator Mono 或者 IBM Plex Mono
    Donahue
        11
    Donahue  
       2 天前   1
    大佬 太强了
    xiuming
        12
    xiuming  
       2 天前   1
    @weiwenhao #8 golang 是弱鸡都还要从 php 和 java 那里抢份额
    dog82
        13
    dog82  
       2 天前   2
    用 go 好几年,我依然钟爱 java
    linky6565
        14
    linky6565  
       2 天前   1
    早期版本就能做到性能如此优秀的确了不起
    hutoer
        15
    hutoer  
       2 天前   1
    语法比垃圾 Golang 好,预祝能火起来
    gggggggg
        16
    gggggggg  
       2 天前   1
    为什么所有语言都想来和 golang 比一下?
    gggggggg
        17
    gggggggg  
       2 天前   1
    @gggggggg 收回我刚说的话,nature-lang 还是一个国内大佬写的?那要支持下。
    fregie
        18
    fregie  
       2 天前   1
    我想问一下,这个语言,主要适用于什么场景,或者解决了什么问题呢?
    brucedone
        19
    brucedone  
       2 天前   1
    像 rust ,又像 go ,算是二者的中间集?
    weiwenhao
        21
    weiwenhao  
    OP
       2 天前
    @gggggggg 感谢支持。我就是作者,我应该加上开源自荐这个前缀哈哈
    irrigate2554
        22
    irrigate2554  
       2 天前   1
    感觉像是一个加了 gc 和协程的 rust
    weiwenhao
        23
    weiwenhao  
    OP
       2 天前
    @fregie @brucedone nature 主要是受到了 golang 的启发而开发的编程语言,并且改进了 golang 的一些痛点,包括语法、错误处理、包管理、interface{}、内存安全、cgo 等等。

    而定位上是 golang <--> java/php 之间,语法上有着更好的表达性,并且注重内存安全,所以比 golang 更加适合业务开发,比如 API 、Agent 、云原生等服务端领域开发。

    nature 也继承了 golang 的优点,原生支持并发原语 go+select+channel ,在高并发 IO 应用上有着非常优秀的表现。所以 nature 同样可以用于网络中间件,IOT ,command 等领域开发。

    当然这仅仅是现阶段展现出来的能力,nature 有着完全自研的编译器、汇编器、链接器、运行时,所以可以根据架构和技术发展进行高度定制,nature 下一阶段期望能够探索更多的可能性,能够进行超高性能需求的场景开发,比如操作系统,游戏引擎,GUI ,数据库等。
    whyso
        24
    whyso  
       2 天前   1
    大佬有了解过 vlang 吗? nature 和 vlang 比怎么样?
    5261
        25
    5261  
       2 天前   1
    让子弹飞一会先!
    weiwenhao
        26
    weiwenhao  
    OP
       2 天前
    @whyso vlang 完全继承了 golang 语法,然后正在朝 rust 发展,希望能够开发底层系统,作者好像也在开发操作系统。golang 的协程,GC 之类的在 vlang 中基本就是抛弃的状态。总结来说 vlang 就是 golang 语法 + rust 的内核。

    nature 虽然是受到了 golang 的启发,但是抛弃了 golang 的语法进行重新设计,继承了 golang 的协程,GC 等 runtime 设计,并且进行了相当可观的改进,从性能测试就可以看出来。

    这样一说你应该能感觉到区别是蛮大的。
    irrigate2554
        27
    irrigate2554  
       2 天前
    大佬加油,是我想要的语言没错,但是现在看上去生态还有些简陋,希望有一天能用上。
    x1aoYao
        28
    x1aoYao  
       2 天前
    大佬厉害。Go 除了丑,最不满意的就是 CGO 太拉了。
    可以问几个问题么,Natrue 纯协作式的会有协程饥饿问题吗,似乎相对于无栈协程只是避免了函数染色?
    GC 是移动整理式的吗?
    weiwenhao
        29
    weiwenhao  
    OP
       2 天前
    @x1aoYao 有 safepoint 就也不算纯协作,但是插入的 safepoint 不算多,只是在函数开始时插入了。如果是 for 循环,循环里面也没有函数调用的纯计算就会有饥饿问题,当然也会有 GC 问题。对比过 rust 的协程,性能上确实是无栈协程性能更好一些。

    GC 是 mark-sweep 模式的。
    whyso
        30
    whyso  
       2 天前
    @weiwenhao 感谢大佬解答
    liuliuliuliu
        31
    liuliuliuliu  
    PRO
       2 天前   1
    kanakana
        32
    kanakana  
       1 天前 via Android
    > Golang 采用了抢占式调度,不需要关注 GC safepoint ,但仍需要关注协程栈是否需要扩容。

    > Nature 采用了协作式调度,所以需要处理 GC safepoint 。但 nature 采用共享栈协程,所以不需要关心栈扩容问题。

    好奇问几个问题。从 Go 的源码注释 [1] 看来,Golang 还是有 safe-point 的,这里的“不需要关注”具体是指什么?如果 Go 用 safepoint 切协程的话是不是就与 Nature 比较相像了?

    另外,Go “关注协程栈是否需要扩容”的另一个理由是:不同携程需要的栈大小不同,通过动态扩容我们可以先分配小的栈,再给需要的携程分配大号栈,从而节省内存。Nature 是怎么处理的?会有栈溢出吗?

    [1] https://go.dev/src/runtime/preempt.go
    chennqqi
        33
    chennqqi  
       1 天前
    @liuliuliuliu go/rust 没有开 SIMD 啊
    supuwoerc
        34
    supuwoerc  
       1 天前
    大佬太牛了
    weiwenhao
        35
    weiwenhao  
    OP
       1 天前   1
    @kanakana golang 注释里的 safepoint 应该是用来辅助抢占式调度的判断,我在 fib 的汇编里面没有看到 safepoint 的相关逻辑,应该只是在特定的代码中出现。

    golang 即使分配最小的独立栈也是有 2KB ,所以难以节省内存。nature 每个 processor 一个栈,比如在 8 核 cpu 上一共就 8 个大的栈,每个栈都是 8M 大小。协程切换时将协程中的寄存器信息 copy 到这个大栈上就行,切出时将使用的栈按照精确使用大小切回到协程的存储空间中。
    liuliuliuliu
        36
    liuliuliuliu  
    PRO
       1 天前
    @chennqqi rust nightly 就是 simd 的,go 好像是没有
    BALDOOR
        37
    BALDOOR  
       1 天前   1
    看了眼,意义不大,直接跟 Go 竞争,开发效率没有质的差距,用 Go 的人也不会扣那点性能。
    生态这个更是不可能有,除非有大公司推动。
    Go 的“成功”其实很偶然,不值得参考。
    《定位上是 golang <--> java/php 之间》
    我觉得是位置很小甚至几乎没有空间了。
    找准自己的生态位很重要。
    像那个 MoonBit ,定位 WASM 语言,很少或者没有人去专门用一门语言去写。
    事实是应该这样做,但实际上不会,哪怕是我,我也不会这样做。
    我觉得未来语言会朝着 DSL 方向去,而不是 GPPL ,做一个事情,用一个合适的语言或者解决方案。
    而不是做什么上来就是 Java(调侃)。
    lixuda
        38
    lixuda  
       1 天前
    作者牛,就是生态怎么办,这个还是要多宣传宣传
    weiwenhao
        39
    weiwenhao  
    OP
       1 天前
    @lixuda 是要多宣传宣传,慢慢来总会有的,nature 可以接受 AI 贡献,只要 review 到位就行。
    K753255157
        40
    K753255157  
       1 天前
    建议标准库增加 Map 、Filter 、Reduce 函数能极大提升开发体验
    weiwenhao
        41
    weiwenhao  
    OP
       1 天前
    @BALDOOR 实际上这个位置就是 golang+java+php+node.js 的总和中非常大的一部分中 nature 会是更好的选择。
    kamahi
        42
    kamahi  
       1 天前 via Android
    或许有一天,可以看到:

    science vs rust
    cell vs java

    vultr
        43
    vultr  
       1 天前
    我一直想给 c 加一个 defer 。
    yellowsky
        44
    yellowsky  
       1 天前   1
    @BALDOOR 重点是国内的大佬开发的语言,如果确实是可以对标或优于 golang ,在国内得到推广还是很有可能的。
    Huelse
        45
    Huelse  
       1 天前
    支持支持,语言发展最需要的就是包管理及其生态,希望能坚持下去
    summerLast
        46
    summerLast  
       1 天前
    有一个言论,有了 AI ,小众语言因为训练样本太少,AI 写的并不好,因此小众语言比以前更小众了,大佬,您可以通过 AI 去多构建些应用,并找到一个领域这个领域和其他语言有代级的差异,去强化这个点,让 AI 遇到这个问题时优先推荐这个语言
    millken
        47
    millken  
       1 天前
    最好是着力解决某个当前的痛点(比如跨平台 GUI ),这样推广才容易
    burnsby
        48
    burnsby  
       1 天前
    支持, 并希望它能够流行起来
    BALDOOR
        49
    BALDOOR  
       1 天前
    《实际上这个位置就是 golang+java+php+node.js 的总和中非常大的一部分中 nature 会是更好的选择。》
    这个想法,那更加不可能了,只能想想玩玩可以的。
    语言也好,解决方案也好。优化那几句 if/else 意义为 0 !!!
    要解决问题!要解决问题!要解决问题!
    你要有你的直击问题的杀手锏!杀手锏!杀手锏!
    我不是对你人身攻击,只是说出大多数玩家的 PL 理论以及工程经验其实真的就只能造出玩具。
    另外我建议你不要把 golang+java+php+node.js 混起来,有可能会让人觉得你只会那点 CRUD
    一般情况下分类是《 C/C++/Rust/Zig 》《 C#/Java/Kotlin 》《 Go/PHP/Js/Python/Ruby 》
    我关注的新生的语言,无论是研究型还是打算应用型的算是非常多的。
    有属于它自己的核心杀手锏的不多,更多的是倾向 DLS 般的优化。
    例如 rust 的“成功”,一部分是解决了“精通”c/c++的人(实际精通的人能有多少),另一部分是 cargo 太 TM 好用了
    例如 Node 这种,就是吃了前端人员偷懒不想学语言的空,很多情况都是很偶然的。
    而不是选择,更何况“更好”只存在于你自己那点领域的想法。
    另外那些人,凭借“国产”什么的,如果你也有这样的想法,我劝你还是最好不要碰。
    还有自研汇编不依赖 libc 实现 syscall 其实就是另一个领域的 CRUD ,不要太当回事
    哪怕跟 pass 一样,写多了也没什么两样
    我也算 PL 的老玩家了,偶尔也会有一些 PL 理论上的小“突破”,而经常沾沾自喜,但研究到最后还是发现了其实早就在多年前就有相关的理论出现了。理论尚且如此,工程界那就更难了。
    每一个梦想都值得鼓励,加油骚年!!!
    swananan
        50
    swananan  
       1 天前
    首先,我觉得这个蛮酷的,但是我感觉有的性能测试优势更多是技术方案选择不同导致的,比如抢占式和协商式,选了协商式,那抢占式的好处就捞不到了。

    最近刚看了一篇 https://blog.cloudflare.com/how-we-found-a-bug-in-gos-arm64-compiler/ ,Go 社区这么好,大佬云集,还有金主,依然还会有隐蔽的 bug 。所以,我可能会体验一下(话说我 go 都没怎么写过),但是我很难会在生产项目里面使用新的语言,甚至我的玩具项目都不太可能会选择使用。

    最后好奇问下,nature 后续生态和发展,是全靠 op 一个人吗,感觉这样会很艰辛啊,加油。
    weiwenhao
        51
    weiwenhao  
    OP
       1 天前
    @BALDOOR 如果你真的关注的话,你就会知道编程语言比我们想象的要多的多,甚至到了每周一两个的程度,并且其中很多编程语言都不只是玩一玩,有的甚至维护了几年,数十年。

    虽然我很少拿国产来推广,但是 nature 就是国产编程语言,没什么不耻的。

    另外也不是我发了这个帖子,就是说 nature 的优势就是 if/else ,仅仅是完成了一次性能优化发了个评测而已。你过于激动了,其实你可以看我的发帖记录,我上一次发 nature 相关的帖子已经快接近一年了。至于是否有人需要这样的编程语言你可以看看我之前的发的关于 nature 编程语言的帖子的评论(其中加油呀,牛逼之类的你忽略就行了)。
    BALDOOR
        52
    BALDOOR  
       1 天前
    我早就在知乎看过了。
    不是激动,我是在鼓励每一个有梦想的人,孩子,对你们严格,其实就是想你们成材。
    我几乎每一个我都“喷”,不是真“喷子”,因为 PL 领域真的真的非常非常艰难。
    不管是谁,国产还是火星产,理论还是工程,我是真心想你们有突破的。
    weiwenhao
        53
    weiwenhao  
    OP
       1 天前
    @swananan 如果推广有一定的阶段性成果,会有各种支持的。不过我很少推广 nature 编程语言,所以知道的人不多。
    weiwenhao
        54
    weiwenhao  
    OP
       1 天前
    @summerLast 我对 AI 和编程语言的看法是这样,我后续确实会进行 AI 适配。

    back0893
        55
    back0893  
       1 天前
    宣传还事要等
    我就完成个 lua 虚拟机都很吃力了
    weiwenhao
        56
    weiwenhao  
    OP
       1 天前
    @millken 是的,现在开发和性能优化都基本完成,将会着力于可用软件开发上,在考虑 agent 开发,这个不算痛点,但是还是比较新的领域。
    fregie
        57
    fregie  
       1 天前
    @weiwenhao 可以具体讲讲怎么改进了 golang 的一些痛点吗,或者哪里有文档能看
    mightybruce
        58
    mightybruce  
       1 天前
    看不出和现实有什么更贴合之处,或者说不可或缺的领域, 现实是搞 AI 原生语言,
    AI 编译器 以及 推理引擎 有市场, 你这个说实话根本不符合经济学,所以基本做大不了。

    国内做
    TVM/Triton/TileLang 还有前途, 适配国产芯片专做 GPU 内核的领域专用语言,上层原生支持 PyTorch 、TensorFlow 及国产框架。
    MrKrabs
        59
    MrKrabs  
       1 天前
    一定要叫 vec 吗
    weiwenhao
        60
    weiwenhao  
    OP
       1 天前
    @fregie
    1. 语法设计优化,更加符合直觉,参考语法文档
    2. 错误处理优化,同上
    3. 原生泛型支持,后加的泛型在基础上和原生的还是有一些区别的,比如创建 chan, chan_new<T>() 和 make(chan T) 的区别
    4. 内存安全优化,包括 nullable(?),变量必须赋值,空指针优化等
    4. 包管理方式调整,使用集中式包管理
    5. interface{} 优化,使用 union type
    6. C FFI 优化,性能更好
    7. 协程优化,性能更好
    ---

    上面是已经完成的部分,当然这些问题属于仁者见仁,各有所爱吧。还在开发中的几个小点是

    1. wasm 原生支持
    2. 渐进式 GC 支持,通过手动处理内存的方式解决 STW 问题。
    3. 测试重构
    4. enum 支持
    weiwenhao
        61
    weiwenhao  
    OP
       1 天前
    @MrKrabs 一开始叫 list, 但是 list 属于常用关键字,在变量起名中比较常见,容易冲突。所以尽量选取了偏一点的关键字。(nature 中的所有关键字都是小写,所以不能 List 和 list 区分)。
    weiwenhao
        62
    weiwenhao  
    OP
       1 天前
    @mightybruce 什么是 AI 原生语言,或者说什么样的特性才能叫做 AI 原生语言
    Ipsum
        63
    Ipsum  
       1 天前
    希望 3 年后整个社区能建立起来。
    mightybruce
        64
    mightybruce  
       1 天前
    @weiwenhao 用于神经网络的类 Python GPU 开源编程语言
    Hudiebbk
        65
    Hudiebbk  
       1 天前
    加油,最近写 rust 写的头疼
    MrKrabs
        66
    MrKrabs  
       1 天前
    @weiwenhao sha256 很慢,mbedtls 是支持 arm 的指令的呀
    weiwenhao
        67
    weiwenhao  
    OP
       1 天前
    @MrKrabs 你是调用了很多次测试么,全调用的 mbedtls 的函数,每次调用 finish 输出结构都会调用 gc 分配了 32 字节的缓冲区进行生成,如果是慢的话,可能是这里的分配慢了。

    ```
    fn sha256_t.finish():[u8] {
    var output = vec_new<u8>(0, 32) // SHA256 输出 32 字节
    utils.mbedtls_sha256_finish(&self.mbed_ctx, output.ref())

    // 清理上下文
    utils.mbedtls_sha256_free(&self.mbed_ctx)

    return output
    }
    ```
    MrKrabs
        68
    MrKrabs  
       23 小时 55 分钟前
    @weiwenhao
    我的代码:
    import fmt
    import fs
    import syscall
    import crypto.sha256

    fn main() {
    var ctx = sha256.new()

    var buf = vec_new<u8>(0, 4096)
    var f = fs.open('./nature-v0.7.0-darwin-arm64.tar', syscall.O_RDONLY, 0)

    for true {
    var len = f.read(buf)
    if len == 0 {
    println('read completed')
    break
    }

    ctx.update(buf[..len])
    }

    var dig = ctx.hex()
    println(dig)
    }


    不管怎么样这行开启肯定没坏处
    https://github.com/nature-lang/nature/blob/cf7c3f1e3002cc08508768c4afda2abd044e1515/include/mbedtls/mbedtls_config.h#L3475
    weiwenhao
        69
    weiwenhao  
    OP
       23 小时 43 分钟前
    @MrKrabs ok, 确实需要开启
    kylesean
        70
    kylesean  
       19 小时 11 分钟前
    作者有了解 rue 吗? high level than rust, low level than golang
    weiwenhao
        71
    weiwenhao  
    OP
       16 小时 18 分钟前
    @kylesean https://rue-lang.com/ 这个吗,还很简陋呀
    ytmsdy
        72
    ytmsdy  
       10 小时 18 分钟前
    希望生态能尽快发展起来吧!
    编程语音拼的不单单是性能,更重要的是生态,各种各样的库,能让新手减少重复造轮子
    Cloudust
        73
    Cloudust  
       7 小时 55 分钟前
    好家伙,吸取 go 和 rust 的优点了,赞
    weiwenhao
        74
    weiwenhao  
    OP
       7 小时 11 分钟前
    @ytmsdy 是的,后续会选定一个流行方向全力支持的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3200 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 10:52 PVG 18:52 LAX 02:52 JFK 05:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86