国产编程语言月兔(Moonbit)崭露头角,首发登顶 Hacker News!
张宏波回应道,除了Moonbit在设计上学习Go语言和Rust语言优点的后来者优势外,“从设计之初就考虑IDE,编译器和构建系统上的垂直整合,利于日后整个程序语言的生态发展和稳定”,也从侧面回应了Moonbit的开发初衷——"在Wasm生态缺乏优质供给端的今天,如果能量身为用户和消费端打造一门与标准高度适配的语言,这在整个程序语言界可以形成后发优势。在进行大规模并行编译时的同时,Moonbit能够
知乎上有一个热门问题是:为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言?
评论区的用户对此众说纷纭,大部分答主的回答并不乐观,对中国编程语言的未来并不看好。
一位信息安全方面的知名答主表示:
“现在中国的计算机行业还是处于非常基础的‘应用’阶段,基础理论、基础设计方法学已经断代十几年了。发达的互联网公司,其实是商业模式导致的发达,互联网公司的程序员是被市场和产品经理推动的码农,没有精力去研究工具,包括语言。”
然而近日,事情有了微妙的变化。一个中国团队开发的编程语言在Hacker News亮相。不到一天的时间登上了Hacker News的头版头条,在IT工业界引发了热议,它就是「月兔(Moonbit)」(以下简称:Moonbit)。
国际知名的 Scala 和函数式编程专家 John A De Goes 在试用 Moonbit 后表示:「Moonbit 看起来非常适合在@GolemCloud(WasmCon 2023 的金牌赞助商、领先的WebAssembly Paas平台)上构建应用,并表示有兴趣尝试一下。」
著名前端框架工具Vue.js作者尤雨溪、WebAssembly生态知名公司Wasmedge在试用后在 Twitter(X) 上转发了公告。
全球各大技术爱好者纷纷在评论区留言和评价,技术用户在试用后,对编译速度快到难以置信「Moonbit通过自动内存管理使编程更加简便,从而与Rust区分开来」、「“我已经可以想象下一个 ‘100秒’ 视频了” “以这个速度,可能只需要500毫秒(就可以完成编译)”」。
同时,已经有技术用户和语言爱好者结合自己的已有项目,探索与Moonbit结合开发的可能。
用于Chrome浏览器、LLVM以及Android系统等大型项目的构建系统Ninja,其作者Evan Martin在公告发布后也在评论区表示对Moonbit的期待:
同时,已经有技术用户和语言爱好者结合自己的已有项目,探索与Moonbit结合开发的可能。
围绕着项目本身,目前大家普遍对于Moonbit标准库、构建系统的发展表示期待。
在了解 Moonbit 语言后,来自知名公司GreenLabs的工程师Woonki尝试使用 Moonbit 重新编写著名的生命游戏,Moonbit 出色的编译速度让他深感惊叹,因此他在Twitter(X)上发表感想,表示对这门语言的未来充满了激动和期待。
月兔(Moonbit) 到底是什么?
那备受瞩目的 Moonbit 到底是什么?它为什么能在这么短的时间内获得大家的关注?接下来让我们一起揭开 Moonbit的神秘面纱,深入了解这门语言的背景与特点。
Moonbit 是一套专为云计算和边缘计算设计的端到端解决方案。它不仅包括了通用程序语言设计,还涵盖了编译器、构建系统、集成开发环境(IDE)、部署工具等各个方面。这个全面的设计使得Moonbit能够实现高度垂直整合,从而为用户提供了更出色的开发体验和性能。
Moonbit 是由 IDEA 研究院基础软件中心负责人张宏波及其经验丰富的团队打造而成,仅用不到 11 个月的时间完成语言设计、IDE、编译器和构建系统。IDEA研究院对于底层创新的重视与支持,帮助团队吸引了多位在语言设计和开发领域拥有超过十年专业经验的成员。
值得一提的是,张宏波不仅为多种编程语言做出了贡献,包括 OCaml、ReScript(原 ReasonML/BuckleScript)和 Flow,还是 Rescript 语言工具链几乎所有关键组件的作者,包括高速编译器、标准库以及构建系统等。
Moonbit在架构上进行了创新,主要表现在以下两个方面:
1、设计首个为全局优化而打造的编程语言工具链
在进行大规模并行编译时的同时,Moonbit能够储存用于分离式编译的高层IR,在链接时保存完整的代码信息,从而在链接时实现更多优化,提升程序的运行性能。这一模式也能更好地进行无用代码剪枝(DCE),输出更小的代码体积。
传统编译器上的全局优化存在着内存和时间消耗大、难以充分利用多核处理器性能等问题。为了缓解这一问题,Moonbit在语言特性上能更好地支持无用代码删除,并可达到在多个编译阶段实现DCE,辅以强大的静态类型系统与代码静态分析能力减少无关代码,有效提高程序的整体运行性能,减少程序的体积。
2、为程序语义分析并行和增量化设计的架构
借鉴以往IDE的架构经验,Moonbit在语言设计之初充分考虑了IDE、构建系统、语言设计的协同,实现类型检查和推断的高度并行化和增量化,进一步提高了编译效率和开发体验。另一方面,Moonbit通过自动内存来简化编程、避开了指针或左值等危险元素,同时通过高度并行化的架构以及对分离编译(separate compilation)的原生支持能够实现云IDE在边缘端的直接运行。这解决了业内大多数程序语言的IDE为桌面操作系统所设计,而未能充分考虑在云原生环境下与边缘端的交互的问题。
Moonbit:编译速度快、Wasm体积小、用户友好度高的Webassembly语言
那么,Moonbit究竟有哪些功能值得开发者关注呢?主要包括以下三个方面:
首先是编译速度快,Moonbit注重全局速度,采用多级中间表示(IR)的整体程序优化方法,优化内存布局以减少缓存失效,并为数据和控制流分析提供卓越的上下文。同时,Moonbit在构建性能方面也表现出色,通过工具链的垂直整合,IDE性能得到了极大的提升,这对于开发人员的体验至关重要。根据测试,Moonbit在冷启动环境无缓存模式下只需要不到7s就能检测到4000个package。
第二是Wasm输出体积小,Moonbit通过有效消除死代码,省略了妨碍此分析的语言特性,显著减小了最终代码的大小。据GitHub上可用的基准测试结果,Moonbit 输出的Wasm体积最小,仅约253字节。
第三是用户友好度高,让编程变得更加轻松,Moonbit无需繁复的编程语言,只需用户掌握基本的编程概念,如变量、条件语句和循环,就可以快速上手。用户还可以轻松获取Moonbit提供的广泛工具集,包括管理器、编译器、以及一个无需容器支持、具备离线功能的云IDE(集成开发环境),具备实时代码分析和自动补全功能,助力用户快速编写正确的代码。如果出现错误,编辑器会及时提供错误提示,帮助用户快速发现问题并进行修复。
这里放上Moonbit的试用地址,大家感兴趣的话可以玩一下。
试用地址:https://try.moonbitlang.cn/
月兔(Moonbit):重塑WebAssembly的未来生态
在Hackernews底部的论坛区,针对Moonbit的亮相,有人问起张宏波:「这是否意味着你今后不再主导ReScript的工作,渐而把全部重心放在Moonbit的建设上?」
张宏波回应道,除了Moonbit在设计上学习Go语言和Rust语言优点的后来者优势外,“从设计之初就考虑IDE,编译器和构建系统上的垂直整合,利于日后整个程序语言的生态发展和稳定”,也从侧面回应了Moonbit的开发初衷——"在Wasm生态缺乏优质供给端的今天,如果能量身为用户和消费端打造一门与标准高度适配的语言,这在整个程序语言界可以形成后发优势。"
作为计算机系统软件运行和网络环境的基础,基础软件扮演着至关重要的角色。尽管过去几十年中计算机性能取得了巨大突破,但令人遗憾的是,软件体验并没有同步提升,软件性能的潜力仍然未能充分挖掘。在这个背景下,2017年推出的新一代标准指令集WebAssembly因其高效、轻量、安全等特性,引起了广泛的关注。
然而,目前在WebAssembly平台上,主流的开发语言仍然是一些对程序员门槛相对较高的底层编程语言,如C++和Rust。同时,一些应用层的语言,如Go语言,虽然在WebAssembly上运行,但其生成的代码体积巨大,无法充分发挥WebAssembly平台的优势。因此,在WebAssembly生态系统中,尽管已经有数十种开源的消费端运行时,但高质量供给端的匮乏是当前面临的最大挑战。
为了填补这一生态缺失,Moonbit团队致力于专注在WebAssembly(简称Wasm),打造全新语言和平台;争取在这个领域取得后发优势。正如张宏波在回答知乎热门问题中所强调的,“做自己的语言是个很需要有情怀的事情,困难很多,但是长远意义上是一个国家在基础软件问题上的话语权的问题”。
尽管中国在学术论文发表方面已经居于世界最前列,但在大部分科技领域尤其是基础软件领域中依然处于大而不强的状态。其中很大的难点在于国内缺乏自己的开发平台。拿Matlab做例子,国内的研究人员可能会发一些数值算法或者机器学习很好的论文,论文的成果可能最终转换成Matlab的工具箱的某个函数而不能沉淀在自己的生态里面。
在基础软件领域,特别是在程序语言方面也是类似的情况,业界比较流行的编程语言的社区主要集中在欧洲,比如Haskell社区基本都围绕英国的GHC中,法国和瑞士的PL在业界公认一流,也是因为像法国INRIA这样研究机构主导了OCaml、Coq的开发,瑞士的EPFL拥有自己的研究平台Scala。
开发Moonbit平台是一个“道阻且长,行则将至”的过程,开发编程语言工具链以及培养自己的生态系统需要投入大量的时间和精力,但如果能让国内的基础软件学者和工业界开发者能够在自己的平台上沉淀积累,这将在工程和学术的角度都具有重要意义。
在这一愿景的推动下,Moonbit诞生了,为编程软件的未来开辟新的道路。
月兔(Moonbit)的未来之路
在 Moonbit 的未来之路上,有许多令人兴奋的计划和发展方向。
据了解,除了给用户提供现有的在线IDE和VS Code扩展插件,Moonbit正在利用LLM大语言模型开发 Moonbit GPT,以辅助程序员代码准确性与提高开发效率,Moonbit将在2024年Q2达到Beta状态,在稳定的同时,具备与Wasm宿主进行交互的外部函数接口(FFI)。在未来的战略计划中,团队会考虑将Wasm 2.0的Wasm GC集成到Moonbit并且开发Wasm 1.0 GC。
关于未来的长期计划,张也在Hackernews的讨论区做出了回答,Moonbit将会是他退休前的最后一个项目,Moonbit团队有一个非常强烈的决心与长期愿景,将继续推动Moonbit的发展。
让我们一起期待Moonbit未来的蜕变之路!
参考链接:
[1]https://www.zhihu.com/question/359906573/answer/1709942996
[2]Hacker News: https://news.ycombinator.com/item?id=37174619
[3] Ninja:https://en.wikipedia.org/wiki/Ninja_(build_system)
[4] Moonbit平台背景&应用场景介绍: https://mp.weixin.qq.com/s/HcpB0YiU64J2duPikrr-cw
[5] Moonbit: the fast, compact & user friendly language for WebAssembly:https://zh.月兔(Moonbit)lang.com/blog/first-announce/
[6] 编程语言月兔(Moonbit)开放内测:https://mp.weixin.qq.com/s/6m7xd5pUR20bGmTCtcQEFw
更多推荐
所有评论(0)