
                             History of changes
                                      
     Lastest version first.
     For a note on version numbering, see the [1]SmallEiffel FAQ.
   Release - 0.78 - Saturday June 05th, 1999.
     * New -html2 flag for command short generates a colorized HTML short
       form for classes.
     * The garbage collector now takes into account feature dispose of
       class MEMORY for reference objects.
     * Obsolete classes (obsolete keyword) now supported.
     * Assertion tags are now displayed when an assertion fails.
     * Added environment variable in loadpath files. Syntax: ${SOME_VAR}
     * Added the -no_style_warning flag to suppress warnings when the
       recommended styles guidelines for Eiffel are not strictly
       followed.
     * Added the -version flag to show SmallEiffel's version.
     * Enhanced ease of use with and adaptability to various C compilers
       (SYSTEM_TOOLS). Files compiler.system, linker.system and
       o_suffix.system are now obsolete and replaced by a unique file
       compiler.se common to all systems. See the [2]System configuration
       page for more information.
     * Class LINKED_LIST now replaces obsolete class LINK_LIST (simple
       renaming).
       Class TWO_WAY_LINKED_LIST now replaces obsolete class LINK2_LIST
       (simple renaming).
     * Fixed "implicit renaming" bug.
     * Cleaned all source code of tabulations at beginning of line (made
       code look ugly when using an editor whose tabs were not 8).
     * Some new ELKS'95 features implemented.
     * Validity rule VEEN fixed.
     * Added class COLLECTION_SORTER and REVERSE_COLLECTION_SORTER to the
       library.
     * Fixed file renaming portability bug (".d files bug").
     * Validity rule VCFG.1 is now enforced.
     * Validity rule VAPE is now enforced.
     * Classes mentioned in a cecil.se file are now automatically made
       live. Makes it easier to link with external libraries.
     * Various other bug fixes.
       
                                   [Line]
                                      
   Release - 0.79 - Tuesday December 22nd, 1998.
     * The new Eiffel construct Precursor as described OOSC2 is now
       implemented.
     * The Eiffel expression strip is now implemented.
     * Nested loadpath files now allowed.
     * Extended anchored definition to accept infix and prefix feature
       names. For example, this kind of declaration is now accepted :
         foo: like infix "+".
     * Classes COLLECTION2, ARRAY2 and FIXED_ARRAY2 of lib_std completely
       revisited.
     * Fixed a bug related to calls of the form f.g.h; on expanded
       objects.
     * Fixed a bug related to inheritance of generic classes.
     * Fixed bugs related to assertions checking in case of exceptions
       (rescue clause, retry). Improved cycle detection in assertions.
     * Fixed bug in GC related to recycling of "monsters" (very large
       resizable objets).
     * Fixed an incredible bug in the implementation of the like Current
       type mark. ;-).
     * Fixed many others bugs ($ operator, GC for alpha DEC, ...).
     * System customization file for the BeOS system added in the "sys"
       sub-directory (more on [3]system customization).
     * Contents of the environment variable SmallEiffel must be now set
       with the absolute path of the file "system.se" which is in the
       sub-directory "sys" of the installation directory.
       Under a UNIX-like system, the value of the SmallEiffel environment
       variable may be for example: /usr/lib/SmallEiffel/sys/system.se
       Commands are also more robust when this environment variable
       contains non-alphanumeric characters.
     * No more ensure assertion in GENERAL.get_environment_variable.
     * Commands [4]compile_to_jvm and [5]print_jvm_class completely
       revisited. Java byte-code can be now used with the -verify Java
       option).
     * Validity rule VDRD.6 is now enforced.
     * Balancing rule (automatic promotion) for INTEGER, DOUBLE and REAL
       is now implemented.
     * Recursive once routines now work correctly.
     * Unmodified generated C files are not touched anymore.
     * Assertions correctly checked for all external C routines.
     * Exception handling now works when an exception occurs in external
       C code.
     * Cleaned the compiler and decreased its memory footprint.
       
                                   [Line]
                                      
   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 [6]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 [7]cecil interface.
     * Behavior of compilation flag [8]-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.
       
                                   [Line]
                                      
   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 [9]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 [10]short (require/ensure assertion of
       deferred routines are now printed).
     * Added one useful hook for mode -html1 in command [11]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.
       
                                   [Line]
                                      
   Release - 0.82 - Friday January 16th, 1998
     * Became the official GNU Eiffel compiler.
     * Added first HTML mode to command [12]short. Flag -html1. Thanks to
       Matthias Klause.
     * Fixed bugs in command [13]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.
       
                                   [Line]
                                      
   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.
       
                                   [Line]
                                      
   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.
       
                                   [Line]
                                      
   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 [14]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.
       
                                   [Line]
                                      
   Release - 0.86 - Sunday April 13th, 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.
       
                                   [Line]
                                      
   Release - 0.87 - Tuesday January 7th, 1997
     * Added a new flag -trace to ease debug (see [15]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 [16]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.
       
                                   [Line]
                                      
   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).
       
                                   [Line]
                                      
   Release - 0.89 - Sunday September 15th, 1996
     * Calling Eiffel from C is now implemented (see [17]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).
       
                                   [Line]
                                      
   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
       [18]man/compile_to_c) file).
       
                                   [Line]
                                      
   Release - 0.91 - Wednesday July 24th, 1996
     * Incremental C compiling mode implemented (see option -c_code in
       help file [19]man/compile) .
     * Added command clean in help file [20]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.
       
                                   [Line]
                                      
   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).
       
                                   [Line]
                                      
   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.
       
                                   [Line]
                                      
   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
       [21]man/external ).
       
                                   [Line]
                                      
   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.
       
                                   [Line]
                                      
   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.
       
                                   [Line]
                                      
   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.
       
                                   [Line]
                                      
   Release - 0.98 - Friday March 15th, 1996
     * Command pretty added.
     * Implements Eiffel expanded clause.
       
                                   [Line]
                                      
   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
       
                                   [Line]
                                      
   Release - 1.00 - July 1995
     * The very first bootstrap. SmallEiffel is born.
       
   
   
                                   [Line]
                                      
             Copyright  Dominique COLNET and Suzanne COLLIN -
                           [22]<colnet@loria.fr>
                  Last update: 05 June 1999, by DC & OZ. 

References

   1. file://localhost/home/colnet/SmallEiffel/misc/man/SmallEiffelFAQ.html#Q02
   2. file://localhost/home/colnet/SmallEiffel/misc/man/system.html
   3. file://localhost/home/colnet/SmallEiffel/misc/man/system.html
   4. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_jvm.html
   5. file://localhost/home/colnet/SmallEiffel/misc/man/print_jvm_class.html
   6. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_c.html
   7. file://localhost/home/colnet/SmallEiffel/misc/man/cecil.html
   8. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_c.html#trace
   9. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_c.html
  10. file://localhost/home/colnet/SmallEiffel/misc/man/short.html
  11. file://localhost/home/colnet/SmallEiffel/misc/man/short.html
  12. file://localhost/home/colnet/SmallEiffel/misc/man/short.html
  13. file://localhost/home/colnet/SmallEiffel/misc/man/pretty.html
  14. file://localhost/home/colnet/SmallEiffel/misc/man/external.html
  15. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_c.html
  16. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_c.html
  17. file://localhost/home/colnet/SmallEiffel/misc/man/cecil.html
  18. file://localhost/home/colnet/SmallEiffel/misc/man/compile_to_c.html
  19. file://localhost/home/colnet/SmallEiffel/misc/man/compile.html
  20. file://localhost/home/colnet/SmallEiffel/misc/man/clean.html
  21. file://localhost/home/colnet/SmallEiffel/misc/man/external.html
  22. mailto:colnet@loria.fr
