[[Property:title|Release notes for EiffelStudio 5.3]]
[[Property:link_title|5.3]]
[[Property:weight|-11]]
[[Property:uuid|dd116cc7-40cf-b317-b9c0-b05d4fe0edf7]]
==Graphical environment==
===Changes===
* In project settings, we now accept a root class without creation procedure.
* In .NET code generation, we do not force the C compilation at each compilation. It is only done when necessary (for example when a C external has been added).
* Incremental .NET code generation (See [[Major changes between ISE Eiffel 5.2 and ISE Eiffel 5.3|compiler release notes]] for more info).
* Recoverable storable (See [[Major changes between ISE Eiffel 5.2 and ISE Eiffel 5.3|compiler release notes]] for more info).
===Bug fixes===
* Fixed issue with setting of arguments. After restarting EiffelStudio the command line argument contains an extra `]` character.
* Fixed issue with working directories where only the first one ever set was used even if new ones have been set afterwards.
* Fixed issue where generating documentation for all/library cluster would stop during generation without completing.
* Fixed crash in diagram tool when moving label on client/supplier link between two classes.
* Fixed resource leak on Windows 98 and Windows Me.
* Fixed issue in projects where clusters are specified with relative path would not compile after adding a local assembly.
* Fixed problem with cluster tool management where moving classes around or looking up a class will generate an error box instead of performing the requested operation.
* Fixed incorrect configuration file specification for EiffelVision2 examples and wizards on Unix platforms where application could be linked dynamically with `libpng` but should not.
* Fixed disappearance of EiffelStudio when debugging a routine `infix` or `prefix` in which an exception was raised. This issue was only occurring with melted code (usually noticeable when using a precompiled library).
* Changing the project specific command line arguments will not touch the project settings configuration file (ace file).
==Compiler==
* Click [[Major changes between ISE Eiffel 5.2 and ISE Eiffel 5.3|here]] for the compiler release notes.
==Libraries==
===CECIL===
* Enforced definition of EIF_OBJECT so that it is different from EIF_REFERENCE to better catch errors when passing a protected reference to a feature accepting an unprotected reference and vice versa. Because of this change some C code might not compile anymore which is good as it points out that code was doing something wrong that could corrupt the Eiffel memory.
===EiffelBase===
* Added in INTERNAL
the following new features: field_static_type_of_type
, class_name_of_type
, type_name
and type_name_of_type
.
* Added truncated_to_integer_64
in REAL
and DOUBLE
.
* Added to_integer_64
in STRING
.
* Added new classes MEMORY_STRUCTURE
, MANAGED_POINTER
and C_STRING
to better manage access to C and C++ memory structure.
* Fixed incorrect implementation of area
and substring
for STRING
in dotnet mode.
* Fixed bug in copy
from STRING
where following code was violating valid_count
invariant from STRING
:
local
s, t: STRING
do
create s.make (9)
create t.make (10)
t.append ("1234567890")
s.copy (t)
end
* Added support for storable in .NET. However .NET and classic implementation are completely different and independent_store
will not be able to retrieve a storable file if not made using the same code generation.
* Fixed a bug in is_equal
from LIST
where comparing two lists of different counts could break the comparison:
make is
local
a, b: LIST [INTEGER]
do
create {ARRAYED_LIST [INTEGER]} a.make (2)
a.extend (10)
create {ARRAYED_LIST [INTEGER]} b.make (2)
b.extend (10)
b.extend (11)
print (equal (b, a))
end
* Fixed .NET implementation of open_write
and create_read_write
in FILE
. They were not resetting the file size to zero if file already existed.
* Added correct_mismatch
on ANY
used for `recoverable storable`.
* Added correct_mismatch
on HASH_TABLE
to enable retrieval of the 5.1 and older version of HASH_TABLE
.
* Fixed bug in implementation of copy
and is_equal
for TREE
and descendant classes. Now descendants of TREE
that would like to compare additional attributes of their class needs to redefine node_is_equal
whose default implementation will always result in a true value.
* Changed default semantic of make
and put_child
from FIXED_TREE
, to preserve existing semantic, you should use make_filled
and replace_child
instead.
===Eiffel2Java===
* Updated library so that it works both in classic and dotnet mode.
===EiffelCOM===
* Fixed crash in ccom_set_name
from FONT_IMPL_PROXY
.
===EiffelNet===
* Fixed assertion violation of call to to_integer
in feature get_content_length
from HTTP_PROTOCOL
if assertions are enabled on EiffelBase.
===EiffelStore===
* Updated library so that it works both in classic and dotnet mode.
* Fixed issue with oracle handle which did not work with the included Borland C compiler.
* Removed nb_classes
from EXT_INTERNAL
.
* Removed need for additional object file (`support.lib' on Windows and `libsupport.a` on Unix platforms), so make sure to remove it from your project configurations.
===EiffelVision2===
* [[Revisions and Bug Fixes|Click here to see list of update and modification to Eiffel Vision2]] .
===WEL===
* Removed inheritance to WEL_STRUCTURE
in WEL_STRING
, it now inherits from new C_STRING
class. In the process removed the following features which were inherited from WEL_STRUCTURE
and did not make sense to WEL_STRING
memory_copy
, structure_size
, dispose
, set_item
, set_shared
, set_unshared
, shared
, to_integer
. No replacements have been provided for those features. Made initialize
and initialize_with_character
obsolete, instead we now provide two features inherited from C_STRING
fill_blank
and fill_value
.
[[EiffelStudio release notes|Click here to check out what was new in other versions]]