We've disabled MJIT CI on GitHub Actions for a while. It's convenient
that fork repositories need to see failures or disable it.
We should remove unused CI by default instead of silently disabling it.
Since I saw --mjit-wait passed on my fork, I'd like to try running
--mjit-wait one.
It seems like dependabot supports updating the `# vX.Y.Z` comment.
The reason why I disabled this was that it failed to update this, but
maybe it was because it had `, checking sha`. Let me try it again with
that removed.
The previous one was the url of this notification action, but we want to
see a link to Cirrus CI.
This code follows https://cirrus-ci.org/guide/notifications/.
Also, head_branch was null only for pull requests from a fork, so we can
use it for branch-based filtering, which is good.
It looks like Cirrus doesn't natively support notifications and they
recomment to use GitHub Actions for it.
https://cirrus-ci.org/guide/notifications/
Because I don't know what the payload looks like, I just added a basic
payload and dumped GitHub context so that we could improve it later.
It's moved from k0kubun to ruby org.
Also, we don't need JavaScript eval to generate branch if we use
github.ref_name, so v3.0.0 is a version that doesn't use eval.
Co-Authored-By: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
because you have to manually update the version tag comment.
It feels unsafe to trust third party git tags when you need to pass
MATZBOT_GITHUB_TOKEN to it. Git commit sha alone isn't human-readable
and I'm reluctant to remove the comment either. It doesn't seem worth
the effort to review changes for every release of this action.
This reverts commit d152ac677c, "Make
CodeQL ignore syntax_suggest because of the performance problem".
Probably all instances seem to already have updated to 2.10.5 now.
Visual Studio 2019 GitHub Actions has been super unstable. Somehow nmake
test-spec triggers rebuilding the interpreter and fails.
usa suggested a possibility of test-all leaving something impacting
test-spec. I'd like to try this patch and see what happens.
* YJIT: Show --yjit-stats of railsbench on CI
* YJIT: Use --enable-yjit=dev to see ratio_in_yjit
* YJIT: Show master GitHub URL for quick comparison
* YJIT: Avoid making CI red by a yjit-bench failure
* Remove CODEOWNERS to switch to auto-request-review
* Random change to test reviews
* Revert "Random change to test reviews"
This reverts commit 814b10d062d82d953019ea4afadc3f8fcf638379.
because it doesn't seem to be working. It's a bit annoying that
synchronized doesn't work, but in many cases, opened and
ready_for_review should be enough. As a last resort, you could
close/reopen it.
Also, the token scope needs to be public_repo instead of repo:status.
We need to use pull_request_target instead of pull_request to use secrets.
pull_request_target seems to be executed from the default branch, so
pushing this to master to test this.
MinGW CI has been crashing too often. Now that we don't have slow test_mjit in MinGW, I'd like to see if not using parallel test workers fixes the problem.
This reverts commit bee5089d67.
Looking at https://github.com/ruby/ruby/runs/7564065637?check_suite_focus=true,
we concluded that the ruby process for test-all is stuck before exit
when this issue reproduces.
However, because of our limited bandwidth to support MinGW, we're not
investigating this, and therefore we need to keep skipping tests that
hang on this environment.
Now some entries need multiple variables for customization, and only
one environment variable per entry is not enough.
To solve it, dccfff943c has introduced overriding variables by `env`
key for each entries.
This commit uses `env` keys for the other environment variables too,
instead of appending to `$GITHUB_ENV`.
This commit is to skip a failure with annocheck 10.76 on the annocheck test
case on the CI. Previously The test worked with annocheck 10.73.
The issue was reported at <https://bugs.ruby-lang.org/issues/18061#note-24>.
> Hardened: ruby: MAYB: test: gaps because no notes found
> Hardened: ruby: info: For more information visit: https://sourceware.org/annobin/annobin.html/Test-gaps.html
It seems that the annocheck added the gaps test at 10.76. Maybe the upstream commit is below.
The annocheck is a part of the annobin project: https://sourceware.org/annobin/
```
$ git clone git://sourceware.org/git/annobin.git
$ git show 61184ae1180a134bfbbd125e9fe339baedd67c18
commit 61184ae1180a134bfbbd125e9fe339baedd67c18
Author: Nick Clifton <nickc@redhat.com>
Date: Mon Jun 13 16:56:46 2022 +0100
Annocheck: Add TEST_GAPS. Add MAYB for TEST_NOTES if DWARF info could not be found
...
```
We want to make it convenient for people to build YJIT and Rust version 1.58.1
or above is available on Ubuntu Jammy, Debian testing, and Fedora 36 through
the usual package manager on those systems. This saves the need to install
`rustup` for some people.
Our code is already 1.58.1 compatible so this commit simply tweaks CI to make
sure that we keep supporting that version. We still test against the latest Rust
version in `--enable-yjit=dev` builds through the Rust version available in
GitHub's CI image.
Rust versions older than 1.58.1 might build YJIT today, but we might make
incompatible changes in the future.
Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
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:
1fd9573d8b
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>
Previously, since the `optflags` environment variable was set to `-O1`
and `optflags` comes after the flags appended as `CC`, we were doing LTO
builds with `-O1`.
* [CI] resort to clang-14
Clang 15 + --std=c2x combination seems actively developed now.
Might better wait for them to mature
* also change default compiler
Maybe not the best idea for CI stability to use development versions of
Clang, but that does give us a preview of what's coming and gives us a
chance to make suggestions upstream.