Support for new expanded semantics defined in ECMA-367. The current limitations are: no copy semantics in the .NET code generation, and still no generic conformance.
Inline agents as defined in ECMA-367 with the limitation to only accept the do form.
Added possibility to define agents on attributes or externals.
Named tuples as defined in ECMA-367.
Added PREDICATE class for agent based on boolean queries.
Added CHARACTER_32 for Unicode support.
Improved memory management:
Ensure that if a block of allocated memory is not used it will eventually be freed. Before it will only be freed if it was the last allocated block.
Compaction is actually working. Before it was working if you had a lot of dead objects, now it will compact even if all you have is alive objects and that the memory is fragmented.
For large memory heap (i.e. larger than 1GB) improved speed of collections where there is a lot of dead objects.
Changed the way we search melted file, it is done in the following order:
Directory specified by environment parameter MELT_PATH
Current working directory
Directory where application is launched
Original directory where .melted file was generated the first time.
Improved speed of initial compilation of .NET projects as well as the speed for incremental compilation at degree 6 which went from a few seconds to no time if no new assemblies have been added to the system.
No freeze is required when adding an agent, saving you time since C compilation can be long for very large project.
Reduced the required disk space for a workbench compilation in classic mode (went from 1.8 GB to 1GB for a very large project).
Improved speed of agent calls in classic mode.
Support use of IL enumerations with underlying integer types different from System.Int32. In particular, the built-in features to_integer and from_integer now use the underlying type rather than System.Int32.
Support generation of IL properties as well as custom attributes for them.
Support the new syntax without the is keyword in the feature declaration.
Allowed bracket expressions to be used as a target of a qualified feature call (this is an extension to ECMA standard that does not permit this syntax at the moment).
Added checks for VYCP(2,3) and VYCQ(2,3) (validity rules for conversion features to prohibit conversion to conforming types).
VWEQ is not an error, but a warning that can be triggered or not depending on your configuration.
Inherited assertions are rechecked each time that a feature is redefined, meaning that some errors that were not previously detected by the compiler can now be found.
Fixed an issue with x2c if you had inlined C code which contains comments with single or double quote. Then it will not properly convert .x into .c file.
Fixed bugs in code generation for once manifest strings that caused "index out of bounds" exception, void results.
Fixed a bug in processing synonyms of a routine with an indexing clause that might cause a compiler crash, in particular this could happen for synonyms of a global once routine.
Fixed a bug in recompilation of a once routine that changes its process-relative status into thread-relative one or back in multithreaded finalized mode that can cause C compilation to fail due to unresolved externals.
Corrected inlining of routines redeclared into attributes or into routines with a different internal/external status.
Fixed a bug in incremental recompilation of queries with assigner commands.
Added detection of a VUEX error for static feature calls used in intervals of a multibranch instruction.
Added a new validity error VTEC(3) to report unsupported inheritance hierarchy under .NET when an expanded type is based on a class with an external ancestor.
Not supported reverse attachment of boxed built-in .NET value types to Eiffel reference types such as NUMERIC, HASHABLE, etc.
Runtime/code generation issues
Ensured that our runtime is async-safe for signals for all the runtime routines using some locking mechanisms.
Fixed a memory corruption issue in arycpy if a GC cycle was triggered as part of the processus of reallocating the SPECIAL object.
Fixed a bug with allocating memory for once routines that caused "no memory" exception at program startup when Borland run-time is used.
Removed limitation to inherit an Eiffel class which inherited from a .NET class.
Fixed a memory leak in the recoverable retrieval when an exception is raised from a correct_mismatch routine call.
Fixed test#store008 regarding a crash when retrieving a type that does not exist in retrieved system.