| Age | Commit message (Collapse) | Author |
|
(https://github.com/ruby/ostruct/pull/56)
The OpenStruct documentation clearly state that it shouldn't
be used when performance is expected.
Ruby 3.3 introduce a new category of warnings that is silenced
by default: performance.
The expected use case is to enable this warning when looking
for potential performance issues within an application.
As such I think it would make sense to emit a performance warning
when OpenStruct is used, as it may help pinpoint that a dependency
rely on it, etc.
https://github.com/ruby/ostruct/commit/5826e12db8
Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
|
|
https://github.com/ruby/open3/commit/457cae3a51
|
|
|
|
(https://github.com/ruby/reline/pull/593)
* Properly restore Reline::IOGate in test teardown
* GeneralIO.reset should reset class variable existence
https://github.com/ruby/reline/commit/c16d33dae5
|
|
|
|
|
|
|
|
|
|
https://github.com/ruby/yarp/commit/916828767c
|
|
https://github.com/ruby/yarp/commit/e90f88f21f
|
|
https://github.com/ruby/yarp/commit/1c843d2f22
|
|
https://github.com/ruby/yarp/commit/139362c90a
|
|
https://github.com/ruby/yarp/commit/4a6df3c2a4
|
|
https://github.com/ruby/yarp/commit/2e6baa3f19
|
|
https://github.com/ruby/yarp/commit/3d34404d80
|
|
https://github.com/ruby/yarp/commit/d51014582a
|
|
https://github.com/ruby/yarp/commit/2f1f3fa448
|
|
https://github.com/ruby/yarp/commit/52bd001ea2
|
|
https://github.com/ruby/yarp/commit/c6a0abdd24
|
|
To avoid potential crashes when trying to jump from a drive to another
on Windows, and take the change refactor things a bit.
https://github.com/rubygems/rubygems/commit/7c9a9a431a
|
|
When a path does not make a lot of sense.
https://github.com/rubygems/rubygems/commit/d173c79e9a
|
|
https://github.com/rubygems/rubygems/commit/f0d8255ebd
|
|
https://github.com/rubygems/rubygems/commit/a30712c0fc
|
|
When the latest allowed minor of `dep` adds a new dependency, that new
dependency would be incorrectly resolved to the latest minor of the
first major version.
https://github.com/rubygems/rubygems/commit/fd50c9d4f3
|
|
inputrc
(https://github.com/ruby/reline/pull/592)
* Fix config.rb to File.expand_path $include path in inputrc
* fix bug of test_include_expand_path on Windows
https://github.com/ruby/reline/commit/4d34e52d0b
|
|
(https://github.com/ruby/reline/pull/591)
https://github.com/ruby/reline/commit/c2fc1f771a
|
|
If a gem is located in a different drive than the Gemfile, standalone
mode will fail to generate the `bundler/setup` script, failing with an
error like
```
ArgumentError: different prefix: "C:/" and "D:/a/rubygems/rubygems/bundler/tmp/2/bundled_app/bundle/bundler"
C:/hostedtoolcache/windows/Ruby/3.0.5/x64/lib/ruby/3.0.0/pathname.rb:528:in `relative_path_from'
D:/a/rubygems/rubygems/bundler/tmp/2/gems/system/gems/bundler-2.4.20/lib/bundler/installer/standalone.rb:58:in `gem_path'
D:/a/rubygems/rubygems/bundler/tmp/2/gems/system/gems/bundler-2.4.20/lib/bundler/installer/standalone.rb:33:in `block (2 levels) in paths'
D:/a/rubygems/rubygems/bundler/tmp/2/gems/system/gems/bundler-2.4.20/lib/bundler/installer/standalone.rb:32:in `map'
D:/a/rubygems/rubygems/bundler/tmp/2/gems/system/gems/bundler-2.4.20/lib/bundler/installer/standalone.rb:32:in `block in paths'
```
I'm fixing this by falling back to using a full path in this case.
This was caught by a failing spec, so I'm not adding new specs.
https://github.com/rubygems/rubygems/commit/3cb9b9ab7a
|
|
Rails uses IPAddr#include? to evaluate what it should use as the
client's remote ip by filtering potential ips against a trusted list
of internal ips. In a _very_ minimal app, #include? was showing up in
a profile as ~1% of request time.
The issue is that #include? was converting itself and the other value
passed in to ranges of IPAddr. This mean as a worst case (where other is
a non-IPAddr, like a String) then there would be 5 IPAddr instances
created (other -> IPAddr, and two each for the conversions to ranges).
However, wrapping the begin and end values as IPAddr is not needed
because they are necessarily fixed addresses already.
This patch extracts the logic for getting the begin_addr and end_addr
from the #to_range method so that they can be used in #include? without
having to instantiate so many IPAddr.
Benchmark:
```ruby
net1 = IPAddr.new("192.168.2.0/24")
net2 = IPAddr.new("192.168.2.100")
net3 = IPAddr.new("192.168.3.0")
net4 = IPAddr.new("192.168.2.0/16")
Benchmark.ips do |x|
x.report("/24 includes address") { net1.include? net2 }
x.report("/24 not includes address") { net1.include? net3 }
x.report("/16 includes /24") { net4.include? net1 }
x.report("/24 not includes /16") { net1.include? net4 }
x.compare!
end
```
Before:
```
Comparison:
/24 not includes /16: 175041.3 i/s
/24 not includes address: 164933.2 i/s - 1.06x (± 0.00) slower
/16 includes /24: 163881.9 i/s - 1.07x (± 0.00) slower
/24 includes address: 163558.4 i/s - 1.07x (± 0.00) slower
```
After:
```
Comparison:
/24 not includes /16: 2588364.9 i/s
/24 not includes address: 1474650.7 i/s - 1.76x (± 0.00) slower
/16 includes /24: 1461351.0 i/s - 1.77x (± 0.00) slower
/24 includes address: 1425463.5 i/s - 1.82x (± 0.00) slower
```
|
|
https://github.com/ruby/yarp/commit/e855bf415c
|
|
https://github.com/ruby/prettyprint/commit/f1f583c827
|
|
(https://github.com/ruby/irb/pull/719)
https://github.com/ruby/irb/commit/3cedc5cb62
|
|
https://github.com/ruby/pstore/commit/3f328a1e0e
|
|
```
==> memprof.after.txt <==
Total allocated: 673.08 kB (7644 objects)
Total retained: 107.35 kB (1018 objects)
==> memprof.before.txt <==
Total allocated: 739.12 kB (9140 objects)
Total retained: 138.61 kB (1695 objects)
```
Savings will scale by the number of lines in the lockfile
https://github.com/rubygems/rubygems/commit/f6abf4439c
|
|
Preferring instead to spawn the subprocess in the correct directory
https://github.com/rubygems/rubygems/commit/ad5abd6a45
|
|
We were setting the wrong `extension_dir` for git specs stubs
Additionally, the call to `self.extension_dir` was loading the
remote spec, which was avoidable since the stub had an extension dir
(and in fact its #gem_build_complete_path does exactly what we want
anyway)
Finally, now set the base_dir when loading the remote_spec from a
stub specification, since the git source sets the base dir for stubs
based on where the spec _will_ be installed to, and we want to preserve
that so the base_dir for the loaded spec & the stub are the same
https://github.com/rubygems/rubygems/commit/a94acb465b
|
|
Specifically, this will have frozen string literals for:
- Gem platform tuple entries
- Gem::Version strings
- Gem::Specification#installed_by_version
- Dependency requirement strings
https://github.com/rubygems/rubygems/commit/6195da5bdb
|
|
Reduces allocations in a bundle install --full-index by an order of magnitude
Main wins are (a) getting rid of exessive string allocations for exception message stack
(b) Avoiding hash allocations caused by kwargs for #initialize
(c) avoid using unpack to do bit math, its easy enough to do by hand
(d) special case the most common elements so they can be read without an allocation
(e) avoid string allocations every time a symbol->string lookup is done by using symbol#name
https://github.com/rubygems/rubygems/commit/7d2ee51402
|
|
This commit changes printing of locations to use the format
(start_line,start_column)-(end_line,end_column) instead of using
offsets.
https://github.com/ruby/yarp/commit/c078696e22
|
|
https://github.com/rubygems/rubygems/commit/6c92ba2ba3
|
|
Tested with:
`ruby -e 'trap("INT") { exit 1 }; TZ=%w[UTC +0000 -0000]; RUBY=%w[ruby-2.7 ruby-3.2.2 jruby-9.4 truffleruby-22 truffleruby-23]; TZ.product(RUBY).each { |t, r| puts ?**120, "TZ=#{t} RUBY=#{r}", "*"*120; system({"TZ"=>t,"RUBY"=>r}, *ARGV) }' zsh -lic 'chruby $RUBY; ruby -vw -Ilib test/rubygems/test_gem_safe_marshal.rb --verbose=progress'`
https://github.com/rubygems/rubygems/commit/6192005afb
|
|
https://github.com/rubygems/rubygems/commit/8065530d43
|
|
https://github.com/rubygems/rubygems/commit/63b422b71a
|
|
https://github.com/rubygems/rubygems/commit/3303957286
|
|
https://github.com/rubygems/rubygems/commit/34d096e38a
|
|
rubygems.org
https://github.com/rubygems/rubygems/commit/4f51741cc6
|
|
https://github.com/rubygems/rubygems/commit/6ec518c563
|
|
https://github.com/rubygems/rubygems/commit/2a4d0a44b0
|
|
safely load permitted classes/symbols
https://github.com/rubygems/rubygems/commit/7e4478fe73
|
|
* Add $YARP_SERIALIZE_ONLY_SEMANTICS_FIELDS to control where to serialize location fields at templating time,
this way there is no overhead for either case and nothing to check at runtime.
* Add a byte in the header to indicate whether location fields are included as expected.
* Fixes https://github.com/ruby/yarp/issues/807
* Simplify the build-java CI job now that the FFI backend is available so JRuby can serialize.
* Support keeping some location fields which are still needed until there is a replacement
https://github.com/ruby/yarp/commit/fc5cf2df12
|
|
Respect the current indentation
https://github.com/ruby/yarp/commit/068333ef49
|