From: "UlyssesZhan (Ulysses Zhan) via ruby-core" Date: 2026-11-03T00:55:43+00:00 Subject: [ruby-core:127304] [Ruby Bug#22498] Proc#== does not return true for the same lexical code block Issue #22498 has been reported by UlyssesZhan (Ulysses Zhan). ---------------------------------------- Bug #22498: Proc#== does not return true for the same lexical code block https://bugs.ruby-lang.org/issues/22498 * Author: UlyssesZhan (Ulysses Zhan) * Status: Open * Backport: 3.3: UNKNOWN, 3.4: UNKNOWN, 4.0: UNKNOWN ---------------------------------------- [Some context.](https://bugs.ruby-lang.org/issues/4559#note-13) The current documentation of `Proc#==` in Ruby 4 says `self == other` "returns whether `self` and `other` were created from the same code block." However, the following code shows otherwise: ```ruby def f = proc { 1 } f == f # => false ``` Note that here we have both `f` returning the code block from the same Ruby code, but they are considered different. A more reliable way to determine the equalness of procs, although only working in CRuby, is ```ruby def f = proc { 1 } RubyVM::InstructionSequence.of(f) == RubyVM::InstructionSequence.of(f) # => true ``` I don't think the current behavior is necessarily wrong, but the documentation must be misleading if the current behavior is intended. -- 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/lists/ruby-core.ml.ruby-lang.org/