Yaklang Virtual Machine:编写栈机虚拟机分离语法编译与运行时

文章讲述了Yaklang语言的发展,从早期的限制到现代版本的突破,包括语言前端与VM分离、新语法特性、工程化提升和跨语言虚拟机的支持,旨在提供更好的研发体验和灵活性。

Yaklang Virtual Machine:编写栈机虚拟机分离语法编译与运行时

背景

在以快速迭代功能试错为主的旧 Yaklang 模式下,我们遇到了很多新的需求无法实现:动态调试、更智能的类型“推断”、解释步骤中编译与执行…如果我们旨在满足小团队使用,上述需求不做也罢,大家更多的是在使用图灵完备粘合的各种安全能力。

上述的内容也都非常符合一款 DSL 的定位,以领域限定的工作内容为主,研发体验和开发效率并没有摆在很高的位置。

随着 Yakit 逐渐被广泛使用,Yaklang也开始被大家看见,用户会使用 Yaklang 编写热加载代码嵌入在 Yakit 中,从而让 Yaklang 成为一个非常强大的嵌入式功能扩展语言,同样,这也非常符合预期。
也正是因为这样,Yakit 和 Yaklang 的用户能力得到了非常大的提升,不论是灵活度还是使用上限都可以远超为数不多的同类产品。

语言规约与工程化

我们在 Yaklang 的发展上看到了痛点,不解决这些问题并不是我们团队的技术风格。

VM 与语法分离的模式,我们很容易理解,大名鼎鼎的 Java - JVM,JS - V8,Python - Python VM 本质上都是这样的实现。
在旧的 Yaklang 版本中,我们的执行也是类似的 VM 模式,只是 VM 本身和 Yaklang 自身绑定的非常深,以至于我们无法接受任何新的语言前端,翻译过程直接由语法规则 Emit 到 Opcode,并且整个语言在实现过程中,非常依赖 Golang。

实验:可行性探索

大概

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值