Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rubygem-zeitwerk for
openSUSE:Factory checked in at 2021-12-29 21:10:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-zeitwerk (Old)
and /work/SRC/openSUSE:Factory/.rubygem-zeitwerk.new.2520 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-zeitwerk"
Wed Dec 29 21:10:59 2021 rev:10 rq:943007 version:2.5.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-zeitwerk/rubygem-zeitwerk.changes
2021-12-22 20:19:09.743877867 +0100
+++
/work/SRC/openSUSE:Factory/.rubygem-zeitwerk.new.2520/rubygem-zeitwerk.changes
2021-12-29 21:11:30.206312499 +0100
@@ -1,0 +2,11 @@
+Wed Dec 29 01:18:19 UTC 2021 - Manuel Schnitzer <[email protected]>
+
+- updated to version 2.5.2
+
+ * When `Module#autoload` triggers the autovivification of an implicit
+ namespace, `$LOADED_FEATURES` now gets the correspoding directory
+ pushed. This is just a tweak to Zeitwerk's `Kernel#require` decoration.
+ That way it acts more like the original, and cooperates better with
+ other potential `Kernel#require` wrappers, like Bootsnap's.
+
+-------------------------------------------------------------------
Old:
----
zeitwerk-2.5.1.gem
New:
----
zeitwerk-2.5.2.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-zeitwerk.spec ++++++
--- /var/tmp/diff_new_pack.pU3yp3/_old 2021-12-29 21:11:30.670312881 +0100
+++ /var/tmp/diff_new_pack.pU3yp3/_new 2021-12-29 21:11:30.674312884 +0100
@@ -24,7 +24,7 @@
#
Name: rubygem-zeitwerk
-Version: 2.5.1
+Version: 2.5.2
Release: 0
%define mod_name zeitwerk
%define mod_full_name %{mod_name}-%{version}
++++++ zeitwerk-2.5.1.gem -> zeitwerk-2.5.2.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md 2021-10-21 00:00:32.000000000 +0200
+++ new/README.md 2021-12-27 13:00:43.000000000 +0100
@@ -50,8 +50,8 @@
- [Rules of thumb](#rules-of-thumb)
- [Debuggers](#debuggers)
- [debug.rb](#debugrb)
- - [Break](#break)
- [Byebug](#byebug)
+ - [Break](#break)
- [Pronunciation](#pronunciation)
- [Supported Ruby versions](#supported-ruby-versions)
- [Testing](#testing)
@@ -810,7 +810,9 @@
end
```
-That file does not define a constant path after the path name and you need to
tell Zeitwerk:
+`Kernel` is already defined by Ruby so the module cannot be autoloaded. Also,
that file does not define a constant path after the path name. Therefore,
Zeitwerk should not process it at all.
+
+The extension can still coexist with the rest of the project, you only need to
tell Zeitwerk to ignore it:
```ruby
kernel_ext = "#{__dir__}/my_gem/core_ext/kernel.rb"
@@ -826,6 +828,14 @@
loader.setup
```
+Now, that file has to be loaded manually with `require` or `require_relative`:
+
+```ruby
+require_relative "my_gem/core_ext/kernel"
+```
+
+and you can do that anytime, before configuring the loader, or after
configuring the loader, does not matter.
+
<a id="markdown-use-case-the-adapter-pattern"
name="use-case-the-adapter-pattern"></a>
#### Use case: The adapter pattern
@@ -973,17 +983,19 @@
<a id="markdown-debugrb" name="debugrb"></a>
#### debug.rb
-The new [debug.rb](https://github.com/ruby/debug) gem and Zeitwerk seem to be
compatible, as far as I can tell. This is the new debugger that is going to
ship with Ruby 3.1.
+The new [debug.rb](https://github.com/ruby/debug) gem and Zeitwerk are mostly
compatible. This is the new debugger that is going to ship with Ruby 3.1.
-<a id="markdown-break" name="break"></a>
-#### Break
-
-Zeitwerk works fine with [@gsamokovarov](https://github.com/gsamokovarov)'s
[Break](https://github.com/gsamokovarov/break) debugger.
+There's one exception, though: Due to a technical limitation of tracepoints,
explicit namespaces are not autoloaded while expressions are evaluated in the
REPL. See [ruby/debug#408](https://github.com/ruby/debug/issues/408).
<a id="markdown-byebug" name="byebug"></a>
#### Byebug
-Zeitwerk and [Byebug](https://github.com/deivid-rodriguez/byebug) are
incompatible, classes or modules that belong to [explicit
namespaces](#explicit-namespaces) are not autoloaded inside a Byebug session.
See [this
issue](https://github.com/deivid-rodriguez/byebug/issues/564#issuecomment-499413606)
for further details.
+Zeitwerk and [Byebug](https://github.com/deivid-rodriguez/byebug) have a
similar edge incompatibility.
+
+<a id="markdown-break" name="break"></a>
+#### Break
+
+Zeitwerk works fine with [@gsamokovarov](https://github.com/gsamokovarov)'s
[Break](https://github.com/gsamokovarov/break) debugger.
<a id="markdown-pronunciation" name="pronunciation"></a>
## Pronunciation
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/zeitwerk/kernel.rb new/lib/zeitwerk/kernel.rb
--- old/lib/zeitwerk/kernel.rb 2021-10-21 00:00:32.000000000 +0200
+++ new/lib/zeitwerk/kernel.rb 2021-12-27 13:00:43.000000000 +0100
@@ -24,22 +24,23 @@
def require(path)
if loader = Zeitwerk::Registry.loader_for(path)
if path.end_with?(".rb")
- zeitwerk_original_require(path).tap do |required|
- loader.on_file_autoloaded(path) if required
- end
+ required = zeitwerk_original_require(path)
+ loader.on_file_autoloaded(path) if required
+ required
else
loader.on_dir_autoloaded(path)
+ $LOADED_FEATURES << path
true
end
else
- zeitwerk_original_require(path).tap do |required|
- if required
- abspath = $LOADED_FEATURES.last
- if loader = Zeitwerk::Registry.loader_for(abspath)
- loader.on_file_autoloaded(abspath)
- end
+ required = zeitwerk_original_require(path)
+ if required
+ abspath = $LOADED_FEATURES.last
+ if loader = Zeitwerk::Registry.loader_for(abspath)
+ loader.on_file_autoloaded(abspath)
end
end
+ required
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/zeitwerk/loader.rb new/lib/zeitwerk/loader.rb
--- old/lib/zeitwerk/loader.rb 2021-10-21 00:00:32.000000000 +0200
+++ new/lib/zeitwerk/loader.rb 2021-12-27 13:00:43.000000000 +0100
@@ -1,7 +1,6 @@
# frozen_string_literal: true
require "set"
-require "securerandom"
module Zeitwerk
class Loader
@@ -124,13 +123,7 @@
# @sig () -> void
def unload
mutex.synchronize do
- # We are going to keep track of the files that were required by our
- # autoloads to later remove them from $LOADED_FEATURES, thus making
them
- # loadable by Kernel#require again.
- #
- # Directories are not stored in $LOADED_FEATURES, keeping track of
files
- # is enough.
- unloaded_files = Set.new
+ abspaths_of_unloaded_crefs = Set.new
autoloads.each do |abspath, (parent, cname)|
if parent.autoload?(cname)
@@ -140,7 +133,7 @@
# and the constant path would escape unloadable_cpath? This is just
# defensive code to clean things up as much as we are able to.
unload_cref(parent, cname)
- unloaded_files.add(abspath) if ruby?(abspath)
+ abspaths_of_unloaded_crefs.add(abspath)
end
end
@@ -151,10 +144,14 @@
end
unload_cref(parent, cname)
- unloaded_files.add(abspath) if ruby?(abspath)
+ abspaths_of_unloaded_crefs.add(abspath)
end
- unless unloaded_files.empty?
+ unless abspaths_of_unloaded_crefs.empty?
+ # We remove these abspaths from $LOADED_FEATURES because, otherwise,
+ # `require`'s idempotence would prevent newly defined autoloads from
+ # loading them again.
+ #
# Bootsnap decorates Kernel#require to speed it up using a cache and
# this optimization does not check if $LOADED_FEATURES has the file.
#
@@ -166,7 +163,7 @@
# Rails applications may depend on bootsnap, so for unloading to work
# in that setting it is preferable that we restrict our API choice to
# one of those methods.
- $LOADED_FEATURES.reject! { |file| unloaded_files.member?(file) }
+ $LOADED_FEATURES.reject! { |file|
abspaths_of_unloaded_crefs.member?(file) }
end
autoloads.clear
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/zeitwerk/version.rb new/lib/zeitwerk/version.rb
--- old/lib/zeitwerk/version.rb 2021-10-21 00:00:32.000000000 +0200
+++ new/lib/zeitwerk/version.rb 2021-12-27 13:00:43.000000000 +0100
@@ -1,5 +1,5 @@
# frozen_string_literal: true
module Zeitwerk
- VERSION = "2.5.1"
+ VERSION = "2.5.2"
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2021-10-21 00:00:32.000000000 +0200
+++ new/metadata 2021-12-27 13:00:43.000000000 +0100
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: zeitwerk
version: !ruby/object:Gem::Version
- version: 2.5.1
+ version: 2.5.2
platform: ruby
authors:
- Xavier Noria
autorequire:
bindir: bin
cert_chain: []
-date: 2021-10-20 00:00:00.000000000 Z
+date: 2021-12-27 00:00:00.000000000 Z
dependencies: []
description: |2
Zeitwerk implements constant autoloading with Ruby semantics. Each gem