
背景
在以快速迭代和功能试错为主的旧 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。
实验:可行性探索
大概

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

被折叠的 条评论
为什么被折叠?



