From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2023-05-08T09:15:51+00:00 Subject: [ruby-core:113418] [Ruby master Misc#19597] Process.argv0 returns the same mutable String Issue #19597 has been updated by nobu (Nobuyoshi Nakada). It's commit:8c9a453f2d8a. `ruby_set_script_name` makes an unfrozen copy. ---------------------------------------- Misc #19597: Process.argv0 returns the same mutable String https://bugs.ruby-lang.org/issues/19597#change-102992 * Author: andrykonchin (Andrew Konchin) * Status: Open * Priority: Normal ---------------------------------------- `Process.argv0` returns a name of the script being executed. But it seems it's always the same object, that can be modified and this change will be visible to the consequent `Process.argv0` calls. It makes sense to return a frozen String that cannot be modified. `$0` initial value equals a value returned by `Process.argv0` so `$0` by default also could be a frozen String. Example: ```ruby puts "Object id:" p Process.argv0.object_id p Process.argv0.object_id puts "Value before modification:" p Process.argv0 Process.argv0.upcase! puts "Value after modification:" p Process.argv0 puts "$0 after modification:" p $0 ``` It will output: ``` Object id: 60 60 Value before modification: "argv0.rb" Value after modification: "ARGV0.RB" $0 after modification: "ARGV0.RB" ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/