Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a21b0c838d77c6fa

Jump to content

Copy-and-patch

From Wikipedia, the free encyclopedia

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 faster than more rigorous techniques, it often yields code that can in many cases approach the performance of partially optimized 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]

In 2025, a bytecode-based implementation of copy-and-patch for R was added in a modified version of R 4.3.2. [5]

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.
  5. Kocourek, Matěj; Křikava, Filip; Vitek, Jan (2025-10-09). "Copy-and-Patch Just-in-Time Compiler for R". VMIL '25: Proceedings of the 17th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages. ACM: 12–21. doi:10.1145/3759548.3763370. ISBN 979-8-4007-2164-9.