Development Version 0.0.21 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
- Fixed register allocation
- Improved ecsd command-line validation
ARM T32:
- Added base instruction set
- Added runtime support for Linux-based systems
Oberon:
- Improved diagnostic messages
- Improved documentation, highlighted extensions, and added references
- Added access to command-line arguments
- Added support for SYSTEM.ROT
- Added support for module designators
- Added support for generic modules
- Added support for same type tests
- Added binary selection procedure
- Added support for memory deallocation
- Optimised meta-data for abstract records
- Removed obsolete input/output procedures
Development Version 0.0.20 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
- Added wrappers for Windows time functions
- Improved register allocation and code generation
Oberon:
- Improved diagnostic messages
- Added documentation about LENGTH type
- Fixed register clobbering in index expressions
Development Version 0.0.19 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
Debugging Information:
- Fixed output of member declarations
- Added support for reference type declarations
The last extension adds a dedicated type declaration for representing pointers that always contain a valid reference [1].
Oberon:
- Optimised population of procedure tables
- Added warnings about unreachable declarations
- Added copy elision of read-only value parameters
- Removed string compatibility with read-only variable array parameters
The last change removes a language extension which was introduced to access strings as efficiently as variable parameters. The new optimisation elides copies of all read-only value parameters and renders the language extension completely obsolete.
[1] https://ecs.openbrace.org/manual/manualse107.html#x135-70200022.2.3
Development Version 0.0.18 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
- Improved generic documentation extraction
- Unified terminology in diagnostic messages
Oberon:
- Added compile-time check for omitted return values
- Unified marking of read-only declarations
The last change rearranges the syntax of constant parameters to match the notation for read-only variables and record fields as outlined in the Oakwood Guidelines [1]. Any value or variable parameter can now be read-only including the receiver of type-bound procedures:
PROCEDURE (VAR complex-: Complex) Real (): REAL;
[1] Kirk, Mössenböck et al. The Oakwood Guidelines for Oberon-2 Compiler Developers. 1995
Development Version 0.0.17 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
- Added support for detecting omitted macro operands in inline assembly code
- Unified size information of type declarations in debugging information files
The last change introduces redundant size information for type declarations referencing missing alias type or data structure entries [1].
Oberon:
- Fixed unexported Windows declarations
- Improved signatures of Winsock wrapper functions
- Fixed range check in case statements
- Improved control-flow analysis for recursive procedures
[1] https://ecs.openbrace.org/manual/manualse108.html#x136-70900022.3.5
Development Version 0.0.16 of the Eigen Compiler Suite is available for evaluation. It fixes various issues and includes the following improvements.
General:
- Added wrappers for Windows GDI functions
- Added latest AMD64 instructions
Oberon:
- Improved control-flow analysis
- Added support for SET64 output
- Unified documentation about syntax extensions
- Added support for explicit value conversions
The last feature is a language extension that renders many uses of SYSTEM.VAL obsolete. It allows converting a value of basic type to any other basic type by calling the desired type with that value [1]. For example:
VAR set: SET; integer: INTEGER;
BEGIN set := SET (integer); integer := INTEGER (set);
This complements the predeclared identity operations LONG and SHORT which only convert between the next bigger or smaller numeric type.
[1] https://ecs.openbrace.org/manual/manualse27.html#x38-2750007.2.4