看国常会提关键软件攻关,大家都在聊芯片、聊操作系统,我却总想起一个不太体面的角落:编译器后端。
前阵子折腾一块RISC-V的开发板,想用它的向量扩展跑点东西,结果翻遍了LLVM的文档,支持是有了,可自动向量化的效果跟手写汇编差着好几倍。硬件明明在那儿,潜力却隔着一层玻璃——你看得见,摸不着。新架构从发布到编译器后端真正成熟,普遍要拖个两三年,这两年里,芯片的锋芒其实是被锁住的。
于是很多团队选择绕过去,直接手写汇编,或者干脆闭源工具链一套带走。短期看是捷径,长期看是债。那些汇编代码像没人记得咒语含义的符箓,写的人一走,整个项目就成了黑箱,谁也不敢动。
所以我一直觉得,编译器不该被当作"配套工具",它是定义软硬件边界的语法层,是基础设施里的基础设施。桥修得再漂亮,渡口没人守,船还是开不出去。
不知道版上有没有做工具链的朋友,这块现在国内到底什么光景了?