新闻动态

听见我们的声音

作为所有上层软件应用的基石,基础软件支撑着计算机系统软件运行及网络环境。过去几十年,计算机性能飞速增长,但软件体验并未相应提升,优化软件性能的潜力仍然巨大。中国作为全球基础软件行业的后发者,应如何抓住机遇乘势而上,是业界持续努力解决的问题。

了解更多中国程序语言开发背景及行业洞察
推荐阅读:《观点|张宏波:ReScript 语言成长启迪及中国程序语言发展机会》

借鉴了核心开发团队过去十几年在 OCaml[2], BuckleScript[3], ReasonML[3], ReScript[4], Flow[5]等程序语言及其工具开发上的经验,IDEA 研究院基础软件中心自主开发了一套全新的软件核心开发工具——Moonbit(月兔)开发平台[1],涵盖了通用程序语言设计、编译器、构建系统、IDE、部署工具等,在语言设计、编译器和构建系统上实现高度的垂直整合,为用户提供更佳的开发体验和性能,致力打造未来世界级的基础软件生态。

Moonbit IDE 已正式对外开放测试
试用地址如下,欢迎前往体验
(桌面版效果最佳)
https://try.moonbitlang.com


Moonbit 阶段性成果

1.新一代标准指令集 WebAssembly[6]的一等支持:“Wasm”目标代码体积最小仅约 132 字节,同样的功能在某些情况下,较传统语言如 Go[7]语言,输出体积缩小近 1 万倍。

2.静态类型检查工具的性能突破:通过工具链的垂直整合,IDE 性能得到了极大提升,比传统语言工具链快数个数量级,比如冷启动环境无缓存模式下只需要约几十毫秒就能检测 6 个 package,传统语言工具链则需要几秒甚至几十秒。

3.可允许离线模式下运行的云 IDE:得益于静态类型检查性能的极大提升和轻量化设计,Moonbit 的 CloudIDE 与传统的云 IDE 采用了完全不同的架构,IDE 响应大部分工作在边缘端执行,用户输入能快速反馈,不再依赖网络带宽。

Moonbit 运行单文件的毫秒级速度
Moonbit 实现重命名与跨文件交互功能

 

Moonbit:WebAssembly 平台上的最优解决方案

2017 年推出的新一代标准指令集 WebAssembly,因其高效、轻量、安全的特性,以及可以运行在服务端、边缘端、浏览器等任何计算设备的平台无关性,受到了广泛关注。但现在 WebAssembly 平台上主流的开发语言依然是 C++、Rust[8]这些对程序员来说门槛较高的底层编程语言,而一些应用层的语言如 Go 语言在 WebAssembly 上输出的体积巨大,无法充分利用平台优势。因此,在 WebAssembly 生态内,虽然消费端已有几十种开源的运行时,但优质供给端的匮乏是目前最大的问题。

为了弥补这一生态缺失,Moonbit 平台作为一个后发者,可以更好地支持 WebAssembly 指令集。基于 WebAssembly 自底向上的架构,Moonbit 为 WebAssembly 提供了原生支持,在保证输出的代码体积足够小的同时支持多后端(如 JavaScript),为前后端开发提供一站式的解决方案。

 

Moonbit 的创新架构

(一)首个为全局优化设计的编程语言工具链

传统编译器与 Moonbit 编译器优化对比

在进行大规模并行编译时的同时,Moonbit 能够储存用于分离式编译的高层 IR,在链接时保存完整的代码信息,从而在链接时实现更多优化,提升程序的运行性能。这一模式也能更好地进行无用代码剪枝,输出更小的代码体积。

传统意义上的全局优化在工程上存在很多问题,其中最大的问题是需要大量的内存和时间,并且不能充分利用多核处理器的性能。为了缓解这一问题,Moonbit 在语言特性上能更好地支持无用代码删除(DCE),并可达到在多个编译阶段实现 DCE,辅以强大的静态类型系统与代码静态分析能力减少无关代码,有效提高程序的整体运行性能,减少程序的体积。

(二)为程序语义分析并行和增量化设计的架构

Moonbit 平台的云原生支持

借鉴以往 IDE 的架构经验,Moonbit 在语言设计之初充分考虑了 IDE、构建系统、语言设计的协同,实现类型检查和推断的高度并行化和增量化。

目前,业内大多数程序语言的 IDE 是为桌面操作系统所设计,未能充分考虑在云原生环境下与边缘端的交互。Moonbit 通过高度并行化的架构以及对分离编译(separate compilation)的原生支持,能够实现 CloudIDE 在边缘端的直接运行。Moonbit 快速语义分析的技术可以适配到海量的代码库,在更大的代码库也能在百毫秒级别完成 IDE 响应。初步测试结果显示,Moonbit 在冷启动环境下只需要约 30ms 就能完成数个包的语义检测,而传统语言 IDE 则需要几秒甚至几十秒。

(三)为人工智能的交互而设计

随着人工智能在大模型领域取得突破,未来会有大量代码是在 AI 辅助下设计完成,然而这类代码的准确性需要进行验证。Moonbit 平台将通过程序语言工具链的原生支持,提高 AI 代码的正确性和可维护性。Moonbit 平台具有以下特性:

1. 强大的类型系统和内置静态检测工具:采用强大的类型系统,在编译期检查类型错误,并提供内置的静态检测工具,可以在编程时发现潜在问题和错误,从而进一步提高代码的正确性。

2. 快速的交互解释输出:帮助 AI 立即查看代码效果,进行快速迭代和修正。

3. 语言级别的内置 expect 测试和测试自动生成框架:自动检查输出是否符合预期,并生成测试用例。

4. 对形式化验证更好的工具支持:证明代码在所有情况下符合正确要求,进一步提高代码的正确性。

 

Moonbit 与主流工业语言的比较

Moonbit 平台的重要部分之一,是从 2022 年 9 月已启动开发的 Moonbit 语言,现处于高速发展阶段,语法特性和语义已趋于稳定。

Moonbit 语言开发结合了多款主流工业语言的经验,在工程上借鉴了 Go 的简洁设计(如包管理等),在语义上借鉴了 Rust 和 ReScript 的类型安全特性,支持代数数据类型和复杂的模式匹配,同时支持一定程度的面向对象特性。而相较于已有语言,Moonbit 也具备独特的优势:

(一)Moonbit 相比于 Go 的主要优点

1. Moonbit 的类型系统更强大,比如支持模式匹配、代数数据类型、不可变数据结构,以及更多的类型推导。

2. Moonbit 是为 WebAssembly 设计的程序语言,设计之初就考虑全局优化和代码体积,编译出来的 WebAssembly 体积极小,在内部测试中,某些情况下 Moonbit 编译出的 WebAssembly,能比 Go 语言编译的体积小 1 万倍以上。

(二)Moonbit 相比于 Rust 的优点

1. 通过工具链的垂直整合,编译速度和 IDE 响应速度比 Rust 快数个数量级。

2. 提供自动内存管理,减轻开发者的心智负担,更适合面向应用开发。

Github Syntax[9]已同时上线
欢迎前往试用,期待社区更多反馈
https://github.com/moonbitlang/moonbit-syntax

 

展望未来:Moonbit 路线图

Moonbit 编程语言将以以下路线图为指导,致力于成为未来最具创新力和效率的编程语言。

参考网址:

[1] Moonbit 月兔平台官方&Demo 试用地址:https://try.moonbitlang.com
[2] OCaml:https://ocaml.org/
[3] BuckleScript/Reason/ReasonML:https://rescript-lang.org/blog/bucklescript-is-rebranding
[4] Rescript:https://rescript-lang.org/
[5] Flow:http://flow.org/
[6] WebAssembly:https://webassembly.org/
[7] Go:https://go.dev/
[8] Rust:https://www.rust-lang.org/
[9] Moonbit Github Syntax:https://github.com/moonbitlang/moonbit-syntax
https://github.com/moonbitlang/moonbit-syntax

编程语言Moonbit开放内测:极快编译速度,极小Wasm体积

日期:2023-05-30
  • 分享:
更高效的编程语言,更智能的开发体验

作为所有上层软件应用的基石,基础软件支撑着计算机系统软件运行及网络环境。过去几十年,计算机性能飞速增长,但软件体验并未相应提升,优化软件性能的潜力仍然巨大。中国作为全球基础软件行业的后发者,应如何抓住机遇乘势而上,是业界持续努力解决的问题。

了解更多中国程序语言开发背景及行业洞察
推荐阅读:《观点|张宏波:ReScript 语言成长启迪及中国程序语言发展机会》

借鉴了核心开发团队过去十几年在 OCaml[2], BuckleScript[3], ReasonML[3], ReScript[4], Flow[5]等程序语言及其工具开发上的经验,IDEA 研究院基础软件中心自主开发了一套全新的软件核心开发工具——Moonbit(月兔)开发平台[1],涵盖了通用程序语言设计、编译器、构建系统、IDE、部署工具等,在语言设计、编译器和构建系统上实现高度的垂直整合,为用户提供更佳的开发体验和性能,致力打造未来世界级的基础软件生态。

Moonbit IDE 已正式对外开放测试
试用地址如下,欢迎前往体验
(桌面版效果最佳)
https://try.moonbitlang.com


Moonbit 阶段性成果

1.新一代标准指令集 WebAssembly[6]的一等支持:“Wasm”目标代码体积最小仅约 132 字节,同样的功能在某些情况下,较传统语言如 Go[7]语言,输出体积缩小近 1 万倍。

2.静态类型检查工具的性能突破:通过工具链的垂直整合,IDE 性能得到了极大提升,比传统语言工具链快数个数量级,比如冷启动环境无缓存模式下只需要约几十毫秒就能检测 6 个 package,传统语言工具链则需要几秒甚至几十秒。

3.可允许离线模式下运行的云 IDE:得益于静态类型检查性能的极大提升和轻量化设计,Moonbit 的 CloudIDE 与传统的云 IDE 采用了完全不同的架构,IDE 响应大部分工作在边缘端执行,用户输入能快速反馈,不再依赖网络带宽。

Moonbit 运行单文件的毫秒级速度
Moonbit 实现重命名与跨文件交互功能

 

Moonbit:WebAssembly 平台上的最优解决方案

2017 年推出的新一代标准指令集 WebAssembly,因其高效、轻量、安全的特性,以及可以运行在服务端、边缘端、浏览器等任何计算设备的平台无关性,受到了广泛关注。但现在 WebAssembly 平台上主流的开发语言依然是 C++、Rust[8]这些对程序员来说门槛较高的底层编程语言,而一些应用层的语言如 Go 语言在 WebAssembly 上输出的体积巨大,无法充分利用平台优势。因此,在 WebAssembly 生态内,虽然消费端已有几十种开源的运行时,但优质供给端的匮乏是目前最大的问题。

为了弥补这一生态缺失,Moonbit 平台作为一个后发者,可以更好地支持 WebAssembly 指令集。基于 WebAssembly 自底向上的架构,Moonbit 为 WebAssembly 提供了原生支持,在保证输出的代码体积足够小的同时支持多后端(如 JavaScript),为前后端开发提供一站式的解决方案。

 

Moonbit 的创新架构

(一)首个为全局优化设计的编程语言工具链

传统编译器与 Moonbit 编译器优化对比

在进行大规模并行编译时的同时,Moonbit 能够储存用于分离式编译的高层 IR,在链接时保存完整的代码信息,从而在链接时实现更多优化,提升程序的运行性能。这一模式也能更好地进行无用代码剪枝,输出更小的代码体积。

传统意义上的全局优化在工程上存在很多问题,其中最大的问题是需要大量的内存和时间,并且不能充分利用多核处理器的性能。为了缓解这一问题,Moonbit 在语言特性上能更好地支持无用代码删除(DCE),并可达到在多个编译阶段实现 DCE,辅以强大的静态类型系统与代码静态分析能力减少无关代码,有效提高程序的整体运行性能,减少程序的体积。

(二)为程序语义分析并行和增量化设计的架构

Moonbit 平台的云原生支持

借鉴以往 IDE 的架构经验,Moonbit 在语言设计之初充分考虑了 IDE、构建系统、语言设计的协同,实现类型检查和推断的高度并行化和增量化。

目前,业内大多数程序语言的 IDE 是为桌面操作系统所设计,未能充分考虑在云原生环境下与边缘端的交互。Moonbit 通过高度并行化的架构以及对分离编译(separate compilation)的原生支持,能够实现 CloudIDE 在边缘端的直接运行。Moonbit 快速语义分析的技术可以适配到海量的代码库,在更大的代码库也能在百毫秒级别完成 IDE 响应。初步测试结果显示,Moonbit 在冷启动环境下只需要约 30ms 就能完成数个包的语义检测,而传统语言 IDE 则需要几秒甚至几十秒。

(三)为人工智能的交互而设计

随着人工智能在大模型领域取得突破,未来会有大量代码是在 AI 辅助下设计完成,然而这类代码的准确性需要进行验证。Moonbit 平台将通过程序语言工具链的原生支持,提高 AI 代码的正确性和可维护性。Moonbit 平台具有以下特性:

1. 强大的类型系统和内置静态检测工具:采用强大的类型系统,在编译期检查类型错误,并提供内置的静态检测工具,可以在编程时发现潜在问题和错误,从而进一步提高代码的正确性。

2. 快速的交互解释输出:帮助 AI 立即查看代码效果,进行快速迭代和修正。

3. 语言级别的内置 expect 测试和测试自动生成框架:自动检查输出是否符合预期,并生成测试用例。

4. 对形式化验证更好的工具支持:证明代码在所有情况下符合正确要求,进一步提高代码的正确性。

 

Moonbit 与主流工业语言的比较

Moonbit 平台的重要部分之一,是从 2022 年 9 月已启动开发的 Moonbit 语言,现处于高速发展阶段,语法特性和语义已趋于稳定。

Moonbit 语言开发结合了多款主流工业语言的经验,在工程上借鉴了 Go 的简洁设计(如包管理等),在语义上借鉴了 Rust 和 ReScript 的类型安全特性,支持代数数据类型和复杂的模式匹配,同时支持一定程度的面向对象特性。而相较于已有语言,Moonbit 也具备独特的优势:

(一)Moonbit 相比于 Go 的主要优点

1. Moonbit 的类型系统更强大,比如支持模式匹配、代数数据类型、不可变数据结构,以及更多的类型推导。

2. Moonbit 是为 WebAssembly 设计的程序语言,设计之初就考虑全局优化和代码体积,编译出来的 WebAssembly 体积极小,在内部测试中,某些情况下 Moonbit 编译出的 WebAssembly,能比 Go 语言编译的体积小 1 万倍以上。

(二)Moonbit 相比于 Rust 的优点

1. 通过工具链的垂直整合,编译速度和 IDE 响应速度比 Rust 快数个数量级。

2. 提供自动内存管理,减轻开发者的心智负担,更适合面向应用开发。

Github Syntax[9]已同时上线
欢迎前往试用,期待社区更多反馈
https://github.com/moonbitlang/moonbit-syntax

 

展望未来:Moonbit 路线图

Moonbit 编程语言将以以下路线图为指导,致力于成为未来最具创新力和效率的编程语言。

参考网址:

[1] Moonbit 月兔平台官方&Demo 试用地址:https://try.moonbitlang.com
[2] OCaml:https://ocaml.org/
[3] BuckleScript/Reason/ReasonML:https://rescript-lang.org/blog/bucklescript-is-rebranding
[4] Rescript:https://rescript-lang.org/
[5] Flow:http://flow.org/
[6] WebAssembly:https://webassembly.org/
[7] Go:https://go.dev/
[8] Rust:https://www.rust-lang.org/
[9] Moonbit Github Syntax:https://github.com/moonbitlang/moonbit-syntax
https://github.com/moonbitlang/moonbit-syntax