[DOC] Resurrected YJIT section

under "Implementation improvements", similarly to past versions.

We also don't do categorization like "* New features" (which was in this
file) or "New features:" (which was on the release notes), so I used the
standard header format instead.

I applied the same change to release notes, copied the same thing back
to NEWS.md, and then removed the TL;DR section from it.
This commit is contained in:
Takashi Kokubun 2024-12-20 17:45:51 -08:00
parent 861ee7a321
commit 6114094aa0

50
NEWS.md
View File

@ -448,30 +448,34 @@ The following bundled gems are promoted from default gems.
enabled using the environment variable `RUBY_GC_LIBRARY=mmtk`. This requires
the Rust toolchain on the build machine. [[Feature #20860]]
* New features of YJIT
* Add unified memory limit via `--yjit-mem-size` command-line option (default 128MiB)
which tracks total YJIT memory usage and is more intuitive than the
old `--yjit-exec-mem-size`.
* More statistics now always available via `RubyVM::YJIT.runtime_stats`
* Add compilation log to track what gets compiled via `--yjit-log`
* Tail of the log also available at run-time via `RubyVM::YJIT.log`
* Add support for shareable consts in multi-ractor mode
* Can now trace counted exits with `--yjit-trace-exits=COUNTER`
* Compressed context reduces memory needed to store YJIT metadata
### YJIT
* New optimizations of YJIT
* Improved allocator with ability to allocate registers for local variables
* When YJIT is enabled, use more Core primitives written in Ruby:
* `Array#each`, `Array#select`, `Array#map` rewritten in Ruby for better performance [[Feature #20182]].
* Ability to inline small/trivial methods such as:
* Empty methods
* Methods returning a constant
* Methods returning `self`
* Methods directly returning an argument
* Specialized codegen for many more runtime methods
* Optimize `String#getbyte`, `String#setbyte` and other string methods
* Optimize bitwise operations to speed up low-level bit/byte manipulation
* Various other incremental optimizations
#### New features
* Add unified memory limit via `--yjit-mem-size` command-line option (default 128MiB)
which tracks total YJIT memory usage and is more intuitive than the
old `--yjit-exec-mem-size`.
* More statistics now always available via `RubyVM::YJIT.runtime_stats`
* Add compilation log to track what gets compiled via `--yjit-log`
* Tail of the log also available at run-time via `RubyVM::YJIT.log`
* Add support for shareable consts in multi-ractor mode
* Can now trace counted exits with `--yjit-trace-exits=COUNTER`
#### New optimizations
* Compressed context reduces memory needed to store YJIT metadata
* Improved allocator with ability to allocate registers for local variables
* When YJIT is enabled, use more Core primitives written in Ruby:
* `Array#each`, `Array#select`, `Array#map` rewritten in Ruby for better performance [[Feature #20182]].
* Ability to inline small/trivial methods such as:
* Empty methods
* Methods returning a constant
* Methods returning `self`
* Methods directly returning an argument
* Specialized codegen for many more runtime methods
* Optimize `String#getbyte`, `String#setbyte` and other string methods
* Optimize bitwise operations to speed up low-level bit/byte manipulation
* Various other incremental optimizations
## Miscellaneous changes