Unix "find" expressions compiled to bytecode
Explores a technique for compiling Unix 'find' command expressions into bytecode for efficiency, contrasting with existing tree-walk interpreters.
Explores a technique for compiling Unix 'find' command expressions into bytecode for efficiency, contrasting with existing tree-walk interpreters.
Explains how Java's new Class-File API will simplify future Java updates by improving bytecode manipulation for tools and frameworks.
Compares performance of dict() vs {} for creating dictionaries in Python, showing {} is significantly faster due to bytecode differences.
Explains how javac's ct.sym file ensures Java backwards compatibility by controlling API usage for different target versions.
Explains how javac's ct.sym file ensures Java backwards compatibility by managing API availability across different Java versions.
Explains why pow() is slower than ** in Python using the dis module and introduces the concept of constant folding.
Explains Java 11's constantdynamic feature, a JVM instruction for lazy constant creation, and demonstrates its use with Byte Buddy.
Explains how JavaScript engines optimize code using shapes, inline caches, and the interpreter/compiler pipeline.
Explains the removal of sun.misc.Unsafe.defineClass in JDK 11 and the new, more secure class definition API using MethodHandles.Lookup.
A guide to creating Multi-release JARs (MR-JARs) in Java to package code for multiple Java versions in a single artifact.
A tutorial on using JDeps, the Java Dependency Analysis Tool, to examine and analyze project dependencies from the command line.
A technical guide on adding a custom bytecode instruction (IL opcode) to the .NET CoreCLR runtime, including steps for the runtime, JIT, and Reflection.Emit.
Explains how to modify Java final fields using reflection, discusses compile-time constants, and warns about unexpected behavior.
Announcing WebAssembly, a new binary format for safe, efficient code on the web, designed as a successor to asm.js.
Explains the invokedynamic JVM instruction, its role in Java 8 lambdas, dynamic languages, and how it works with method handles.
Explores the JVM's behavior of reusing instances for non-capturing lambda expressions in Java, using a Future interface example.
Explores how Java 8 lambda expressions work internally, covering their type, runtime representation, performance, and design decisions.
A summary of a whitepaper detailing new techniques for reverse-engineering Python applications like Dropbox, including security bypasses.