Copy-and-patch
Copy-and-patch compilation is a simple compiler technique intended for just-in-time compilation that uses pattern matching to match pre-generated templates to parts of an abstract syntax tree or bytecode stream, and emit corresponding pre-written machine code that is then patched to insert memory addresses, register addresses, constants and other parameters to produce executable code. Code not matched by templates can be either be interpreted in the normal way, or code created to directly call interpreter code.
Copy-and-patch is a "quick-and-dirty" approach to compilation that is orders of magnitude faster than more rigorous techniques, it often yields code that can in many cases approach the performance of those techniques.
Copy-and-patch was first described by Fredrik Kjolstad and Haoran Xu in a 2021 paper.[1] A bytedcode-based copy-and-patch implementation is used for the Python 3.13 JIT compiler.[2][3]
References
- ^ Xu, Haoran; Kjolstad, Fredrik (2021-10-15). "Copy-and-patch compilation: a fast compilation algorithm for high-level languages and bytecode". Proceedings of the ACM on Programming Languages. 5 (OOPSLA): 136:1–136:30. arXiv:2011.13127. doi:10.1145/3485513.
- ^ "Python 3.13 gets a JIT". tonybaloney.github.io. Retrieved 2024-01-09.
- ^ "GH-113464: A copy-and-patch JIT compiler by brandtbucher · Pull Request #113465 · python/cpython". GitHub. Retrieved 2024-01-09.