Age | Commit message (Collapse) | Author |
|
Remove all usages of RCAST() so that the header file can be excluded
from ruby/ruby.h's dependency.
Notes:
Merged: https://github.com/ruby/ruby/pull/3346
|
|
We should not recommend RBIMPL_*.
Notes:
Merged: https://github.com/ruby/ruby/pull/3341
|
|
Nobody uses this macro any longer.
Notes:
Merged: https://github.com/ruby/ruby/pull/3341
|
|
It has been deprecated for 5 years since 1f2255604087e9a7d7efcb2df61b5ca0e2daa200.
Notes:
Merged: https://github.com/ruby/ruby/pull/3341
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3344
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3343
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3345
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3340
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3338
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3338
|
|
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>
|
|
- util.h includes defines.h,
- ... which includes ruby/backward/2/stdarg.h,
- ... which always defines _.
This `#ifndef _` must never happen.
Notes:
Merged: https://github.com/ruby/ruby/pull/3348
|
|
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
|
|
If __builtin_assume() is enables and RUBY_DEBUG=0, RUBY_ASSERT(expr)
will be compiled to __builtin_assume(expr) and compiler can assume
expr is true and apply aggressive optimizations. However we observed
doubtful behavior because of compiler optimizations, we introduce
new macro RUBY_ASSERT_NOASSUME to disable __builtin_assume().
With this macro, we can try without __builtin_assume().
|
|
|
|
|
|
Co-authored-by: 卜部昌平 <shyouhei@ruby-lang.org>
Notes:
Merged: https://github.com/ruby/ruby/pull/3124
|
|
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.
|
|
We observed combination of multiple __builtin_assume() can cause
strange compile results on clang-6 (-DNDEBUG exposed this issue).
To avoid this problem, __builtin_assume() is from clang-7.
https://github.com/ruby/ruby/pull/3120#issuecomment-630821333
Notes:
Merged: https://github.com/ruby/ruby/pull/3122
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3032
Merged-By: ioquatix <samuel@codeotaku.com>
|
|
Argument of RUBY_ASSERT_FAIL is already stringized message, so no
more extra stringization should be applied.
|
|
SunPro's #pragma does_not_return(...) needs an argument. That does not
fit the attribute syntax we employ.
|
|
This header file is simply out of date (for decades since at least
1989). It's the 21st century. Just stop using it.
|
|
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html says:
> GCC never returns 1 when you call the inline function with a string
> constant or ...
Because rb_str_new and familiy take string constants, it was a bad idea
for them to contain RB_CONSTANT_P. We should instead do so in
corresponding macros. [ruby-core:98212]
Notes:
Merged: https://github.com/ruby/ruby/pull/3098
|
|
To fix build failures.
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
Devs do not love "impl".
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
Devs do not love "3". The only exception is RUBY3_KEYWORDS in parse.y,
which seems unrelated to our interests.
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
This shall fix compile errors.
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
Devs do not love "3".
Notes:
Merged: https://github.com/ruby/ruby/pull/3079
|
|
[Bug #16465] [Bug #16801]
[Fix GH-2795] [Fix GH-2944] [Fix GH-3045] [Fix GH-3093]
Note: Backporting shouldn't modify object.h and instead can use
struct_new_kw which is basically a duplicate implementation of
rb_class_new_instance_pass_kw
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
Co-authored-by: John Hawthorn <john@hawthorn.email>
Co-authored-by: Adam Hess <HParker@github.com>
Co-authored-by: Jose Cortinas <jacortinas@gmail.com>
Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
Notes:
Merged: https://github.com/ruby/ruby/pull/3093
|
|
As zero variadic macro argument, `rb_scan_args(argc, argv, "")`
(or `"0"`), means 0-arity method and should be defined so, that
case doesn't need to consider.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3071
|
|
|
|
|
|
|
|
It seems gcc prior to 5 suffered from preprocessor bug. We have to
provide workarounds.
See https://github.com/ruby/ruby/runs/591138012
----
Here is something interesting. According to C99, strictly speaking,
the gcc behaviour was in fact legal(!) and everything else were
wrong. This was not a bug of gcc, rather a bug of the ISO C Standard.
This defect was reported to the committee as DR#412, and fixed
accordingly. All tested compilers now conform C17's updated
preprocessor description.
See http://www.open-std.org/JTC1/SC22/WG14/www/docs/dr_412.htm
|
|
FreeBSD's <sys/cdefs.h> is broken. Cygwin is also affected by that.
We need to avoid using them.
See also:
https://github.com/freebsd/freebsd/commit/d1c67819db000c02d3a9c79f3651c10aeedad1a0
https://sourceware.org/git/?p=newlib-cygwin.git;a=commit;f=newlib/libc/include/sys/cdefs.h;h=44d6d53977e6bc82c2b1e6dbe8ae7f310b260604
|