5 Reasons Why Box Plots are the Better Default Choice for Visualizing Performance

The Changing "Guarantees" Given by Python's Global Interpreter Lock

Don't Trust Your Profiler

Which Interpreters Are Faster, AST or Bytecode?

An Introduction to Interpreters and JIT Compilation

AST vs. Bytecode: Interpreters in the Age of Meta-Compilation [pdf]

Squeezing a Little More Performance Out of Bytecode Interpreters

How Effective Are Classic Lookup Optimizations for Rails Apps?

Reducing Memory Footprint by Minimizing Hidden Class Graphs

An Introduction to Efficient and Safe Implementations of Dynamic Languages

What if we could see all concurrency bugs in the debugger?

Multiverse Debugging: Non-deterministic Debugging for Non-deterministic Programs

Tracing vs. Partial Evaluation (2015)

A Concurrency-Agnostic Protocol for Multi-Paradigm Concurrent Debugging Tools

Renaissance: Harness Emergence to Avoid the Concurrency Trap

Cross-Language Compiler Benchmarking

Tracing vs. Partial Evaluation: Comparing Meta-Compilation for Interpreters

Zero-Overhead Metaprogramming

Zero-Overhead Metaprogramming

Simple Language Implementation Techniques for the 21st Century

Why Is Concurrent Programming Hard?