查看原文
其他

MeetUp 精彩回顾(上):探索国产软件新发展

MoonBit 运营组 MoonBit 2024-03-28

首场线下 MeetUp 精彩回顾来啦!


3月23日,MoonBit 的首场线下 MeetUp 如期而至,带来了一场关于国产软件新发展的探讨。这场活动汇集了五位行业内的知名专家,他们围绕国产基础软件的新发展,分享了四个充满洞见的主题。从技术创新到市场趋势到个人经历的分享,每一位嘉宾都带来了自己的故事和行业里的最新动态。


文末还有详细的回答环节。来吧,让我们一起往下看,看看这场 MeetUp 带给我们什么新鲜事儿!



张宏波首先介绍了本人的编程语言开发经历,从本科开始至今,他关注并投入函数式编程语言开发已有十几年了,曾担任 OCaml 的核心开发人员,主导创造 ReScript(前 BuckleScript )。


ReScript现在已经可以完全由社区来打理,进展活跃,这是一件值得终身自豪的事情。



我们在疫情前在维也纳召开过两次几百人的全球开发者大会,在美国也召开过一次,然后在南美,甚至还有 ReScript 的一些商业培训课程,我们有自己的书籍。


之后,收到 IDEA 研究院院长沈向洋的邀请,张宏波回到了深圳,成立了基础软件研究中心,并组建了 MoonBit 团队——一个国内独一无二,拥有丰富编程语言开发经验的团队。


我们想正儿八经做一些真正有人用的系统,而不是单纯地追求学术发表,这是我们最大的不一样。我们团队也非常年轻,是很聪明的一个团队。讲这些是给大家信心,MoonBit 是一个非常靠谱的事情。

在立项开始,MoonBit 便瞄准了 WebAssembly 这一新的标准指令集。张宏波解释道:

“作为一门编程语言要去让别人用,其实是很难的事情,我为什么不用一些已经非常成熟的 Java、 go 语言?WebAssembly,它是微软、谷歌在 17 年成立了一个新的跨平台、跨操作性的一个标准指令集。MoonBit 一开始就考虑如何适配 WebAssembly,可能会对一些已有的编程语言有一个降维打击的优势,对 WebAssembly 这个平台也感兴趣的话, MoonBit 希望成为你的 go to language。


随着团队的成长,MoonBit 也不止步于一门编程语言,而是一个配备了自动调试功能和具有客户端 IDE 的编译平台。除了 WebAssembly 后端外,今年的发展计划还包括支持 JavaScript、JVM 和 Native 等多个后端。


在现场演示中,张宏波通过更改马里奥游戏代码逻辑,向大家展示了 MoonBit 实时 IDE 的编程效果。

链接:https://www.moonbitlang.cn/gallery/mario/

对于MoonBit来说,生态系统的构建同样重要。

在今年年初,我们发布了 mooncakes.io 包管理系统,并在几周前开源了 MoonBit 标准库,收到了高质量的贡献。接下来,我们计划逐步开放构建系统和编译器,目标是明年发布兼容性保证的1.0版本。


在全民 AI 的热潮下,张宏波坦言,对于一向不追逐热点的编程语言工程师而言,这是一次几十年难遇的机会。然而,要在 AI 代码生成这一领域取得真正的突破,关键在于拥有一个深刻理解并能精确掌控代码及工具链的团队。MoonBit 在核心技术层面上的创新,包括基于开源 Rust n2 高度定制的构建系统、团队百分之百自主研发的编译器和静态分析工具。在 AI 领域,MoonBit 采用了开源的 llama.cpp,并正在探索使用 MoonBit 语言开发全 AI 交互的 IDE 功能。


然而,AI 代码生成技术在给人们带来震撼的同时,也暴露出了一些亟待解决的挑战,如安全性风险、幻觉问题以及需要创建更自然的 AI 与人的交互方式。为了解决安全性问题,MoonBit 通过采用安全的类型系统、Wasm 安全沙箱机制、死代码删除技术实现了快速静态分析能力,为代码提供了三重安全保障。


在幻觉问题上,MoonBit 采用了对形式化验证友好的函数式循环,并计划引入内置测试功能。通过对代码进行重采样和实时静态分析,实现对大模型幻觉的矫正。



在原生的 AI 人机交互方面,张宏波透露团队正在尝试使用 MoonBit 来写一个 AI 原生的IDE。


关于未来,张宏波表示:我们发自内心地希望 MoonBit 在未来可以成为世界级的编程语言以及配套的工具链。



王斌,网名龙泉寺扫地僧。作为一个独立开发者,他专注于浏览器内核研究十余年。他主要从事 MiniBlink 项目的工作,旨在创建一个精简且高效的浏览器内核,应对 Chromium 庞大的体积和内存占用问题。


龙泉寺扫地僧在谈及做 MiniBlink 的初衷:源于对现有浏览器内核尤其是 Chromium 庞大体积和内存占用的关注。随着时间的推移,Chromium 的体积从最初的十几兆膨胀到超过200兆,这对于希望将其内嵌到软件中的开发者来说,构成了显著的挑战。这种庞大的体积不仅影响了软件的分发和安装效率,也增加了 CDN 部署等相关成本。尤其是在开发像 Electron 这样基于 Chromium 的跨平台开发框架时,即使是一个简单的 Hello World 应用,也可能需要携带超过200兆的运行时库。

注意到这个现象的龙泉寺扫地僧决定开发一个轻量级、易于集成的浏览器内核,而不是复制 Chromium 的全部功能。MiniBlink 项目的核心在于为软件开发者提供一个既快速又方便集成的浏览器内核解决方案。通过这种方式,他希望避免重复 Chromium 的庞大体积和高内存消耗,同时减少开发者在软件分发和部署上的负担。


所以我现在做的 MiniBlink 相关的工作,我并不是想做一个完整的浏览器内核,而是想把它作为一个可以集成在各个软件之中,让它方便集成的一个内核,但是这样的话我就不会追求像 Chromium 那样完整的实现它所有的功能,因为这样的话一个是工作量会非常庞大,第二个是如果把这些做完了之后,它的那个就和 Chrome 可能差不多,它的大小可能也差不多,那就没什么意义。


在开发 MiniBlink 的过程中,扫地僧提到自己遇到了不少的挑战,技术上,Chromium 的庞大和复杂性是一个巨大的挑战。为了创建一个轻量级的内核,扫地僧不仅要深入理解 Chromium 的内部工作原理,还需要精确识别和去除不必要的模块和功能。此外,对于核心组件如 V8 引擎的重写,不仅需要保证功能的完整性,还要大幅减少资源消耗,这在技术上极为复杂。


在减少内核体积的同时,还需要保证浏览器的性能不受影响。对于网页的渲染速度、脚本的执行效率以及网络请求的处理,都需要细致优化。特别是重写的V8引擎,需要在减小体积的同时,保持高性能的JavaScript执行能力,这是一个难以平衡的挑战。


“我经常碰到这种各种各样的 Bug。大部分 Bug 可能是我自己就是对 Chromium 和 blink 的理解不深导致的。但是也有些 bug,我发现它是后面老版本产生的一些问题。就是 Chromium 它自身也是有一些 Bug 的,然后它最新的版本它会修复。我遇到最难调试的问题还是 V8 里面的问题,因为 V8 它那个我有时候碰到一些崩溃,它连堆栈什么都没有,这时候确实很难很难去调整。现在我如果遇到这种问题的话,我可能会回退版本,把 V8 切换到一些老版本上,看有没有同样的问题,然后一步步定位,具体是我的问题导致的,还是谷歌的代码导致的。用一些小手段来来去调试。”



地僧通过不断地探索与尝试,最终开发出一个更小体积、快速启动的浏览器内核,使其更适合跨平台开发。他通过裁剪不必要的模块、重写关键组件,如V8引擎和网络层,大幅减少了最终产品的体积。同时,他还优化了跨进程通信机制,提升了安全性和性能,使得软件的冷启动速度和运行效率得到了显著提高,为轻量级应用的开发打开了新的可能。




Q&A

QMoonBit 也能在 JVM 中运行吗?

MoonBit 计划支持 Wasm、JS、JVM 及 Native 平台。目前,已完成 Wasm 和 JS 平台的支持。我们计划于本年度 Q3 正式启动 JVM 与 Native 平台的支持工作。我们期待在年底前实现对这些多后端平台的全面支持。

Q想知道 MoonBit 支持 autodiff 么?

这个目前不支持,目前我们应该不会把 autodiff 作为语言特性,如果实现的话也应该是通过库的方式实现。

Q前端开发的话,有指引吗?

在未来的更新中,我们将引入对多后端技术的支持。随着社区生态的丰富,我们后续会根据大家的呼声给出具体的指引与文如果大家目前在前端开发中遇到任何问题,可以在论坛提问或者 GitHub 上提交 pr,我们会有专人进行解答。

Q如何看待这个观点【随着 AI 发展应用层编程语言将消失,只剩 “自然语言”】

未来编程语言背后的技术还是会存在。编程语言的生命周期很长,例如 Java 已存在几十年且预计将继续保持重要性,而像 Perl 这样的语言,尽管使用率下降,但由于其庞大社区和市场份额,衰退将很缓慢。大模型技术会促使不同编程语言逻辑表达越来越相似,未来的编程语言界限可能变得模糊而不是消失。

Qminiblink 适合 serverless 吗?能否解决其冷启动问题?

Miniblink 由于其轻量和快速启动的特性,理论上适合用于 Serverless 环境,可能有助于缓解冷启动问题。然而,实际效果取决于多种因素,包括应用场景、资源配置和优化措施。因此,在考虑将 Miniblink 集成到 Serverless 应用中时,建议进行充分的测试和评估。

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存