
   History of changes
   Lastest version last. For a note on version numbering, see the
   SmallEiffel FAQ.
     * Release - 1.00 - July 1995
          + The very first bootstrap. SmallEiffel is born.
     * Release - 0.99 - Saturday February 17th, 1996
          + The first version available on the net. Before being made
            available, the very first SmallEiffel had been tested since
            September 1995 by students of the University Henri Poincar
     * Release - 0.98 - Friday March 15th, 1996
          + Command pretty added.
          + Implements Eiffel expanded clause.
     * Release - 0.97 - Thursday May 2nd, 1996
          + Inside of compiler cleaned.
          + Pre-Computing of some once functions.
          + Added class COLLECTION, LINK_LIST and FIXED_ARRAY in lib_std.
     * Release - 0.96 - Friday May 10th, 1996
          + Internal renaming to suppress some warning messages and for a
            smooth integration with C++ software.
          + DOS and Macintosh better portability.
     * Release - 0.95 - Thursday May 30th, 1996
          + It is now possible to inherit ARRAY.
          + It is now possible to inherit STRING.
          + Flag -cc of compile_to_c has changed.
          + The PLATFORM class is now conform to ELKS95.
          + Added feature twin (like the one of TowerEiffel) in GENERAL.
          + Added features to_external and from_external in class STRING.
          + Fixed some bugs in once pre-computed routines.
     * Release - 0.94 - Friday July 5th, 1996
          + Fixed some bugs with conformance rule VNCG.
          + Static expressions are used to detect pre-computable once
            routines.
          + Added features to_external and from_external both in classes
            ARRAY and FIXED_ARRAY.
          + Fixed a bug for inheritance of ARRAY or FIXED_ARRAY.
          + Contents of end of class comment checked.
          + Added documentation file for external calls (see help file
            man/external ).
     * Release - 0.93 - Thursday July 18th, 1996
          + Fixed some more bugs with conformance rule VNCG.
          + Type BIT is now implemented.
          + Added ELKS 95 STRING.left_adjust and STRING.right_adjust.
     * Release - 0.92 - Saturday July 20th, 1996
          + Fixed some more bugs with conformance rule VNCG.
          + Added math functions in DOUBLE/REAL (sin, cos, tan, asin,
            acos, atan, ... ANSI C names).
     * Release - 0.91 - Wednesday July 24th, 1996
          + Incremental C compiling mode implemented (see option -c_code
            in help file man/compile) .
          + Added command clean in help file man/clean .
          + Added class FILE_TOOLS.
          + No more empty C struct in generated C code (to avoid problems
            with Microsoft Windows C compiler).
          + Fixed one more bug with conformance rule VNCG.
     * Release - 0.90 - Friday August 23rd, 1996
          + Added random number generator library (SmallEiffel/lib_rand).
          + Added checking of assertions for external "CSE" features.
          + Anchoring on expanded types are now allowed.
          + Multiple level of anchoring definition allowed.
          + Fixed a bug in STRING.from_external.
          + Fixed a bug with mixed rename/redefine.
          + Inheritance loop detection.
          + Anchoring loop detection.
          + Fixed a bug with renaming infix/prefix.
          + Command clean also use the make suffix.
          + Added ELKS95 sign in INTEGER/REAL/DOUBLE.
          + Feature make is the default root feature name for compile.
          + Optimized ARRAY.add_last and STRING.extend.
          + Changed STRING.out (no more enclosing %" printed).
          + Remove warning gcc messages for 64 bits machine (alpha/DECK).
          + Added option -no_split for a better finalization (see
            man/compile_to_c) file).
     * Release - 0.89 - Sunday September 15th, 1996
          + Calling Eiffel from C is now implemented (see man/cecil)
            file).
          + Object creation uses C calloc instead malloc+memset.
          + Object creation is inlined.
          + ARRAY/FIXED_ARRAY put and item are now inlined (-boost only).
          + Added feature capacity and resize in FIXED_ARRAY.
          + Added some classes in std_lib: LINK2_LIST (two way linked
            list), COLLECTION2 (deferred), ARRAYED_COLLECTION (deferred),
            LINKED_COLLECTION (deferred) and FIXED_ARRAY2 in std_lib.
          + More user's routines are inlined (-boost only).
     * Release - 0.88 - Wednesday October 30th, 1996
          + Fixed bugs dealing with inherit/rename/select.
          + Added warning for missing colon in actual arguments list.
          + Warning : INSTALL procedure has changed and you have to set
            manually the default loading path (see misc/INSTALL for
            details).
          + Added some VMS customization.
          + Fixed bugs when printing run-time stack.
          + Warning added for missing colon in actual parameter list.
          + Added flush in class STD_FILE_WRITE.
          + No more left hand side cast in C code (because some C
            compilers don't like them).
     * Release - 0.87 - Tuesday January 7th, 1997
          + Added a new flag -trace to ease debug (see man/compile_to_c
            file).
          + More inlining at Eiffel level (-boost mode only).
          + Class BIT_N completely revisited. It may be as fast as C.
          + Added class C_ARRAY[E] to deal directly with C arrays at
            Eiffel level. Thus there are no more external "CSE" or
            c_inline_c in classes STRING/ARRAY/FIXED_ARRAY (only full
            Eiffel). Eiffel code is nice and STRING/ARRAY/FIXED_ARRAY may
            run faster.
          + Fixed a bug in STD_FILE_READ.read_double.
          + Ordering of C output to increase gcc inlining.
          + According to man/compile_to_c) , flag -debug_check now works
            (debug instructions are no longer generated in mode
            -all_check).
          + Unused local variables removed at Eiffel level (warning added
            for -debug_check mode only).
          + Default class ANY now inherits PLATFORM (as in ETL).
          + Fixed a bug in floating-point constants.
          + Added directory sys to customize default C compiler, default
            C linker and default loading path.
          + Fixed some bugs with outside expanded types.
          + Fixed a bug with rename/select.
          + Redefinition of once routine is now allowed.
          + Feature GENERAL.conforms_to is now implemented.
          + Rule VFFD.7 is now enforced.
          + Feature force implemented for all COLLECTION.
          + Added conversions features CHARACTER.to_bit, INTEGER.to_bit,
            BIT_N.to_character and BIT_N.to_integer.
     * Release - 0.86 - Sunday April 13rd, 1997
          + All reported bugs at this time have been fixed.
          + Added flag -verbose to commands: compile, compile_to_c and
            clean. When this new flag is not present, commands now work
            silently unless some error (or warning) occurs.
          + Features BOOLEAN.infix "or" and BOOLEAN.infix "and" are now
            written in pure Eiffel. As a consequence, it is very
            important for the SmallEiffel programmer to make the
            distinction between BOOLEAN.infix "and then" and
            BOOLEAN.infix "and" (respectively for BOOLEAN.infix "or else"
            and BOOLEAN.infix "or"). When left-hand-side argument
            produces no side effect, the semi-strict operator
            (BOOLEAN.infix"and then"/"or else") may run faster.
          + Fixed REAL.sin (the old one was calling sqrt :-).
          + Fixed a bug in INTEGER.append_in (you can now print
            Minimum_integer).
          + Added feature in_range in class COMPARABLE.
          + Result type of REAL.infix "^" is now DOUBLE for ELKS
            compatibility.
          + Feature remove is now implemented in all subclasses of
            COLLECTION (i.e. ARRAY, FIXED_ARRAY, LINK_LIST and
            LINK2_LIST).
          + Added feature add for all subclasses of COLLECTION.
          + Conversion DOUBLE/STRING : ANSI C sscanf and sprintf is now
            used to avoid loss of precision.
          + Added some more class invariant code generation when
            compiling in -invariant_check mode. Class invariant is now
            also checked before exit of a routine.
          + Added feature file_tools in class GENERAL to ease access to
            class FILE_TOOLS.
          + Changed printing format for basic *_REF classes. For example,
            instruction print(1); now prints 1.
          + Feature truncated_to_integer of DOUBLE is now ELKS compatible
            (added feature rounded in class DOUBLE to replace the old
            truncated_to_integer). Same changes in class REAL.
     * Release - 0.85 - Thursday July 3rd, 1997
          + First beta-release of commands compile_to_jvm and
            print_jvm_class !
          + The new name for class C_ARRAY is now NATIVE_ARRAY (because
            it works both with Java and C). The old C_ARRAY name is
            temporarily accepted with a warning from the compiler.
          + For readability and to avoid confusion with Java names,
            external tags have changed (see for new names in man/external
            file). Old names are temporarily accepted with a warning
            giving the new name to use.
          + Added feature to_hexadecimal and feature to_hexadecimal_in in
            class CHARACTER.
          + Feature io, std_input, std_output and std_error of class
            GENERAL are no longer frozen.
          + Some changes in STD_FILE_READ for features read_integer,
            read_double and read_real (added comments, precondition and
            solved the problem with the trailing separator).
          + Feature die_with_code of GENERAL now accepts any INTEGER code
            (not just predefined exit_success_code and
            exit_failure_code).
          + Fixed a bug in STRING. The following expression is now true:
            ("a%/0/b").count = 3
            Just try this on your favorite Eiffel compiler ;-)
          + Many changes in basic input/output in order to be compatible
            with Java: No more class STD_FILE (the name is now free for
            an ELKS implementation). Two new classes: INPUT_STREAM and
            OUTPUT_STREAM.
          + Feature unread_character of class INPUT_STREAM is now
            implemented in Eiffel.
          + Added OUTPUT_STREAM.put_pointer to view a POINTER.
     * Release - 0.84 - Monday August 18th, 1997
          + Class BIT is now implemented in Java bytecode (command
            compile_to_jvm).
          + Added external specification to call Java code (when using
            compile_to_jvm).
          + To fit on a single 3.5 inches disk, unsplitted C code for
            large commands (compile_to_c and compile_to_jvm) is no longer
            in the distribution as well as the old lib_test directory.
          + Changed the algorithm to load classes in order to allow upper
            case letters in files names (priority is always given to
            lower case file names).
          + Added STRING.substring_index (from ELKS written by Fridtjof
            SIEBERT).
          + Added one more file in SmallEiffel/sys/ directory in order to
            customize object files suffix (thus, using Borland C compiler
            on Windows is now possible).
          + Changed the behavior of end_of_input of INPUT_STREAM (this
            flag is true _after_ last character has been read).
          + Fixed a bug in manifest arrays (mixed objects including
            Void).
          + Fixed a bug dealing with some statically computed
            expressions.
          + Fixed a bug in repeated inheritance.
     * Release - 0.83 - Friday September 19th, 1997
          + Added command short to the distribution.
          + Added directory contrib in the distribution. This directory
            contains some scripts to use gdb as source level debugger for
            SmallEiffel.
          + Added flag -no_warning to commands: compile_to_c, pretty, and
            compile_to_jvm.
          + Added flag -case_insensitive to command compile_to_c.
          + Fixed a bug for inherit/select.
          + Fixed a bug for some pre-computed once function.
     * Release - 0.82 - Friday January 16th, 1998
          + Became the official GNU Eiffel compiler.
          + Added first HTML mode to command short . Flag -html1. Thanks
            to Matthias Klause.
          + Fixed bugs in command pretty .
          + It is now possible to rename/redefine external "SmallEiffel"
            features.
          + Files *.hlp of directory SmallEiffel/man no longer exists.
            All the documentation is now in *.html files plus
            corresponding automatically generated *.txt files.
          + Manifest arrays creation has been optimized.
          + Validity rule VHRC.2 is now enforced.
          + Fixed bugs about export clause.
          + Feature GENERAL.hash_code no longer exists. Added ELKS class
            HASHABLE in order to be compatible with others
            compilers/libraries.
          + Fixed a bug in pre-computed once functions.
          + Fixed a bug in REAL/DOUBLE keybord input.
          + Reintroduced left hand side cast in C code for better
            performances (allowed by the C ANSI standard).
          + Obsolete features (obsolete keyword) now generate a Warning.
     * Release - 0.81 - Thursday April 9th, 1998
          + First finalized version of the garbage collector. Currently
            supported architectures are SPARC Solaris, HP-UX, Linux,
            MacOS, Windows 95 and NT (see file SmallEiffel/sys/gc for
            details). Added flag -no_gc to suppress the GC (see
            man/compile_to_c).
          + Changed the default for the generation of C code. Now, the C
            code and object files are kept by default. (This previously
            required using option -c_code, which becomes obsolete.)
            Added flag -clean which removes all the C and object files of
            the system. (This corresponds to the old default behavior.)
          + Fixed a bug related to buffered input under Windows/MS VC.
          + Fixed a bug in misc/INSTALL.SH script.
          + Added require is_connected for all features put_* of class
            OUTPUT_STREAM.
          + Fixed a bug in command short (require/ensure assertion of
            deferred routines are now printed).
          + Added one useful hook for mode -html1 in command short (see
            hook Mcn).
          + Added directory SmallEiffel/sys/runtime which contains the C
            runtime.
          + Fixed a bug about instanciation of class ANY itself (not so
            common !).
          + Fixed a bug about inlining of operator $.
          + Fixed a bug about cyclic anchored definitions.
            
     * Release - 0.80 - Thursday July 9th, 1998.
          + Exception handling implemented. Class EXCEPTIONS added in
            lib_std.
          + Execution trace stack implementation completely revisited:
            more comprehensive information is now available, and the
            overhead incurred by this stack is greatly reduced
            (executables are about 3 times faster when running in
            -all_check mode).
          + Added option -no_main in command compile_to_c to avoid
            generation of the C main function. This is useful when one
            wants to start execution from outside before calling some
            Eiffel routines via the cecil interface.
          + Behavior of compilation flag -trace of command compile_to_c
            changed to allow step-by-step execution (embryo of Eiffel
            source code debugger).
          + Feature ARRAY.resize completely revisited (added two features
            in class NATIVE_ARRAY: clear and move).
          + Garbage Collector optimized (the GC should be more agressive
            and some benchmarks are included in directory
            SmallEiffel/misc/benchmarks/gc/*/bench.e).
          + Associativity of infix operator "^" is now correctly handled.
          + Fixed bugs in PLATFORM for Minimum_double, Minimum_real and
            Minimum_character_code.
          + Fixed some others bugs about export rules, about expanded
            objects with expanded attributes.
          + Fixed bugs in pretty.
            
     * Release - 0.79 - Work in progress.
          + Multithreading.
          + Files and directories library.
          + Eiffel source code debugger.
          + Implementation of the new Eiffel construct Precursor.
          + Fixed a bug related to calls of the form f.g.h; on expanded
            objects.
          + Implementation of the Eiffel expression strip.
            
            
   [Line] Copyright &copy; Dominique COLNET and Suzanne COLLIN -
   <colnet@loria.fr>
   Last update: Thursday July 9th, 1998 
