Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Just-in-time compilation
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History == The earliest published JIT compiler is generally attributed to work on [[Lisp (programming language)|LISP]] by [[John McCarthy (computer scientist)|John McCarthy]] in 1960.{{sfn|Aycock|2003|loc=2. JIT Compilation Techniques, 2.1 Genesis, p. 98}} In his seminal paper ''Recursive functions of symbolic expressions and their computation by machine, Part I'', he mentions functions that are translated during runtime, thereby sparing the need to save the compiler output to [[punch card]]s<ref name="McCarthy1960" /> (although this would be more accurately known as a "[[Compile and go system]]"). Another early example was by [[Ken Thompson]], who in 1968 gave one of the first applications of [[regular expression]]s, here for [[pattern matching]] in the text editor [[QED (text editor)|QED]].{{sfn|Thompson|1968}} For speed, Thompson implemented regular expression matching by JITing to [[IBM 7094]] code on the [[Compatible Time-Sharing System]].{{sfn|Aycock|2003|loc=2. JIT Compilation Techniques, 2.1 Genesis, p. 98}} An influential technique for deriving compiled code from interpretation was pioneered by [[James G. Mitchell]] in 1970, which he implemented for the experimental language ''LC²''.{{sfn|Aycock|2003|loc=2. JIT Compilation Techniques, 2.2 LC², p. 98–99}}<ref name="Mitchell1970" /> [[Smalltalk]] (c. 1983) pioneered new aspects of JIT compilations. For example, translation to machine code was done on demand, and the result was cached for later use. When memory became scarce, the system would delete some of this code and regenerate it when it was needed again.{{sfn|Aycock|2003}}<ref name="Schiffman1984" /> Sun's [[Self (programming language)|Self]] language improved these techniques extensively and was at one point the fastest Smalltalk system in the world, achieving up to half the speed of optimized C<ref name="Self" /> but with a fully object-oriented language. Self was abandoned by Sun, but the research went into the Java language. The term "Just-in-time compilation" was borrowed from the manufacturing term "[[Just in time (business)|Just in time]]" and popularized by Java, with James Gosling using the term from 1993.{{sfn|Aycock|2003|loc=2.14 Java, p. 107, footnote 13}} Currently JITing is used by most implementations of the [[Java virtual machine|Java Virtual Machine]], as [[HotSpot (virtual machine)|HotSpot]] builds on, and extensively uses, this research base. The HP project Dynamo was an experimental JIT compiler where the "bytecode" format and the machine code format were the same; the system optimized [[PA-8000]] machine code.<ref name="Bala" /> Counterintuitively, this resulted in speed ups, in some cases of 30% since doing this permitted optimizations at the machine code level, for example, inlining code for better cache usage and optimizations of calls to dynamic libraries and many other run-time optimizations which conventional compilers are not able to attempt.<ref name="Jannotti" /><ref name="Dynamo" /> In November 2020, [[PHP]] 8.0 introduced a JIT compiler.<ref name="Tung" /> In October 2024, [[CPython]] introduced an experimental JIT compiler.<ref>{{Cite web |title=What's New In Python 3.13 |url=https://docs.python.org/3/whatsnew/3.13.html#whatsnew313-jit-compiler |access-date=2024-11-27 |website=Python documentation |language=en}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)