2026年10月

由于有很多Gemini的token没有用,我在antigravity上vibe了一个scheme实现,基于字节码的虚拟机。能支持的基本都支持了,bigint,callcc,vector,甚至还有卫生宏,编译器则是让Gemini参考chez来实现一个

MiniScheme部分:

  1. Gemini自己给它取名叫minischeme,目标是最小化程序大小,并且内存使用很小,能在200K内存以下的设备中运行。
    这里是第一版,编译器和解释器全部使用C实现,调教性能向,指令集高达60多条,里面有很多只是为了提升性能的特化指令。
  2. 因为虚拟机太过巨大,于是要求缩减指令数量,现在应该是10个上下,并且限制vm实现在1000行以内,同时使用scheme重写了编译器,并且通过自举。
  3. 增加fasl,可以dump整个app的镜像并且能下次加载,gemini自己加了一个msbc格式的字节码封装,不包含内存数据,只有指令和字符串,因此可以刷到rom中使用XIP模式来运行。
  4. 增加wasm虚拟机,于是fasl的字节码既可以在设备上,也可以在网页端运行。
  5. 使用Cheney分代GC来替换mark sweep gc,这样内存利用率就更高了。
  6. 增加bigint 库,callcc,卫define-syntax
  7. 至此scheme部分变化不大了。

ESP32部分:

  1. 在VM实现完成后,就要求它可以在esp32上运行,因为是C99实现,所以没什么问题。
  2. 在没有使用XIP之前,将编译器塞到固件中不太现实,因为编译器需要占用太多内存,因此增加webrepl,将scheme表达式编译成字节码后发送到esp32,这样就不需要在板侧运行一个编译器,同时编译器也替换成scheme版本,所以可以非常容易在wasm上运行。
  3. 要求wasm中增加模拟硬件接口的部分,这样就可以脱离硬件,开发固件并且查看显示效果
  4. 增加gui库,增加ili9488对接的部分,在esp32上可以显示了 (frame buffer和脏矩阵更新)
  5. 支持spiffs
  6. 支持ntp对时,优化显示
  7. 实现桌面信息牌程序
    =========下面由claude接手======
  8. 实现XIP
  9. 实现字体库
  10. 内存优化,字符串存在rom中
  11. 增加修改显示像素bit和配色方案
  12. 实现pcmonitor,和lvgl版本看起来一样
  13. 移除特定LHM的C部分,全部使用scheme实现
  14. 修复缺失的fasl加载功能
  15. 实现可移植fasl,pc上的fasl可以加载到esp32
  16. 增加WebREPL 文件管理器
  17. 优化长字符串显示
  18. WASM 模拟器:模拟 Flash 持久化与 (restart)
  19. WebREPL 同步显示硬件画面与实测负荷(HTTP) (claude自此有访问界面的能力)
  20. 存储从 SPIFFS 迁移到 LittleFS
  21. 应用平台,实现多个app和管理界面
  22. 流式构建 ROM 镜像:不再受 64 KB 临时堆限制
  23. 应用失败时显示原因并进入系统设置
  24. 继续实现各个app

后续的计划

  1. 增加固件api版本和app需求版本,像Android一样有api版本,这样app安装的时候就可以知道是否兼容
  2. 实现一个应用市场,市场只使用msbc格式的app