Mun:一种通过迭代授权创建的编程语言

2021-02-19 02:53:56

感谢您对Mun的关注,但是您来参加聚会还早。 Mun语言和工具链仍处于开发的早期阶段,还没有准备就绪。如果那没有吓到您,请继续阅读。

创建Mun的想法源自对Lube动态脚本语言的沮丧,该语言在Abbey Games中广泛用于游戏开发。

Lua的热重装功能和LuaJIT的性能使其成为在PC上对实时应用程序(例如游戏)进行快速原型制作的绝佳语言。但是,该语言在某些移动和控制台平台上存在性能问题-LuaJIT无法部署到该平台上,该语言缺乏重构功能,并且无法与现代技术很好地扩展。

Mun试图利用两全其美的优势来创建更加健壮,高度迭代,高效和高性能的编程语言。

Mun本身支持在所有目标平台和控制台上进行热重装(即在应用程序运行时更改代码和资源的过程),而运行时开销很小。它的运行时包含有用的错误消息,并且可以轻松地嵌入到其他语言中。

Mun的类型系统消除了整个类的运行时错误,并提供了具有自动完成和重构工具的强大IDE集成,使开发人员可以专注于编写代码。

Mun使用LLVM编译为可以在任何目标平台上本地执行的机器代码,从而保证了最佳的运行时性能。

使用Mun的工具链以零停机时间将应用程序构建,调整和部署到您的机器人。

使用相同的Mun工具链,使用WebAssembly模块将内容构建,测试和部署到Web。

将Mun嵌入到AR / MR / VR应用程序中,以在沉浸式环境中释放创造力。

Mun开发背后的推动力是对功能和数据的热支持。因此,该语言及其语法将以我们添加热重载支持的语义的速度保持增长。

我们从各种应用程序,脚本和系统编程语言中汲取了灵感,但我们也希望社区提供输入来定义您认为易于使用的语法。我们会定期发布有关新语法的建议,因此请务必关注我们。

fn斐波那契(n:i32)-> i32 {如果n< = 1 {n}否则{fibonacci(n-1)+ fibonacci(n-2)}} //注释:可以在模块pub fn main(){外部调用标记为pub的函数//对bool,f32,f64,i8,u8,u128,i128,usize,isize等的本机支持let is_true = true;令var = 0.5; //当n = 3时,可以推导出变量的类型,则不需要类型注释。令结果=斐波那契(n); //向文字中添加后缀会限制其类型let lit = 15u128;让foo = record(); let bar =元组();让baz = on_heap(); } //记录结构和元组结构都受支持struct Record {n:i32,} //结构定义包括它们是由垃圾收集器分配(/ gc)还是通过引用传递,还是通过value传递。默认情况下,struct //被垃圾回收。 struct(value)元组(f32,f32); struct(gc)GC(i32); //函数定义的顺序与fn record()->记录{// Mun允许隐式返回Record {n:7}} fn tuple()->元组{// Mun允许显式返回return元组(3.14,-6.28); } fn on_heap()-> GC {GC(0)}

假期结束后,团队振作起来,核心团队开始努力,最终完成了六次拉取请求,并进行了更多审查。更重要的是,随着新的一年的到来,一些新鲜的血液正在他们的脚趾上浸入他们的脚趾。

十二月-再次-是一个缓慢的月份。 假期和日间工作使核心开发人员忙。 所有帖子订阅 Mun编程语言是由一组志愿者开发的。 为了进一步推进该项目,我们欢迎任何一个人: 捐款捐赠参与赞助商 没有个人和公司慷慨地付出的辛勤工作,时间和资源,Mun就不会存在。 我们要感谢大家使门实现成为现实! 门由社区开发。 我们非常感谢社区的所有贡献。 贡献者