| Age | Commit message (Collapse) | Author |
|
We can check the function pointer passed to
rb_define_protected_method like how we do so in rb_define_method.
This changeset revealed no prototypes mismatches.
|
|
We can check the function pointer passed to rb_define_method_id
like how we do so in rb_define_method. This method is relatively
rarely used so there are less problems found than the other APIs.
|
|
To properly generate documents.
|
|
We can check the function pointer passed to rb_define_global_function
like we do so in rb_define_method. It turns out that almost anybody
is misunderstanding the API.
|
|
We can check the function pointer passed to rb_define_module_function
like how we do so in rb_define_method. The difference is that this
changeset reveales lots of atiry mismatches.
|
|
The rb_define_method function takes a pointer to ANYARGS-ed functions,
which in fact varies 18 different prototypes. We still need to
preserve ANYARGS for storages but why not check the consistencies if
possible.
Q&As:
Q: Where did the magic number "18" came from in the description above?
A: Count the case branch of vm_method.c:call_cfunc_invoker_func().
Note also that the 18 branches has lasted for at least 25 years.
See also 200e0ee2fd3c1c006c528874a88f684447215524.
Q: What is this __weakref__ thing?
A: That is a kind of function overloading mechanism that GCC provides.
In this case for instance rb_define_method0 is an alias of
rb_define_method, with a strong type.
Q: What is this __transparent_union__ thing?
A: That is another kind of function overloading mechanism that GCC
provides. In this case the attributed function pointer is either
VALUE(*)(int,VALUE*,VALUE) or VALUE(*)(int,const VALUE*,VALUE).
This is better than void* or ANYARGS because we can reject all
other possibilities than the two.
Q: What does this rb_define_method macro mean?
A: It selects appropriate alias of the rb_define_method function,
depending on the arity.
Q: Why the prototype change of rb_f_notimplement?
A: Function pointer to rb_f_notimplement is special cased in
vm_method.c:rb_add_method_cfunc(). That should be handled by the
__builtin_choose_expr chain inside of rb_define_method macro
expansion. In order to do so, comparison like (func ==
rb_f_notimplement) is inappropriate for __builtin_choose_expr's
expression (which must be a compile-time integer constant but the
address of rb_f_notimplement is not fixed until the linker). So
instead we are using __builtin_types_compatible_p, and in doing so
we need to distinguish rb_f_notimplement from others, by type.
|
|
This is just a trivial mistake introduced in
0f36e8fc03a5c6433972d6bb5f177d5f6e106bac.
|
|
This is just a trivial mistake introduced in
6c56dae4b23c5c50e351758538141ca26b9aba40.
|
|
[Feature #16103]
|
|
This reverts commits:
* d365fd5a024254d7c105a62a015a7ea29ccf3e5d
* d780c3662484d6072b3a6945b840049de72c2096
* aa7211836b769231a2a8ef6b6ec2fd0ec882ef29
* 043f010c28e82ea38978bf8ed885416f133b5b75
* bb4dd7c6af05c7821d572e2592ea3d0cc748d81f
* 043f010c28e82ea38978bf8ed885416f133b5b75
* f169043d81524b5b529f2c1e9c35437ba5bc3a7a
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/94645
|
|
|
|
|
|
|
|
|
|
when reopened class/module redefinition mismatched the previous
definition. [Feature #11460]
|
|
A range literal in conditional expression is turned into a
flip-flop, as a Range object is never falsy and does not make a
sense.
|
|
|
|
This reverts commit bf7a32d22079cc44eb19794e41d82b886d5d17b3.
flip-flop is no longer deprecated.
[Feature #5400]
|
|
While not consistent with {n,}?, {,m}?, and {n,m}?, it is arguably
more useful, as otherwise the ? would have no effect.
Fixes [Bug #15583]
|
|
|
|
This reverts commit 6454808c52fff445ff09fefb0fb96988f82aaa3c.
It is no longer needed, as `VCS::SVN#get_revisions` now returns
`Integer` as revision numbers, and `short_revision` should deal
with it.
|
|
`_FILE_OFFSET_BITS` should be defined before system headers.
|
|
Fixed unmatched indent of the closing bracket for
`:irb_current_working_workspace`, and adjusted following elements.
|
|
|
|
|
|
|
|
Merged: https://github.com/ruby/ruby/pull/2292
|
|
|
|
|
|
|
|
|
|
|
|
because default value overrides it.
https://help.github.com/en/articles/virtual-environments-for-github-actions#environment-variables
|
|
|
|
|
|
`rb_ast_t` holds a reference to this object, so it should mark the
object. Currently it is relying on the `mark_ary` on `node_buffer` to
ensure that the object stays alive. But since the array internals can
move, this could cause a segv if compaction impacts the array.
|
|
- Fix checkout error: `fatal: destination path '.' already exists and is not an empty directory.`
- Remove `GITHUB_SHA` in env, because set automatically
https://help.github.com/en/articles/virtual-environments-for-github-actions#environment-variables
- Change minute from 0 to 20 for test soon
|
|
|
|
|
|
To fix "gcc: -lgcc: linker input file unused because linking not done" in
https://rubyci.org/logs/rubyci.s3.amazonaws.com/openbsd65/ruby-master/log/20190826T200009Z.log.html.gz
Still I'm intentionally leaving CC_DLDFLAGS_ARGS because making compiler
options different might result in compile/link failure. (Of course
CC_DLDFLAGS_ARGS usually should not have compiler options, but it might
include by bad configure setup)
The same problem may exist in MJIT_LIBS used inside CC_LIBS as well, but
I just ignored that case because it impacts only MinGW / cygwin, hoping
that their users do not perform a wrong configure.
Notes:
s/might include/might be included/
|
|
|
|
|
|
|
|
a little.
Doing both `git clone --depth=1` and `git reset --hard ${sha}` does not
make sense (the latter command either does nothing or just fails), so I
added non-1 value as a depth.
Maybe we don't need depth=50 for pull_request and schedule, so it's 10
for now.
|
|
|
|
|
|
workflows, because mame said he has never seen it.
|
|
|
|
|
|
in response to the declaration change in
e3fc30564e9466d6926f9d25a090dcf787bd5c33.
Fixing the AppVeyor mswin CI failure:
https://ci.appveyor.com/project/ruby/ruby/builds/26980881/job/2j6h1qwjnbc8cpop
ref: https://github.com/ruby/ruby/pull/2404
|