summaryrefslogtreecommitdiff
path: root/doc/yjit
AgeCommit message (Collapse)Author
2024-02-04YJIT: reduce default exec mem size to 48MiB (#9692)Maxime Chevalier-Boisvert
* YJIT: reduce default exec mem size to 48MiB based Based on user feedback from @jhawthorn and others. Better for small and memory-constrained deployments. NOTE: This commit should be included in the next Ruby 3.3.x point release. @xrxr should we tag someone specific? * YJIT: Update yjit.md about mem size (#9687) --------- Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2023-12-17Improve YJIT documentation for Ruby 3.3 (#9263)Takashi Kokubun
2023-12-13YJIT: Add --yjit-disable to help and reorder it (#9230)Takashi Kokubun
2023-11-29YJIT: edit `yjit.md` and bring it up to date (#9068)Maxime Chevalier-Boisvert
Also make various minor edits to improve readability.
2023-11-28YJIT: reduce default exec-mem-size to 64MiB (#9054)Maxime Chevalier-Boisvert
2023-11-20YJIT: make --yjit-max-versions=N option undocumented (#8962)Maxime Chevalier-Boisvert
Not useful for the vast majority of end users to change this option.
2023-11-07YJIT: update yjit.md, add MPLR 2023 paper and bibtex (#8861)Maxime Chevalier-Boisvert
* YJIT: update yjit.md, add MPLR 2023 paper and bibtex * Update doc/yjit/yjit.md
2023-10-19YJIT: remove unused `--yjit-greedy-versioning` command-line option (#8713)Maxime Chevalier-Boisvert
2023-10-18YJIT: Add --yjit-perf (#8697)Takashi Kokubun
Co-authored-by: Alan Wu <alansi.xingwu@shopify.com>
2023-10-10YJIT: Allow --yjit-trace-exits on release builds (#8619)Takashi Kokubun
2023-10-10Integer#times is not a C method [ci skip]Takashi Kokubun
2023-10-10Update yjit.mdMaxime Chevalier-Boisvert
2023-10-03YJIT: add heuristic to avoid compiling cold ISEQs (#8522)Maxime Chevalier-Boisvert
* YJIT: Add counter to measure how often we compile "cold" ISEQs (#535) Fix counter name in DEFAULT_COUNTERS YJIT: add --yjit-cold-threshold, don't compile cold ISEQs YJIT: increase default cold threshold to 200_000 Remove rb_yjit_call_threshold() Remove conflict markers Fix compilation errors Threshold 1 should compile immediately Debug deadlock issue with test_ractor Fix call threshold issue with tests * Revert exception threshold logic. Document option in yjid.md * (void) for 0 parameter functions in C99 * Rename iseq_entry_cold => cold_iseq_entry * Document --yjit-cold-threshold in ruby.c * Update doc/yjit/yjit.md Co-authored-by: Jean byroot Boussier <jean.boussier+github@shopify.com> * Shorten help string to appease test * Address bug found by Kokubun. Reorder logic. --------- Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Co-authored-by: Jean byroot Boussier <jean.boussier+github@shopify.com>
2023-09-18[DOC] Add production performance tips to yjit.md (#8472)Takashi Kokubun
Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
2023-08-23Change yjit stats list to be a unordered listRafael Mendonça França
Without using a list, this show as a single paragraph with all stats descriptions being in one single line Notes: Merged: https://github.com/ruby/ruby/pull/8268
2023-08-21Update yjit.md, document `--yjit-stats=quiet`Maxime Chevalier-Boisvert
2023-07-20YJIT: Rename exec_instruction to yjit_insns_count (#8102)Takashi Kokubun
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2023-07-20YJIT: Avoid undercounting retired_in_yjit (#8038)Takashi Kokubun
* YJIT: Count the number of failed instructions * Rename yjit_insns_count to exec_instructions instead * Hoist out the exec_instruction counter Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2023-06-28Repair broken linkBurdetteLamar
Notes: Merged: https://github.com/ruby/ruby/pull/7993
2023-05-22Add documentation for some stats counters, and generally about YJIT statsNoah Gibbs
Notes: Merged: https://github.com/ruby/ruby/pull/7840
2023-05-10readline or libedit is no longer required to build rubyHiroshi SHIBATA
2023-03-20Update yjit.mdMaxime Chevalier-Boisvert
Document `make yjit-smoke-test`
2023-03-06MJIT is no longer slower on RailsTakashi Kokubun
2023-01-31Update yjit.mdMaxime Chevalier-Boisvert
Update some out of date information and mention how to check that YJIT is enabled.
2023-01-31Update yjit.mdMaxime Chevalier-Boisvert
2023-01-17Update yjit.mdMaxime Chevalier-Boisvert
2023-01-09Update yjit.mdMaxime Chevalier-Boisvert
Add Alan Wu's keynote & Maxime's talk to the list of YJIT-related talks :)
2022-12-19Syntax-highlight scripts in yjit.md [ci skip]Takashi Kokubun
Specifically, I wanted to grey out comments in shell scripts. But I just specified a language for blocks without comments as well to avoid forgetting that in the future.
2022-12-07Update yjit.mdMaxime Chevalier-Boisvert
Update citation, fix outdated and inaccurate information.
2022-11-28Update yjit.md to mention `RUBY_YJIT_ENABLE`Maxime Chevalier-Boisvert
2022-11-22Update yjit.mdMaxime Chevalier-Boisvert
2022-11-21YJIT: Lower the required Rust version from 1.58.1 to 1.58.0 (#6780)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-11-13Update yjit.mdMaxime Chevalier-Boisvert
Remove disclaimer
2022-10-27Update docs wrt YJIT limitations and building YJIT (#6641)Maxime Chevalier-Boisvert
* Update docs wrt YJIT limitations and building YJIT * Update building_ruby.md Fix relative link Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-10-14Update yjit docs (#6548)Eileen M. Uchitelle
* The list of supported architectures was updated in https://github.com/ruby/ruby/commit/5ef048e5b1c3dd61adf782ace570bb0a1f9bb12f but the first paragraph wasn't updated. * `--yjit-trace-exits` was missing from the command-line options * Fixes some spacing issues * Updates call threshold default to 10, verified in the code that's correct. * Add code ticks around method names. * Fix namespace of stats example Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-09-19Stop recommending duplicated options [ci skip] (#6400)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-08-31It was a relative path [ci skip]Takashi Kokubun
2022-08-31Add a document about YJIT's Rust versionTakashi Kokubun
2022-08-29Update yjit.mdMaxime Chevalier-Boisvert
Add VMIL paper, update supported CPUs. Notes: Merged: https://github.com/ruby/ruby/pull/6289
2022-08-08Remove documentation about devTakashi Kokubun
dev is Shopify's internal tool that doesn't work if you use Intel Homebrew on M1 (or rbenv, btw). Now that we maintain this outside Shopify's repository, we should stop talking about it here.
2022-05-02[DOC] Some YJIT dependencies are no longer requiredAlan Wu
The `capstone` crate on crates.io does not need `libcapstone` on the system because it builds from [source]. `gdbm` is now a separate gem (thanks for extracting it!). [source]: https://github.com/capstone-rust/capstone-rs/blob/c31409905a9fc4581133de248fcd0a66b2c37e36/capstone-sys/build.rs#L143
2022-04-27Update yjit.mdMaxime Chevalier-Boisvert
Fix configure line in YJIT build instructions
2022-04-27Rust YJITAlan Wu
In December 2021, we opened an [issue] to solicit feedback regarding the porting of the YJIT codebase from C99 to Rust. There were some reservations, but this project was given the go ahead by Ruby core developers and Matz. Since then, we have successfully completed the port of YJIT to Rust. The new Rust version of YJIT has reached parity with the C version, in that it passes all the CRuby tests, is able to run all of the YJIT benchmarks, and performs similarly to the C version (because it works the same way and largely generates the same machine code). We've even incorporated some design improvements, such as a more fine-grained constant invalidation mechanism which we expect will make a big difference in Ruby on Rails applications. Because we want to be careful, YJIT is guarded behind a configure option: ```shell ./configure --enable-yjit # Build YJIT in release mode ./configure --enable-yjit=dev # Build YJIT in dev/debug mode ``` By default, YJIT does not get compiled and cargo/rustc is not required. If YJIT is built in dev mode, then `cargo` is used to fetch development dependencies, but when building in release, `cargo` is not required, only `rustc`. At the moment YJIT requires Rust 1.60.0 or newer. The YJIT command-line options remain mostly unchanged, and more details about the build process are documented in `doc/yjit/yjit.md`. The CI tests have been updated and do not take any more resources than before. The development history of the Rust port is available at the following commit for interested parties: https://github.com/Shopify/ruby/commit/1fd9573d8b4b65219f1c2407f30a0a60e537f8be Our hope is that Rust YJIT will be compiled and included as a part of system packages and compiled binaries of the Ruby 3.2 release. We do not anticipate any major problems as Rust is well supported on every platform which YJIT supports, but to make sure that this process works smoothly, we would like to reach out to those who take care of building systems packages before the 3.2 release is shipped and resolve any issues that may come up. [issue]: https://bugs.ruby-lang.org/issues/18481 Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Co-authored-by: Noah Gibbs <the.codefolio.guy@gmail.com> Co-authored-by: Kevin Newton <kddnewton@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/5826
2022-02-24Fix yjit readme link pointing to old shopify readme (#5596)Adrien S
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-02-02Fix a typo [ci skip]Kazuhiro NISHIYAMA
2022-01-11YJIT stats documentation additions and updates (#5427)Noah Gibbs
* YJIT documentation additions and updates * Update yjit.md Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2021-11-24update YJIT docs to reference RubyVM::YJIT instead of just YJITAdam Hess
[ci skip] Notes: Merged: https://github.com/ruby/ruby/pull/5171 Merged-By: XrXr
2021-11-18Add --yjit-no-type-prop so we can test YJIT without type propagation (#5135)Maxime Chevalier-Boisvert
* Add --yjit-no-type-prop so we can test YJIT without type propagation * Fix typo in command line option * Leave just two test workflows enable for YJIT Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2021-10-21Move the test fileNobuyoshi Nakada
2021-10-20Update yjit.mdMaxime Chevalier-Boisvert