一个与虚拟机无关且向后兼容的保护修饰符:针对动态类型语言
摘要:动态类型语言中的方法可见性修饰符对于区分内部方法和公共API有重要作用。受保护的可见性修饰符提供了一种隐藏外部对象方法同时授权内部使用和在子类中重写的方式。尽管在主要的静态类型语言中存在,但可见性修饰符在动态类型语言中并不常见或成熟。在本文中,我们提出了ProtDyn,这是一种基于自我发送的可见性模型,用于依赖于名称混淆和句法差异的动态类型语言在编译时计算。我们介绍了#Pharo,这是ProtDyn在现有程序中向后兼容的实现,以及其在Python中的移植。使用这些实现,我们研究了ProtDyn对方法查找的性能影响,同时考虑了全局查找缓存和多态内联缓存的存在。我们展示了我们的名称混淆和双重方法注册技术对性能的影响非常小,并保持了全局查找缓存和多态内联缓存的好处。我们还展示了在真实用例中的内存开销在最坏情况下为2%至13%。受保护修饰符的语义强制实现封装,类似于私有,但允许开发人员在子类中扩展类。ProtDyn提供了一个与虚拟机无关且向后兼容的设计,用于在动态类型语言中引入受保护的语义。
作者:Iona Thomas (1), Vincent Aranega (1), St''ephane Ducasse (1), Guillermo Polito (1), Pablo Tesone (1) ((1) University of Lille, France / Inria, France / CNRS, France / Centrale Lille, France / CRIStAL, France)
论文ID:2306.12410
分类:Programming Languages
分类简称:cs.PL
提交时间:2023-06-22