编译器也是有可能出bug的,为了保障源代码同编译出来的目标代码完全一致,避免编译器的bug造成问题,在JSF项目内部的软件开发中,经常使用CompCert编译器。
编译器也是有可能出现bug的,为了保障源代码同编译出来的目标代码完全一致,避免编译器的bug造成问题,在JSF项目内部的软件开发中,经常使用CompCert编译器。
libbitcoin-server nifi rst-lint youtube-dl compcert
例如CompCert,使用Coq交互式定理证明器验证的C编译器,是无处不在的GCC和LLVM等使用的唯一编译器。
CompCert (http://compcert.inria.fr/)是完全采用形式化方法开发与验证的C语言编译器,其编译能力与GCC相当,性能比GCC低10%左右。...但是,至今CompCert中经过验证的部分,没有发现任何Bug,而GCC和LLVM等编译器中,发现了几百个漏洞。
ModelCoder可以与经过形式化验证的CompCert C编译器对接,从而实现从模型到汇编语言的可信编译。
C有大量围绕它的工具,比如frama-c和其他分析你的代码的工具,或者compcert编译器。虽然Rust有很多用于普通情况的工具,但对于更多的小众事物来说,它很难超越50年以上的生态系统。
正式验证程序的实例中有seL4,CompCert C,cakeML,Tokeneer和iFACTS。
这些组件随后利用适当的形式化方法仔细检查或者重建以获得更高层级的担保,如同在 PolarSSL 中所进行的,它现在称为 mbed TLS [Bakker14, Regehr15],继 Heartbleed 或者 CompCert
领取专属 10元无门槛券
手把手带您无忧上云