• Compiling by partial evaluation

    From John R Levine@johnl@taugh.com to comp.compilers on Tue Nov 19 14:48:00 2024
    From Newsgroup: comp.compilers

    In this paper the authors take an interpreter and a program it's
    interpreting and use partial evaluation to turn it into code. It seems
    too good to be true but they say it works well on some examples they've
    tried, turining Javascript and Lua programs into WebAssembly.

    https://arxiv.org/abs/2411.10559

    Partial Evaluation, Whole-Program Compilation

    Chris Fallin, Maxwell Bernstein

    There is a tension in dynamic language runtime design between speed and correctness: state-of-the-art JIT compilation, the result of enormous industrial investment and significant research, achieves heroic speedups
    at the cost of complexity that can result in serious correctness bugs.
    Much of this complexity comes from the existence of multiple tiers and the
    need to maintain correspondence between these separate definitions of the language's semantics; also, from the indirect nature of the semantics implicitly encoded in a compiler backend. One way to address this
    complexity is to automatically derive, as much as possible, the compiled
    code from a single source-of-truth; for example, the interpreter tier. In
    this work, we introduce a partial evaluator that can derive compiled code
    ``for free'' by specializing an interpreter with its bytecode. This
    transform operates on the interpreter body at a basic-block IR level and
    is applicable to almost unmodified existing interpreters in systems
    languages such as C or C++. We show the effectiveness of this new tool by applying it to the interpreter tier of an existing industrial JavaScript engine, SpiderMonkey, yielding 2.17|u speedups, and the PUC-Rio Lua interpreter, yielding 1.84|u speedups with only three hours' effort.
    Finally, we outline an approach to carry this work further, deriving more
    of the capabilities of a JIT backend from first principles while retaining semantics-preserving correctness.



    Regards,
    John Levine, johnl@taugh.com, Taughannock Networks, Trumansburg NY
    Please consider the environment before reading this e-mail. https://jl.ly
    --- Synchronet 3.21b-Linux NewsLink 1.2