Rust 重写 Chameleon 模板引擎:字节级输出不变,性能提升数倍
原创Rust 重写 Chameleon 模板引擎:字节级输出不变,性能提升数倍
一、为什么重写 Chameleon:Python 模板引擎的困局
Chameleon 曾经是我很喜欢的一个模板语言。Michael Kennedy 在博客里说,它曾是他的最爱之一,也是 Pyramid 框架的默认模板引擎 来源:MK。后来他做了 fastapi-chameleon 和 chameleon-flask,让 Chameleon 能跑在 FastAPI 和 Flask 这些现代框架上 来源:MK。但时代变了,Python 3.14 官方支持自由线程,3.15 继续演进,Web 应用理应期待多线程环境下的性能。原 Chameleon 仓库只支持到 Python 3.13,而且构建失败 来源:MK。Kennedy 的判断是,Jinja2、Django templates 这些主流引擎都没能提供他需要的性能、并行性和现代特性 来源:MK。
Kennedy 在博客开头给了一个 tl;dr 总结。chameleon-rs 是他在 Rust 里实现的 Chameleon,专为 Python Web 应用设计 来源:MK。它能运行现有模板而不需要修改,渲染更快,支持异步,也支持自由线程 Python 来源:MK。这个项目解决的核心问题是,原版 Chameleon 已跟不上时代,而主流替代品在性能、并行性和现代特性上都没能满足他的要求 来源:MK。于是他选择了一条激进的路,把整个模板语言几乎 100% 用 Rust 重写 来源:MK。
这个判断很重。Chameleon、Jinja2、Django templates,他全试过,都说失败 来源:MK。我理解这种沮丧。模板引擎是 Web 框架里最容易被低估的一环,性能瓶颈往往藏在循环、转义和宏展开里。Python 的 GIL 在 3.14 之前一直挡着多线程渲染的路,自由线程来了以后,旧的实现却没能跟上 来源:MK。
二、chameleon-rs 的核心设计:兼容、性能、线程安全
chameleon-rs 的核心目标有四项。兼容性、性能、现代化、线程安全 来源:MK。兼容性排在第一位,现有模板和代码无需修改即可运行,输出与原始版本字节级相同 来源:MK。这个承诺很实际。迁移成本近乎为零,意味着你不需要重写模板,只需要换掉引擎。渲染速度宣称快数倍 来源:MK。Kennedy 给出的实测数字是,在他的 Web 应用里,切换后全站响应时间中位数降约 20% 来源:MK。
它还补上了现代 Web 应用期待的东西。异步渲染能在等待数据时保持事件循环空闲 来源:MK。内置 HTMX 部分模板支持,局部刷新不用自己拼字符串 来源:MK。Markdown 支持让写内容页不用单独预处理 来源:MK。框架集成覆盖 Flask/Quart、FastAPI、Starlette、Robyn、Litestar 来源:MK。无运行时依赖 来源:MK。这些特性单独看都不算革命,但放在一起,指向一个明确的方向。Chameleon 语言本身值得保留,它缺的只是能跟得上 3.14+ 时代的运行时。
三、多引擎对比与交叉验证:chameleon-rs vs 原版 vs Jinja2/Django
对比很直接。原版 Chameleon 只支持到 Python 3.13,构建失败 来源:MK。chameleon-rs 支持 Python 3.14+ 自由线程 来源:MK。字节级相同的输出让迁移成本近乎为零 来源:MK。Jinja2 和 Django templates 没有提供同样级别的性能、并行性和现代特性 来源:MK。Kennedy 说世界已改变,Python 3.14+ 时代需要更多多线程 Web 应用 来源:MK。这个观点我认同,但我注意到,实测数字里渲染快数倍和响应时间降 20% 这两件事并不完全对齐。前者是模板引擎本身的吞吐,后者是真实应用的整体延迟,中间隔着一层网络和数据库。我不确定两者之间存在简单的线性关系。
HN 上这个帖子目前 1 分 0 评论 来源:HN。这说明项目还处在作者主动发布的早期曝光阶段,社区还没有来得及讨论。一个没有社区讨论的新模板引擎,能不能在 Jinja2 的阴影下找到位置,我持观望态度。Kennedy 对主流引擎的判断很锐利,但锐利的判断未必等于市场认可。Chameleon 语言有自己的审美,喜欢它的人会为这个 Rust 重写叫好,习惯 Jinja2 的人大概会继续用 Jinja2。这个项目真正的价值,可能更接近一种证明。模板语言可以被安全地重写,输出可以保持字节级一致。这种证明本身是有意义的。
chameleon-rs 至少提供了一条清晰的路径。兼容性排在第一位,字节级相同输出,意味着模板不用重写。它能不能从早期曝光走到广泛采用,我不确定。但一个模板引擎如果既保留原有语言,又能跟上自由线程 Python,还附带 HTMX 和 Markdown 支持,它至少值得被认真测试。
原文:
Chameleon templates, modernized: chameleon-rs · 来源:Hacker News
作者:itfan123 值班编辑 · 发布于 2026年10月28日
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123




