EiffelStudio 6.4 Releases

Below are not the release notes of EiffelStudio. It is the change log of EiffelStudio intermediate releases and the most important changes are highlighted in green or in red (for breaking changes). The release notes of EiffelStudio can be found at the following URL. You can also download the latest revision here. Information about other version can be found under Category:Releases.

EiffelStudio 6.4.x Releases

6.4.x

Placeholder for new stuff since last intermediate release.

New features

compiler: Add support for transient attributes.

Improvements

Feature removed

Bug fixes

compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.

base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER

studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.

User changes

Developer changes

6.4.7.9451 (Final Release, June 29th 2009)

Bug fixes

libraries: Ensured void-safety of libraries under .NET too.

compiler: Fixed issue where finalizing twice without a change in a row would cause the full recompilation of degree -2 and -3.

compiler: Fixed an issue with documentation generation which was always failing.

compiler: Fixed an issue when using `generating_type: TYPE [like Current]' in ANY causing the compiler to crash.

testing: Fixed output tool documentation link.

vision2: Fixed an issue with EV_GRID in the experimental version.

6.4.7.9263 (June 14th 2009, Release Candidate)

New features

studio: Added support for new version of EiffelBase which is void-safe for ARRAY and SPECIAL. Because they are breaking changes, this is only available when starting the compiler or EiffelStudio in experimental mode (ec -experiment or estudio -experiment).

Improvements

studio: the WEL new project wizard will now freeze the code to avoid issue with user having to freeze the code for the inclusion of the Windows resources.

iphone: Extended the iPhone library. One can now create a full blown application, but not yet handle the touch event.

runtime: When handling a mismatch instead of generating the _REF classes for basic types, we generate directly an instance of the basic type so that one can do an object test on the basic type directly.

runtime: Improved compatibility of storables between void-safe and non-void-safe systems so that a non-void-safe system can retrieve a storable created by a void-safe system by ignoring all the attachement marks.

Feature removed

Bug fixes

runtime: Fixed eweasel test#melt091 where the interpreter would crash if creating a manifest string, a once manifest string or an agent if the STRING or ROUTINE class got melted as part of a recompilation.

vision2: Fixed bug#15507 where the vision2 demo was looking at the wrong place for the bitmaps.

net: Fixed a memory leak in read and receive from SOCKET because we forgot to free the temporary buffer used to hold the data.

User changes

base: Added in the non-void-safe version of EiffelBase a few routines that makes it possible to have code that compile both against the non-void-safe as well as the void-safe version of EiffelBase.

debugger: Fixed bug#15134: Step Into goes to wrong line in debugger after sequence of changes.

User changes

time: DATE_TIME_VALUE is now a deferred class

Developer changes

6.4.7.8600 (May 10th 2009)

New features

Improvements

Feature removed

Bug fixes

compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.

compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.

compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).

User changes

compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).

runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.

net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.

build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.

User changes

process: File redirection in the process library will now append to a file rather than recreating it.

User changes

compiler: Replaced ECF schema attribute syntax_level of an integer type with syntax of a string type that contains one of the three possible values.

compiler: Replaced ECF schema attribute is_void_safe of a boolean type with void_safety of a string type that contains one of the three possible values (none - no void safety checks, all - all void safety checks, initialization - on-demand void safety checks, i.e. only for entities that are attached).

compiler: Application options are applied after applying options specified in the library when option Use application options is set to true.

Developer changes

6.4.7.8212 (April 13th 2009)

New features

Improvements

Feature removed

Bug fixes

compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).

compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.

compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.

compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.

studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.

studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.

runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.

runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.

runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.

base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.

User changes

Developer changes

6.4.7.8090 (April 6th 2009)

Placeholder for new stuff since last intermediate release.

New features

EiffelParse: void-safe, added void-safe example.

Improvements

profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.

Feature removed

Bug fixes

debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).

runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.

compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.

compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.

net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.

User changes

compiler: Relaxed note element in .ecf to accept anything.

studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note>

Developer changes

6.4.7.7848 (March 23rd 2009)

New features

Improvements

studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.

base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.

Feature removed

Bug fixes

runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.

runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.

runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.

compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.

compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "l_x := x.y.z(create .make(l_x))" to override the value of `l_x' with the value of `x.y' which is wrong.

studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.

User changes

base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:

COMPACT_CURSOR_TREE

LINKED_CURSOR_TREE

TWO_WAY_CURSOR_TREE

COMPACT_TREE_CURSOR

LINKED_CURSOR_TREE_CURSOR

TWO_WAY_CURSOR_TREE_CURSOR

Developer changes

compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.

compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).

6.4.7.7762 (March 17th 2009)

New features

ec: Added command line version of auto test (not available with ecb)

net: Unix part of EiffelNet is now also void-safe.

Improvements

debugger: watch tool now support object test locals in expression

compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.

c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.

User changes

studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)

Developer changes

6.4.7.7646 (March 9th 2009)

New features

compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value stable of the note tag option, for example:

a: detachable MY_TYPE note option: stable attribute end

Improvements

Made the code of the Eiffel Matrix generator generates code that compiles without warnings.

Feature removed

Bug fixes

base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.

base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.

base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.

install: Fixed missing distribution of `syntax_updater' tool on Unix.

dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.

dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.

install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.

syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).

store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE

studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.

User changes

gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.

Developer changes

consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.

6.4.7.7440 (March 2nd 2009)

New features

libraries: Have been updated to the new object test syntax.

Improvements

compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.

studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.

studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.

studio: Errors are now shown first in the error list tool, for better visibility.

compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.

Important: default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.

compiler: we now check that `is_equal' exists in ANY.

compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.

Feature removed

Bug fixes

runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.

User changes

Developer changes

6.4.7.7062 (February 9th 2009)

New features

Eiffel2Java: void-safe, added void-safe example.

EiffelWeb: void-safe.

Improvements

compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.

Feature removed

Bug fixes

testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.

compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.

compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).

eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.

eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.

User changes

base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.

Developer changes

studio: The Groups tool and Favorites tool are now based on ESF.

studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.

6.4.7.6930 (February 2nd 2009)

New features

compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.

Improvements

compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.

compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.

Feature removed

Bug fixes

compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.

studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.

User changes

Developer changes

6.4.7.6747 (January 19th 2009)

New features

Improvements

base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.

studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.

Feature removed

Bug fixes

compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.

runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.

runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.

User changes

Developer changes

6.4.7.6645 (January 12th 2009)

New features

studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.

editor: Added `flush' to force a full load of texts.

Improvements

Feature removed

Bug fixes

compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.

compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.

compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).

compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.

compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).

compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).

Developer changes

6.4.7.6402 (December 27th 2008)

New features

Improvements

compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.

studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.

compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.

compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.

User changes

base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.