`rb_thread_call_without_gvl2` is used to wait for the results of name resolution and connection attempts.
When there is only one address family to resolve, the necessary resources were not being passed to the UBF.
With this change, the handling of resources has been revised and organized to work consistently, whether there are two address families to resolve or only one.
even if a system call error happens after the name resolution failure in the child thread.
pipe and write(2) are used to notify the main thread of the name resolution results from the child thread.
After name resolution is completed in the child thread, if the call to write(2) fails, the main thread retrieves the resolved addresses.
However, when name resolution failed, the corresponding error was not being saved in `last_error`.
With this change, name resolution failures will now be saved in last_error even if the write(2) call in the child thread fails.
Allow requests to be signed using Ed25519 private keys by passing a nil digest.
This is similar to commit b0fc100091 when signing certs.
Calling PKey#public_key is deprecated and does not work for Ed25519. The same
can be accomplished by passing the private key.
d96090320d
test_pkey wasn't checking for libressl as is done elsewhere.
Note the libressl version check is different when testing pkey, because
PKey#sign relies on EVP_PKey_sign, whereas signing an X509 cert/request/crl
relies on ASN1_item_sign.
f1db5c88a2
This commit adds extconf.rb for both the default GC and and MMTk to build
the external GC. This allows common.mk to not need to contain any
implementation-specific build configuration.
db6a29b4a9
This commit implements the mark-sweep algorithm using MMTk and allows
customizing the plan using MMTK_PLAN.
6fea5e5ffc
Co-Authored-By: Matt Valentine-House <matt@eightbitraptor.com>
The $0 value is used in many CLI libraries to determine the name of the
application, when displaying help and error messages.
Without setting this value, it defaults to `gem` which can be confusing.
Before:
```
$ gem exec kamal help
Commands:
gem accessory # Manage accessories (db/redis/search)
gem app # Manage application
gem audit # Show audit log from servers
gem build # Build application image
gem config # Show combined config (including secrets!)
gem deploy # Deploy app to servers
gem details # Show details about all containers
gem docs [SECTION] # Show Kamal configuration documentation
gem help [COMMAND] # Describe available commands or one specific command
gem init # Create config stub in config/deploy.yml and secrets stub in .kamal
gem lock # Manage the deploy lock
gem proxy # Manage kamal-proxy
gem prune # Prune old application images and containers
gem redeploy # Deploy app to servers without bootstrapping servers, starting kamal-proxy, pruning, and registry login
gem registry # Login and -out of the image registry
gem remove # Remove kamal-proxy, app, accessories, and registry session from servers
gem rollback [VERSION] # Rollback app to VERSION
gem secrets # Helpers for extracting secrets
gem server # Bootstrap servers with curl and Docker
gem setup # Setup all accessories, push the env, and deploy app to servers
gem upgrade # Upgrade from Kamal 1.x to 2.0
gem version # Show Kamal version
```
After:
```
$ gem exec kamal help
Commands:
kamal accessory # Manage accessories (db/redis/search)
kamal app # Manage application
kamal audit # Show audit log from servers
kamal build # Build application image
kamal config # Show combined config (including secrets!)
kamal deploy # Deploy app to servers
kamal details # Show details about all containers
kamal docs [SECTION] # Show Kamal configuration documentation
kamal help [COMMAND] # Describe available commands or one specific command
kamal init # Create config stub in config/deploy.yml and secrets stub in .kamal
kamal lock # Manage the deploy lock
kamal proxy # Manage kamal-proxy
kamal prune # Prune old application images and containers
kamal redeploy # Deploy app to servers without bootstrapping servers, starting kamal-proxy, pruning, and registry login
kamal registry # Login and -out of the image registry
kamal remove # Remove kamal-proxy, app, accessories, and registry session from servers
kamal rollback [VERSION] # Rollback app to VERSION
kamal secrets # Helpers for extracting secrets
kamal server # Bootstrap servers with curl and Docker
kamal setup # Setup all accessories, push the env, and deploy app to servers
kamal upgrade # Upgrade from Kamal 1.x to 2.0
kamal version # Show Kamal version
```
4fd060b96d
Use PR_SET_VMA_ANON_NAME to set human-readable names for anonymous
virtual memory areas mapped by `mmap()` when compiled and run on Linux
5.17 or higher. This makes it convenient for developers to debug mmap.
This fixes a failed assertion reported to SimpleCov
https://github.com/simplecov-ruby/simplecov/issues/1113
This can be repro'd as follows:
1. Create a file `test.rb` containing the following code
```
@foo&.(@bar)
```
2. require it with branch coverage enabled
```
ruby -rcoverage -e "Coverage.start(branches: true); require_relative 'test.rb'"
```
The assertion is failing because the Prism compiler is incorrectly
detecting the start and end cursor position of the call site for the
implicit call .()
This patch replicates the parse.y behaviour of setting the default
end_cursor to be the final closing location of the call node.
This behaviour can be verified against `parse.y` by modifying the test
command as follows:
```
ruby --parser=parse.y -rcoverage -e "Coverage.start(branches: true); require_relative 'test.rb'"
```
[Bug #20866]
There seems to be no reason why the install should be serial for --local.
The packages are still installed in the right dependency order in this case, so that parallel install can be used.
This patch disables parallel install only in case of no_install_needed.
Also remove the `option` argument, which is effectifely not used.
5da934ddb6
It often fails randomly.
http://ci.rvm.jp/results/trunk-yjit@ruby-sp2-noble-docker/5421564
```
Fstderr output is not empty
bootstraptest.test_fork.rb_78_287.rb:16:in 'block in <main>': failed (RuntimeError)
from <internal:numeric>:257:in 'Integer#times'
from bootstraptest.test_fork.rb_78_287.rb:10:in '<main>'
```
I'm not sure why the frequency of failure has suddenly increased,
though.
3330566428
```
IO#wait [events, timeout] passed changes thread status to 'sleep' when waits for WRITABLE event FAILED
Expected false == "sleep"
to be truthy but was false
D:/a/ruby/ruby/src/spec/ruby/library/io-wait/wait_spec.rb:99:in 'block (3 levels) in <top (required)>'
D:/a/ruby/ruby/src/spec/ruby/library/io-wait/wait_spec.rb:8:in '<top (required)>'
```
http://ci.rvm.jp/results/trunk-repeat50@ruby-sp2-noble-docker/5420911
```
/tmp/ruby/src/trunk-repeat50/ext/socket/ipsocket.c: In function ‘reallocate_connection_attempt_fds’:
/tmp/ruby/src/trunk-repeat50/ext/socket/ipsocket.c:292:62: warning: pointer ‘fds’ may be used after ‘realloc’ [-Wuse-after-free]
292 | for (int i = current_capacity; i < new_capacity; i++) fds[i] = -1;
| ^
/tmp/ruby/src/trunk-repeat50/ext/socket/ipsocket.c:288:9: note: call to ‘realloc’ here
288 | if (realloc(fds, new_capacity * sizeof(int)) == NULL) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
(https://github.com/ruby/zlib/pull/88)
* Only release the GVL where necessary.
- Several string manipulation methods were invoked while the GVL was
released. This is unsafe.
- The mutex protecting multi-threaded access was not covering buffer state
manipulation, leading to data corruption and out-of-bounds writes.
- Using `rb_str_locktmp` prevents changes to buffer while it's in use.
[Bug #20863]
e445cf3c80