Граф коммитов

2193 Коммитов

Автор SHA1 Сообщение Дата
Koichi Sasada be1bbd5b7d M:N thread scheduler for Ractors
This patch introduce M:N thread scheduler for Ractor system.

In general, M:N thread scheduler employs N native threads (OS threads)
to manage M user-level threads (Ruby threads in this case).
On the Ruby interpreter, 1 native thread is provided for 1 Ractor
and all Ruby threads are managed by the native thread.

From Ruby 1.9, the interpreter uses 1:1 thread scheduler which means
1 Ruby thread has 1 native thread. M:N scheduler change this strategy.

Because of compatibility issue (and stableness issue of the implementation)
main Ractor doesn't use M:N scheduler on default. On the other words,
threads on the main Ractor will be managed with 1:1 thread scheduler.

There are additional settings by environment variables:

`RUBY_MN_THREADS=1` enables M:N thread scheduler on the main ractor.
Note that non-main ractors use the M:N scheduler without this
configuration. With this configuration, single ractor applications
run threads on M:1 thread scheduler (green threads, user-level threads).

`RUBY_MAX_CPU=n` specifies maximum number of native threads for
M:N scheduler (default: 8).

This patch will be reverted soon if non-easy issues are found.

[Bug #19842]
2023-10-12 14:47:01 +09:00
Ellen Marie Dash 28a6c4a1ad [rubygems/rubygems] Update incorrect comments.
https://github.com/rubygems/rubygems/commit/6b21f593f3
2023-10-11 19:07:28 +00:00
Ellen Marie Dash c83f8ad867 [rubygems/rubygems] Simplify logic for Gem::PathSupport#home, and make GEM_HOME always overide it.
https://github.com/rubygems/rubygems/commit/64273fd7e3
2023-10-11 19:07:28 +00:00
Ellen Marie Dash ee9cb86bb4 [rubygems/rubygems] Split out Gem::PathSupport#default_home_dir to fix "bundle doctor" specs.
https://github.com/rubygems/rubygems/commit/d7f3f901f1
2023-10-11 19:07:27 +00:00
Martin Emde b9a6fca67d [rubygems/rubygems] Don't delete the release version from pre-release string more than once
https://github.com/rubygems/rubygems/commit/6485adda54
2023-10-11 17:02:25 +00:00
Martin Emde c3fc70cc93 [rubygems/rubygems] Exempt default gem 'etc' in setup tests for rubies before 3.2 on windows
https://github.com/rubygems/rubygems/commit/834ae8a29a
2023-10-09 20:15:47 +00:00
Jacopo f44cee9048 [rubygems/rubygems] Avoid duplicates -rbundler/setup in RUBYOPT with Ruby preview
When using a Ruby preview the require path of `bundler/setup` is
similar to `-r/opt/ruby3.3.0-preview2/lib/ruby/3.3.0+0/bundler/setup`.
The special character `+` in the string makes the Regexp fail,
leading to multiple addition of the same require statement each time
`set_rubyopt` is called (e.g. server reloading).
Escaping the characters in the string esure a correct match with all
the different Ruby versions.

https://github.com/rubygems/rubygems/commit/dd43dfa709
2023-10-09 11:54:10 +00:00
Nobuyoshi Nakada d3fd4a6d32
BigDecimal#to_s has not changed for fraction part
The test for integer part was separated at dc54574ade.
2023-10-04 10:25:42 +09:00
Daniel Colson accda74cbe [rubygems/rubygems] Prevent gem activation in standalone mode
As discussed in https://github.com/rubygems/rubygems/issues/6273#issuecomment-1449176658

The `gem` method behaves awkwardly in standalone mode. Assuming bundler
isn't loaded at all, a call to gem might activate a gem that is not part
of the bundle (because it's the gem method defined in
lib/rubygems/core_ext/kernel_gem.rb and not
lib/bundler/rubygems_integration.rb). And when running with
`--disable-gems`, the gem method won't be defined at all so we'll get a
NoMethodError.

Calls to `gem` can appear in dependencies outside an application's
control. To work around this at GitHub we defined our own `Kernel#gem`
that no-ops.

I agree with https://github.com/rubygems/rubygems/issues/6273#issuecomment-1440755882

> people using standalone mode don't want to activate gems like Kernel.gem

This commit redefines `Kernel#gem` in the standalone script to no-op.

https://github.com/rubygems/rubygems/commit/bea17b55f1
2023-10-03 17:16:19 +00:00
David Rodriguez ed0661e618 [rubygems/rubygems] Don't re-resolve with prereleases if unlocked gem has no prereleases
https://github.com/rubygems/rubygems/commit/d76dc70d90
2023-10-03 09:42:31 +00:00
David Rodriguez b73ef92998 [rubygems/rubygems] Fix typo
https://github.com/rubygems/rubygems/commit/64e7a2656a
2023-10-03 09:42:31 +00:00
Peter Boling 9ffd659d47
[rubygems/rubygems] 🐛 Specification of branch or ref with tag is ambiguous
- Specs for GitProxy were incorrect and insufficient
- Specs are now correct and less insufficient

https://github.com/rubygems/rubygems/commit/63d0a8cfd0
2023-10-03 16:13:18 +09:00
Peter Boling 16a97c7bbb
[rubygems/rubygems] 🚨 Rubocop Linting
https://github.com/rubygems/rubygems/commit/2851e051c3
2023-10-03 16:13:18 +09:00
Nobuyoshi Nakada 457971f4e2
[DOC] State the precision of `Process.times` as platform-defined
Remove the bad example that can lead to misunderstanding as if this
precision is defined in Ruby.
2023-10-03 14:42:47 +09:00
Nobuyoshi Nakada 8be9138de2
Check by integer modulo instead of float string 2023-10-03 14:27:51 +09:00
Harshal Bhakta f208f78bdf [rubygems/rubygems] Support Ruby's preview version format (Ex: 3.3.0-preview2) in Gemfile
https://github.com/rubygems/rubygems/commit/4c1a0511b6
2023-10-02 02:19:43 +00:00
Graham Marlow f3aea74c3d [rubygems/rubygems] Include gemspec in ExtensionTask for native gem tasks
https://github.com/rubygems/rubygems/commit/042cfb7007
2023-10-02 01:34:01 +00:00
Nobuyoshi Nakada 94e79e4c2d
Fix failures when all network interfaces are down 2023-09-30 19:03:04 +09:00
David Rodriguez a812f1fed0 [rubygems/rubygems] Reword a couple of error messages
When a path does not make a lot of sense.

https://github.com/rubygems/rubygems/commit/d173c79e9a
2023-09-27 05:20:57 +00:00
krororo fbee93fc19 [rubygems/rubygems] Fix bundle install when older revisions of git source
https://github.com/rubygems/rubygems/commit/a30712c0fc
2023-09-27 05:18:10 +00:00
David Rodriguez 57c3e45ee8 [rubygems/rubygems] Fix `bundle lock --minor --update <dep>` edge case
When the latest allowed minor of `dep` adds a new dependency, that new
dependency would be incorrectly resolved to the latest minor of the
first major version.

https://github.com/rubygems/rubygems/commit/fd50c9d4f3
2023-09-27 03:29:37 +00:00
Samuel Giddins e9ed0b3068 [rubygems/rubygems] Stop bundler eagerly loading all specs with exts
We were setting the wrong `extension_dir` for git specs stubs

Additionally, the call to `self.extension_dir` was loading the
remote spec, which was avoidable since the stub had an extension dir
(and in fact its #gem_build_complete_path does exactly what we want
anyway)

Finally, now set the base_dir when loading the remote_spec from a
stub specification, since the git source sets the base dir for stubs
based on where the spec _will_ be installed to, and we want to preserve
that so the base_dir for the loaded spec & the stub are the same

https://github.com/rubygems/rubygems/commit/a94acb465b
2023-09-21 18:28:54 +00:00
Samuel Giddins e52f9bd41e [rubygems/rubygems] Bundler error handling
https://github.com/rubygems/rubygems/commit/63b422b71a
2023-09-20 02:03:02 +00:00
Samuel Giddins 7c6b500d8d [rubygems/rubygems] Fix bundler specs using safe_load
https://github.com/rubygems/rubygems/commit/ccb1bb5d3a
2023-09-20 02:03:00 +00:00
Martin Emde 66ffa15ce0 [rubygems/rubygems] Gemfile ruby file: covers more version formats
Increase test coverage and be explicit about what is and is not supported.

https://github.com/rubygems/rubygems/commit/a096397a00
2023-09-14 19:43:21 +00:00
Alan Wu 11c32e33eb Adjust CGI spec to pass when ran in isolation
It failed with `NameError` because `Html3` is defined in the file that
`CGI::HtmlExtension` autoloads.
2023-09-12 16:33:18 -04:00
Martin Emde d43765c3a9 [rubygems/rubygems] Unify LockfileParser loading of SPECS section
Ensure unrecognized SPECS types are ignored

https://github.com/rubygems/rubygems/commit/5b33e91075
2023-09-12 19:42:46 +00:00
Alan Wu 39ee3e22bd Make Kernel#lambda raise when given non-literal block
Previously, Kernel#lambda returned a non-lambda proc when given a
non-literal block and issued a warning under the `:deprecated` category.
With this change, Kernel#lambda will always return a lambda proc, if it
returns without raising.

Due to interactions with block passing optimizations, we previously had
two separate code paths for detecting whether Kernel#lambda got a
literal block. This change allows us to remove one path, the hack done
with rb_control_frame_t::block_code introduced in 85a337f for supporting
situations where Kernel#lambda returned a non-lambda proc.

[Feature #19777]

Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2023-09-12 11:25:07 -04:00
Benoit Daloze 0b5c61494e Update to ruby/spec@96d1072 2023-09-04 16:07:46 +02:00
Benoit Daloze 3504f928df Update to ruby/mspec@55d1a62 2023-09-04 16:07:44 +02:00
Hiroshi SHIBATA 2efd59e2eb [rubygems/rubygems] Use assertion message strictly
https://github.com/rubygems/rubygems/commit/98da5b9826
2023-09-01 07:04:43 +00:00
Jean Boussier bcc905100f BasicSocket#recv* return `nil` rather than an empty packet
[Bug #19012]

man recvmsg(2) states:

> Return Value
> These calls return the number of bytes received, or -1 if an error occurred.
> The return value will be 0 when the peer has performed an orderly shutdown.

Not too sure how one is supposed to make the difference between a packet of
size 0 and a closed connection.
2023-08-30 10:07:18 +02:00
Samuel Giddins 7a5df9d0ed [rubygems/rubygems] Fix bundle update --redownload
It now does the redownloading/installing just like bundle install --redownload

https://github.com/rubygems/rubygems/commit/3b058e5eca
2023-08-29 19:31:36 +00:00
Imir Kiyamov 23eb13d49d [rubygems/rubygems] Fixed malformed lockfile version on installing
https://github.com/rubygems/rubygems/commit/c969a192bf
2023-08-28 07:41:51 +00:00
David Rodríguez 80f35d96ae [rubygems/rubygems] Don't check for circular deps on full index sources
https://github.com/rubygems/rubygems/commit/d275cdccb1
2023-08-28 11:15:34 +09:00
David Rodríguez 279dcfab7a [rubygems/rubygems] Fix standalone install crashing when using legacy multi remote gemfiles
If a legacy multi remote Gemfile depends transitively on a default gem,
then in standalone mode we'd fail to fetch the proper version from the
source that includes it, since we were adding it to `specs` (instead of
`remote_specs`), which was already including the default version of the
gem, and thus preventing the remote version from "overwriting that" and
being added to the index. We should add it to the `remote_specs` index
directly instead.

https://github.com/rubygems/rubygems/commit/05f4f9dfc0
2023-08-28 11:15:33 +09:00
Martin Emde 7bf5f78028 [rubygems/rubygems] Refactor Fetcher#api_fetcher? and fetcher loading logic
https://github.com/rubygems/rubygems/commit/f664d60114
2023-08-28 11:15:32 +09:00
Nobuyoshi Nakada b054c2fe06 [Bug #19784] Fix behaviors against prefix with broken encoding
- String#start_with?
- String#delete_prefix
- String#delete_prefix!
2023-08-26 08:58:02 +09:00
David Rodríguez 023b8ddd22
[rubygems/rubygems] Don't use full indexes unnecessarily on legacy Gemfiles
On legacy Gemfiles with multiple remote sources, where all of them
support the compact index API, we were still falling back to full
indexes.

Fixing this also allows to simplifying the code.

https://github.com/rubygems/rubygems/commit/b1357c8e72
2023-08-25 18:34:47 +09:00
Samuel Williams d4c720a91b
Fix support for dynamic keys. (#8273)
* Skip RBS test.
2023-08-24 15:19:33 +12:00
Takashi Kokubun d7f1ea7155 Quarantine a very flaky spec
https://github.com/ruby/ruby/actions/runs/5956398507/job/16157091112

This has been extremely flaky on macOS GitHub Actions.
Benoit suggested to quarantine it if it's too problematic (it is) and
there's no reasonable fix in a short time (it already took too long).
So this commit follows the suggestion.

We should remove revert this once rb_cloexec_open() is fixed.
2023-08-23 14:32:26 -07:00
Gaurav Khanna b9ef819116 [rubygems/rubygems] Support `ruby file: ".tool-versions"` in Gemfile
(https://github.com/rubygems/rubygems/pull/6898)

Supports .tool-versions (ASDF) by checking for a line starting with "ruby"
before falling back to reading the entire file, as in .ruby-version.

https://github.com/rubygems/rubygems/commit/6c0a3e793a
2023-08-21 20:14:35 +00:00
Ngan Pham 3d7a030112 [rubygems/rubygems] Resolve ruby version file relative to bundle root
This is a follow up to https://github.com/rubygems/rubygems/issues/6742.
This change makes it so that the version file is resolved relative to
the Bundle root instead of the working directory.

Why is this useful?

If you run a commnad (eg `rails`) from the `app/` directory, your bundle
would fail to load.

https://github.com/rubygems/rubygems/commit/6d47ee98b9
2023-08-18 19:14:14 +00:00
Ngan Pham 75a4767525 [rubygems/rubygems] Add `file` option to `ruby` method in Gemfile
https://github.com/rubygems/rubygems/commit/fb9354b7bf
2023-08-17 16:07:54 +00:00
David Rodríguez fe240b672b
[rubygems/rubygems] Show better error when PAT can't authenticate to a private server
Before:

```
Fetching gem metadata from https://rubygems.org/........
Fetching source index from https://rubygems.pkg.github.com/my-org/

Bad username or password for https://x-access-token@rubygems.pkg.github.com/my-org/.
Please double-check your credentials and correct them.
```

After:

```
Fetching gem metadata from https://rubygems.org/........
Fetching source index from https://rubygems.pkg.github.com/my-org/

Access token could not be authenticated for https://x-access-token@rubygems.pkg.github.com/my-org/.
Make sure it's valid and has the necessary scopes configured.
```

https://github.com/rubygems/rubygems/commit/2ae69c964a
2023-08-16 15:03:38 +09:00
David Rodríguez e678affe70
[rubygems/rubygems] Bad auth should not fallback either
https://github.com/rubygems/rubygems/commit/ba3ea27869
2023-08-16 15:03:38 +09:00
David Rodríguez c076ac8a5f
[rubygems/rubygems] Use better status for authentication failures
https://github.com/rubygems/rubygems/commit/ffa395411f
2023-08-16 15:03:38 +09:00
David Rodríguez 2e04336b67
[rubygems/rubygems] Fix git source conservativeness
https://github.com/rubygems/rubygems/commit/9a0e0dfd5b
2023-08-16 15:03:38 +09:00
Nobuyoshi Nakada 6ebde04202
[DOC] Update to use `SPECOPTS` instead of `MSPECOPT` 2023-08-12 12:33:05 +09:00
Nobuyoshi Nakada 2c9fbc5100
Add dotted counts 2023-08-12 11:19:10 +09:00