关于服务
翻译我为需要真正本地速度的团队编写经过实战检验的Chez Scheme代码,而不是仅在演示中看起来不错的解释器。在过去的九年里,我在Chez Scheme中交付了编译器、运行时工具和长期服务,包括直接在Racket后端工作的内容,其中Chez Scheme承担了主要负载。如果你有一个数值核心、解析器、规则引擎或在脚本语言中运行太慢的数据管道,我会将其移植到Chez Scheme,并使其运行得几乎和手写C一样快。
每天我都使用完整的R6RS表面:干净的库结构、阶段导入、适当的记录类型、条件层次和可移植的I/O。我对宏系统非常熟悉——我使用语法规则编写卫生转换和完整的语法案例转换器,构建小型嵌入式DSL,并理顺混乱的宏,使其可预测地展开并快速编译。当性能至关重要时,我会阅读Chez Scheme生成的机器代码,调整优化级别,减少分配,应用flonum和fixnum特化,并仅在可证明正确的地方调用不安全的原语。
嵌入和互操作性是我工作的重要部分。我通过其外部函数接口将Chez Scheme绑定到C和Rust,使Scheme成为大型主机内部的脚本层,并打包启动文件和目标代码,以便部署为单一工件。我还处理线程、监护人式资源管理、信号处理和需要持续数月的服务的优雅关闭。
一个典型的结果:一个工作且经过测量的模块或服务,一个可读的测试套件,构建脚本,以及一份简短的文档,描述架构和扩展点。我在前后进行性能分析,因此速度提升是经过测量的,而不是声称的。把慢代码或粗略规格发给我——我会诚实地说Chez Scheme是否适合这里,以及可能获得的真实收益。
每天我都使用完整的R6RS表面:干净的库结构、阶段导入、适当的记录类型、条件层次和可移植的I/O。我对宏系统非常熟悉——我使用语法规则编写卫生转换和完整的语法案例转换器,构建小型嵌入式DSL,并理顺混乱的宏,使其可预测地展开并快速编译。当性能至关重要时,我会阅读Chez Scheme生成的机器代码,调整优化级别,减少分配,应用flonum和fixnum特化,并仅在可证明正确的地方调用不安全的原语。
嵌入和互操作性是我工作的重要部分。我通过其外部函数接口将Chez Scheme绑定到C和Rust,使Scheme成为大型主机内部的脚本层,并打包启动文件和目标代码,以便部署为单一工件。我还处理线程、监护人式资源管理、信号处理和需要持续数月的服务的优雅关闭。
一个典型的结果:一个工作且经过测量的模块或服务,一个可读的测试套件,构建脚本,以及一份简短的文档,描述架构和扩展点。我在前后进行性能分析,因此速度提升是经过测量的,而不是声称的。把慢代码或粗略规格发给我——我会诚实地说Chez Scheme是否适合这里,以及可能获得的真实收益。