Age | Commit message (Collapse) | Author |
|
* `expr in pattern` should raise `NoMatchingError` when unmatched
* `expr in pattern` should return `nil`. (this is unspecified, but
this feature is experimental, at all)
[Feature #16355]
|
|
Since https://github.com/ruby/ruby/pull/2576,
`new_cond` uses the Monitor object, not the receiver.
|
|
|
|
|
|
|
|
|
|
|
|
https://help.github.com/en/actions/automating-your-workflow-with-github-actions/software-installed-on-github-hosted-runners#windows-server-2016
> Note: The Windows Server 2016 virtual environment will be removed on December 3, 2019.
Notes:
Merged: https://github.com/ruby/ruby/pull/2704
|
|
|
|
Previously, the rest array was modified, but it turns out that is
not necessary. Not modifying the rest array fixes cases when the
rest array is used more than once.
Notes:
Merged: https://github.com/ruby/ruby/pull/2706
|
|
Decades ago, among all the data that a class has, its method
table was no doubt the most frequently accessed data. Previous
data structures were based on that assumption.
Today that is no longer true. The most frequently accessed field
moved to class_serial. That field is not always as wide as VALUE
but if it is, let us swap m_tbl and class_serial.
Calculating -------------------------------------
ours trunk
Optcarrot Lan_Master.nes 47.363 46.630 fps
Comparison:
Optcarrot Lan_Master.nes
ours: 47.4 fps
trunk: 46.6 fps - 1.02x slower
Notes:
Merged: https://github.com/ruby/ruby/pull/2701
|
|
|
|
rename __builtin_inline!(code) to __builtin_cstmt(code).
Also this commit introduce the following inlining C code features.
* __builtin_cstmt!(STMT)
(renamed from __builtin_inline!)
Define a function which run STMT implicitly and call this function at
evatuation time. Note that you need to return some value in STMT.
If there is a local variables (includes method parameters), you can
read these values.
static VALUE func(ec, self) {
VALUE x = ...;
STMT
}
Usage:
def double a
# a is readable from C code.
__builtin_cstmt! 'return INT2FIX(FIX2INT(a) * 2);'
end
* __builtin_cexpr!(EXPR)
Define a function which invoke EXPR implicitly like `__builtin_cstmt!`.
Different from cstmt!, which compiled with `return EXPR;`.
(`return` and `;` are added implicitly)
static VALUE func(ec, self) {
VALUE x = ...;
return EXPPR;
}
Usage:
def double a
__builtin_cexpr! 'INT2FIX(FIX2INT(a) * 2)'
end
* __builtin_cconst!(EXPR)
Define a function which invoke EXPR implicitly like cexpr!.
However, the function is called once at compile time, not evaluated time.
Any local variables are not accessible (because there is no local variable
at compile time).
Usage:
GCC = __builtin_cconst! '__GNUC__'
* __builtin_cinit!(STMT)
STMT are writtein in auto-generated code.
This code does not return any value.
Usage:
__builtin_cinit! '#include <zlib.h>'
def no_compression?
__builtin_cconst! 'Z_NO_COMPRESSION ? Qtrue : Qfalse'
end
|
|
Check keys
* by an internal table, instead of unstable dispatched results
* and by parsed key values, instead of escaped forms in the source
|
|
|
|
Not in `p_kw` itself, which makes key and variable/expr pair only
now.
|
|
|
|
Update the target file itself of the dependency on this script.
Fall back to the current working directory if unwritable.
|
|
|
|
|
|
I'm not sure, but maybe it was gramatically incorrect?
|
|
|
|
https://github.com/ruby/ruby/commit/7bd7a013b14fb6c4403ff243ec5db13c5c71f552/checks?check_suite_id=328682567#step:10:1634
```
*** Following extensions are not compiled:
openssl:
Could not be configured. It will not be installed.
" d:/a/ruby/ruby/src/ext/openssl/extconf.rb:97: OpenSSL library could not be found. You might want to use --with-openssl-dir=<dir> option to specify the prefix where OpenSSL is installed."
```
|
|
|
|
`set recursive=1 &` sets `1 ` to `recursive`, not `1`.
|
|
The difference from 0b8c73aa65add5c57b46b0cfdf4e661508802172 is to
add the result of `string_add` event to marking objects.
```C
RNODE($1)->nd_rval = add_mark_object(p, $$);
```
|
|
[ci skip]
|
|
|
|
If calling builtin functions with no arguments, we don't need to
calculate argv location.
|
|
|
|
|
|
[ruby-core:95935] [Misc #16365]
|
|
[ci skip]
|
|
The docs are wrong about the behaviour of `#>>` (looks like it was copied from `#<<`)
In `(prc >> g).call(n)` _prc_ is called first (with _n_), *then* _g_ is called with the result.
Code examples are OK.
Notes:
Merged: https://github.com/ruby/ruby/pull/2691
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
When building from tarballs, the source directory is not a git
repository.
|
|
|
|
and use github.workflow instead. Applied a similar change to MJIT too.
|
|
Original Tracer.set_get_line_procs is implemented by
"def set_get_line_procs(p = proc)". It means that original
Tracer.set_get_line_procs supports block and Proc object.
|
|
Original Tracer.add_filter is implemented by "def add_filter(p = proc)". It
means that original Tracer.add_filter supports block and Proc object.
|
|
This is significantly faster than checking BUILTIN_TYPEs because we
access significantly less memory. We also use popcount to count entire
words at a time.
The only functional difference from the previous implementation is that
T_ZOMBIE objects will no longer be counted. However those are temporary
objects which should be small in number, and this method has always been
an estimate.
Notes:
Merged: https://github.com/ruby/ruby/pull/2688
|
|
Previously we would count the pinned objects on each comparison. Since
sorting is O(N log N) and we calculated this on both left and right
pages on each comparison this resulted in a extra iterations over the
slots.
Notes:
Merged: https://github.com/ruby/ruby/pull/2688
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2688
|
|
|