Ruby 3.2 Makes YJIT Production-Ready and Adds WASM Support
Ruby 3.2.0 declared YJIT no longer experimental, added an initial WASI-based WebAssembly port, and introduced ReDoS mitigations plus the new Data class.
Historical Archive. This article documents an event from 2022 and is preserved with its original date for reference. It is not current news, and details may have changed since publication.
Ruby 3.2 ships for Christmas 2022
Ruby 3.2.0 was released on December 25, 2022, described by the core team as adding many features and performance improvements. It built directly on the previous year's YJIT work and broadened where and how that compiler can run.
YJIT graduates to production
YJIT was no longer experimental in 3.2. After more than a year of testing on production workloads, it gained support for both x86-64 and arm64/aarch64 CPUs across Linux, macOS and BSD, bringing Apple M1/M2, AWS Graviton and Raspberry Pi 4 into scope. Building YJIT now requires Rust 1.58.0 or newer. Ruby said the 3.2 YJIT was 41% faster (geometric mean) than the interpreter on yjit-bench, with roughly a third of the memory overhead of 3.1 thanks to lazy physical memory allocation and a new Code GC.
WebAssembly and ReDoS defenses
Ruby 3.2 added an initial WASI-based WebAssembly port, letting a CRuby binary run in a browser, a serverless edge environment or other WebAssembly/WASI embedders, powering things like the TryRuby playground. The release also tackled Regular expression Denial of Service: an improved memoization-based matching algorithm made about 90% of matches run in linear time, and a new Regexp.timeout setting provides a fallback for patterns that memoization cannot help.
The new Data class and cleanups
Ruby 3.2 introduced Data, a new core class for simple immutable value objects that shares some implementation with Struct but exposes a leaner, stricter API. syntax_suggest (formerly dead_end) was integrated to help locate missing or extra end keywords, Set became a builtin that no longer needs require 'set', and several long-deprecated methods and constants, including Fixnum, Bignum and File.exists?, were removed.
Related on Skillo
See also: Ruby 3.1 and the arrival of YJIT, Ruby 3.3, Prism and RJIT.
Sources
Published date reflects the original event date (2022-12-25). This article is original Skillo editorial written from the sources above; facts were verified in September 2026.
Written by
Skillo Staff
0 Comments
Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.