| Age | Commit message (Collapse) | Author |
|
* revert `rb_last_status_set`
* renamed the new function as `rb_process_status_new`
* `rb_process_status_new` always freezes the return value
* marked `Process::Status.wait` as EXPERIMENTAL, as it has not
been discussed totally yet.
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3853
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3841
|
|
Follow N2328 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2328.pdf
|
|
getaddrinfo_a() gets stuck after fork().
To avoid this, we need 1 second sleep to wait for internal
worker threads of getaddrinfo_a() to be finished, but that is unacceptable.
[Bug #17220] [Feature #17134] [Feature #17187]
|
|
Previously, rb_getaddrinfo_a_before_exec() is called from before_exec().
However, the function needs to be called only before fork().
The change moves it to before_fork().
|
|
We need stop worker threads in getaddrinfo_a() before fork().
This change adds a hook before fork() that cancel all outstanding requests
and wait for all ongoing requests. Then, it waits for all worker
threads to be finished.
Fixes [Bug #17220]
|
|
|
|
Thought it was not a bad idea to document these CAPI. [ci skip]
|
|
This API in fact pins objects passed to it. See vm.c:2546.
Notes:
Merged: https://github.com/ruby/ruby/pull/3815
|
|
C extensions can violate the ractor-safety, so only ractor-safe
C extensions (C methods) can run on non-main ractors.
rb_ext_ractor_safe(true) declares that the successive
defined methods are ractor-safe. Otherwiwze, defined methods
checked they are invoked in main ractor and raise an error
if invoked at non-main ractors.
[Feature #17307]
Notes:
Merged: https://github.com/ruby/ruby/pull/3824
|
|
Fixes [Feature #13381]
Notes:
Merged: https://github.com/ruby/ruby/pull/3586
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3733
|
|
Many functions in string.c assume that capa + termlen to be readable
memory. Add comment in header to communicate this to extension authors.
See also: comment in str_fill_term()
Notes:
Merged: https://github.com/ruby/ruby/pull/3698
|
|
Introduce new method Ractor.make_shareable(obj) which tries to make
obj shareable object. Protocol is here.
(1) If obj is shareable, it is shareable.
(2) If obj is not a shareable object and if obj can be shareable
object if it is frozen, then freeze obj. If obj has reachable
objects (rs), do rs.each{|o| Ractor.make_shareable(o)}
recursively (recursion is not Ruby-level, but C-level).
(3) Otherwise, raise Ractor::Error. Now T_DATA is not a shareable
object even if the object is frozen.
If the method finished without error, given obj is marked as
a sharable object.
To allow makng a shareable frozen T_DATA object, then set
`RUBY_TYPED_FROZEN_SHAREABLE` as type->flags. On default,
this flag is not set. It means user defined T_DATA objects are
not allowed to become shareable objects when it is frozen.
You can make any object shareable by setting FL_SHAREABLE flag,
so if you know that the T_DATA object is shareable (== thread-safe),
set this flag, at creation time for example. `Ractor` object is one
example, which is not a frozen, but a shareable object.
Notes:
Merged: https://github.com/ruby/ruby/pull/3678
|
|
* Support ArithmeticSequence in Array#slice
* Extract rb_range_component_beg_len
* Use rb_range_values to check Range object
* Fix ary_make_partial_step
* Fix for negative step cases
* range.c: Describe the role of err argument in rb_range_component_beg_len
* Raise a RangeError when an arithmetic sequence refers the outside of an array
[Feature #16812]
Notes:
Merged-By: mrkn <mrkn@ruby-lang.org>
|
|
(1) nobody uses it (gem-codesearch)
(2) the data strucuture will be changed.
Notes:
Merged: https://github.com/ruby/ruby/pull/3662
|
|
This reverts commit c839168b1141db53bedef771d1bc78908b6ac782.
`rb_callable_receiver` does not need to be exposed under include.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3629
|
|
|
|
Reported by Mau Magnaguagno See: https://github.com/ruby/ruby/pull/3570#discussion_r495465903
|
|
This adds the following C-API functions that can be used to emit
warnings with categories included:
```c
void rb_category_warn(const char *, const char*, ...)
void rb_category_warning(const char*, const char*, ...)
```
Internally in error.c, there is an rb_warn_category function
that will call Warning.warn with the string and the category
keyword if it doesn't have an arity of 1, and will call
Warning.warn with just the string if it has an arity of 1.
This refactors the rb_warn_deprecated{,_to_remove} functions
to use rb_warn_category.
This makes Kernel#warn accept a category keyword and pass it
to Warning.warn, so that Ruby methods can more easily emit
warnings with categories. rb_warn_category makes sure that
the passed category is a already defined category symbol
before calling Warning.warn.
The only currently defined warning category is :deprecated,
since that is what is already used. More categories can be
added in later commits.
Notes:
Merged: https://github.com/ruby/ruby/pull/3508
|
|
Since r63443, `-std=gnu99 -D_XOPEN_SOUCE=x00` is added to Solaris'
`CPPFLAGS`. `CPPFLAGS` is shared among `CC` / `CXX`. This results in
both `__STDC_VERSION__` and `__cplusplus` to be defined at the same time
for a C++ compilation, only on Solaris.
It seems the `CPPFLAGS` addition is intentional. We sould not touch
that part. Instead we need to reroute this by always check for
`__cplusplus` first.
|
|
Now taint flag is obsolete and it is used fro shareaable flag.
So we should not check this flag.
Notes:
Merged: https://github.com/ruby/ruby/pull/3575
|
|
Added description and URL about nested flexible array member.
Notes:
Merged: https://github.com/ruby/ruby/pull/3570
|
|
Was definitely a bad idea to use constexpr. It is not ubiquitous.
Notes:
Merged: https://github.com/ruby/ruby/pull/3570
|
|
Now that RUBY_ALIGNOF behaves like C11's _Alignof. This is not
necessarily the best stack arrangement. We can just give up using
__builtin_alloca_with_align(), and let alloca choose what is optimal.
Notes:
Merged: https://github.com/ruby/ruby/pull/3570
|
|
It is reported that on a system of i386 System V ABI, GCC returns 8 for
__alignof__(double). OTOH the ABI defines alignments of double to be 4,
and ISO/IEC 9899:2011 reads that _Alignof(double) shall return 4 on such
machine. What we want in ruby is 4 instead of 8 there. We cannot use
__alignof__.
Additionally, both old GCC / old clang return 8 for _Alignof(double) on
such platforms. They are their bugs, and already fixed in recent
versions. But we have to support older compilers for a while. Shall
check sanity of _Alignof.
Notes:
Merged: https://github.com/ruby/ruby/pull/3570
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3537
|
|
Also improve specs and documentation for finalizers and more clearly
recommend a safe code pattern to use them.
Notes:
Merged: https://github.com/ruby/ruby/pull/3444
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3519
|
|
This commit introduces Ractor mechanism to run Ruby program in
parallel. See doc/ractor.md for more details about Ractor.
See ticket [Feature #17100] to see the implementation details
and discussions.
[Feature #17100]
This commit does not complete the implementation. You can find
many bugs on using Ractor. Also the specification will be changed
so that this feature is experimental. You will see a warning when
you make the first Ractor with `Ractor.new`.
I hope this feature can help programmers from thread-safety issues.
Notes:
Merged: https://github.com/ruby/ruby/pull/3365
|
|
|
|
Because we check HAVE_STMT_AND_DECL_IN_EXPR in configure, it is peoven
to work in C. But C++ situation can be different. Oracle Developer
Studio is another example of such things.
Notes:
Merged: https://github.com/ruby/ruby/pull/3433
|
|
Oracle Developer Studio's C++ preprocessor started to understand
__has_cpp_attribute since version 12.5, and is broken. After looking
around for a while I found Boost and ICU also had this issue before.
Let me add workaround for it.
Notes:
Merged: https://github.com/ruby/ruby/pull/3433
|
|
Former ROBJECT_IV_INDEX_TBL macro included RCLASS_IV_INDEX_TBL, which is
not disclosed to extension libraies. The macro was kind of broken. Why
not just deprecate it, and convert the internal use into an inline
function.
Notes:
Merged: https://github.com/ruby/ruby/pull/3427
|
|
RARRAY_AREF has been a macro for reasons. We might not be able to
change that for public APIs, but why not relax the situation internally
to make it an inline function.
Notes:
Merged: https://github.com/ruby/ruby/pull/3419
|
|
* Enable unaligned accesses on arm64
64-bit Arm platforms support unaligned accesses.
Running the string benchmarks this change improves performance
by an average of 1.04x, min .96x, max 1.21x, median 1.01x
* arm64 enable gc optimizations
Similar to x86 and powerpc optimizations.
| |compare-ruby|built-ruby|
|:------|-----------:|---------:|
|hash1 | 0.225| 0.237|
| | -| 1.05x|
|hash2 | 0.110| 0.110|
| | 1.00x| -|
* vm_exec.c: improve performance for arm64
| |compare-ruby|built-ruby|
|:------------------------------|-----------:|---------:|
|vm_array | 26.501M| 27.959M|
| | -| 1.06x|
|vm_attr_ivar | 21.606M| 31.429M|
| | -| 1.45x|
|vm_attr_ivar_set | 21.178M| 26.113M|
| | -| 1.23x|
|vm_backtrace | 6.621| 6.668|
| | -| 1.01x|
|vm_bigarray | 26.205M| 29.958M|
| | -| 1.14x|
|vm_bighash | 504.155k| 479.306k|
| | 1.05x| -|
|vm_block | 16.692M| 21.315M|
| | -| 1.28x|
|block_handler_type_iseq | 5.083| 7.004|
| | -| 1.38x|
Notes:
Merged-By: nurse <naruse@airemix.jp>
|
|
- When NDEBUG is defined that shall be honoured.
- When RUBY_DEBUG is defined that shall be honoured.
- When both are defined and they conflict, warnings shall be rendered.
- When nothing is specified, nothing shall happen.
Notes:
Merged-By: shyouhei <shyouhei@ruby-lang.org>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3323
|
|
Correctly capture thread before releasing GVL and pass as argument to
`rb_thread_scheduler_if_nonblocking`.
Notes:
Merged: https://github.com/ruby/ruby/pull/3323
|
|
This reverts commit c8dc2bf1401fc01d35a4a7587ed224f1f2fe29e6.
No longer necessary.
|
|
Prevent casual typos inside of UNREACHABLE_RETURN(...).
Notes:
Merged: https://github.com/ruby/ruby/pull/3247
|
|
|
|
Assertions in header files slows down an interpreter, so they should be
turned off by default (simple `make`). To enable them, define a macro
`RUBY_DEBUG=1` (e.g. `make cppflags=-DRUBY_DEBUG` or use `#define` at
the very beggining of the file. Note that even if `NDEBUG=1` is defined,
`RUBY_DEBUG=1` enables all assertions.
[Feature #16837]
related: https://github.com/ruby/ruby/pull/3120
`assert()` lines in MRI *.c is not disabled even if `RUBY_DEBUG=0` and
it can be disabled with `NDEBUG=1`. So please consider to use
`RUBY_ASSERT()` if you want to disable them when `RUBY_DEBUG=0`.
Notes:
Merged: https://github.com/ruby/ruby/pull/3124
|
|
GCC 10.x seems buggy here. See also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95302
|
|
To get rid of a void function at the end of non-void function.
|
|
This is a pure refactoring that improves understanding of what is going
on. Not a big win though.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3032
Merged-By: ioquatix <samuel@codeotaku.com>
|