通过合并实现动态继承的类型安全编译
《ACM Transactions on Programming Languages and Systems》:Type-Safe Compilation of Dynamic Inheritance via Merging
【字体:
大
中
小
】
时间:2025年11月08日
来源:ACM Transactions on Programming Languages and Systems
编辑推荐:
CP语言结合静态类型与动态继承,通过合并运算符和参数多态性支持模块化开发。针对子类型强制转换的编译挑战,设计基于可扩展记录的编译方案,经实验验证优化后性能接近类式JavaScript程序。
摘要
继承是许多编程语言中的关键概念。动态类型语言(如JavaScript)通常支持强大的动态继承形式。然而,动态继承对静态类型语言来说带来了重大挑战。大多数静态类型语言仅提供静态继承机制,以实现类型安全,但代价是牺牲了灵活性。
本文介绍了一种针对CP语言的编译器。CP是一种静态类型语言,但它通过合并操作符支持动态继承,并且还具有表达能力强的参数多态性。合并操作符实现了多重继承、一等类以及虚拟类和家族多态性。借助这些特性,CP语言能够开发出高度模块化且耦合度低的组件。然而,高效编译CP代码并非易事,尤其是当需要单独编译各个部分时。特别是在CP语言中,为了类型安全,子类型化是强制性的,这给编译方案的实现带来了很大挑战。我们展示了如何将CP语言编译成支持可扩展记录(类似数据结构)的语言,在这种语言中,记录标签是根据类型生成的,从而实现高效的查找功能。该编译方案的主要思想已在Coq中形式化证明,并被验证是类型安全的。CP编译器的具体实现针对JavaScript语言,其中记录被建模为JavaScript对象。我们通过多种基准测试进行了实证评估,并分析了若干针对CP语言特性的优化措施的效果。借助这些优化,CP语言的编译速度可比简单的合并编译方案快几个数量级,其性能可与基于类的JavaScript程序相媲美。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号