🔄

Interpreters & VMs

Language interpreters, virtual machines, and runtime systems

Repositories

(8)

bytecodealliance/wasmtime

1 paper

dotnet/runtime

10 papers

erlang/otp

4 papers

nodejs/node

0 papers

openjdk/jdk

16 papers

python/cpython

11 papers

ruby/ruby

9 papers

v8/v8

2 papers

Papers

(53)
Showing 13 of 53 papers

A contention adapting approach to concurrent ordered sets

Konstantinos Sagonas, Kjell Winblad
2017
1 reference

Stateless model checking is a powerful method for program verification that, however, suffers from an exponential growth in the number of explored executions. A successful technique for reducing this number, while still maintaining complete coverage,...

A Stop-the-World Debugger for Erlang (and the BEAM)

Daniel Gorin, Björn Gustavsson, Roberto Aloi
2025
1 reference

Erlang and the BEAM are remarkable for their tracing capabilities and the type of troubleshooting this enables on live production systems. At other stages of the development cycle, though, a traditional debugger is arguably more natural and convenien...

Compacting garbage collection with ambiguous roots

J. Bartlett
1988
1 reference

Many modern garbage collectors [4] recover space by copying. Using an initial "root" set of pointers which are stored in known locations, all accessible objects are copied into a "new space". Two of the attractive properties of such a collector are t...

Evaluating YJIT’s Performance in a Production Context: A Pragmatic Approach

Maxime Chevalier-Boisvert, Takashi Kokubun, Noah Gibbs, Si Xing Wu, Aaron Patterson, Jemma Issroff
2023
2 references

Ruby is a dynamically-typed programming language with a large breadth of features which has grown in popularity with the rise of the modern web, and remains at the core of the implementation of widely-used online platforms such as Shopify, GitHub, Di...

Interprocedural Type Specialization of JavaScript Programs Without Type Analysis.

Maxime Chevalier-Boisvert, Marc Feeley
2016
1 reference

Previous work proposed lazy basic block versioning, a technique for just-in-time compilation of dynamic languages which we believe represents an interesting point in the design space. Basic block versioning is simple to implement, simple enough that ...

Lightweight, Modular Verification for WebAssembly-to-Native Instruction Selection

Alexa VanHattum, Monica Pardeshi, Chris Fallin, Adrian Sampson, Fraser Brown
2024
1 reference

Language-level guarantees---like module runtime isolation for WebAssembly (Wasm)---are only as strong as the compiler that produces a final, native-machine-specific executable. The process of lowering language-level constructions to ISA-specific inst...

Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator

M. Matsumoto, T. Nishimura
1998
1 reference

A new algorithm called Mersenne Twister (MT) is proposed for generating uniform pseudorandom numbers. For a particular choice of parameters, the algorithm provides a super astronomical period of 2 19937 −1 and 623-dimensional equidistribution up to 3...

More scalable ordered set for ETS using adaptation

Konstantinos Sagonas, Kjell Winblad
2014
2 references

The Erlang Term Storage (ETS) is a key component of the runtime system and standard library of Erlang/OTP. In particular, on big multicores, the performance of many applications that use ETS as a shared key-value store heavily depends on the scalabil...

Simple and Effective Type Check Removal through Lazy Basic Block Versioning

Maxime Chevalier-Boisvert, Marc Feeley
2014
1 reference

Dynamically typed programming languages such as JavaScript and Python defer type checking to run time. In order to maximize performance, dynamic language VM implementations must attempt to eliminate redundant dynamic type checks. However, type infere...

SipHash: A Fast Short-Input PRF

Jean-Philippe Aumasson, D. Bernstein
2012
1 reference

Using Selective Memoization to Defeat Regular Expression Denial of Service (ReDoS)

James C. Davis, Francisco Servant, Dongyoon Lee
2021
1 reference

Regular expressions (regexes) are a denial of service vector in most mainstream programming languages. Recent empirical work has demonstrated that up to 10% of regexes have super-linear worst-case behavior in typical regex engines. It is therefore no...

YJIT: a basic block versioning JIT compiler for CRuby

Maxime Chevalier-Boisvert, Noah Gibbs, J. Boussier, Si Xing Wu, Aaron Patterson, Kevin Newton, J. Ha...
2021
1 reference

Ruby is a dynamically typed programming language with a large breadth of features which has grown in popularity with the rise of the modern web, and remains at the core of the implementation of many widely-used websites. CRuby, the default implementa...