268 Commits

Author SHA1 Message Date
dependabot[bot]
00fdcb3ecd Bump actions/checkout from 6.0.1 to 6.0.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6.0.1...v6.0.2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-22 18:34:31 -08:00
dependabot[bot]
bf144d8c10 Bump actions/checkout from 6.0.0 to 6.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v6.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-02 18:31:11 -08:00
dependabot[bot]
3b09db3b35 Bump actions/checkout from 5.0.1 to 6.0.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.1 to 6.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v5.0.1...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-27 16:36:52 +09:00
Nobuyoshi Nakada
32a4545ee4
CI: Abandon CAPI check on macos-15
`hashFiles` is very unstable on macOS runners.
2025-11-23 21:46:51 +09:00
dependabot[bot]
b5d0aac900 Bump actions/checkout from 5.0.0 to 5.0.1
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v5...v5.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-17 18:34:37 -08:00
Takashi Kokubun
72055043fc macos.yml: macOS 13 hosted runner image is closing down
https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/
2025-10-02 10:04:43 -07:00
Nobuyoshi Nakada
c5feae9621
Remove stale line [ci skip] 2025-09-13 22:38:38 +09:00
Nobuyoshi Nakada
ca70f442b8
Matrix for extra checks 2025-09-12 12:08:40 +09:00
Nobuyoshi Nakada
aa173bcef8
Run CAPI check separately 2025-09-11 21:20:58 +09:00
Nobuyoshi Nakada
7ab8e16b2b
Check CAPI ext binary compatibility 2025-09-11 21:20:57 +09:00
dependabot[bot]
89bce81516 Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 13:01:00 +09:00
Takashi Kokubun
dba0f72592 Extend timeout-minutes for macOS --repeat-count=2
https://github.com/ruby/ruby/actions/runs/17308244022/job/49136485007

I'm not sure if it's stuck forever at the end or happens to take that
much time around the end of it, but let me just try this first.

If it doesn't work, something's wrong with --repeat-count=2 on test-all.
2025-08-29 09:58:28 -07:00
Takashi Kokubun
70b4b6fea0
Do not skip CI when it mentions "document" (#14232) 2025-08-14 15:12:46 -07:00
Hiroshi SHIBATA
cf3acead9d Use https://github.com/ruby/power_assert/pull/58 2025-06-27 11:14:50 +09:00
Hiroshi SHIBATA
7d01905ef1 typeprof, rbs and repl_type_completor are working with HEAD now 2025-06-26 17:37:04 +09:00
Jeremy Evans
3a9c091cf3 Simplify Set#inspect output
As Set is now a core collection class, it should have special inspect
output.  Ideally, inspect output should be suitable to eval, similar
to array and hash (assuming the elements are also suitable to eval):

  set = Set[1, 2, 3]
  eval(set.inspect) == set # should be true

The simplest way to do this is to use the Set[] syntax.

This deliberately does not use any subclass name in the output,
similar to array and hash. It is more important that users know they
are dealing with a set than which subclass:

  Class.new(Set)[]
  # this does: Set[]
  # not: #<Class:0x00000c21c78699e0>[]

This inspect change breaks the power_assert bundled gem tests, so
add power_assert to TEST_BUNDLED_GEMS_ALLOW_FAILURES in the workflows.

Implements [Feature #21389]
2025-06-25 09:21:07 +09:00
Nobuyoshi Nakada
aaa956e8f1
Now irb is a bundled gem and needs rubygems 2025-06-18 20:26:02 +09:00
Nobuyoshi Nakada
e66ac2a743
CI: Fix redirection errors 2025-06-06 09:37:19 +09:00
Nobuyoshi Nakada
5da3dc88d6
CI: Timeout launchable setup in 3min 2025-06-06 08:00:51 +09:00
Nobuyoshi Nakada
296a0d0b7c
CI: Create report files only when Launchable setup succeeded 2025-06-06 08:00:51 +09:00
Jeremy Evans
e4f85bfc31 Implement Set as a core class
Set has been an autoloaded standard library since Ruby 3.2.
The standard library Set is less efficient than it could be, as it
uses Hash for storage, which stores unnecessary values for each key.

Implementation details:

* Core Set uses a modified version of `st_table`, named `set_table`.
  than `s/st_/set_/`, the main difference is that the stored records
  do not have values, making them 1/3 smaller. `st_table_entry` stores
  `hash`, `key`, and `record` (value), while `set_table_entry` only
  stores `hash` and `key`.  This results in large sets using ~33% less
  memory compared to stdlib Set.  For small sets, core Set uses 12% more
  memory (160 byte object slot and 64 malloc bytes, while stdlib set
  uses 40 for Set and 160 for Hash).  More memory is used because
  the set_table is embedded and 72 bytes in the object slot are
  currently wasted. Hopefully we can make this more efficient and have
  it stored in an 80 byte object slot in the future.

* All methods are implemented as cfuncs, except the pretty_print
  methods, which were moved to `lib/pp.rb` (which is where the
  pretty_print methods for other core classes are defined).  As is
  typical for core classes, internal calls call C functions and
  not Ruby methods.  For example, to check if something is a Set,
  `rb_obj_is_kind_of` is used, instead of calling `is_a?(Set)` on the
  related object.

* Almost all methods use the same algorithm that the pure-Ruby
  implementation used.  The exception is when calling `Set#divide` with a
  block with 2-arity.  The pure-Ruby method used tsort to implement this.
  I developed an algorithm that only allocates a single intermediate
  hash and does not need tsort.

* The `flatten_merge` protected method is no longer necessary, so it
  is not implemented (it could be).

* Similar to Hash/Array, subclasses of Set are no longer reflected in
  `inspect` output.

* RDoc from stdlib Set was moved to core Set, with minor updates.

This includes a comprehensive benchmark suite for all public Set
methods.  As you would expect, the native version is faster in the
vast majority of cases, and multiple times faster in many cases.
There are a few cases where it is significantly slower:

* Set.new with no arguments (~1.6x)
* Set#compare_by_identity for small sets (~1.3x)
* Set#clone for small sets (~1.5x)
* Set#dup for small sets (~1.7x)

These are slower as Set does not currently use the AR table
optimization that Hash does, so a new set_table is initialized for
each call.  I'm not sure it's worth the complexity to have an AR
table-like optimization for small sets (for hashes it makes sense,
as small hashes are used everywhere in Ruby).

The rbs and repl_type_completor bundled gems will need updates to
support core Set.  The pull request marks them as allowed failures.

This passes all set tests with no changes.  The following specs
needed modification:

* Modifying frozen set error message (changed for the better)
* `Set#divide` when passed a 2-arity block no longer yields the same
  object as both the first and second argument (this seems like an issue
  with the previous implementation).
* Set-like objects that override `is_a?` such that `is_a?(Set)` return
  `true` are no longer treated as Set instances.
* `Set.allocate.hash` is no longer the same as `nil.hash`
* `Set#join` no longer calls `Set#to_a` (it calls the underlying C
   function).
* `Set#flatten_merge` protected method is not implemented.

Previously, `set.rb` added a `SortedSet` autoload, which loads
`set/sorted_set.rb`.  This replaces the `Set` autoload in `prelude.rb`
with a `SortedSet` autoload, but I recommend removing it and
`set/sorted_set.rb`.

This moves `test/set/test_set.rb` to `test/ruby/test_set.rb`,
reflecting that switch to a core class.  This does not move the spec
files, as I'm not sure how they should be handled.

Internally, this uses the st_* types and functions as much as
possible, and only adds set_* types and functions as needed.
The underlying set_table implementation is stored in st.c, but
there is no public C-API for it, nor is there one planned, in
order to keep the ability to change the internals going forward.

For internal uses of st_table with Qtrue values, those can
probably be replaced with set_table.  To do that, include
internal/set_table.h.  To handle symbol visibility (rb_ prefix),
internal/set_table.h uses the same macro approach that
include/ruby/st.h uses.

The Set class (rb_cSet) and all methods are defined in set.c.
There isn't currently a C-API for the Set class, though C-API
functions can be added as needed going forward.

Implements [Feature #21216]

Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
Co-authored-by: Oliver Nutter <mrnoname1000@riseup.net>
2025-04-26 10:31:11 +09:00
Hiroshi SHIBATA
49c29cff47 Bump up to the latest versions of actions 2025-04-16 11:40:11 +09:00
Naoto Ono
56b89d31c7
Launchable: Fix CI scripts by adding backslashes (#12974)
The following command doesn't work correctly since a backslash doesn't exist after `exec`. This PR fixes it.

```
if [ -n "${LAUNCHABLE_ORGANIZATION}" ]; then
  exec
  > >(tee launchable_stdout.log) \
  2> >(tee launchable_stderr.log)
fi
```
2025-03-24 11:45:24 +00:00
Naoto Ono
c939d0c85d
Launchable: Send stdout and stderr (#12785)
Currently, the Launchable team is developing a new feature to attach any logs. Attached log can be anything, such as system logs or stdout. Users can find these logs using any text search. Please note that this feature is a work in progress, so we can't use it yet.

I'm going to attach stdout and stderr as attached logs because they will be useful for finding interpreter bugs. When running tests, we sometimes see interpreter itself crash, and the stack is output to stderr. When debugging the cause of the issue, this feature is useful.
2025-03-06 12:39:39 +09:00
Nobuyoshi Nakada
f7ce62cc5b
Add hello 2024-12-22 23:14:03 +09:00
Hiroshi SHIBATA
81c24b3c29 We need to specify --with-opt-dir for jemalloc installation path 2024-12-06 10:31:16 +09:00
Hiroshi SHIBATA
0b5d6c80ba Added -with-gmp build to macOS 2024-12-06 10:31:16 +09:00
Hiroshi SHIBATA
bc214d10b8 Added jemalloc build to GitHub Actions 2024-12-06 10:31:16 +09:00
Hiroshi SHIBATA
e0611ebd9a Try macos-15 build
https://github.com/actions/runner-images/issues/10686
2024-11-05 12:15:13 +09:00
Takashi Kokubun
d6d2c24715 macos-12 is deprecated and fails on Mondays
https://github.com/actions/runner-images/issues/10721
2024-11-04 14:51:56 -08:00
Nobuyoshi Nakada
681313872f CI: Test with gcc-14 on macOS 2024-10-23 23:02:15 +09:00
Nobuyoshi Nakada
ef7d7ee723
CI: Use full name of the label 'Documentation'
Since `github.event.pull_request.labels.*.name` is an object filter,
the item to be searched in needs to be the same whole string, not a
partial string.
2024-10-07 22:00:31 +09:00
Nobuyoshi Nakada
52e40aeab6
Bump actions/checkout 2024-09-29 21:38:14 +09:00
Kevin Newton
ea2af5782d Switch the default parser from parse.y to Prism
This commit switches the default parser to Prism. There are a
couple of additional changes related to this that are a part of
this as well to make this happen.

* Switch the default parser in parse.h
* Remove the Prism-specific workflow and add a parse.y-specific
  workflow to CI so that it continues to be tested
* Update a few test exclusions since Prism has the correct
  behavior but parse.y doesn't per
  https://bugs.ruby-lang.org/issues/20504.
* Skips a couple of tests on RBS which are failing because they
  are using RubyVM::AbstractSyntaxTree.of.

Fixes [Feature #20564]
2024-09-12 13:43:04 -04:00
Nobuyoshi Nakada
d2179eeaac
Try to run goruby 2024-09-08 23:16:46 +09:00
Alan Wu
eef2121cf3 [macOS CI] Delete big SDKs to avoid exhausting disk space
Lately we've seen frequent failures on macOS GitHub Action runs due to
disk space issues. Poking with du(1) revealed that
/Library/Developer/CoreSimulator/Caches/dyld was growing to be multiple
gigbytes.

Deleting unused stuff is a known workaround to space issues.

https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
2024-08-30 16:36:28 -04:00
Hiroshi SHIBATA
d731adb755
Strictly checking pull-request author 2024-08-22 16:38:54 +09:00
Yusuke Endoh
22ad6b249b Extend RUBY_TEST_TIMEOUT_SCALE on macos-14 and --repeat-count=2 2024-07-25 14:43:03 +09:00
Hiroshi SHIBATA
3b48a5a11c Use macos-14 instead of macos-arm-oss
Unfortunately, we can't use macos-arm-oss with enterprise account
2024-07-05 12:10:23 +09:00
Takashi Kokubun
01f0dcd336 Fix missing macOS version in Slack notifications
matrix.os is not set for some jobs.
2024-06-28 10:38:26 -04:00
Yusuke Endoh
fbe56b1c17 Set RUBY_TEST_TIMEOUT_SCALE=3 for --repeat-count=2 test
With --repeat-count=2, timing-related test seems to fail frequently.
I'm not sure of the cause, but I want to reduce the errors by setting
RUBY_TEST_TIMEOUT_SCALE.
2024-06-20 12:52:09 +09:00
dependabot[bot]
11bfa975f9 Bump actions/checkout from 4.1.6 to 4.1.7
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](a5ac7e51b4...692973e3d9)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-12 20:15:51 -07:00
Yusuke Endoh
547233fb6e Stop core upload on macOS
It was too big
2024-06-07 21:23:34 +09:00
Yusuke Endoh
1c09b013b9 Upload only from ruby/ruby 2024-06-07 20:15:37 +09:00
Yusuke Endoh
9ee6b944bf Fix the command-line arguments for tar compress
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
2024-06-07 20:15:37 +09:00
Yusuke Endoh
37e2063b81 Set ulimit -c unlimited for make test-all in macOS 2024-06-07 20:15:37 +09:00
Yusuke Endoh
4fee1019f6 Try to upload core file on macos GitHub Actions
A core dump occurred, but failed to capture the core file.
https://app.launchableinc.com/organizations/ruby/workspaces/ruby/data/test-sessions/2935062?tab=retried-tests

Looks like a core file was not created. I am not unsure why, so make
sure that the /cores directory is writable and try `ulimit` command.
2024-05-27 13:40:19 +09:00
Yusuke Endoh
1ba93c2c4d Upload cores to AWS S3 (if any) 2024-05-21 00:04:41 +09:00
Yusuke Endoh
f1bbcc8126 Make sure that kern.coredump=1 2024-05-21 00:04:41 +09:00
Nobuyoshi Nakada
14da90f262 --with-gmp-dir option is for ruby itself, not extensions 2024-05-20 13:54:08 +09:00