Generic go to go: dictionary-passing, monomorphisation, and hybrid
Stephen Ellis, Shuofei Zhu, Nobuko Yoshida, Linhai Song
摘要
Go is a popular statically-typed industrial programming language. To aid the type safe reuse of code, the recent Go release (Go 1.18) published early 2022 includes bounded parametric polymorphism via generic types. Go 1.18 implements generic types using a combination of monomorphisation and call-graph based dictionary-passing called hybrid. This hybrid approach can be viewed as an optimised form of monomorphisation that statically generates specialised methods and types based on possible instantiations. A monolithic dictionary supplements information lost during monomorphisation, and is structured according to the program’s call graph. Unfortunately, the hybrid approach still suffers from code bloat, poor compilation speed, and limited code coverage. In this paper we propose and formalise a new non-specialising call-site based dictionary-passing translation. Our call-site based translation creates individual dictionaries for each type parameter, with dictionary construction occurring in place of instantiation, overcoming the limitations of hybrid. We prove it correct using a novel and general bisimulation up to technique. To better understand how different generics translation approaches work in practice, we benchmark five translators, Go 1.18, two existing monomorphisation translators, our dictionary-passing translator, and an erasure translator. Our findings reveal several suggestions for improvements for Go 1.18— specifically how to overcome the expressiveness limitations of generic Go and improve compile time and compiled code size performance of Go 1.18.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了每一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
引用它的顶会 Paper2
- Extending Isabelle/HOL's Code Generator with Support for the Go Programming LanguageTerru Stübinger, Lars HupelFM 2024 · 被引用 1 次
- Welterweight Go: Boxing, Structural Subtyping, and GenericsRaymond Hu, Julien Lange, Bernardo Toninho, Philip Wadler 等POPL 2026
它引用的顶会 Paper1
相关 Paper
- The Simple Essence of MonomorphizationMatthew Lutze, Philipp Schuster, Jonathan Immanuel BrachthäuserOOPSLA 2025 · 被引用 2 次
- Class-Dictionary Specialization with Rank-2 Polymorphic FunctionsYong Qi Foo, Michael D. AdamsOOPSLA 2026
- Measuring the Impact of Programming Language DistributionGabriel Orlanski, Kefan Xiao, Xavier Garcia, Jeffrey Hui 等ICML 2023 · 被引用 49 次
- Automated Verification of Go Programs via Bounded Model CheckingNicolas Dilley, Julien LangeASE 2021 · 被引用 21 次
- Bounded Sort Polymorphism with Elimination ConstraintsJohann Rosain, Tomás Díaz, Kenji Maillard, Matthieu Sozeau 等POPL 2026
