The locale attribute being mutable has caused additional code, complexity, and bugs. The problem is that it is a rw attribute that sets a dozen or so other rw attributes. It's difficult to maintain these inherited attributes that should be lazy, publicly writable, and change based on changes to locale. The solution is to change locale from rw to ro. This is backward-incompatible, but there are no known real-world uses of a mutable locale other than convenience in unit tests and examples.
Publicly announce upcoming deprecation of the locale method used as a setter and request feedback.
Document the deprecation in the next release of CLDR::Number.
Warn when mutating the locale in a further release.
Finally, change the locale from rw to ro and remove related code.
The
locale
attribute being mutable has caused additional code, complexity, and bugs. The problem is that it is arw
attribute that sets a dozen or so otherrw
attributes. It's difficult to maintain these inherited attributes that should be lazy, publicly writable, and change based on changes tolocale
. The solution is to changelocale
fromrw
toro
. This is backward-incompatible, but there are no known real-world uses of a mutable locale other than convenience in unit tests and examples.locale
method used as a setter and request feedback.rw
toro
and remove related code.Comments and suggestions highly appreciated!