The release of Ruby 3.1.0, the dynamic object-oriented programming language, are highly efficient software development and incorporates the best features of Perl, Java, Python, Smalltalk, Eiffel, Ada, and Lisp. project code is distributed under a BSD license ( “2-clause BSDL”) and “Ruby”, which refers to the latest version of the GPL license and a fully compatible with GPLv3.
- Added a new in-process experimental JIT-compiler YJIT ,
created by e-commerce platform Shopify developers within Ruby-programming initiatives to increase productivity using the Rails framework and causing a lot of methods. The key difference from the previously used JIT-compiler
MJIT, based on processing methods and uses entirely external compiler in C language, is that applies YJIT versioning basic blocks (LBBV – Lazy Basic Block Versioning) and contains an integrated JIT-compiler. Due LBBV, JIT compiles only the beginning of the beginning of the method, and the remaining part compiles some time after in progress will be determined by the types of used variables and arguments. When using YJIT recorded increase in productivity during the test railsbench 22%, and the liquid-render the dough to 39%. YJIT still limited support for unix-like operating systems on the architecture x86-64 systems and
is disabled by default (for activation should indicate “–yjit” command runoff flag). - Improved performance of the old JIT-compiler MJIT. For projects that use the Rails, the maximum cache size (–jit-max-cache) default increased from 100 to 10,000 instructions. Terminated JIT methods for non-use, comprising more than 1,000 instructions. To support Zeitwerk of Rails code generated in the JIT is no longer thrown when the class is included TracePoint events.
- The composition included a complete rewrite of the debugger debug.gem , which supports remote debugging, does not slow down the application being debugged, supports integration with advanced debug interface (VSCode and Chrome), can be used for debugging multithreaded and multiprocess applications, provides an interface implementation REPL code offers enhanced tracking capabilities can record and re-play code snippets.
Previously, the debugger offers lib / debug.rb removed from the base supply. - Implemented a clear allocation of errors in reports callback trace. Tagging errors is implemented with the help of built-in and enabled by default gem-package error_highlight. To disable error-tagging, you can use the setting “–disable-error_highlight”. $ Ruby test.rb test.rb: 1: in “
“: undefined method “time” for 1: Integer (NoMethodError) 1.time {} ^^^^^ Did you mean? times
/Media reports.