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 2022-01-03 10:49:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-zeitwerk (Old) and /work/SRC/openSUSE:Factory/.rubygem-zeitwerk.new.1896 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-zeitwerk" Mon Jan 3 10:49:45 2022 rev:11 rq:943427 version:2.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-zeitwerk/rubygem-zeitwerk.changes 2021-12-29 21:11:30.206312499 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-zeitwerk.new.1896/rubygem-zeitwerk.changes 2022-01-03 10:50:32.139606094 +0100 @@ -1,0 +2,9 @@ +Sat Jan 1 18:12:41 UTC 2022 - Manuel Schnitzer <mschnit...@suse.com> + +- updated to version 2.5.3 + + * The change introduced in 2.5.2 implied a performance regression + that was particularly dramatic in Ruby 3.1. We'll address + [#198](https://github.com/fxn/zeitwerk/issues/198) in a different way. + +------------------------------------------------------------------- Old: ---- zeitwerk-2.5.2.gem New: ---- zeitwerk-2.5.3.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-zeitwerk.spec ++++++ --- /var/tmp/diff_new_pack.CpJ3kL/_old 2022-01-03 10:50:32.603606271 +0100 +++ /var/tmp/diff_new_pack.CpJ3kL/_new 2022-01-03 10:50:32.607606273 +0100 @@ -1,7 +1,7 @@ # # spec file for package rubygem-zeitwerk # -# Copyright (c) 2021 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2022 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-zeitwerk -Version: 2.5.2 +Version: 2.5.3 Release: 0 %define mod_name zeitwerk %define mod_full_name %{mod_name}-%{version} ++++++ zeitwerk-2.5.2.gem -> zeitwerk-2.5.3.gem ++++++ 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-12-27 13:00:43.000000000 +0100 +++ new/lib/zeitwerk/kernel.rb 2021-12-30 19:06:32.000000000 +0100 @@ -29,7 +29,6 @@ required else loader.on_dir_autoloaded(path) - $LOADED_FEATURES << path true end else 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-12-27 13:00:43.000000000 +0100 +++ new/lib/zeitwerk/loader.rb 2021-12-30 19:06:32.000000000 +0100 @@ -123,7 +123,13 @@ # @sig () -> void def unload mutex.synchronize do - abspaths_of_unloaded_crefs = Set.new + # 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 autoloads.each do |abspath, (parent, cname)| if parent.autoload?(cname) @@ -133,7 +139,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) - abspaths_of_unloaded_crefs.add(abspath) + unloaded_files.add(abspath) if ruby?(abspath) end end @@ -144,14 +150,10 @@ end unload_cref(parent, cname) - abspaths_of_unloaded_crefs.add(abspath) + unloaded_files.add(abspath) if ruby?(abspath) end - 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. - # + unless unloaded_files.empty? # Bootsnap decorates Kernel#require to speed it up using a cache and # this optimization does not check if $LOADED_FEATURES has the file. # @@ -163,7 +165,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| abspaths_of_unloaded_crefs.member?(file) } + $LOADED_FEATURES.reject! { |file| unloaded_files.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-12-27 13:00:43.000000000 +0100 +++ new/lib/zeitwerk/version.rb 2021-12-30 19:06:32.000000000 +0100 @@ -1,5 +1,5 @@ # frozen_string_literal: true module Zeitwerk - VERSION = "2.5.2" + VERSION = "2.5.3" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2021-12-27 13:00:43.000000000 +0100 +++ new/metadata 2021-12-30 19:06:32.000000000 +0100 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: zeitwerk version: !ruby/object:Gem::Version - version: 2.5.2 + version: 2.5.3 platform: ruby authors: - Xavier Noria autorequire: bindir: bin cert_chain: [] -date: 2021-12-27 00:00:00.000000000 Z +date: 2021-12-30 00:00:00.000000000 Z dependencies: [] description: |2 Zeitwerk implements constant autoloading with Ruby semantics. Each gem