Topic: immutable files and data

topics > computer science > operating system > Group: file system

configuration management
data as a named set of data objects
definition languages
flavor analysis and typestates for supplementary type checking
initialized constants
no need for replacement
no need for variables
non-primitive values
object modification
object-oriented objects
persistent data structure
read-only and write-once file systems
replicated data
shared objects
static single assignment; SSA
temporal database
unique numeric names as surrogates
value as an object
version control
Subtopic: immutability & consistency -- naming up

Quote: with immutability, consistency is a naming problem; consistency via domain relative addressing without serialization (more concurrency) [»walpJ6_1988]
Quote: immutable files are easy to cache since no consistency requirement [»giffDK3_1988]
Quote: consistency in immutable systems is a (named) consistent group of versions of related conceptual objects [»walpJ6_1988]
Quote: while objects are not immutable, a version is immutable; change version whenever change object [»lampBW10_1983]
Quote: control aliasing through read-only types with read-only methods; does not change the transitive state of an object [»knieG5_2001]

Subtopic: immutable versions up

Quote: time domain addressing for transactions in immutable systems; two timestamps per version for created and last read [»walpJ6_1988]
Quote: Vesta implements immutable and mutable directories; an immutable directory holds versioned, immutable source files [»heydA_2006]
Quote: a Vesta repository stores every version of every file as immutable sources in a hierarchical name space; the path includes a version name or number

Subtopic: communicating immutable objects up

Quote: synchronous communication of immutable objects simplifies reasoning about message ordering; more efficient and easier to verify than buffered channels [»kumaS6_2001]
Quote: increment reference count instead of sending deep copies over a channel; requires immutable objects [»kumaS6_2001]
Quote: ESP transmits deep copies of immutable objects by incrementing deep reference counts; keeps memory allocation local to a process [»kumaS6_2002]

Subtopic: reference immutability up

Quote: Javari type system for expressing and enforcing immutability constraints; distinguishes assignability from mutability; supports generic types, multi-dim arrays, reflection, serialization [»tschMS10_2005]
Quote: Javari guarantees that a read-only reference cannot be used to reassign any field in the object's protected, abstract state [»tschMS10_2005]
Quote: writing new code is natural with reference immutability; helped define interfaces; easier than annotating existing code [»birkA10_2004]
Quote: type system for reference immutability; i.e., reachable state not modified through the reference; dynamic checking for downcasts; parameterization [»birkA10_2004]
Quote: if a return result is readonly, can safely return the representation type; e.g., the array for an IntSet [»birkA10_2004]
Quote: reference immutability is more effective than object immutability; avoids performance cost of immutable objects [»birkA10_2004]
Quote: with parent and child links, transitive immutability may be too strong; one reference can make the entire container immutable; e.g., a UI component [»birkA10_2004]

Subtopic: assignability vs. mutability up

Quote: a field inherits its assignability and mutability from the field's references; mutability is transitive by default [»tschMS10_2005]

Subtopic: readonly class up

Quote: in Javari every class creates two types, the class and its readonly subset [»tschMS10_2005]

Subtopic: readonly annotation up

Quote: read-only does not fully express the idea of an array that is owned by a unique pointer, an immutable array, or an array for copying only [»boylJ7_2005]
Quote: read-only should be the default type annotation [»tschMS10_2005]
Quote: an assignable field may be reassigned through a read-only reference; e.g., for recording a hash code [»tschMS10_2005]
Quote: a mutable field may be changed through a read-only reference; for example, 'log' can be mutated within a read-only method
Quote: use 'readonly' for immutabile constraints and 'mutable' for supplementary fields and explicit downcasts; a mutable field is not part of the abstract state [»birkA10_2004]
Quote: a mutable, readonly field may be assigned to a readonly object; a mutable, final field may be modified but not assigned; a read-only, final field may not be changed [»birkA10_2004]
Quote: added readonly annotations at 1500 lines/hour; found 19 errors, e.g., sorting the input array [»birkA10_2004]

Subtopic: const, read-only methods up

Quote: a 'const' member function can read but not write its object [»stroB_1991]
Quote: Guava methods are read or update; by default, read methods and update constructors [»bacoDF10_2000]
Quote: Ruby uses a ! suffix to indicate methods that modify their object, and ? for predicates [»thomD1_2001]

Subtopic: observational exposure up

Quote: disallow observational exposure of a read-only representation; makes the representation part of the abstract interface and allows concurrency errors [»boylJ7_2005]

Subtopic: immutable parameters up

Quote: pass values by reference when source is dead or when neither copy will be updated; e.g., if value has no update methods [»bacoDF10_2000]

Subtopic: cast away const up

Quote: a member function can "cast away const" if the object is modified but it appears constant to its users; e.g., caching values, maintaining statistics, updating use counts
Quote: for read-only types, use 'mutable' for variables and return values that are not part of the conceptual state; e.g., debugging output, counters, internal caches [»knieG5_2001]
Quote: use 'mutable' to downcast a read-only reference to a non-read-only reference; inserts run-time checks to enforce immutability [»birkA10_2004]

Subtopic: immutable files up

Quote: in Cedar, all remote files are immutable; replaces cache consistency problem with version control [»giffDK3_1988]
Quote: with immutable files, the file is not a container of variable information [»giffDK3_1988]
Quote: immutable files--the name can not be reused and its contents can't be altered
Quote: Cedar atomically adds a file to a file server (transfer, new version id, and directory update); implemented with mutual exclusion [»giffDK3_1988]
Quote: Amoeba's bullet server stores immutable files with read, create, and delete operations; transferred as a unit [»vanrR10_1988]
Quote: Amoeba's bullet server deletes old versions when not in the file directory of name, capability pairs; garbage collection
Quote: Amoeba's directory server provides lazy, automatic replication of immutable files; copies can be regenerated if needed [»taneAS12_1990]

Subtopic: immutable class, thread-safe up

Quote: distinguish immutable classes, thread-safe classes, conditionally thread-safe, thread-compatible, and thread-hostile classes [»blocJ_2001]

Subtopic: immutable objects up

Quote: distinguish an array of read-only references from a read-only array [»birkA10_2004]
Quote: Modeler uses immutable objects with unique names; allows name to be used in place of text [»lampBW6_1983]
Quote: Modeler uses uniquely named, immutable objects which contain the names of other objects [»lampBW6_1983]
Quote: Modeler uses immutable objects with unique names; allows name to be used in place of text [»lampBW6_1983]
Quote: Cosmos has immutable objects that are transformed into new objects by atomic actions [»walpJ6_1988]
Quote: CLU stores small immutable objects in variables, e.g., integers and Booleans; programs can not detect the lack of sharing [»liskB_1996]

Subtopic: immutable strings -- rope up

Quote: desired properties for strings: immutable strings, long strings, files as strings, efficient non-destructive concatenation and substring operations
Quote: a Cedar rope is an immutable, garbage-collected, text string; widely used in all system levels [»swinDC7_1985]
Quote: Cedar ropes are immutable, garbage collected, strings; same as a value [»teitW3_1985]
Quote: Cedar's ropes include replacement nodes, function nodes, substring nodes, traversal by applying user-defined function to each character [»boehHJ12_1995]
Quote: Cedar uses ropes a lot; most common object, largest total size, many rope interfaces, edit file as a rope, competitive performance [»boehHJ12_1995]
Quote: think of an array is an immutable string of integers; no different than an integer as a string of bits [»ackeWB_1979]
Quote: efficient string concatenation implies data sharing and automatic garbage collection [»boehHJ12_1995]

Subtopic: immutable metadata up

Quote: UNIX file system described by a replicated, immutable superblock [»mckuMK8_1984]

Subtopic: write-once up

Quote: for write-once fields, the commit/reconcile/fence (CRF) memory model needs monitor-like locks and a freeze op

Subtopic: problems with mutable objects up

Quote: avoid deep copies by moving mutable values

Related Topics up

Topic: archives (19 items)
Topic: configuration management (25 items)
Topic: data as a named set of data objects (22 items)
Topic: definition languages (3 items)
Topic: file (22 items)
Topic: flavor analysis and typestates for supplementary type checking (68 items)
Topic: initialized constants (12 items)
Topic: no need for replacement (4 items)
Topic: no need for variables (13 items)
Topic: non-primitive values (11 items)
Topic: object modification (10 items)
Topic: object-oriented objects (39 items)
Topic: persistent data structure (37 items)
Topic: read-only and write-once file systems (8 items)
Topic: replicated data (51 items)
Topic: shared objects (13 items)
Topic: static single assignment; SSA (19 items)
Topic: strings (13 items)
Topic: temporal database (25 items)
Topic: timestamps (19 items)
Topic: unique numeric names as surrogates (67 items)
Topic: value as an object (29 items)
Topic: version control
(34 items)

Updated barberCB 10/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.