什么语言适合写游戏脚本_用Rust写脚本语言(一):一切存在皆对象

本文介绍了一个使用Rust构建脚本语言的项目,采用从后往前的实现方式,设计思路参考Python,目标是减少哈希表使用并摆脱GIL。文章探讨了对象作为语言内存管理最小单位的概念,强调属性访问的重要性,并讨论了方法绑定和垃圾收集的实现策略。目前的实现展示了简单的内存管理,通过限制对象数量触发垃圾收集。
摘要由CSDN通过智能技术生成

目录

代码仓库:whoiscc/shattuck。在我写「欢迎围观」之前都不会有什么观赏价值,纯粹是为了证明我并不是在纸上谈兵。

这些年来看过、跟着做过的「3分钟发明一门编程语言!」的教程数不胜数。它们中的绝大多数都有一个共同点:从前往后。最开始几乎一定是一段展示最终效果的代码块;接下来是词法分析、语法分析,然后对语法树进行eval,全文终。你自然可以嘲笑我看的教程太不入流,但我还是想为这些「不入流」的教程再添上这么一篇。这篇教程(更准确的说,日记)的目的不只是向读者展示编写一个脚本语言的解释器需要哪些部件,而且还希望将更多的精力投入到设计语言特性的方面。甚至可以说,代码并不是这个项目的主体,而仅仅是验证思路的工具。

综上,我决定以如下的方式开展这个项目:

  • 以从后往前的顺序实现解释器。如果没有足够的时间,传统意义上的「前端」甚至可以完全省略,就当做是一个只能写native拓展的Python吧
  • 设计思路大体上参考(我所了解的)Python,除了两个尽可能完成的小目标
    • 少用一些哈希表
    • 不需要GIL

如果最后没有完成,那么也一定要弄清楚困难在哪里,算是可以加深对Python语言设计的理解的一种方式。

整个项目计划用Rust完成。这也是这个项目隐藏在表面之下的真实目的:学习和巩固Rust。如果这个目的提前达到了那么本项目即刻宣告烂尾(。如果Rust真的可以作为C/C++的无缝替换者的话,作为脚本语言的运行时应该属于它可以优雅完成的任务,这个项目算是一个粗浅的验证。

作为废话的最后一部分,shattuck的名字来自于我目前所住的公寓面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值