Efficient and Correct Stencil Computation via Pattern Matching and Static Typing
涉及对数组元素的操作的模板计算是科学计算、游戏和图像处理中的常见编程模式。作为一种编程模式,模板计算是高度规则的,并且易于优化和并行化。然而,通用语言对编译器甚至程序员隐藏了这种规则模式,从而阻止了优化和混淆正确性。本文进一步研究了嵌入在Haskell中的用于模板计算的Ypnos域特定语言。Ypnos允许模板计算的声明式抽象规范,通过专门的语法向编译器和程序员暴露问题的结构。在本文中,我们证明了可判定的安全保证,格式良好,类型良好的Ypnos程序不能索引数组边界之外。因此,在Ypnos中索引是安全的,并且可以消除运行时边界检查。程序信息被编码为类型,使用Glasgow Haskell编译器的高级类型系统特性,在编译时通过类型检查强制执行安全索引不变式。
2011-09-05 cs.PL
MSWasm: Soundly Enforcing Memory-Safe Execution of Unsafe Code
UCSD(加州大学圣地亚哥分校);Yale University(耶鲁大学);CMU(卡内基梅隆大学);University of Cambridge(剑桥大学);University of Trento(特伦托大学);Utrecht University(乌得勒支大学)
MSWasm通过语言级内存安全性抽象,确保内存不安全代码的内存安全执行,通过形式化语义和证明,展示其内存安全性和编译器的正确性。
2026-04-16 cs.CR cs.PL
MimIR: An Extensible and Type-Safe Intermediate Representation for the DSL Age
本文提出可扩展高阶中间表示 MimIR,通过类型化 axiom 和插件机制让 DSL 开发者无需重写编译器基础设施即可扩展优化与代码生成,并在底层、正则匹配、线性代数与自动微分三个案例中验证其生成代码达到最先进性能。
2024-11-20 cs.PL
An Empirical Study of Rust-Specific Bugs in the rustc Compiler
本研究系统分析 rustc 编译器中的 Rust 特定缺陷,通过审查 2022-2024 年间的 301 个问题,发现缺陷主要源于类型系统和生命周期模型,并指出现有测试工具难以检测非崩溃错误。
2025-03-31 cs.PL
GPU Offload in Rust: Portable, Safe, and Fast
University of Toronto(多伦多大学);Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室);Vector Institute for Artificial Intelligence(向量人工智能研究所);Universidad Rey Juan Carlos(雷乌斯·胡安·卡洛斯国王大学)
本文提出一种原生构建于rustc和LLVM后端的零开销多厂商GPU编译框架,利用Rust特性解决GPU编程的安全与效率问题,经RAJAPerf评估其内核性能可与CUDA、HIP C++基线媲美。
2026-08-17 cs.PL
End-to-end Compositional Verification of Program Safety through Verified and Verifying Compilation
Shanghai Jiao Tong University(上海交通大学);University of Minnesota(明尼苏达大学)
针对 Rust 等现代安全语言混合安全与不安全模块导致的端到端验证难题,提出基于开放标记迁移系统的开放安全性定义,实现经验证与验证性编译的协同组合,保障异构模块在目标层面的安全性组合验证。
2025-10-11 cs.PL
Solidity 0.5: when typed does not mean type safe
最近发布的Solidity 0.5引入了一种新类型,以防止以太坊转移到不应该接收资金的智能合约。不幸的是,编译器无法强制执行此类型想要传达的保证,因此Solidity 0.5的类型可靠性并不比Solidity 0.4好。在本文中,我们讨论了一个典型的例子,表明基于潜在不安全的回调表达式的脆弱Solidity模式仍然未经检查。我们还指出了一个解决方案,该解决方案强烈依赖于形式化方法来支持类型安全的智能合约编程规则,同时与遗留Solidity代码追溯兼容。
2019-07-05 cs.PL
Towards a Fully Abstract Compiler Using Micro-Policies: Secure Compilation for Mutually Distrustful Components
安全编译可以防止对编译代码的所有低级攻击,并允许对源语言的安全性进行合理的推理。在这项工作中,我们提出了一个新的攻击者模型的安全编译,扩展了众所周知的概念,充分的抽象,以确保保护相互不信任的组件。我们设计了一个编译器链(编译器,链接器和加载器)和一个新的安全监视器,共同抵御这种强大的攻击模型。该监视器是使用最近提出的,通用的基于标签的保护框架,称为微策略,它配备了硬件支持高效缓存和形式化验证方法。我们的监视器保护抽象的一个简单的面向对象的语言-类隔离,方法调用的纪律,和类型安全-对任意低级别的攻击者。
2015-10-02 cs.CR cs.PL
Macro-embedding Compiler Intermediate Languages in Racket
本文提出在Racket中宏嵌入编译器中间语言家族(类Scheme至x86-64),用于编译器课程测试框架推导解释器,展示面向语言技术实现多语言家族及高低级语言互操作性,提升代码复用与开发效率。
2025-09-23 cs.PL
CryptSan: Leveraging ARM Pointer Authentication for Memory Safety in C/C++
提出基于ARM指针认证的内存安全方案CryptSan,利用指针签名保护堆、栈和全局变量,在真实硬件上实现优于现有方法的性能与安全性。
2023-05-11 cs.CR cs.PL cs.SE
The CoCompiler: DSL Lifting via Relational Compilation
Galois, Inc.(Galois公司)
本研究提出CoCompiler双向工具,通过关系编译思路改写Vélus编译器,结合规范化处理,实现真实反应式C代码到Lustre DSL的提升,为复用现有编译器构建DSL提升器提供实用基础。
2025-10-28 cs.PL
Portability of Optimizations from SC to TSO
本文研究编译器优化跨并发内存模型的移植问题,提出从SC到TSO可移植优化的全局约束,并证明其与禁止引入三角竞争相关,同时关联到SRA模型的移植。
2025-04-24 cs.PL
MappedTrace: Tracing Pointer Remotely with Compiler-generated Maps
Yale University(耶鲁大学)
MappedTrace利用编译器生成的只读映射远程精确识别程序快照中的指针,降低运行时开销,并支持内存泄漏检测与无限内存抽象等新应用。
2025-01-18 cs.CL cs.PL
Cage: Hardware-Accelerated Safe WebAssembly
提出硬件加速的WASM工具链Cage,利用Arm的MTE和PAC特性为未修改应用提供时空内存安全并提升沙箱性能,运行时和内存开销极小。
2024-12-19 cs.PL
Finding Compiler Bugs through Cross-Language Code Generator and Differential Testing
提出CrossLangFuzzer框架,利用通用IR和三种变异技术自动生成跨语言测试程序,通过差分测试发现多个JVM语言编译器缺陷,其中TypeChanger最有效,共发现24个已确认缺陷。
2025-07-09 cs.PL cs.SE
Type-safe and portable support for packed data
针对主流语言缺乏对打包数据支持的问题,提出Haskell库packed-data,利用元编程实现类型安全且可移植的打包数据构建与读取,遍历速度比未打包数据快高达60%,方法可推广至支持高阶类型的语言。
2025-04-28 cs.PL
A Verified Compiler for Quantum Simulation
针对现有哈密顿量模拟编译器缺乏形式化保证的问题,提出基于二次量子化的高层验证框架QBlue,含类型系统并支持数字/模拟电路编译,在Rocq中完全机械化,实现端到端验证。
2025-09-26 cs.PL quant-ph
RichWasm: Bringing Safe, Fine-Grained, Shared-Memory Interoperability Down to WebAssembly
本文提出富类型中间语言 RichWasm,基于 WebAssembly 支持细粒度内存所有权与共享,可作为垃圾回收语言和所有权类型语言的编译目标,并在 Coq 中证明其类型安全性。
2024-01-16 cs.PL
Conditional Execution of Transpiler Passes Based on Per-Script Feature Detection
Google(谷歌)
本文提出基于脚本特征动态执行转译器传递的方法,通过在生产环境中减少不必要的AST遍历,降低编译时间并节省计算资源。
2026-03-17 cs.PL cs.SE
Gemini: A Functional Programming Language for Hardware Description
本文介绍了双子座,功能程序设计语言的硬件描述,提供的功能,如参数多态性,递归数据库,高阶函数,和类型推断更高的表达能力相比,现代硬件描述语言。Gemini通过其独特的类型系统(由多个原子类型和依赖类型组成)演示了新颖的类型理论概念的理论和实现,该类型系统允许该语言安全地对软件和硬件构造进行建模,并通过多阶段编译执行类型推断。本文的主要技术成果包括形式化的双子座语法,类型规则,和评估规则,双子座的类型系统的安全性证明,和编译器的语义分析阶段的原型实现。
2019-11-10 cs.PL
Memory Tagging and how it improves C/C++ memory safety
C和C++中的内存安全问题在很大程度上仍然没有得到解决。一种通常被称为“内存标记”的技术如果在硬件中实现并具有合理的开销,则可以显著改善这种情况。本文介绍了两个现有的实现内存标记:一个是在ARM的全硬件实现,另一个是部分硬件辅助编译器为基础的工具AArch64。我们描述的基本思想,评估两个实现,并解释他们如何提高内存安全。本文旨在发起对内存标记的更广泛讨论,并激励CPU和操作系统供应商在不久的将来增加对它的支持。
2018-02-26 cs.AR cs.CR cs.PL
A Role for Dependent Types in Haskell (Extended version)
现代的Haskell支持零成本转换器,这是一种机制,共享相同运行时表示的类型可以在它们之间自由转换。为了确保这种转换是安全和可取的,此功能依赖于一种角色机制来禁止无效的转换。在这项工作中,我们将展示如何整合角色与依赖类型系统,并证明,使用Coq证明助手,所产生的系统是健全的。我们将这项工作设计为向Glasgow Haskell编译器添加依赖类型的基础,但我们也希望它对其他依赖类型语言的设计者有用,他们可能希望采用Haskell的安全编译器特性。
2019-05-31 cs.PL
Formalizing Stack Safety as a Security Property
本文提出一种基于语言安全概念的栈安全性形式化表征,将其分解为完整性与机密性等五个属性,支持寄存器保存与尾调用消除,并通过随机测试成功区分了微策略的正确与错误实现。
2024-03-21 cs.CR cs.PL
Applying Type Oriented Programming to the PGAS Memory Model
分区全局地址空间内存模型已经被许多语言和应用程序所普及。然而,这种抽象通常会导致程序员不得不依赖于一些内置的选择,并且由于这种隐式并行性,在程序员很少帮助的情况下,代码的可伸缩性和性能严重依赖于编译器和应用程序的选择。我们提出了一种方法,面向类型的编程,并行性的所有方面都通过类型和类型系统编码。例如,程序员关联的类型信息将决定数组如何分配、分区和分布。有了这些丰富的高级信息,编译器就可以生成一个高效的目标可执行文件。如果程序员希望省略详细的类型信息,那么编译器将依赖于有良好文档记录的安全默认行为,这些行为可以在以后通过添加类型进行调优。提出了一种遵循PGAS存储模型的面向类型的并行程序设计语言Mesham。我们说明了如何,如果这样做的话,使用类型可以调整所有参数和选项与此PGAS模型在一个干净和一致的方式,而无需重写大部分的代码。FFT的案例研究,并考虑在可编程性和性能方面-后者,我们证明了与现有的FFT求解器的比较。
2020-09-26 cs.PL
Exo-GPU: Safe, Imperative, User-schedulable Programming for Tensor Cores
MIT CSAIL(麻省理工学院计算机科学与人工智能实验室)
Exo-GPU是一种低级命令式语言,将并行与同步视为注释,验证顺序-并行等价性,用于编写H100 GEMM内核,性能超理论峰值80%以上,部分优于CUBLAS。
2026-09-16 cs.PL
RIOT-POLICE: An implementation of spatial memory safety for the RIOT operating system
本文首次为RIOT物联网操作系统集成安全C方言Checked C,将网络栈部分代码转换以实现空间内存安全,转换可选且评估了开销,为IoT系统内存安全提供了可行方案。
2020-05-19 cs.CR cs.PL
Reinforcement Learning from Compiler and Language Server Feedback
Princeton University(普林斯顿大学)
本文提出RLCSF方法和Lanser-CLI工具,通过编译器和语言服务器的反馈信号提升编码代理的可靠性,利用确定性奖励函数和分析捆绑技术实现过程监督。
2026-05-01 cs.AI cs.CL cs.PL
SplittingSecrets: A Compiler-Based Defense for Preventing Data Memory-Dependent Prefetcher Side-Channels
University of Washington(华盛顿大学)
SplittingSecrets是一种基于编译器的工具,通过防止秘密数据以地址形式存储来防御DMP引起的侧信道攻击。
2026-01-18 cs.CR cs.PL