国产编程语言:MoonBit(月兔)发布!【送源码】

2024-08-29 03:28

本文主要是介绍国产编程语言:MoonBit(月兔)发布!【送源码】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MoonBit(月兔),由中国开发者团队创建的编程语言(类似 Rust,支持 GC),由粤港澳大湾区数字经济研究院(IDEA 研究院)基础软件中心负责人张宏波领导的团队开发,目标是打造下一代智能开发平台。

  • 官网:MoonBit | moonbitlang.cn

更确切地说,MoonBit 是一个用于云计算和边缘计算的 WebAssembly 端到端编程语言工具链,集开发、编译、测试、部署于一体 —— 涵盖了通用程序语言设计、编译器、构建系统、编辑器和语言服务器、IDE、部署工具等。

图片

MoonBit 去年发布了 alpha 版本,经过一年的迭代开发,MoonBit 现已到达了 beta 预览版的里程碑,其团队表示,在核心语言特性上,MoonBit 媲美、甚至超越了大部分主流语言的 1.0 版本。

据介绍,MoonBit beta 预览版比大部分主流语言更早推出现代化泛型、精准错误处理和高效迭代器等重要特性。

MoonBit 核心特性:

现代化的泛型系统

现代语言复杂性的很大一部分在于类型系统的设计,很多主流工业语言,比如 Java,Go 在 1.0 版本推出很多年以后才会渐渐完善泛型的支持,但是这会对生态造成撕裂。

MoonBit 在 beta 预览版本已经完成了泛型和 ad-hoc polymoprhism,而且 MoonBit 在保持极快的编译速度的同时,提供了零开销的泛型支持。

准确的错误处理

错误处理是现代语言设计中的重要组成部分,大部分编程语言在静态分析中,彻底放弃错误处理的支持,这意味着任何函数都可以抛出异常,很难写出高可靠性的代码。

MoonBit 通过准确的控制流分析,可以完全在编译时期跟踪函数的错误。这一过程几乎完全由编译器自行推导,且不像 Java checked exception 那样过于繁琐,降低用户的心智负担。

高效的迭代器

传统的编程语言的迭代器会产生频繁的装箱操作,导致其性能比普通的循环要糟糕很多。

MoonBit 创新地使用了零开销的迭代器设计,可以让用户写出优雅代码的同时保持程序的性能。

据介绍,MoonBit 的编译性能和运行时性能具有出色表现。

通过专为多级中间表示(IR)定制的全局优化,不仅改善了内存布局,减少了缓存未命中率,还为数据和控制流分析提供了一个优越的环境,从而确保了编译和运行时的高性能。

从编译速度来看,MoonBit 编译 626 个包(package)只需 1.06 秒,比 Rust 快了近 9 倍,运行时间仅为 Go 的 35 分之一

图片

此外,MoonBit 在输出 Wasm 代码体积上相较于传统语言有显著优势。

MoonBit 通过 WebAssembly(Wasm)组件模型,在生成代码时实现了显著的体积优化。相比其他编程语言,MoonBit 编写的 Wasm 组件代码体积大幅减少。

例如,在编译一个简单的 “Hello World” HTTP 服务器时,MoonBit 的输出文件大小仅为 27KB,而 WasmCloud 提供的 http-hello-world 模板中 Rust 的输出为 100KB,TypeScript 为 8.7MB,Python 更是高达 17MB。

图片

借助前文提到的创新错误处理机制,MoonBit 有效解决了传统编译技术在错误处理机制转换中遇到的适用范围有限和内存开销大的问题。

通过静态分析源程序中的错误处理代码,并根据目标编程语言的特性进行转换,MoonBit 扩大了适用语言范围,减少了内存开销,同时提升了代码的安全性和稳定性

MoonBit 作为一门多范式编程语言,在保持语言简单性的同时,也侧重于提供数据处理的最佳体验。

MoonBit 通过原生支持 JSON 处理、Iter 类型和模式匹配实现高效数据处理,在语法设计上兼具动态语言的灵活性和静态语言的安全高效,直观而简洁地进行对数据的解析和转换。

图片

JSON 处理

 MoonBit 在数据处理上的语法设计旨在优化常见的数据处理场景,解决传统方法中由于生成多个中间数组而导致的性能问题。

在 Iter 性能对比中,MoonBit 的数据处理速度达到了 JavaScript 的 25 倍之多

图片

目前,MoonBit 已支持 Wasm 与 JS 后端。

未来,MoonBit 计划支持 native 后端。这意味着无论是 UI、客户端、边缘计算还是系统编程,用户都能在 MoonBit 平台上找到适合自己的使用场景,从而使生态能够覆盖所有可能的应用场景。

图片

  ——EOF——


福利:

扫码回复【酒店】可免费领取酒店管理系统源码

这篇关于国产编程语言:MoonBit(月兔)发布!【送源码】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116712

相关文章

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显