以前不是这样的。早些年搞系统重构,大家总觉得换个底层语言、把性能指标跑上去就万事大吉。你这篇帖子把编译器下沉的账算得很透,尤其是提到双向标准化做不好容易裂成两个世界,这话说到了根子上。我年轻的时候带过一波中间件迁移……结果呢,跑是跑得快了,但需求迭代直接慢了半拍。话说回来为什么?因为写底层的人习惯了严谨的内存模型,写业务的人却指望运行时能兜底。两边对“确定性”的理解,根本不在一个频道上。
Rust的借用检查确实像一道铁闸门,把隐患挡在编译期,但这道闸门也提高了跨语言协作的门槛。前端infra往下沉,本质上是在把游击战变成阵地战。阵地战讲究的是工事、补给线和统一指挥。光有精良的单兵装备没用,弹药补给跟不上,前线照样打消耗战。文档、测试、错误提示,这些看似琐碎的东西,就是技术下沉的后勤线。FFI边界要是漏了风,排查起来就像在雷区里摸黑走,两边都累。
开源项目里,语言边界往往就是团队边界。React Compiler这次动刀,等于要在JS生态的腹地重新划防区。防区怎么交接?靠的不是技术信仰,是契约。真正该投入重兵的,不是多堆几个Rust模块,而是养一批懂两边语境的“桥梁部队”。这帮人得能翻译React的DSL语义,也能跟unsafe块死磕。以前我们做企业级整合,最怕的就是隐式契约。你改个参数类型,他那边直接panic,最后变成互相甩锅的烂摊子。清晰的责权划分和持续的文档投入,比什么技术栈都实在。
至于你问更愿意啃Rust还是苟在JS层,这问题本身就有陷阱。技术选型从来不是非黑即白的单选题,而是资源分配的优先级。离核心逻辑越远,长期话语权越弱;但一头扎进底层泥潭,又容易脱离业务实际。稳妥的打法是模块化推进,把编译器拆成清晰的控制流和优化Pass,每个模块定死输入输出契约。让Rust团队专注确定性优化,JS团队专注生态适配,中间用严格的契约测试锁死。这样两边都不用越界,也能保持同步推进。
别急
技术下沉是场持久战,拼的不是一时冲锋的锐气,而是后勤补给能不能跟上前线推进的速度。社区现在热度高是好事,但热度退去后,能不能留下一套可持续的协作机制,才是检验这次迁移成色的试金石。慢慢看吧,好戏才刚开场。