Age | Commit message (Collapse) | Author |
|
On ar_table, Do not keep a full-length hash value (FLHV, 8 bytes)
but keep a 1 byte hint from a FLHV (lowest byte of FLHV).
An ar_table only contains at least 8 entries, so hints consumes
8 bytes at most. We can store hints in RHash::ar_hint.
On 32bit CPU, we use 4 entries ar_table.
The advantages:
* We don't need to keep FLHV so ar_table only consumes
16 bytes (VALUEs of key and value) * 8 entries = 128 bytes.
* We don't need to scan ar_table, but only need to check hints
in many cases. Especially we don't need to access ar_table
if there is no match entries (in many cases).
It will increase memory cache locality.
The disadvantages:
* This technique can increase `#eql?` time because hints can
conflicts (in theory, it conflicts once in 256 times).
It can introduce incompatibility if there is a object x where
x.eql? returns true even if hash values are different.
I believe we don't need to care such irregular case.
* We need to re-calculate FLHV if we need to switch from ar_table
to st_table (e.g. exceeds 8 entries).
It also can introduce incompatibility, on mutating key objects.
I believe we don't need to care such irregular case too.
Add new debug counters to measure the performance:
* artable_hint_hit - hint is matched and eql?#=>true
* artable_hint_miss - hint is not matched but eql?#=>false
* artable_hint_notfound - lookup counts
|
|
iter_lev is used to detect the hash is iterating or not.
Usually, iter_lev should be very small number (1 or 2) so
`int` is overkill.
This patch introduce iter_lev in flags (7 bits, FL13 to FL19)
and if iter_lev exceeds this range, save it in hidden attribute.
We can get 1 word in RHash.
We can't modify frozen objects. Therefore I added new internal API
`rb_ivar_set_internal()` which allows us to set an attribute
even if the target object is frozen
if the name is hidden ivar (the name without `@` prefix).
|
|
|
|
It contains too old configuration that is autorequire. It will be
removed at the RubyGems 3.1.0.
|
|
* `Gem::ConfigMap` is still used by Bundler.
* `Gem::RubyGemsVersion` is also still referred by the old gems.
https://github.com/rubygems/rubygems/commit/249c3ff44f
|
|
https://github.com/rubygems/rubygems/commit/ca8afc01a3
|
|
set it up later and cause confusion
https://github.com/rubygems/rubygems/commit/6ec3ba983c
|
|
not needed anymore
https://github.com/rubygems/rubygems/commit/930de86a24
|
|
extension is used
https://github.com/rubygems/rubygems/commit/2a32c5ef0a
|
|
https://github.com/rubygems/rubygems/commit/107fea3432
|
|
https://github.com/rubygems/rubygems/commit/0402974149
|
|
https://github.com/rubygems/rubygems/commit/be962ca0c4
|
|
https://github.com/rubygems/rubygems/commit/be962ca0c4
|
|
https://github.com/rubygems/rubygems/commit/006cdd4084
|
|
https://github.com/rubygems/rubygems/commit/469fceeb2f
|
|
https://github.com/rubygems/rubygems/commit/1ea674d8f7
|
|
https://github.com/rubygems/rubygems/commit/41b1cebc33
|
|
https://github.com/rubygems/rubygems/commit/70c5c17a5f
|
|
https://github.com/rubygems/rubygems/commit/3d6c7c92e4
|
|
BasicSpecification.
This was never the right place. The method got there just by evolution,
not by design. Move it within default methods, where it suits better.
Since this method is presumably used just internally, it should be safe
to deprecate it and remove later.
https://github.com/rubygems/rubygems/commit/0c0dd9458a
|
|
https://github.com/rubygems/rubygems/commit/2adef51dc9
|
|
some test case.
https://github.com/rubygems/rubygems/commit/4a0ca2583a
|
|
https://github.com/rubygems/rubygems/commit/bfb3f67494
|
|
https://github.com/rubygems/rubygems/commit/c2049c3276
|
|
supported nor functional.
https://github.com/rubygems/rubygems/commit/cadb66037d
|
|
Separate #add_runtime_dependency and #add_development_dependency
availability condition from #specification_version availability,
which is not related to directly.
Also check if the former method is available, instead of comparing
the version.
https://github.com/rubygems/rubygems/commit/5cccc2b836
|
|
https://github.com/rubygems/rubygems/commit/79b62c233a
|
|
methods
https://github.com/rubygems/rubygems/commit/2a96494d91
|
|
https://github.com/rubygems/rubygems/commit/1372e50c17
|
|
https://github.com/rubygems/rubygems/commit/6a1856517f
|
|
S3URISigner class
https://github.com/rubygems/rubygems/commit/c30d21ec7a
|
|
https://github.com/rubygems/rubygems/commit/853ecdd417
|
|
https://github.com/rubygems/rubygems/commit/2481efcb37
|
|
https://github.com/rubygems/rubygems/commit/4bacf577f1
|
|
https://github.com/rubygems/rubygems/commit/44bc809dc8
|
|
https://github.com/rubygems/rubygems/commit/fb62d3043c
|
|
available for use
https://github.com/rubygems/rubygems/commit/1783cf0fd3
|
|
to Gem::Util
https://github.com/rubygems/rubygems/commit/e12c98aa72
|
|
https://github.com/rubygems/rubygems/commit/d7ad696fa2
|
|
https://github.com/rubygems/rubygems/commit/a76f25dff0
|
|
https://github.com/rubygems/rubygems/commit/f289788ca5
|
|
https://github.com/rubygems/rubygems/commit/2c9cfcb666
|
|
Add some basic specs for the package attr_reader.
https://github.com/rubygems/rubygems/commit/68af2a0ee3
|
|
@parser.accept since not
every class where this is used has a parser available. i.e lib/rubygems/install_update_options.rb
https://github.com/rubygems/rubygems/commit/519fd4dcc0
|
|
https://github.com/rubygems/rubygems/commit/f296645033
|
|
in Rubygems 3
https://github.com/rubygems/rubygems/commit/6d5f743a89
|
|
https://github.com/rubygems/rubygems/commit/a10b5265d7
|
|
https://github.com/rubygems/rubygems/commit/ad7e379f79
|
|
https://github.com/rubygems/rubygems/commit/9094740109
|
|
Because we can't control 3rd party gems using deprecated rubygems
behavior, and thus outputting warnings to the screen.
https://github.com/rubygems/rubygems/commit/6912ebf20a
|