Apparently, Microsoft applied for a patent on "safe" transitive immutability for object types. I use "safe" to summarize a useful feature: even though object constructors can set fields of an immutable object, the mutable reference to this cannot escape the constructor and become visible to other code. I say "transitive" because contained objects are immutable even though their types would be mutable.
-
On http://patents.stackexchange.com/q/10128/6081, people asked for prior art on this patent application. The question listed some obvious answers, including functional languages (ML, Scala, Rust), but most seem not to be for transitive immutability (except D), or not necessarily to be safe. IANAL, but it seems to me that prior art must match pretty tightly with the content of the patent claims, so one would probably need prior art on a combination with both features.
-
A curiosity: Is is common to apply (and get) patents for PL features? As a researcher in the field, should I worry about patent infringement?
Patent abstract:
A language extension that advances safety in system programming in that an entire type may be declared to be immutable in the case in which all instances of that type are immutable. The immutable type declaration automatically causes any instances of that type to be treated as immutable, and automatically causes all directly or indirectly reachable members (e.g., fields, methods, properties) of the instance to also be treated as immutable. Furthermore, any construction time reference that allows for field assignment of the instance is not permitted to survive beyond the point at which the instance becomes accessible to its creator. Accordingly, this instance, and any other instance of that same type, will be immutable from the very time of construction. The ability to classify all such instances as immutable is beneficial as the immutable characteristic permits actions that normally would not be allowed due to resource access safety.
Recent comments
26 weeks 6 days ago
26 weeks 6 days ago
26 weeks 6 days ago
49 weeks 14 hours ago
1 year 1 week ago
1 year 2 weeks ago
1 year 2 weeks ago
1 year 5 weeks ago
1 year 10 weeks ago
1 year 10 weeks ago