作为所有上层软件应用的基石,基础软件支撑着计算机系统软件运行及网络环境。过去几十年,计算机性能飞速增长,但软件体验并未相应提升,优化软件性能的潜力仍然巨大。中国作为全球基础软件行业的后发者,应如何抓住机遇乘势而上,是业界持续努力解决的问题。
了解更多中国程序语言开发背景及行业洞察
推荐阅读:《观点|张宏波:ReScript 语言成长启迪及中国程序语言发展机会》
借鉴了核心开发团队过去十几年在 OCaml[2], BuckleScript[3], ReasonML[3], ReScript[4], Flow[5]等程序语言及其工具开发上的经验,IDEA 研究院基础软件中心自主开发了一套全新的软件核心开发工具——Moonbit(月兔)开发平台[1],涵盖了通用程序语言设计、编译器、构建系统、IDE、部署工具等,在语言设计、编译器和构建系统上实现高度的垂直整合,为用户提供更佳的开发体验和性能,致力打造未来世界级的基础软件生态。
Moonbit IDE 已正式对外开放测试
试用地址如下,欢迎前往体验
(桌面版效果最佳)
https://try.moonbitlang.com
1.新一代标准指令集 WebAssembly[6]的一等支持:“Wasm”目标代码体积最小仅约 132 字节,同样的功能在某些情况下,较传统语言如 Go[7]语言,输出体积缩小近 1 万倍。
2.静态类型检查工具的性能突破:通过工具链的垂直整合,IDE 性能得到了极大提升,比传统语言工具链快数个数量级,比如冷启动环境无缓存模式下只需要约几十毫秒就能检测 6 个 package,传统语言工具链则需要几秒甚至几十秒。
3.可允许离线模式下运行的云 IDE:得益于静态类型检查性能的极大提升和轻量化设计,Moonbit 的 CloudIDE 与传统的云 IDE 采用了完全不同的架构,IDE 响应大部分工作在边缘端执行,用户输入能快速反馈,不再依赖网络带宽。
2017 年推出的新一代标准指令集 WebAssembly,因其高效、轻量、安全的特性,以及可以运行在服务端、边缘端、浏览器等任何计算设备的平台无关性,受到了广泛关注。但现在 WebAssembly 平台上主流的开发语言依然是 C++、Rust[8]这些对程序员来说门槛较高的底层编程语言,而一些应用层的语言如 Go 语言在 WebAssembly 上输出的体积巨大,无法充分利用平台优势。因此,在 WebAssembly 生态内,虽然消费端已有几十种开源的运行时,但优质供给端的匮乏是目前最大的问题。
为了弥补这一生态缺失,Moonbit 平台作为一个后发者,可以更好地支持 WebAssembly 指令集。基于 WebAssembly 自底向上的架构,Moonbit 为 WebAssembly 提供了原生支持,在保证输出的代码体积足够小的同时支持多后端(如 JavaScript),为前后端开发提供一站式的解决方案。
在进行大规模并行编译时的同时,Moonbit 能够储存用于分离式编译的高层 IR,在链接时保存完整的代码信息,从而在链接时实现更多优化,提升程序的运行性能。这一模式也能更好地进行无用代码剪枝,输出更小的代码体积。
传统意义上的全局优化在工程上存在很多问题,其中最大的问题是需要大量的内存和时间,并且不能充分利用多核处理器的性能。为了缓解这一问题,Moonbit 在语言特性上能更好地支持无用代码删除(DCE),并可达到在多个编译阶段实现 DCE,辅以强大的静态类型系统与代码静态分析能力减少无关代码,有效提高程序的整体运行性能,减少程序的体积。
借鉴以往 IDE 的架构经验,Moonbit 在语言设计之初充分考虑了 IDE、构建系统、语言设计的协同,实现类型检查和推断的高度并行化和增量化。
目前,业内大多数程序语言的 IDE 是为桌面操作系统所设计,未能充分考虑在云原生环境下与边缘端的交互。Moonbit 通过高度并行化的架构以及对分离编译(separate compilation)的原生支持,能够实现 CloudIDE 在边缘端的直接运行。Moonbit 快速语义分析的技术可以适配到海量的代码库,在更大的代码库也能在百毫秒级别完成 IDE 响应。初步测试结果显示,Moonbit 在冷启动环境下只需要约 30ms 就能完成数个包的语义检测,而传统语言 IDE 则需要几秒甚至几十秒。
随着人工智能在大模型领域取得突破,未来会有大量代码是在 AI 辅助下设计完成,然而这类代码的准确性需要进行验证。Moonbit 平台将通过程序语言工具链的原生支持,提高 AI 代码的正确性和可维护性。Moonbit 平台具有以下特性:
1. 强大的类型系统和内置静态检测工具:采用强大的类型系统,在编译期检查类型错误,并提供内置的静态检测工具,可以在编程时发现潜在问题和错误,从而进一步提高代码的正确性。
2. 快速的交互解释输出:帮助 AI 立即查看代码效果,进行快速迭代和修正。
3. 语言级别的内置 expect 测试和测试自动生成框架:自动检查输出是否符合预期,并生成测试用例。
4. 对形式化验证更好的工具支持:证明代码在所有情况下符合正确要求,进一步提高代码的正确性。
Moonbit 平台的重要部分之一,是从 2022 年 9 月已启动开发的 Moonbit 语言,现处于高速发展阶段,语法特性和语义已趋于稳定。
Moonbit 语言开发结合了多款主流工业语言的经验,在工程上借鉴了 Go 的简洁设计(如包管理等),在语义上借鉴了 Rust 和 ReScript 的类型安全特性,支持代数数据类型和复杂的模式匹配,同时支持一定程度的面向对象特性。而相较于已有语言,Moonbit 也具备独特的优势:
1. Moonbit 的类型系统更强大,比如支持模式匹配、代数数据类型、不可变数据结构,以及更多的类型推导。
2. Moonbit 是为 WebAssembly 设计的程序语言,设计之初就考虑全局优化和代码体积,编译出来的 WebAssembly 体积极小,在内部测试中,某些情况下 Moonbit 编译出的 WebAssembly,能比 Go 语言编译的体积小 1 万倍以上。
1. 通过工具链的垂直整合,编译速度和 IDE 响应速度比 Rust 快数个数量级。
2. 提供自动内存管理,减轻开发者的心智负担,更适合面向应用开发。
Github Syntax[9]已同时上线
欢迎前往试用,期待社区更多反馈
https://github.com/moonbitlang/moonbit-syntax
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-syntaxhttps://github.com/moonbitlang/moonbit-syntax
作为所有上层软件应用的基石,基础软件支撑着计算机系统软件运行及网络环境。过去几十年,计算机性能飞速增长,但软件体验并未相应提升,优化软件性能的潜力仍然巨大。中国作为全球基础软件行业的后发者,应如何抓住机遇乘势而上,是业界持续努力解决的问题。
了解更多中国程序语言开发背景及行业洞察
推荐阅读:《观点|张宏波:ReScript 语言成长启迪及中国程序语言发展机会》
借鉴了核心开发团队过去十几年在 OCaml[2], BuckleScript[3], ReasonML[3], ReScript[4], Flow[5]等程序语言及其工具开发上的经验,IDEA 研究院基础软件中心自主开发了一套全新的软件核心开发工具——Moonbit(月兔)开发平台[1],涵盖了通用程序语言设计、编译器、构建系统、IDE、部署工具等,在语言设计、编译器和构建系统上实现高度的垂直整合,为用户提供更佳的开发体验和性能,致力打造未来世界级的基础软件生态。
Moonbit IDE 已正式对外开放测试
试用地址如下,欢迎前往体验
(桌面版效果最佳)
https://try.moonbitlang.com
1.新一代标准指令集 WebAssembly[6]的一等支持:“Wasm”目标代码体积最小仅约 132 字节,同样的功能在某些情况下,较传统语言如 Go[7]语言,输出体积缩小近 1 万倍。
2.静态类型检查工具的性能突破:通过工具链的垂直整合,IDE 性能得到了极大提升,比传统语言工具链快数个数量级,比如冷启动环境无缓存模式下只需要约几十毫秒就能检测 6 个 package,传统语言工具链则需要几秒甚至几十秒。
3.可允许离线模式下运行的云 IDE:得益于静态类型检查性能的极大提升和轻量化设计,Moonbit 的 CloudIDE 与传统的云 IDE 采用了完全不同的架构,IDE 响应大部分工作在边缘端执行,用户输入能快速反馈,不再依赖网络带宽。
2017 年推出的新一代标准指令集 WebAssembly,因其高效、轻量、安全的特性,以及可以运行在服务端、边缘端、浏览器等任何计算设备的平台无关性,受到了广泛关注。但现在 WebAssembly 平台上主流的开发语言依然是 C++、Rust[8]这些对程序员来说门槛较高的底层编程语言,而一些应用层的语言如 Go 语言在 WebAssembly 上输出的体积巨大,无法充分利用平台优势。因此,在 WebAssembly 生态内,虽然消费端已有几十种开源的运行时,但优质供给端的匮乏是目前最大的问题。
为了弥补这一生态缺失,Moonbit 平台作为一个后发者,可以更好地支持 WebAssembly 指令集。基于 WebAssembly 自底向上的架构,Moonbit 为 WebAssembly 提供了原生支持,在保证输出的代码体积足够小的同时支持多后端(如 JavaScript),为前后端开发提供一站式的解决方案。
在进行大规模并行编译时的同时,Moonbit 能够储存用于分离式编译的高层 IR,在链接时保存完整的代码信息,从而在链接时实现更多优化,提升程序的运行性能。这一模式也能更好地进行无用代码剪枝,输出更小的代码体积。
传统意义上的全局优化在工程上存在很多问题,其中最大的问题是需要大量的内存和时间,并且不能充分利用多核处理器的性能。为了缓解这一问题,Moonbit 在语言特性上能更好地支持无用代码删除(DCE),并可达到在多个编译阶段实现 DCE,辅以强大的静态类型系统与代码静态分析能力减少无关代码,有效提高程序的整体运行性能,减少程序的体积。
借鉴以往 IDE 的架构经验,Moonbit 在语言设计之初充分考虑了 IDE、构建系统、语言设计的协同,实现类型检查和推断的高度并行化和增量化。
目前,业内大多数程序语言的 IDE 是为桌面操作系统所设计,未能充分考虑在云原生环境下与边缘端的交互。Moonbit 通过高度并行化的架构以及对分离编译(separate compilation)的原生支持,能够实现 CloudIDE 在边缘端的直接运行。Moonbit 快速语义分析的技术可以适配到海量的代码库,在更大的代码库也能在百毫秒级别完成 IDE 响应。初步测试结果显示,Moonbit 在冷启动环境下只需要约 30ms 就能完成数个包的语义检测,而传统语言 IDE 则需要几秒甚至几十秒。
随着人工智能在大模型领域取得突破,未来会有大量代码是在 AI 辅助下设计完成,然而这类代码的准确性需要进行验证。Moonbit 平台将通过程序语言工具链的原生支持,提高 AI 代码的正确性和可维护性。Moonbit 平台具有以下特性:
1. 强大的类型系统和内置静态检测工具:采用强大的类型系统,在编译期检查类型错误,并提供内置的静态检测工具,可以在编程时发现潜在问题和错误,从而进一步提高代码的正确性。
2. 快速的交互解释输出:帮助 AI 立即查看代码效果,进行快速迭代和修正。
3. 语言级别的内置 expect 测试和测试自动生成框架:自动检查输出是否符合预期,并生成测试用例。
4. 对形式化验证更好的工具支持:证明代码在所有情况下符合正确要求,进一步提高代码的正确性。
Moonbit 平台的重要部分之一,是从 2022 年 9 月已启动开发的 Moonbit 语言,现处于高速发展阶段,语法特性和语义已趋于稳定。
Moonbit 语言开发结合了多款主流工业语言的经验,在工程上借鉴了 Go 的简洁设计(如包管理等),在语义上借鉴了 Rust 和 ReScript 的类型安全特性,支持代数数据类型和复杂的模式匹配,同时支持一定程度的面向对象特性。而相较于已有语言,Moonbit 也具备独特的优势:
1. Moonbit 的类型系统更强大,比如支持模式匹配、代数数据类型、不可变数据结构,以及更多的类型推导。
2. Moonbit 是为 WebAssembly 设计的程序语言,设计之初就考虑全局优化和代码体积,编译出来的 WebAssembly 体积极小,在内部测试中,某些情况下 Moonbit 编译出的 WebAssembly,能比 Go 语言编译的体积小 1 万倍以上。
1. 通过工具链的垂直整合,编译速度和 IDE 响应速度比 Rust 快数个数量级。
2. 提供自动内存管理,减轻开发者的心智负担,更适合面向应用开发。
Github Syntax[9]已同时上线
欢迎前往试用,期待社区更多反馈
https://github.com/moonbitlang/moonbit-syntax
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-syntaxhttps://github.com/moonbitlang/moonbit-syntax