Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleOctober 2023
Are We Heading towards a Dynamic Language Winter? (Invited Talk)
DLS 2023: Proceedings of the 19th ACM SIGPLAN International Symposium on Dynamic LanguagesPage 2https://doi.org/10.1145/3622759.3628219Though the 2010s saw many research publications about languages such as JavaScript and Python, there currently appears to be a general loss of interest in dynamic languages, with popular new languages such as Rust and Zig being statically typed, and AOT ...
- short-paperOctober 2023
Remote Just-in-Time Compilation for Dynamic Languages
SPLASH 2023: Companion Proceedings of the 2023 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for HumanityPages 1–3https://doi.org/10.1145/3618305.3623593Cloud platforms allow applications to meet fluctuating levels of demand through automatic horizontal scaling. These deployment models are characterized by short-lived applications running in resource-constrained environments. This amplifies the ...
- research-articleOctober 2023
Approximating Type Stability in the Julia JIT (Work in Progress)
VMIL 2023: Proceedings of the 15th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate LanguagesPages 83–87https://doi.org/10.1145/3623507.3623556Julia is a dynamic language for scientific computing. For a dynamic language, Julia is surprisingly typeful. Types are used not only to structure data but also to guide dynamic dispatch – the main design tool in the language. No matter the dynamism,...
- research-articleAugust 2023
Typing Records, Maps, and Structs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue ICFPArticle No.: 196, Pages 215–258https://doi.org/10.1145/3607838Records are finite functions from keys to values. In this work we focus on two main distinct usages of records: structs and maps. The former associate different keys to values of different types, they are accessed by providing nominal keys, and trying to ...
- research-articleDecember 2022
Who You Gonna Call: Analyzing the Run-Time Call-Site Behavior of Ruby Applications
DLS 2022: Proceedings of the 18th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 15–28https://doi.org/10.1145/3563834.3567538Applications written in dynamic languages are becoming larger and larger and companies increasingly use multi-million line codebases in production. At the same time, dynamic languages rely heavily on dynamic optimizations, particularly those that ...
-
On type-cases, union elimination, and occurrence typing
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue POPLArticle No.: 13, Pages 1–31https://doi.org/10.1145/3498674We extend classic union and intersection type systems with a type-case construction and show that the combination of the union elimination rule of the former and the typing rules for type-cases of our extension encompasses occurrence typing. To apply ...
- research-articleJune 2022
Where to start: studying type annotation practices in python
ASE '21: Proceedings of the 36th IEEE/ACM International Conference on Automated Software EngineeringPages 529–541https://doi.org/10.1109/ASE51524.2021.9678947Dynamic programming languages have been embracing gradual typing, which supports optional type annotations in source code. Type-annotating a complex and long-lasting codebase is indeed a gradual and expensive process, where two issues have troubled ...
- research-articleOctober 2021
First-class environments in R
DLS 2021: Proceedings of the 17th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 12–22https://doi.org/10.1145/3486602.3486768The R programming language is widely used for statistical computing. To enable interactive data exploration and rapid prototyping, R encourages a dynamic programming style. This programming style is supported by features such as first-class ...
- research-articleOctober 2021
Type stability in Julia: avoiding performance pathologies in JIT compilation
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 150, Pages 1–26https://doi.org/10.1145/3485527As a scientific programming language, Julia strives for performance but also provides high-level productivity features. To avoid performance pathologies, Julia users are expected to adhere to a coding discipline that enables so-called type stability. ...
- research-articleOctober 2021
What we eval in the shadows: a large-scale study of eval in R programs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 125, Pages 1–23https://doi.org/10.1145/3485502Most dynamic languages allow users to turn text into code using various functions, often named <tt>eval</tt>, with language-dependent semantics. The widespread use of these reflective functions hinders static analysis and prevents compilers from ...
- research-articleOctober 2021
SimTyper: sound type inference for Ruby using type equality prediction
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 106, Pages 1–27https://doi.org/10.1145/3485483Many researchers have explored type inference for dynamic languages. However, traditional type inference computes most general types which, for complex type systems—which are often needed to type dynamic languages—can be verbose, complex, and difficult ...
- research-articleOctober 2021
A Surprisingly Simple Lua Compiler
SBLP '21: Proceedings of the 25th Brazilian Symposium on Programming LanguagesPages 1–8https://doi.org/10.1145/3475061.3475077Dynamically-typed programming languages are often implemented using interpreters, which offer several advantages in terms of portability and flexibility of the implementation. However, as a language matures and its programs get bigger, programmers may ...
- research-articleJanuary 2021
Analyzing Dynamic Code: A Sound Abstract Interpreter for Evil Eval
ACM Transactions on Privacy and Security (TOPS), Volume 24, Issue 2Article No.: 10, Pages 1–38https://doi.org/10.1145/3426470Dynamic languages, such as JavaScript, employ string-to-code primitives to turn dynamically generated text into executable code at run-time. These features make standard static analysis extremely hard if not impossible, because its essential data ...
Sound, heuristic type annotation inference for Ruby
DLS 2020: Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic LanguagesPages 112–125https://doi.org/10.1145/3426422.3426985Many researchers have explored retrofitting static type systems to dynamic languages. This raises the question of how to add type annotations to code that was previously untyped. One obvious solution is type inference. However, in complex type systems, ...
- research-articleNovember 2020
World age in Julia: optimizing method dispatch in the presence of eval
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 207, Pages 1–26https://doi.org/10.1145/3428275Dynamic programming languages face semantic and performance challenges in the presence of features, such as eval, that can inject new code into a running program. The Julia programming language introduces the novel concept of world age to insulate ...
- research-articleNovember 2020
Designing types for R, empirically
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue OOPSLAArticle No.: 181, Pages 1–25https://doi.org/10.1145/3428249The R programming language is widely used in a variety of domains. It was designed to favor an interactive style of programming with minimal syntactic and conceptual overhead. This design is well suited to data analysis, but a bad fit for tools such as ...
- research-articleNovember 2020
Efficient dispatch of multi-object polymorphic call sites in contextual role-oriented programming languages
MPLR '20: Proceedings of the 17th International Conference on Managed Programming Languages and RuntimesPages 52–62https://doi.org/10.1145/3426182.3426186Adaptive software becomes more and more important as computing is increasingly context-dependent. Runtime adaptability can be achieved by dynamically selecting and applying context-specific code. Role-oriented programming has been proposed as a paradigm ...
- research-articleJune 2020
Semi-static type, shape, and symbolic shape inference for dynamic computation graphs
MAPL 2020: Proceedings of the 4th ACM SIGPLAN International Workshop on Machine Learning and Programming LanguagesPages 11–19https://doi.org/10.1145/3394450.3397465The growing interest in deep learning has created a demand to compile computation graphs to accelerate execution and to deploy applications on various devices. Modern deep learning frameworks construct computation graphs dynamically. This gives rise to ...
- research-articleMarch 2020
A sound abstract interpreter for dynamic code
SAC '20: Proceedings of the 35th Annual ACM Symposium on Applied ComputingPages 1979–1988https://doi.org/10.1145/3341105.3373964Dynamic languages, such as JavaScript, employ string-to-code primitives to turn dynamically generated text into executable code at run-time. These features make standard static analysis extremely hard if not impossible because its essential data ...
- research-articleFebruary 2020
Type freezing: exploiting attribute type monomorphism in tracing JIT compilers
CGO '20: Proceedings of the 18th ACM/IEEE International Symposium on Code Generation and OptimizationPages 16–29https://doi.org/10.1145/3368826.3377907Dynamic programming languages continue to increase in popularity. While just-in-time (JIT) compilation can improve the performance of dynamic programming languages, a significant performance gap remains with respect to ahead-of-time compiled languages. ...