A Type System for the Automatic Distribution of Higher-order Synchronous Dataflow Programs
我们解决了分布式系统的设计与同步并行程序设计语言。由于模块化设计需要处理架构和功能的模块化,我们的第一个贡献是扩展现有的同步低程序设计语言与原语允许分布式架构的描述和本地化的一些表达式到一些处理器。我们还提出了一个分布式语义形式化的同步程序的分布式执行。我们的第二个贡献是提供一个类型系统,以推断本地化的非注释值的类型推断的手段,并确保在编译时,分布的一致性。我们的第三个贡献是提供了一个类型导向的投影操作,以自动获得,从一个集中式的程序,本地程序将由每个计算资源执行。类型系统和自动分配机制已在现有的同步数据流程序设计语言的编译器中完全实现。
2012-11-12 cs.PL
End-to-end Compositional Verification of Program Safety through Verified and Verifying Compilation
针对 Rust 等现代安全语言混合安全与不安全模块导致的端到端验证难题,提出基于开放标记迁移系统的开放安全性定义,实现经验证与验证性编译的协同组合,保障异构模块在目标层面的安全性组合验证。
2025-10-11 cs.PL
From Separate Compilation to Sound Language Composition
Università degli Studi di Milano(米兰大学)
本文提出nlgcheck,一种基于数据流分析的静态分析工具,用于解决Neverlang工作台中独立编译下的属性文法管理问题,提升编译时正确性与运行时鲁棒性。
2026-02-03 cs.PL cs.SE
Modular, Fully-abstract Compilation by Approximate Back-translation
本文提出通过近似反向翻译技术,解决源语言表达能力不足时编译器完全抽象性证明的难题,并在STLC到ULC编译器上实现首个Coq机械化证明。
2017-10-24 cs.PL
Abstract Compilation as Abstraction of Operator Semantics, applied to Cost Analysis
Universidad Politécnica de Madrid(马德里理工大学);IMDEA Software Institute(IMDEA软件研究所);Spanish Council for Scientific Research (CSIC)(西班牙国家研究委员会);Computer Science Laboratory of Sorbonne University (LIP6)(索邦大学计算机科学实验室);STMicroelectronics(意法半导体)
该研究提出算子语义与抽象编译框架,将其应用于静态代价分析,开发出支持通用函数未知量等的最优递归提取技术,提升了代价分析的可靠性与精确性。
2026-08-11 cs.LO cs.PL
Compilation of Modular and General Sparse Workspaces
本文提出可自动检测稀疏散射并插入模块化稀疏工作空间的编译器,在性能与内存上兼顾稀疏和稠密方案,并可泛化到任意张量表达式。
2024-04-06 cs.PL
MACER: A Modular Framework for Accelerated Compilation Error Repair
Indian Institute of Technology Kanpur(印度理工学院坎普尔分校);National University of Singapore(新加坡国立大学)
自动编译错误修复,即对无法编译的错误程序提出修复建议的问题,近年来引起了人们极大的兴趣。除了作为一个通用的方便工具,自动代码修复对于那些发现编译器错误消息晦涩难懂且毫无帮助的新手程序员来说具有重要的教学应用。现有的方法在很大程度上使用重型生成学习技术的黑盒应用解决了这个问题,例如序列到序列预测(TRACER)或强化学习(RLAssist)。虽然方便,但这种学习技术的黑盒应用使得现有方法在训练时间方面庞大,并且在针对特定错误类型方面效率低下。我们提出了MACER,一种新的技术,用于加速错误修复的基础上修复过程中修复识别和修复应用程序的模块化隔离。MACER使用强大而廉价的判别学习技术,如多标签分类器和排名器,首先确定所需的修复类型,然后应用建议的修复。实验表明,MACER采用的细粒度方法不仅提供了出色的纠错能力,而且还提供了更快的训练和预测速度。在从实际学生提交的4K错误程序的基准数据集上,MACER在建议修复与学生所需修复完全匹配的常见错误方面比现有方法高出20%。MACER在所有错误类型上也具有竞争力或优于现有方法-无论是流行的还是罕见的。MACER的训练时间加速比TRACER快2倍,比RLAssist快800倍,测试时间加速比两者都快2- 4倍。
2020-05-28 cs.LG cs.PL cs.SE
Automatic Modular Abstractions for Linear Constraints
提出了一种通过抽象解释自动生成用于静态分析的抽象Transformers的方法。该方法的重点是对程序的线性约束,操作合理的,真正的或浮点变量,并包含线性分配和测试。除了无循环代码,同样的方法也适用于获得最小不动点作为前提条件的函数,这允许分析循环和递归函数。我们的算法是基于新的量词消去和符号操作技术。给定一个抽象域的规范和一个程序块,我们的方法自动输出相应的抽象Transformer的实现。因此,它是程序转换的一种形式。我们工作的动机是数据流同步程序设计语言,用于构建控制命令嵌入式系统,但它也适用于命令式和函数式编程。
2008-11-02 cs.LO cs.PL
Automatic modular abstractions for template numerical constraints
提出了一种通过抽象解释自动生成用于静态分析的抽象Transformers的方法。该方法的重点是对程序的线性约束,操作合理的,真正的或浮点变量,并包含线性分配和测试。除了无循环代码,同样的方法也适用于获得最小不动点作为前提条件的函数,这允许分析循环和递归函数。我们的算法是基于新的量词消去和符号操作技术。给定一个抽象域的规范和一个程序块,我们的方法自动输出相应的抽象Transformer的实现。因此,它是程序转换的一种形式。我们工作的动机是数据流同步程序设计语言,用于构建控制命令嵌入式系统,但它也适用于命令式和函数式编程。
2010-05-31 cs.LO cs.PL
Bridging the Gap between Programming Languages and Hardware Weak Memory Models
我们开发了一种新的中间弱内存模型IMM,作为将从具有弱内存一致性语义的并发程序设计语言到主流多核架构(例如POWER和ARM)的编译正确性证明模块化的一种方式。我们使用IMM来证明编译的正确性,从Kang等人的有前途的语义到POWER(从而修正和改进他们的结果)和ARMv7,以及最近修订的ARMv 8模型。我们的结果在Coq中是机械化的,据我们所知,这些是第一个机器验证的编译正确性结果,用于比x86-TSO更弱的模型。
2018-11-09 cs.PL
Implementing Multi-Periodic Critical Systems: from Design to Code Generation
本文提出了一个完整的方案,为关键的嵌入式系统的开发与多实时约束。该系统的编程语言,扩展了高层次的实时原语的同步方法。它能够以模块化和层次化的方式将几个局部单周期同步系统组装成全局多周期同步系统。它还允许指定流延迟约束。一个程序被转换成一组实时任务。生成的代码(\C \ code)可以在具有动态优先级调度程序(EDF)的简单实时平台上执行。编译过程(过程的每个算法,而不是编译器本身)被正式证明是正确的,这意味着生成的代码尊重原始程序的实时语义(尊重周期,截止日期,发布日期和优先级)以及其功能语义(尊重变量消费)。
2010-03-15 cs.PL
The CoCompiler: DSL Lifting via Relational Compilation
本研究提出CoCompiler双向工具,通过关系编译思路改写Vélus编译器,结合规范化处理,实现真实反应式C代码到Lustre DSL的提升,为复用现有编译器构建DSL提升器提供实用基础。
2025-10-28 cs.PL
Automatic Modular Abstractions for Template Numerical Constraints
提出了一种通过抽象解释自动生成用于静态分析的抽象Transformers的方法。该方法的重点是对程序的线性约束,操作合理的,真正的或浮点变量,并包含线性分配和测试。给定一个抽象域的规范和一个程序块,我们的方法自动输出相应的抽象Transformer的实现。因此,它是程序转换的一种形式。除了无循环代码,同样的方法也适用于获得最小不动点作为前提条件的函数,这允许分析循环和递归函数。我们工作的动机是数据流同步程序设计语言,用于构建控制命令嵌入式系统,但它也适用于命令式和函数式编程。我们的算法是基于线性算术公式上的量词消去和符号操作技术。我们也给出了非线性约束和非线性程序结构的一般结果。
2010-05-26 cs.LO cs.PL
Let it Flow: A Formally Verified Compilation Framework for Asynchronous Dataflow
Carnegie Mellon University(卡内基梅隆大学);University of Maryland, College Park(马里兰大学帕克分校)
该研究提出首个异步数据流编译器的形式化验证框架Wavelet,通过带围栏的能力类型系统等技术,验证编译器核心 passes 并证明相关属性,编译的数据流图规模与未经验证编译器相当。
2026-08-07 cs.LO cs.PL
Reactive Probabilistic Programming
同步建模是程序设计语言(如Lustre、Esterel或Scade)的核心,通常用于实现安全关键控制软件,例如,飞机的电传操纵和发动机控制。然而,到目前为止,这些语言对建模不确定性(软件环境或行为的概率方面)的现代支持有限,尽管建模不确定性是设计控制系统时的主要活动。在本文中,我们提出了第一个同步概率程序设计语言ProbZelus。ProbZelus保守地提供了编写控制软件的同步语言的设施,具有概率结构来建模不确定性并执行循环中的推理。我们提出的语言的设计和实现。我们提出了概率流函数的测度论语义和一个简单的类型纪律来分离确定性和概率表达式。我们展示了一个语义保持编译成一个一阶函数语言,适合于一个简单的演示推理算法的流模型。我们还重新设计了延迟采样推理算法,以提供高效的流式推理。结合对几个反应式应用程序的评估,我们的结果表明,ProbZelus可以设计反应式概率应用程序和高效的有界内存推理。
2020-04-09 cs.PL
Java Modular Extension for Operator Overloading
本文介绍了一种用于Java语言编译器和集成开发环境(IDE)的模块化扩展(插件),它在保持向后兼容性的同时,为Java语言增加了运算符重载功能。该扩展使用了类似于SugarJ的基于库的语言可扩展性的思想。但与大多数语言扩展不同,它直接在编译器内部工作,没有任何外部预处理器。这提供了更快的编译速度,更好的语言兼容性和对本地开发工具(IDE,构建工具)的支持。扩展插件到javac和Eclipse Java编译器以及所有使用编译器的工具,如IDE(Netbeans,Eclipse,IntelliJ IDEA),构建工具(ant,maven,gradle)等。只需添加一个jar库到类路径和/或安装一个插件到IDE。本文还讨论了如何构建这样的Java编译器扩展。扩展源代码在http://amelentev.github.io/java-oo/上开放
2014-06-16 cs.PL
Normalising Lustre Preserves Security
同步反应数据流语言LUSTRE是一种表达性语言,配备了一套工具,用于对各种安全关键系统进行建模、仿真和模型检查。在正式认证的LUSTRE编译中,一个关键的中间步骤涉及到转换为一种行为良好的子语言,称为“规范化的LUSTRE”(NLUSTRE)。最近,我们提出了一个简单的Denning风格的基于格的安全信息流类型系统的NLUSTRE,并证明了它的可靠性,建立安全类型的程序是无干扰的共归纳流语义。在本文中,我们提出了一个类似的安全类型系统的不受限制的LUSTRE,并表明,伯克等人。的从LUSTRE到NLUSTRE的语义保持规范化转换也是安全保持的。一个新颖之处是对节点调用使用细化安全类型。主要结果是通过规范化变换来保持安全类型。我们的安全类型规则的合理性是通过建立良好的安全类型的程序是不干扰的,通过减少类型保存(这里),语义保存(Bourke等人)。以及我们之前对NLUSTRE的无干扰结果。
2021-05-22 cs.LO cs.PL
Nanopass Back-Translation of Call-Return Trees for Mechanized Secure Compilation Proofs
针对安全编译链证明中回译步骤复杂的挑战,提出一种基于调用-返回树、分多步进行的 nanopass 回译技术,利用幽灵状态和前向模拟简化证明,并在 Rocq 证明器中实现了机械化验证。
2025-07-16 cs.CR cs.PL
An overview of Ciao and its design philosophy
我们提供了一个全面的描述Ciao多范式编程系统,强调其设计和实现背后的一些新的方面和动机。Ciao的一个重要方面是,除了支持逻辑编程(特别是Prolog)之外,它还为程序员提供了大量来自不同编程范式和风格的有用功能,并且每个程序模块都可以随意打开和关闭这些功能(包括Prolog的功能)。因此,给定模块可以使用例如,高阶函数和约束,而另一个模块可能使用赋值、谓词、Prolog元编程和并发。此外,该语言被设计为以简单和模块化的方式进行扩展。Ciao的另一个重要方面是它的编程环境,它提供了一个强大的预处理器(带有相关的断言语言),能够静态地发现非平凡的bug,验证程序是否符合规范,并执行许多类型的优化(包括自动并行化)。此类优化产生的代码与其他动态语言或(实验性)优化编译器甚至静态语言具有高度竞争力,同时保留动态语言的灵活性和交互式开发。这种编译体系结构支持模块化和独立编译。该环境还包括一个功能强大的自动文档管理器和一个单元测试框架,两者都与断言系统紧密集成。本文提供了语言和程序开发环境的非正式概述。它旨在说明设计哲学,而不是详尽无遗,这在一篇期刊论文中是不可能的,而是指向以前的Ciao文献。
2011-02-27 cs.PL
Modularity, Code Specialization, and Zero-Cost Abstractions for Program Verification
本文提出一组基于语言的技术,在 F* 的 Low* 工具链中实现模块化高层验证与零开销低层代码生成,成功将 HACL* 扩展至十万行以上,并通用捕获流式 API 语义,修复了 Python 参考实现中的多个 CVE 漏洞。
2023-07-06 cs.PL
Multi-language Program Logics
Institute of Science and Technology Austria (ISTA)(奥地利科学技术学院);MPI-SWS(马克斯·普朗克计算机系统研究所)
本文提出 Hotpot,首个多语言程序逻辑框架,支持跨语言推理、规范重用及高阶跨语言调用,基于 Iris 和 DimSum 在 Rocq Prover 中机械化实现。
2026-09-29 cs.PL
A Simulation Tool for tccp Programs
时间并发约束语言tccp是一种声明式同步并发语言,特别适用于反应式系统建模。在tccp中,代理通过全局约束存储进行通信和同步。它支持离散时间的概念,允许所有未阻塞的代理同时执行。在本文中,我们提出了一个模块化的体系结构的仿真tccp程序。该工具包括三个主要部分。首先,一组基本的抽象指令,能够模拟tccp代理的行为,管理活动代理所需的内存模型和执行期间的存储状态。第二,代理解释器迭代地执行当前代理的指令,并计算下一时刻要执行的新代理。最后是约束求解器组件,它是处理约束的模块。在本文中,我们描述了这些组件的实现,并提出了一个在tccp建模的真实系统的例子。
2017-01-03 cs.PL cs.SE