Age | Commit message (Collapse) | Author |
|
Not that it makes a big difference here, but it's
just unecessary.
Notes:
Merged: https://github.com/ruby/ruby/pull/7241
|
|
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/7038
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6985
|
|
Implements [Feature #19000]
This commit adds copy with changes functionality for `Data` objects
using a new method `Data#with`.
Since Data objects are immutable, the only way to change them is by
creating a copy. This PR adds a `with` method for `Data` class instances
that optionally takes keyword arguments.
If the `with` method is called with no arguments, the behaviour is the
same as the `Kernel#dup` method, i.e. a new shallow copy is created
with no field values changed.
However, if keyword arguments are supplied to the `with` method, then
the copy is created with the specified field values changed. For
example:
```ruby
Point = Data.define(:x, :y)
point = Point.new(x: 1, y: 2)
point.with(x: 3) # => #<data Point x: 3, y: 2>
```
Passing positional arguments to `with` or passing keyword arguments to
it that do not correspond to any of the members of the Data class will
raise an `ArgumentError`.
Co-authored-by: Alan Wu <[email protected]>
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6843
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6843
|
|
Technically we shouldn't see Qfalse now, but RTEST also compiles down to
just one branch anyways. Pretty contrived issue, but easy to fix.
Notes:
Merged: https://github.com/ruby/ruby/pull/6832
|
|
rb_class_superclass
struct_ivar_get recently started using rb_class_superclass to
resolve super instead of RCLASS_SUPER. This change made
Qnil a possible case we need to return from within the
struct_ivar_get for loop.
Notes:
Merged: https://github.com/ruby/ruby/pull/6832
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6721
|
|
Notes:
Merged-By: k0kubun <[email protected]>
|
|
|
|
|
|
|
|
`Data.members` fails an assertion.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6353
Merged-By: nobu <[email protected]>
|
|
|
|
rb_ary_tmp_new suggests that the array is temporary in some way, but
that's not true, it just creates an array that's hidden and not on the
transient heap. This commit renames it to rb_ary_hidden_new.
Notes:
Merged: https://github.com/ruby/ruby/pull/6180
|
|
[Misc #18891]
Notes:
Merged: https://github.com/ruby/ruby/pull/6094
|
|
Notes:
Merged-By: jhawthorn <[email protected]>
|
|
|
|
Repaired What's Here sections for Range, String, Symbol, Struct.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
|
|
|
|
I used this regex:
(?<=\[)#(?:class|module)-([A-Za-z]+)-label-([A-Za-z0-9\-\+]+)
And performed a global find & replace for this:
rdoc-ref:$1@$2
Notes:
Merged: https://github.com/ruby/ruby/pull/5530
|
|
I used this regex:
([A-Za-z]+)\.html#(?:class|module)-[A-Za-z]+-label-([A-Za-z0-9\-\+]+)
And performed a global find & replace for this:
rdoc-ref:$1@$2
Notes:
Merged: https://github.com/ruby/ruby/pull/5530
|
|
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5348
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/5279
|
|
|
|
Introduce new optimized method type
`OPTIMIZED_METHOD_TYPE_STRUCT_AREF/ASET` with index information.
Notes:
Merged: https://github.com/ruby/ruby/pull/5131
|
|
Code markup in RDoc must not be concatenated with anothr word.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4925
Merged-By: nobu <[email protected]>
|
|
Revises introductory material.
Adds section "What's Here".
Adds previously missing documentation for method #deconstruct_keys.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats:
#values_at
#select
#==
#hash
#eql?
#size
#dig
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treated:
#each
#each_pair
#inspect
#to_a
#to_h
#[]
#[]=
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Treats #members and ::new.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
* As the "doc/" prefix is specified by the `--page-dir` option,
remove from the rdoc references.
* Refer to the original .rdoc instead of the converted .html.
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/4798
|
|
|
|
|
|
Fixes [Feature #18008]
Notes:
Merged-By: nurse <[email protected]>
|
|
* Warn Struct#initialize with only keyword args
A part of [Feature #16806]
* Do not warn if `keyword_init: false`
is explicitly specified
* Add a NEWS entry
* s/in/from/
* Make sure all fields are initialized
Notes:
Merged-By: k0kubun <[email protected]>
|
|
It seems almost no internal codes use RHASH_TBL any longer. Why not
just eliminate it entirely, so that the macro can be purely ext-only.
Notes:
Merged: https://github.com/ruby/ruby/pull/3426
|
|
* Fix links to Dig Methods document
* Fix links to Dig Methods document
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Adds a full discussion of #dig, along with links from Array, Hash, Struct, and OpenStruct.
CSV::Table and CSV::Row are over in ruby/csv. I'll get to them soon.
The art to the thing is to figure out how much (or how little) to say at each #dig.
Notes:
Merged-By: BurdetteLamar <[email protected]>
|
|
Noticed that struct rb_builtin_function is a purely compile-time
constant. MJIT can eliminate some runtime calculations by statically
generate dedicated C code generator for each builtin functions.
Notes:
Merged: https://github.com/ruby/ruby/pull/3305
|
|
We don't do this for aset because it might raise a FrozenError.
```
$ benchmark-driver -v --rbenv 'before;after;before --jit;after --jit' benchmark/mjit_struct_aref.yml --repeat-count=4
before: ruby 2.8.0dev (2020-07-06T01:47:11Z master d94ef7c6b6) [x86_64-linux]
after: ruby 2.8.0dev (2020-07-06T07:11:51Z master 85425168f4) [x86_64-linux]
last_commit=Inline builtin struct aref
before --jit: ruby 2.8.0dev (2020-07-06T01:47:11Z master d94ef7c6b6) +JIT [x86_64-linux]
after --jit: ruby 2.8.0dev (2020-07-06T07:11:51Z master 85425168f4) +JIT [x86_64-linux]
last_commit=Inline builtin struct aref
Calculating -------------------------------------
before after before --jit after --jit
mjit_struct_aref(struct) 34.783M 34.810M 48.321M 58.378M i/s - 40.000M times in 1.149996s 1.149097s 0.827794s 0.685192s
Comparison:
mjit_struct_aref(struct)
after --jit: 58377836.7 i/s
before --jit: 48321205.7 i/s - 1.21x slower
after: 34809935.5 i/s - 1.68x slower
before: 34782736.5 i/s - 1.68x slower
```
|
|
|