MoonBit自去年发布alpha版后,反响热烈。经过一年的高速迭代,MoonBit到达了beta预览版的里程碑:在核心语言特性上,MoonBit媲美、甚至超越了大部分主流语言的1.0版本;语言特性的开发稳定,开发者可以更广泛地参与到生态建设中来。这里列举几个MoonBit的核心特性:
现代语言复杂性的很大一部分在于类型系统的设计,很多主流工业语言,比如Java,Go在1.0版本推出很多年以后才会渐渐完善泛型的支持,但是这会对生态造成撕裂。MoonBit在beta预览版本已经完成了泛型和ad-hocpolymoprhism,而且MoonBit在保持极快的编译速度的同时,提供了零开销的泛型支持。
错误处理是现代语言设计中的重要组成部分,大部分编程语言在静态分析中,彻底放弃错误处理的支持,这意味着任何函数都可以抛出异常,很难写出高可靠性的代码。MoonBit通过准确的控制流分析,可以完全在编译时期跟踪函数的错误。这一过程几乎完全由编译器自行推导,且不像Javacheckedexception那样过于繁琐,降低用户的心智负担。
传统的编程语言的迭代器会产生频繁的装箱操作,导致其性能比普通的循环要糟糕很多。MoonBit创新地使用了零开销的迭代器设计,可以让用户写出优雅代码的同时保持程序的性能。
MoonBit是一个全场景覆盖的开发者平台,紧跟科技前沿和行业趋势,侧重于云计算、边缘计算、人工智能以及教学领域的发展,并在每个领域做到极致,确保在性能上领先其他语言至少一个数量级。
在云计算领域,MoonBit近期已支持Wasm组件模型,并有海外用户实现了与Spin框架集成的MoonBitSDK。
通过将应用程序拆分成独立的、可重用的组件,MoonBit可以在云计算开发中更好地利用模块化开发、灵活的部署和更新、资源优化、防止单点故障提高安全性、易于扩展和集成等特性,实现云计算应用场景中的突出优势,提高系统的灵活性和安全性,简化扩展和集成过程,从而显著提高云计算开发效率并降低运营成本。
在边缘计算领域,目前已有MoonBitPDK插件,并被Extism收入官方PDK库。
通过PDK的支持,MoonBit能够在边缘计算应用中更高效地利用硬件资源,实现分布式计算和本地处理,提升性能和响应速度,同时确保设备兼容性和数据安全性,从而大大提升开发和部署效率,满足低延迟和高效能的需求。
在MoonBit的应用生态发展中,注重为学生群体以及编程语言初学者提供简单易学的入门环境,并以游戏的形式打造轻松愉悦的学习体验。
MoonBit现已支持使用WebAssembly开发小型复古游戏的WASM-4框架。凭借MoonBit的高效工具链和简洁设计,入门级开发者可以在官方教程的指导下轻松创作属于自己的第一款游戏。
同时,框架内置的多玩家支持功能能够让至多四名玩家共同体验游戏的乐趣。无论是创作过程还是开发体验,MoonBit都能让初学者体验前所未有的简单与高效。
不仅如此,由于MoonBit支持实时可视化开发,同时编译速度极快,开发者还能够实时更改代码来灵活调整游戏参数。
MoonBit团队正在开发MiniMoonBit编译器教学项目。学生可以用MoonBit实现MoonBit语言的一个子集。由于MoonBit强大的表达力,相较传统的用C/C++实现的编译器项目,学生可以更轻松地上手实现。
同时,MiniMoonBit项目采用了模块化的设计,多层IR都有对应的JSON文本表示,学生不再需要从头实现编译器的每个环节,而是可以选择感兴趣的模块来学习。
MoonBit于2022年启动开发计划,凭借团队在ReScript、OCaml、Flow等工业编程语言研发中的十多年经验,迅速在两年内完成了整套工具链的开发,致力于成为第一个走向国际的中国编程语言。
此外,MoonBit还在全球DevOps领域权威媒体平台TheNewsStack、日本顶尖科技社区Zenn等知科技媒体上频频出现,进一步巩固了其全球影响力。
同时,MoonBit在工业应用方面进展迅速,包括多家海外创业公司的应用、在国内拥有数据库领域的商业合作伙伴等。这一过程中,MoonBit一直致力于发挥其在语言速度、代码精简和数据处理等方面的卓越优势。
MoonBit致力于实现全栈性能的卓越表现,包括编译性能和运行时性能。
MoonBit在输出Wasm代码体积上相较于传统语言有显著优势。MoonBit通过WebAssembly(Wasm)组件模型,在生成代码时实现了显著的体积优化。相比其他编程语言,MoonBit编写的Wasm组件代码体积大幅减少。
借助前文提到的创新错误处理机制,MoonBit有效解决了传统编译技术在错误处理机制转换中遇到的适用范围有限和内存开销大的问题。通过静态分析源程序中的错误处理代码,并根据目标编程语言的特性进行转换,MoonBit扩大了适用语言范围,减少了内存开销,同时提升了代码的安全性和稳定性。
健壮的类型系统是MoonBit保障其安全的重要设计之一。MoonBit采用了强大的类型系统,并内置静态检测工具,在编译期检查类型错误,从而提高代码的正确性和可靠性。
MoonBit的安全保障得益于其对WebAssembly的原生支持,这一特性使得MoonBit能够深度挖掘Wasm在沙箱环境、内存隔离以及默认的无权限机制(deny-by-default)等方面的安全架构优势。通过这些先进的安全特性,释放其在云计算和边缘计算安全问题上的潜力。同时结合语言自身类型系统安全,删减无用代码(DCE)、编译为经过验证的Wasm指令等三层保障,确保代码可信与数据隐私安全。
MoonBit作为一门多范式编程语言,在保持语言简单性的同时,也侧重于提供数据处理的最佳体验。MoonBit通过原生支持JSON处理、Iter类型和模式匹配实现高效数据处理,在语法设计上兼具动态语言的灵活性和静态语言的安全高效,直观而简洁地进行对数据的解析和转换。
JSON处理
MoonBit在数据处理上的语法设计旨在优化常见的数据处理场景,解决传统方法中由于生成多个中间数组而导致的性能问题。在Iter性能对比中,MoonBit的数据处理速度达到了JavaScript的25倍之多。
相较于传统的编程语言设计路线,MoonBit从一开始就提供全套开发、调试、部署的一站式解决方案。MoonBit不仅提供多后端支持、通用程序语言设计,还涵盖了编译器、构建系统、集成开发环境(IDE)、调试器,部署工具等。
这个全面的设计使得MoonBit能够实现高度垂直整合,而且可以同时在云端和边缘端执行,更好地与各种资源进行交互,从而为用户提供极致的开发体验和性能。
与其他云IDE不同,MoonBit对IDE的支持不仅包含了现代IDE的所有功能,且MoonBit无需依赖容器。快速语义分析技术可处理大量的代码库,并且在更大规模的代码库中也能在百毫秒级别完成IDE响应。
现今大多数编程语言的IDE是为桌面操作系统设计的,未能很好地适应云原生环境和边缘端的需求。MoonBit则通过采用高度并行化的架构和对分离编译的原生支持,使得云IDE可以直接在边缘端运行。这在现今大多数语言的云IDE中是首次。
除了传统IDE的功能以外,MoonBitAI助手现已内置于MoonBitIDE,并实现了自动化测试生成、文档生成,以及代码解释功能,为应用的开发、测试和文档编写提供了全方位的支持,使得开发者能够更加专注于业务逻辑的实现,而不必担心底层的复杂性和维护工作。
MoonBit在初始阶段已经提供其他语言通常在成熟阶段才拥有的调试工具。MoonBit目前已提供sourcemap支持,支持源码映射、基于源码设置断点、输出sourcemap等,可以在浏览器中进行源码调试。这项功能的推出不仅减轻了开发者在代码调试方面的负担,还显著提升了开发和调试的流畅性。
对于JavaScript后端,用户仅需在JavaScriptDebugTerminal上执行moonrun--targetjs--debug,即可立刻进入调试。MoonBit的sourcemap和调试支持显著优化开发者的调试体验,确保JavaScript代码的生成尽可能贴近源码,变量名和字段名保持一致,便于使用浏览器的DevTools进行源码检查和调试。
MoonBit作为一门从0到1的编程语言,对于生态建设尤为重视,其中一个关键在于构建高效且功能丰富的包管理系统。我们搭建了一个中心化的MoonBit包管理平台mooncakes.io,提升包的获取速度和编译效率,从而为开发者提供一个高效的工作环境。
此外,我们注重文档的管理和维护。为了让第三方包更加易于开发者理解和使用,我们提供了文档生成工具moondoc,并在mooncakes.io集成了每个包的文档,以帮助开发者编写和分发包的文档、帮助包的使用者创造高质量的应用。
这个世界是否还需要一门新的编程语言?答案是,是。
编程语言的发展经历了60年代时,结构化编程的兴起。到70年代,则是面向对象编程与C语言。90年代,是脚本语言与互联网。而00年代,是语言的统一与多样性。到了10年代,是现代语言与大数据。编程语言在不断进步,同时也有大量的编程语言渐渐销声匿迹。
大模型时代浩浩荡荡的浪潮卷席了万事万物。编程语言作为计算机核心组件、且是软件开发者创造技术世界最重要的工具,自然被顶上风口浪尖。整个技术行业都对编程语言提出了更高的要求。
在大模型时代,工具重塑了开发者的工作方式,同时也降低了学习新语言的门槛。开发者将更专注于创意和设计,代码的实现和优化则由编程工具完成。这一转变推动编程工具从简单的代码生成器进化为复杂问题解决平台。
MoonBitAI云原生开发者平台——MoonBit编程语言及工具链,就在这个机遇与挑战并存的时代应运而生。MoonBit的目标,是重塑软件开发生态。
目前,MoonBit已支持Wasm与JS后端。未来,MoonBit计划支持native后端。这意味着无论是UI、客户端、边缘计算还是系统编程,用户都能在MoonBit平台上找到适合自己的使用场景,从而使生态能够覆盖所有可能的应用场景。