fbpx
Wikipedia

Copy-and-patch

In computing, copy-and-patch compilation is a simple compiler technique intended for just-in-time compilation (JIT compilation) that uses pattern matching to match pre-generated templates to parts of an abstract syntax tree (AST) or bytecode stream, and emit corresponding pre-written machine code fragments that are 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.

Compilation edit

While copy-and-patch is a "quick-and-dirty" approach to compilation that is orders of magnitude slower than more rigorous techniques, it often yields code that can in many cases approach the performance of unoptimized code produced by those techniques.

Copy-and-patch was first described by Fredrik Kjolstad and Haoran Xu in a 2021 paper.[1]

As of 2023, Xu was working on an implementation for Lua that generates templates automatically, based on high-level language descriptions of the interpreter primitives.[2]

As of 2024, a bytecode-based copy-and-patch implementation was used for the Python 3.13 JIT compiler.[3][4]

See also edit

References edit

  1. ^ 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.
  2. ^ Xu, Haoran (2023-05-12). "Building a baseline JIT for Lua automatically". sillycross.github.io. Retrieved 2024-01-11.
  3. ^ "Python 3.13 gets a JIT". tonybaloney.github.io. Retrieved 2024-01-09.
  4. ^ "GH-113464: A copy-and-patch JIT compiler by brandtbucher · Pull Request #113465 · python/cpython". GitHub. Retrieved 2024-01-09.

copy, patch, computing, copy, patch, compilation, simple, compiler, technique, intended, just, time, compilation, compilation, that, uses, pattern, matching, match, generated, templates, parts, abstract, syntax, tree, bytecode, stream, emit, corresponding, wri. In computing copy and patch compilation is a simple compiler technique intended for just in time compilation JIT compilation that uses pattern matching to match pre generated templates to parts of an abstract syntax tree AST or bytecode stream and emit corresponding pre written machine code fragments that are 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 Compilation editWhile copy and patch is a quick and dirty approach to compilation that is orders of magnitude slower than more rigorous techniques it often yields code that can in many cases approach the performance of unoptimized code produced by those techniques Copy and patch was first described by Fredrik Kjolstad and Haoran Xu in a 2021 paper 1 As of 2023 update Xu was working on an implementation for Lua that generates templates automatically based on high level language descriptions of the interpreter primitives 2 As of 2024 update a bytecode based copy and patch implementation was used for the Python 3 13 JIT compiler 3 4 See also editCompile and go system Tracing just in time compilationReferences edit 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 Xu Haoran 2023 05 12 Building a baseline JIT for Lua automatically sillycross github io Retrieved 2024 01 11 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 Retrieved from https en wikipedia org w index php title Copy and patch amp oldid 1214516707, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.