Programming language release Ruby 3.2

Ruby 3.2.0 release took place, a dynamic object-oriented programming language, which is highly efficient to develop programs and has absorbed the best features Perl, Java, Python, Smalltalk, Eiffel, ADA and LISP. Project code is distributed under BSD licenses (“2-Clause BSDL”) and “Ruby”, which refers to the last version of the GPL license and completely Compatible with GPLV3.

The main improvements :

  • Added the initial port of the Cruby interpreter, compiled into the Webassembly intermediate code for launched in a web browser or under the control of separate Runtime, such as wasmtime . For direct interaction with the operating system, a separate launch, the API was (Webasembly System Interface) is used. Among other things, VFS is given a strapping over WASI, which allows to pack the entire application in the Ruby language in the representation in the form of one WASM file. The launch in the browser can be used to create training and demonstration Web services, such as Tryruby. At the current stage of development, the port successfully passes the test sets of Basic and Bootstrap, in which the API Thread is not used. The port also does not support Fiber, exceptions and assembly of garbage.
  • declared stable and ready for working use an intra-processing JIT comparator yjit created by the electronic platform developers Shopify commerce as part of the Ruby Program increased productivity initiative using Rails Framivork and provoking a lot of methods. The key difference from the previously used MJIT JIT compiler, based on the processing of the entire method and uses the external compiler in the SI language, is that YJIT uses the version of the base blocks (LBBV-Lazy Basic Block Versioning) and contains an integrated JIT compiler. Thanks to LBBV, JIT first compiles only the beginning of the method, and the remaining part compiles after some time, after the types of variables and arguments used are determined during the execution.
    YJIT is available for architectures X86-64 and ARM64/Aarch64 in Linux, MacOS, BSD and other UNIX platforms.

    , unlike the CRuby, the YJIT code is written in the Rustc 1.58.0+ compilation, so the assembly is assembled YJIT is disabled by default and is optional. When using YJIT, an increase in performance when performing the YJIT-Bench test was recorded by 41% compared to the use of interpretation.


  • Added additional protection against attacks that cause refusal to service external data in ineffective and long -term regular expressions ( redos
/Media reports cited above.