CMLARRAY PACKAGE RELEASE NOTES PROBLEMS FIXED This package was nearly completely rewritten for this release and as a result almost all of its known bugs have been fixed. Documentation Several faulty examples inthe documentation have been corrected. The documentation now explains implementation particulars regarding casting of element type and the availible enclosing element types. Documentation of implementation constraints, regarding the maximum size of arrays, is now accurate. A number of typos inthe examples given were corrected. Creating arrays Some problems involving displacement of arrays of different element type have been fixed. This was done at the cost of requiring displaced arrays to share only with others of same type. MAKE-ARRAY now allows displacement to FLOATING POINT ARRAYS. Accessor and Settor functions A rather severe bug, which caused compiled calls to AREF to turn into ASET, has been fixed. The primary array reference function, AREF, now has a SETFN property. Adjusting arrays ADJUST-ARRAY will no longer cause reference count problems due to copying pointer arrays with BLT. ADJUST-ARRAY will no longer caue 9305 halts due to its not having allocated its memory block before BLTing. Some obscure bugs involving copying integer arrays with elements of a bit size that was a power of two have been repaired. Techniques for using the Interlisp-D extension "aligned arrays" and adjustment have been documented. Various problems involving copying storage of unboxed arrays in ADJUST-ARRAY have been fixed. Other functions A bug inthe ARRAYELEMENTTYPE function (now called ARRAY-ELEMENT-TYPE), caused arrays of integer type to be displayed incorrectly. This has been repaired. Input / Ouput Reader restrictions regarding printing and re-reading arrays from files are now documented. KNOWN PROBLEMS Displaced arrays Displaced arrays may only be created sharing their storage with a new style array created by MAKE-ARRAY (dataypes ARRAY or VECTOR). It is not possible to create a displaced array with MAKE-ARRAY whose storage is in an array of datatype ARRAYP, STRINGP, or BITMAP. MAKE-ARRAY attempts to optimize by creating arrays using these datatypes when possible. The workaround is to force it to create arrays using the new datatypes using :ADJUSTABLE T. Thus, it is recommended that you set :ADJUSTABLE T on calls to MAKE-ARRAY whenever you create an array which will later be given as a :DISPLACED-TO argument. Size limits Arrays have a maximum total size of 64k - 2 words. This restriction is a side effect of the current memory allocation strategy and will be aleviated inthe next release. PREVIOUS EXTENSIONS WHICH ARE NOW UNSUPPORTED A number of Interlisp type specifiers previously supported as :ELEMENT-TYPE arguments to MAKE-ARRAY, such as BYTE, are no longer supported. Please use the equivalent Commonlisp type specifiers. The nibble functions 4AREF and 4ASET are not included with this release. A set of functions, which performed no error checking, named by prefixing a \ to the names given below (e.g. \PASET or \PAREF...) are no longer defined. The CMLARRAY package type no longer exists. The LISTARRAY and FILLARRAY functions no longer exist. EXTENSIONS SOON TO BE UNSUPPORTED In a previous release of this library package a number of "fast" accessing functions were made availible under a large set of names. In future releases specialization of array access will be supported via declarations. There will probably also be microcoded versions of AREF and its settor. Further, because MAKE-ARRAY does not guarantee the datatype of the created array, and these functions depend on it, they may no longer work. (PAREF ARRAY &REST SUBSCRIPTS) (NAREF ARRAY &REST SUBSCRIPTS) (LAREF ARRAY &REST SUBSCRIPTS) (16AREF ARRAY &REST SUBSCRIPTS) (8AREF ARRAY &REST SUBSCRIPTS) (1AREF ARRAY &REST SUBSCRIPTS) (PASET ARRAY &REST SUBSCRIPTS) (NASET ARRAY &REST SUBSCRIPTS) (LASET ARRAY &REST SUBSCRIPTS) (16ASET ARRAY &REST SUBSCRIPTS) (8ASET ARRAY &REST SUBSCRIPTS) (1ASET ARRAY &REST SUBSCRIPTS) These were essentially the same as the previous versions of AREF and ASET, but had a consequence that, for PAREF, ARRAY was to have been a POINTER or T array; and correspondingly, for NAREF a FIXNUM array, for LAREF a FLONUM array, for 16AREF a DOUBLEBYTE or (MOD 65536) array, for 8AREF a BYTE or (MOD 256) array, for 4AREF a NIBBLE or (MOD 16) array, and for 1AREF a BIT or (MOD 2) array. The function ASET, while it exists in the current release, is being phased out in favor of SETF. &&È MODERNMODERN MODERN MODERN |A‡d7»=\Fcl{e^›\ T ª.ÃI™,7"³            ‹bÞzº