Coq与CompCert编译器的技术革新与性能优化
1. Coq文档的异步处理
在Coq的应用中,抽象化具有重要价值。它不仅能向程序员隐藏三种任务的所有通信代码(如套接字、编组、错误处理),还能实现一种新的快速编译形式,即批量文档检查。这种编译方式将工作分为两个步骤:
- 第一步快速检查除不透明证明之外的所有内容,并生成一个(不完整的)编译文件。不完整文件的扩展名为 .vio ,即便不透明证明未检查,也可使用该文件,因为Coq逻辑承诺不使用不透明证明。
- 第二步完成该文件的编译。可以通过恢复 .vio 文件中保存的请求列表,将不完整的 .vio 文件转换为通常的 .vo 文件。具体技巧是在队列初始化时将工作线程数设置为零,这样文档检查时不处理任何任务,然后将队列内容以请求列表形式转储并存储在 .vio 文件中。
为了让证明器能无序执行命令,用户需要与证明器进行异步交互。这就需要一个接口,该接口能系统地将用户正在处理的文档提供给证明器,并告知用户的查看位置,以帮助系统进行调度决策。同时,该接口还需能解释证明器生成的报告并展示给用户。这种用户界面让编辑形式化文档的体验更接近使用主流文字处理器编辑常规文档,系统会在后台进行“拼写检查”,标记非法证明步骤,还能根据光标位置显示上下文信息,并聚合对同一段文本的不同反馈。
2. PIDE及其文档模型
为了统一集成用户界面和异步证明器,Wenzel开发了PIDE中间件。该中间件由Scala编写的前端中的多个API函数组成,这些函数会对证明器后端产生影响
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



