summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-05-04[DOC] mention macros for public headersNobuyoshi Nakada
2022-05-03Remove _with_gc functions in darrayPeter Zhu
darray was used in YJIT which required the functions to not trigger GC. YJIT has now moved to Rust and does not use darray anymore, so we can remove the functions that don't trigger GC and only keep the ones that trigger GC. Notes: Merged: https://github.com/ruby/ruby/pull/5874
2022-05-02Fix bug identified by @noahgibbs. (#5876)Maxime Chevalier-Boisvert
Turned out to be a one-character fix :) Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-05-02YJIT: Reject USE_FLONUM=0 builds at build timeAlan Wu
YJIT can't support these builds so it's better to reject with a message than to crash at runtime. Notes: Merged: https://github.com/ruby/ruby/pull/5873
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-05-03[DOC] Fix links to doc pagesNobuyoshi Nakada
2022-05-03* 2022-05-03 [ci skip]git
2022-05-03[ruby/getoptlong] Enhanced RDoc for GetoptLong ↵Burdette Lamar
(https://github.com/ruby/getoptlong/pull/4) Detailed introductory material. https://github.com/ruby/getoptlong/commit/1544f2fb7b
2022-05-02YJIT: Remove redundant `extern crate` (#5869)Koichi ITO
Follow up https://github.com/ruby/ruby/commit/0514d81 Rust YJIT requires Rust 1.60.0 or later. So, `extern crate` looks unnecessary because it can use the following Rust 2018 edition feature: https://doc.rust-lang.org/stable/edition-guide/rust-2018/path-changes.html#no-more-extern-crate It passes the following tests. ```console % cd yjit % cargo test --features asm_comments,disasm (snip) test result: ok. 56 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-05-02Bump github/codeql-action from 1 to 2dependabot[bot]
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v1...v2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Notes: Merged: https://github.com/ruby/ruby/pull/5868
2022-05-02Fix a typo [ci skip]Kazuhiro NISHIYAMA
2022-05-02* 2022-05-02 [ci skip]git
2022-05-01Repair internal links (#5866)Burdette Lamar
* Repair internal links * Minor changes to format spec Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-30Document best-practices for writing hash methods (#5805)Chris Seaton
* Discussion is as per https://bugs.ruby-lang.org/issues/18611. Co-authored-by: Sam Bostock <sam.bostock@shopify.com> Notes: Merged-By: eregon <eregontp@gmail.com>
2022-04-29YJIT: Enable default rustc lints (warnings) (#5864)Alan Wu
`rustc` performs in depth dead code analysis and issues warning even for things like unused struct fields and unconstructed enum variants. This was annoying for us during the port but hopefully they are less of an issue now. This patch enables all the unused warnings we disabled and address all the warnings we previously ignored. Generally, the approach I've taken is to use `cfg!` instead of using the `cfg` attribute and to delete code where it makes sense. I've put `#[allow(unused)]` on things we intentionally keep around for printf style debugging and on items that are too annoying to keep warning-free in all build configs. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-04-29[DOC] Format specs (#5857)Burdette Lamar
This new document would eventually replace the format spec discussion at Kernel#sprintf. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-30* 2022-04-30 [ci skip]git
2022-04-29YJIT: Adopt Clippy suggestions we likeAlan Wu
This adopts most suggestions that rust-clippy is confident enough to auto apply. The manual changes mostly fix manual if-lets and take opportunities to use the `Default` trait on standard collections. Co-authored-by: Kevin Newton <kddnewton@gmail.com> Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> Notes: Merged: https://github.com/ruby/ruby/pull/5853
2022-04-29YJIT: Do not create `CodeBlock.asm_comments` if the `asm_comments` feature ↵Dmitry Dygalo
is disabled (#5863) Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-04-29[rubygems/rubygems] Generalize description to account for different push serversMatthias Viehweger
https://github.com/rubygems/rubygems/commit/cbf13edd3a
2022-04-29[rubygems/rubygems] Clarify description of owner-flagsMatthias Viehweger
https://github.com/rubygems/rubygems/commit/28864b1057
2022-04-29Prevent a "warning: `*' interpreted as argument prefix"Yusuke Endoh
2022-04-28YJIT: Handle spaces in build dir path using find(1) `-exec`Alan Wu
Previously, we relied on shell word splitting, which leads to passing the wrong arguments when there are white spaces in the path. Avoiding command substitution also makes this script more likely to work under Solaris 10, where `/bin/sh` is not POSIX compliant [1]. (Thanks you, `@znz` for fixing the syntax error in 4210ae2158b545beda908fb29e03d23994f262e3 though!) The hack from c466f270b891962518763ad299f907beac0ebf62 doesn't actually work so this commit reverts it. The shell still needs to parse through all of the code, maybe because make doesn't in fact send newlines to the shell. By the way, we also use the `-exec` option in the `ext/distclean` task. [1]: https://docs.oracle.com/cd/E26505_01/html/816-5165/sh-1.html Notes: Merged: https://github.com/ruby/ruby/pull/5860
2022-04-28Don't set LDFLAGS by defaultAaron Patterson
This fixes a bug where Ruby on macOS running on ARM would try to look in `/usr/local/lib` for things to link against, but the libraries in that directory are from the x86 installation of Homebrew [ruby-core:108424] Notes: Merged: https://github.com/ruby/ruby/pull/5855
2022-04-28YJIT: replace BLOCKID_NULL with Option<BlockId>, more idiomatic (#5858)Maxime Chevalier-Boisvert
* YJIT: replace BLOCKID_NULL with Option<BlockId>, more idiomatic * Update yjit/src/core.rs Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> * Update yjit/src/core.rs Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-04-29* 2022-04-29 [ci skip]git
2022-04-28Add missing write barriers to Array#replaceAlan Wu
Previously it made object references without using write barriers, creating GC inconsistencies. See: http://ci.rvm.jp/results/trunk-gc-asserts@phosphorus-docker/3925529 Notes: Merged: https://github.com/ruby/ruby/pull/5851
2022-04-28Skip test for cargo builderHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28Move testing_ruby_repo into test helperHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28Merge ↵Hiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/3f7d0352e84b29d4a2d4cd93b31e5ebdb5f79cc6 Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28[rubygems/rubygems] Original env is already set by common test setupDavid Rodríguez
https://github.com/rubygems/rubygems/commit/59449557dd Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28[rubygems/rubygems] Fix test errors when `cargo` not presentDavid Rodríguez
Currently our tests try to detect whether `cargo` is installed or not, and if not, set tests that need `cargo` as pending. However, when this happens that test `setup` method is completely skipped, meaning that the `teardown` method will blow up when trying to switch back to the original folder, since it was not set. This commit fixes that. https://github.com/rubygems/rubygems/commit/1e4c1e6492 Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28Merge rubygems master 1e4eda741d732ca1bd7031aef0a16c7348adf7a5Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28[rubygems/rubygems] All supported rubies have `File.realpath`David Rodríguez
https://github.com/rubygems/rubygems/commit/c60ed4878c Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28[rubygems/rubygems] Add missing `open3` requiresDavid Rodríguez
https://github.com/rubygems/rubygems/commit/06ad654120 Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28Merge RubyGems/Bundler masterHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/fe96fb6e2ac5a8b6df5e852470d11fa854301eca Notes: Merged: https://github.com/ruby/ruby/pull/5669
2022-04-28Fix typos [ci skip]Kazuhiro NISHIYAMA
2022-04-28[rubygems/rubygems] Fix missing required rubygems version when using old APIsDavid Rodríguez
A while ago, we fixed resolution when using old dependency endpoints to also consider metadata dependencies, by requesting the full gemspec from the marsahaled index, which includes this information as opposed to these old APIs. This has made resolution slower, but correct, but also introduced the issue that some old marshaled gemspecs don't include the `required_rubygems_version` field because they were created with a RubyGems version that predates its addition. Use a default value in this case. https://github.com/rubygems/rubygems/commit/5dc94afcc0 Co-authored-by: Ilya Dudarenko <i.dudarenko@tinkoff.ru>
2022-04-28Try to fix error on SolarisKazuhiro NISHIYAMA
https://rubyci.s3.amazonaws.com/solaris10-sunc/ruby-master/log/20220428T000004Z.fail.html.gz ``` linking static-library libruby-static.a /bin/sh: syntax error at line 8: `(' unexpected gmake: *** [Makefile:318: libruby-static.a] Error 2 exit 2 failed(make) ```
2022-04-27Work around shell syntax error on SolarisAlan Wu
The shell in Solaris 10 has trouble understanding the syntax I used in YJIT's library merging script. This commit reduces the code the shell needs to parse before exiting on non-YJIT builds to hopefully fix the error on Solaris. Notes: Merged: https://github.com/ruby/ruby/pull/5854
2022-04-27Update default gems list at cd2613b6a43bac87574dac17b8b9b8 [ci skip]git
2022-04-28[ruby/net-http] Bump version to 0.2.1.pre1Charles Oliver Nutter
https://github.com/ruby/net-http/commit/0017cc64c0
2022-04-27Update yjit.mdMaxime Chevalier-Boisvert
Fix configure line in YJIT build instructions
2022-04-28* 2022-04-28 [ci skip]git
2022-04-27YJIT: Remove unnecessary `extern crate` declarationAlan Wu
Thanks to suggestion from bjorn3 on GitHub. Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com> Notes: Merged: https://github.com/ruby/ruby/pull/5826
2022-04-27YJIT: Make add_comment() more conciseAlan Wu
Thanks to suggestions from Stranger6667 on GitHub. Co-authored-by: Dmitry Dygalo <dmitry@dygalo.dev> Notes: Merged: https://github.com/ruby/ruby/pull/5826
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-04-27[DOC] Enhanced RDoc for Kernel (#5847)Burdette Lamar
Treats #Integer; fixes an error in #String. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-04-27[DOC] Change URLs from git.ioKazuhiro NISHIYAMA
see https://github.blog/changelog/2022-04-25-git-io-deprecation/
2022-04-26Enhanced RDoc for File (#5849)Burdette Lamar
Treats: #path ::stat ::lstat #lstat ::directory? Also adds section "Example Files" that explains assumptions about example files. I'm using t.txt already, and I'm pretty sure I'll need t.dat (binary data). I don't know whether I'll need t.rus (Russian text). Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>