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 2024
Type Inference Logics
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA2Article No.: 346, Pages 2125–2155https://doi.org/10.1145/3689786Type inference is essential for statically-typed languages such as OCaml and Haskell. It can be decomposed into two (possibly interleaved) phases: a generator converts programs to constraints; a solver decides whether a constraint is satisfiable. ...
The Long Way to Deforestation: A Type Inference and Elaboration Technique for Removing Intermediate Data Structures
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue ICFPArticle No.: 245, Pages 249–283https://doi.org/10.1145/3674634Deforestation is a compiler optimization that removes intermediate data structure allocations from functional programs to improve their efficiency. This is an old idea, but previous approaches have proved limited or impractical — they either only worked ...
- research-articleJune 2024
Generating Python Type Annotations from Type Inference: How Far Are We?
ACM Transactions on Software Engineering and Methodology (TOSEM), Volume 33, Issue 5Article No.: 123, Pages 1–38https://doi.org/10.1145/3652153In recent years, dynamic languages such as Python have become popular due to their flexibility and productivity. The lack of static typing makes programs face the challenges of fixing type errors, early bug detection, and code understanding. To alleviate ...
SLaDe: A Portable Small Language Model Decompiler for Optimized Assembly
CGO '24: Proceedings of the 2024 IEEE/ACM International Symposium on Code Generation and OptimizationPages 67–80https://doi.org/10.1109/CGO57630.2024.10444788Decompilation is a well-studied area with numerous high-quality tools available. These are frequently used for security tasks and to port legacy code. However, they regularly generate difficult-to-read programs and require a large amount of engineering ...
Total Type Error Localization and Recovery with Holes
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 68, Pages 2041–2068https://doi.org/10.1145/3632910Type systems typically only define the conditions under which an expression is well-typed, leaving ill-typed expressions formally meaningless. This approach is insufficient as the basis for language servers driving modern programming environments, which ...
-
When Subtyping Constraints Liberate: A Novel Type Inference Approach for First-Class Polymorphism
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 48, Pages 1418–1450https://doi.org/10.1145/3632890Type inference in the presence of first-class or “impredicative” second-order polymorphism à la System F has been an active research area for several decades, with original works dating back to the end of the 80s. Yet, until now many basic problems ...
- research-articleNovember 2023
TypeSqueezer: When Static Recovery of Function Signatures for Binary Executables Meets Dynamic Analysis
CCS '23: Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications SecurityPages 2725–2739https://doi.org/10.1145/3576915.3623214Control-Flow Integrity (CFI) is considered a promising solution in thwarting advanced code-reuse attacks. While the problem of backward-edge protection in CFI is nearly closed, effective forward-edge protection is still a major challenge. The keystone of ...
- research-articleSeptember 2024
Pluggable Type Inference for Free
ASE '23: Proceedings of the 38th IEEE/ACM International Conference on Automated Software EngineeringPages 1542–1554https://doi.org/10.1109/ASE56229.2023.00186A pluggable type system extends a host programming language with type qualifiers. It lets programmers write types like unsigned int, secret string, and nonnull object. Typechecking with pluggable types detects and prevents more errors than the host type ...
- research-articleSeptember 2024
Generative Type Inference for Python
ASE '23: Proceedings of the 38th IEEE/ACM International Conference on Automated Software EngineeringPages 988–999https://doi.org/10.1109/ASE56229.2023.00031Python is a popular dynamic programming language, evidenced by its ranking as the second most commonly used language on GitHub. However, its dynamic type system can lead to potential type errors, leading researchers to explore automatic type inference ...
- 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,...
Fast and Efficient Boolean Unification for Hindley-Milner-Style Type and Effect Systems
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 240, Pages 516–543https://doi.org/10.1145/3622816As type and effect systems become more expressive there is an increasing need for efficient type inference. We consider a polymorphic effect system based on Boolean formulas where inference requires Boolean unification. Since Boolean unification ...
Getting into the Flow: Towards Better Type Error Messages for Constraint-Based Type Inference
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA2Article No.: 237, Pages 431–459https://doi.org/10.1145/3622812Creating good type error messages for constraint-based type inference systems is difficult. Typical type error messages reflect implementation details of the underlying constraint-solving algorithms rather than the specific factors leading to type ...
- research-articleOctober 2023
PyBartRec: Python API Recommendation with Semantic Information
Internetware '23: Proceedings of the 14th Asia-Pacific Symposium on InternetwarePages 33–43https://doi.org/10.1145/3609437.3609463API recommendation has been widely used to enhance developers’ efficiency in software development. However, existing API recommendation methods for dynamic languages such as Python usually suffer from the limitations of incorrect type inference and lack ...
DLInfer: Deep Learning with Static Slicing for Python Type Inference
ICSE '23: Proceedings of the 45th International Conference on Software EngineeringPages 2009–2021https://doi.org/10.1109/ICSE48619.2023.00170Python programming language has gained enormous popularity in the past decades. While its flexibility significantly improves software development productivity, the dynamic typing feature challenges software maintenance and quality assurance. To ...
- research-articleJune 2023
Type-based Termination Analysis for Parsing Expression Grammars
SAC '23: Proceedings of the 38th ACM/SIGAPP Symposium on Applied ComputingPages 1372–1379https://doi.org/10.1145/3555776.3577620Parsing expressions grammars (PEGs) are a recognition-based formalism for language specification, which has been the subject of several research works. A PEG that succeeds or rejects every input string is said to be complete. However, checking if an ...
- research-articleNovember 2022
FastKLEE: faster symbolic execution via reducing redundant bound checking of type-safe pointers
ESEC/FSE 2022: Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software EngineeringPages 1741–1745https://doi.org/10.1145/3540250.3558919Symbolic execution (SE) has been widely adopted for automatic program analysis and software testing. Many SE engines (e.g., KLEE or Angr) need to interpret certain Intermediate Representations (IR) of code during execution, which may be slow and ...
DeJITLeak: eliminating JIT-induced timing side-channel leaks
ESEC/FSE 2022: Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software EngineeringPages 872–884https://doi.org/10.1145/3540250.3549150Timing side-channels can be exploited to infer secret information when the execution time of a program is correlated with secrets. Recent work has shown that Just-In-Time (JIT) compilation can introduce new timing side-channels in programs even if ...
- research-articleJanuary 2023
Static Type Recommendation for Python
ASE '22: Proceedings of the 37th IEEE/ACM International Conference on Automated Software EngineeringArticle No.: 98, Pages 1–13https://doi.org/10.1145/3551349.3561150Recently, Python has adopted optional type annotation to support type checking and program documentation. However, to enjoy the benefits, developers have to manually write type annotations, which is recognized to be a time-consuming task. To alleviate ...
- short-paperJanuary 2023
FlexType: A Plug-and-Play Framework for Type Inference Models
ASE '22: Proceedings of the 37th IEEE/ACM International Conference on Automated Software EngineeringArticle No.: 159, Pages 1–5https://doi.org/10.1145/3551349.3559527Types in TypeScript play an important role in the correct usage of variables and APIs. Type errors such as variable or function misuse can be avoided with explicit type annotations. In this work, we introduce FlexType, an IDE extension that can be used ...
- invited-talkSeptember 2022
eqWAlizer: scaling Erlang development at WhatsApp with static typing (keynote)
Erlang 2022: Proceedings of the 21st ACM SIGPLAN International Workshop on ErlangPage 1https://doi.org/10.1145/3546186.3552537In the last two years at WhatsApp we have developed eqWAlizer - a type-checker for Erlang AS IS - in style of Flow, Pyre, Hack. It’s already used in a significant part of our codebase. In this talk we overview the key eqWAlizer's design choices we made ...