
Changes to Chapel Language:
CLOSED SJD    eliminated sequences
       - in the future, a standard List library will provide similar functionality
       - removed # and #= operators, since they were supported for sequences
       - removed support for sequence literals; use tuples in their place
         e.g., var A: [1..3] real = (0.1, 2.3, 4.5);
       - removed support for casting sequences to tuples and tuples to sequences
       - iterators in an expression context now result in a 1D, 1-based array
         e.g., "iterator foo() { ... }  var A = foo();" creates a 1D array over [1..]
CLOSED    added "range" type to language to replace old "arithmetic sequence" concept
       e.g., "lo..hi" or "lo..hi by str" are ranges
       - open interval syntax supported for ranges
         e.g., "[lo..hi)" is equivalent to lo..hi-1
       - +, -, *, / operators on range/scalar combinations
CLOSED    discuss stridable parameter for ranges 
CLOSED and domains
CLOSED    added support for partially and fully unbounded ranges ("lo..", "..hi", "..")

CLOSED SJD added support for creating array aliases
       e.g., "var Amid => A[2..n-1, 2..n-1];" creates an alias, Amid, to the slice
CLOSED DMI standard math, bitwise, and comparison operators for tuples
       e.g., "(i,j) + (1,-1)" yields "(i+1, j-1)"

CLOSED MBH    swap operator: <=>
       e.g., "a <=> b" is semantically equivalent to "const t = b; b = a; a = t;"
CLOSED better support for writing output
       - enabled strings to be written to using a write() method
         e.g., var s: string;  s.write("x is: ", x);
       - added a Writer class that enables user classes to be written to
       - writeThis() methods that define how a type should be written to a Writer
CLOSED added minloc and maxloc reductions that return min/max value and index
       e.g., var (minVal, minInd) = minloc reduce (A, A.domain);
CLOSED changed arithmetic domain range access from D(<dim#>) to D.dim(<dim#>)
       e.g., var rows = D.dim(1);
CLOSED arithmetic domains and arrays support low and high methods that return bounds
       e.g., var loInd = A.low();
CLOSED support for range, domain, and array slicing via bounded or unbounded ranges
       e.g., "A[2.., ..n]" is equivalent to "A[2..A.dim(1).high, A.dim(2).low..n]"
CLOSED SJD    support for promoting casts across array elements
       e.g., var x: [1..4] real, y: [1..4] int;  y = x:int;
CLOSED SJD    added support for param functions that support compile-time evaluation
       e.g., "def square(param x) param { return x**2; }  param n2 = square(14);"
CLOSED SJD    support for default values for param members of classes
       e.g., class C { param bitWidth = 32; ... }
CLOSED SJD    support for functions without parentheses
       e.g., def f { writeln("In function f"); }
       - allow "main" function to be declared with or without parentheses
         e.g., def main { writeln("Program will start here"); ... }
CLOSED MBH    allow "<index> in" to be elided in for/forall loops/expressions
       e.g., "for 1..n { ... }", "var A = [1..n] 0.0;"
CLOSED DMI multiple modules listed within a single "use" statement

Newly Implemented Features:
CLOSED support for sparse domains/arrays
       - assignment of aggregate index expressions to sparse domains
       - accumulation of indices into sparse domains using +=
CLOSED enumerated domains and arrays
CLOSED SJD    support for nested classes, records, and iterators
CLOSED SJD    serial statement
CLOSED (MBH) added support for using "_" to ignore elements during tuple destructuring
       e.g., var t: (int, real) = ...;   (t1, _) = t;
CLOSED DMI nested tuple destructuring in variable decls/formal args
CLOSED DMI support for config params of primitive and enumerated types
CLOSED DMI initial support for accessing module's member via modname.membername
CLOSED SJD    implemented dynamic casts between class types
DMI    turned reference counting garbage collection off by default
       - added initial support for copy collection garbage collection
CLOSED subdomain keyword is now supported, though subset relationship is not checked
CLOSED    initial support for specifying a distribution class; interface still in flux

Syntactic/Naming Changes:
CLOSED MBH    removed support for using "?" in identifiers
       - changed standard method member? to member
       - changed standard method true? to isTrue
CLOSED MBH    removed support for "--" as a single-line comment style
CLOSED an array's domain should now be accessed via A.domain rather than A.dom
CLOSED array element type identifier changed from elt_type to eltType

Semantic Changes:
CLOSED MBH    changed relative precedence of casts and unary +/- (unary +/- is now tighter)
       e.g., -2:uint(32) is equivalent to (-2):uint(32) rather than -(2:uint(32))
CLOSED SJD removed support for structural iterator interface (getHeadCursor, etc.)
CLOSED SJD added support for defining default iterators for classes and records
CLOSED SJD initial support for querying parameters/types in a formal class argument
       - similar support for variable-length argument lists of generics
CLOSED SJD    where clauses can now compare against formal generic types
CLOSED SJD short-circuiting operators only require isTrue rather than true? & false?
CLOSED SJD compilerError() can now take multiple arguments like a halt()

Standard Modules:
CLOSED    Search: new standard module
CLOSED    Sort: new standard module
CLOSED    Types: numBits() and numBytes() are now param functions
CLOSED    Random: fillRandom() routines now work for arrays of arbitrary rank
CLOSED    Random: some new functionality

Compiler Analysis and Optimizations/Performance of Generated Code:
CLOSED SJD removed the insertion of all large sequence/array temporaries


CLOSED support for a numCores() function on the locale type to query # of cores
CLOSED made file open/close methods take parenthesis