特里斯坦及其同事因其在CompCert上的工作而获奖,CompCert是“一个针对几乎全部C语言的高保证编译器”。编译器是将代码从源编程语言翻译成另一种语言的程序。 CompCert“提出了一种激进的、基于数学的解决方案来解决误编译问题:对编译器本身进行形式化的、工具辅助的验证。 获奖引文指出CompCert“在现实世界中用于应急发电机、飞行控制和导航算法的安全关键控制软件,用户包括某机构。它仍然是持续研究的重要共享基础设施”。
技术生态该领域包含多种相关技术:定理证明(如HOL-light)形式化验证(如CompCert编译器)模型检测SMT求解器(如Z3)应用场景该技术不仅适用于代码验证,还可分析:云服务资源配置策略网络拓扑描述编译系统规则加密算法实现当前研究重点在于降低工具返回
编译器也是有可能出bug的,为了保障源代码同编译出来的目标代码完全一致,避免编译器的bug造成问题,在JSF项目内部的软件开发中,经常使用CompCert编译器。
编译器也是有可能出bug的,为了保障源代码同编译出来的目标代码完全一致,避免编译器的bug造成问题,在JSF项目内部的软件开发中,经常使用CompCert编译器。
编译器也是有可能出bug的,为了保障源代码同编译出来的目标代码完全一致,避免编译器的bug造成问题,在JSF项目内部的软件开发中,经常使用CompCert编译器。
技术栈分类逻辑系统:命题逻辑/一阶逻辑等形式体系定理证明:如四色定理的机器验证形式化验证:应用于CompCert C编译器等系统自动化推理:强调形式化方法的自动化实现应用实践该技术可同时分析策略文件(如访问控制策略
编译器也是有可能出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编译器对接,从而实现从模型到汇编语言的可信编译。
典型项目中,CompCert编译器基于LLVMIR验证了中间表示到目标代码转换的正确性,Alive2则专注于LLVM优化passes的语义保持证明,二者均显著提升了编译器可靠性。
C有大量围绕它的工具,比如frama-c和其他分析你的代码的工具,或者compcert编译器。虽然Rust有很多用于普通情况的工具,但对于更多的小众事物来说,它很难超越50年以上的生态系统。
正式验证程序的实例中有seL4,CompCert C,cakeML,Tokeneer和iFACTS。
这些组件随后利用适当的形式化方法仔细检查或者重建以获得更高层级的担保,如同在 PolarSSL 中所进行的,它现在称为 mbed TLS [Bakker14, Regehr15],继 Heartbleed 或者 CompCert