From: eregontp@... Date: 2017-10-20T23:13:57+00:00 Subject: [ruby-core:83427] [Ruby trunk Feature#13983] Rational and Complex should be frozen Issue #13983 has been updated by Eregon (Benoit Daloze). Target version set to 2.5 nobu (Nobuyoshi Nakada) wrote: > Applied in changeset trunk|r60214. Thank you nobu for the patch! I'll write some specs for it :) ---------------------------------------- Feature #13983: Rational and Complex should be frozen https://bugs.ruby-lang.org/issues/13983#change-67393 * Author: Eregon (Benoit Daloze) * Status: Closed * Priority: Normal * Assignee: * Target version: 2.5 ---------------------------------------- Since they basically are value types. They also do not support #dup currently: > 1r.dup TypeError: can't copy Rational from `initialize_copy' > 1i.dup TypeError: can't copy Complex from `initialize_copy' Changing their value can only be considered a semantic bug. So, let's follow true/false/nil/Integer/Float and friends? Not sure what #6538 was about but I think Marshal can just freeze after setting the values. It's slightly incompatible if people do rational.instance_variable_set(:@foo, 1) or so, but no more than on other now-frozen Numeric types and this kind of code seems highly undesirable. -- https://bugs.ruby-lang.org/ Unsubscribe: