From: email@... Date: 2016-01-25T19:49:50+00:00 Subject: [ruby-core:73440] [CommonRuby - Feature #12021] [Open] Final instance variables Issue #12021 has been reported by Petr Chalupa. ---------------------------------------- Feature #12021: Final instance variables https://bugs.ruby-lang.org/issues/12021 * Author: Petr Chalupa * Status: Open * Priority: Normal * Assignee: ---------------------------------------- Having a final instance variables in Ruby will allow: to construct thread-save immutable objects without additional synchronisation on instance variable reading ~~~ ruby # Immutable and thread-safe class TreeNode attr :left, :right, :value, final: true attr_reader :left, :right, :value def initialize(left, right, value) @left, @right, @value = left, right, value end end ~~~ And to fix the an issue shown in the following example: ~~~ ruby attr :lock, final: true def initialize @lock = Mutex.new # ... end def a_protected_method @lock.synchronize do # ... end end ~~~ The issue lies in initialization of instance variable `@lock` which is not ensured to be visible in subsequent call to `a_protected_method` method on a different thread. Summary can be found in this document https://docs.google.com/document/d/1c07qfDArx0bhK9sMr24elaIUdOGudiqBhTIRALEbrYY/edit#. The aggregating issue of this effort can be found [here](https://bugs.ruby-lang.org/issues/12019). -- https://bugs.ruby-lang.org/ Unsubscribe: