Maintainer
Fridtjof Siebert
Description
An Eiffel-Compiler for SUN/SPARC V8 running Solaris. It implements most of Eiffel 3.
FEC directly creates SPARC machine code and saves it as ELF object files.
Status
Unmaintained.
Categories
Versions
Links
Details
To use FEC, the gnu C compiler gcc is required. The compiler is used only as a linker to create an executable program from the object files of an Eiffel System.
Library Classes
The standard classes should conform to the standard given in [ELKS95]. Many features are currently not implemented (they are marked in the source text with "nyi", which stands for "not yet implemented"), many of the implemented features are not tested.
Since FILE.e is hardly tested and lacks the implementation of many features, this beta-version also includes modified versions of the file classes STD_FILE, STD_FILE_READ, STD_FILE_WRITE and STD_FILE_READ_WRITE of SmallEiffel.
The compiler relies on some of the basic classes to be exactly as they are. Modification in those classes may lead to unpredictable behaviour.
Not Yet Implemented
Note that most of the features that are not implemented do not cause the compiler to create a warning message. Instead it just creates code that crashes.
- The library classes are still incomplete and do not completely conform to the ELKS standard
- Some assertions (postconditions, invariants, variants) are not checked
- strip, old, retry and rescue do not work
- Bit types are not supported
- The default initialization procedure of expanded attributes of the root object is not called automatically
- Redeclaring arguments and function results that are references to a conforming expanded type is not supported. The same holds for redeclaration of INTEGER as REAL/DOUBLE and REAL as DOUBLE
- An object of an actual generic class C[Q] cannot be used through a reference of type C[P] (Q conforms to P). Assignment_attempt of C[Q] to C[P] fails
- the constants listed in an inspect compound must lie in the range of -4096..4095 and the difference between two consecutive constants must not be more than 4095
- Constant numeric expressions may crash the compiler (causing a division by zero or an overflow)
- The memory used for the type information for a system with n classes is in O(n^2)
- The garbage-collector is not implemented
- Exception handling is not supported
- System Validity is not checked
- This list is incomplete
Thanks
Without the help of the following people, this project would not have been possible:
- Prof. Plödereder and Bernd Holzmüller accepted this project as subject for my final university thesis. Without them, I would not have found sufficient time for the project.
- Dominique Colnet provided a good portable Eiffel compiler that I could use to bootstrap my compiler. I benefited a lot from the usage of SmallEiffel and the possibility to inspect the C code created by this compiler.
- Roger Browne is clearly the one who wrote the most helpful replies to Eiffel problems posted to comp.lang.eiffel.
- Achim Siebert drawing the Eiffel logo.
- Anybody who goes through the trouble of using an early beta version of a compiler!
Platforms
Licensing