EiffelStudio release notes

Release notes for EiffelStudio 7.0

Contents

Graphical environment

What's new

  • EiffelRibbon: a Windows specific library and tool to add a ribbon to your EiffelVision2 applications.
  • Debian packages available for downloads.
  • Added external contributions: Decimal library, Json parser, arbitrary precision mathematics, encryption (SHA1, MD5, x509, ...).
  • Added previews of libraries: sqlite3, regular expression, ...
  • Added a command line option "-tests" to run all associated Autotest tests from the command line.

Improvements

  • Better integration with the latest Linux Desktop environments: Unity from Ubuntu and KDE 4.0.
  • SCOOP speed improvements.
  • Added support for .NET 4.0 runtime.

Changes

  • BIT type is now obsolete.
  • Location of precompiled libraries has been moved to a user specific directory that can be referenced via the $ISE_PRECOMP variable in your project configurations. This addresses some permission issues depending on how and under which user EiffelStudio was installed.

Bug fixes

  • Fixed a display issue of Unicode characters when reporting an error. (bug#17661).
  • Fixed a pick and drop issue where it could be confused (e.g. select ARRAY in editor, switch to clickable format, try to pick various elements, it would always pick BOOLEAN instead) (bug#17666).
  • Fixed issue with pick and drop of a feature from an override class whose position is further away than the original class would not scroll to this feature (bug#17406).
  • Fixed some issues of window positioning when using EiffelStudio with multiple monitors.
  • Fixed a case where you could have 2 editor panes open on the same class.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • Prevented creation of instances of PROCEDURE, FUNCTION, and PREDICATE using a creation instruction. An agent has to be created via the agent expression provided at the language level.
  • Fixed a potential reporting of version mismatch when there is a mismatch but actually no version changes.
  • Added TABLE_ITERATOR and TABLE_ITERATION_CURSOR to provide a common way for TABLE like datastructure to iterate over using the new across loop.
  • Improved speed of `replace_substring_all' when replacing a smaller string by a larger one.
  • Added support for string searches of a STRING_32 string (previously it was limited to STRING_8).
  • Fixed {IMMUTABLE_STRING_XX}.shared_substring which would not be properly processed by many string operations (e.g. item, item_code, code, ...).
  • Changed the behavior of {STRING_XX}.twin to create a new string where the capacity is set to the count of the twinned strings and not to its capacity. In scenarios where a large buffer is used but a frequent twin is used it has a big impact on speed and memory usage.
  • Fixed an issue with {FILE}.read_to_string which would not change the hash_code of the string given as argument.
  • Improved speed of HASH_TABLE lookups.
  • Added {POINTER}.is_default_pointer.
  • Excluded class BIT_REF from the default setup. In order to use type BIT one has to define a variable USE_BIT.
  • Made {LINKED_STACK}.duplicate void-safe, made a postcondition in {INTERVAL}.intersection void-safe.

EiffelVision2

EiffelStore

  • Added support for INTEGER_xx and NATURAL_xx datatypes.
  • Added support for transactions in the MySQL handle.
  • Various speed improvements for SQL queries.
  • Added support for multiple database connections.
  • Added support for immutable and unicode strings.
  • Added support for GUID type.
  • Added support of DECIMAL type.

Argument parser

  • Made feature {ARGUMENT_BASE_PARSER}.copyright deferred.

Click here to check out what was new in other versions

EiffelStudio 6 release notes

Release notes for EiffelStudio 6.8

Contents

Graphical environment

What's new

Improvements

  • Improved dialog that adds a new class to the system:
    • Changed button label to be more explicit about its action
    • Removed detachable status when it is not used
    • Removed unnecessary frame boxes
    • Simplified code that opens the dialog.
  • Improved keyboard navigation in the Info tool.
  • Avoided class counter increment in automatically generated class name if class addition is cancelled.
  • Set file name of current class to the Save File As dialog.

Changes

Bug fixes

  • Corrected output of the iteration (across) form of the loop construct in clickable views.
  • Fixed feature call on void target when reopening a project with diagram tool that contains cluster legend.
  • Fixed a bug in the Info tool: when deleting an EIS entry, selecting "No" did not actually cancel the deletion.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • Minimized interface of ITERATION_CURSOR to simplify crafting cursors for iteration form of a loop on non-container classes, for example, on externally-driven input like files, sockets, etc.

EiffelVision2

EiffelStore

  • Various bug fixes.
  • Extended types supported by EiffelStore, especially STRING_32 for Unicode string types.
  • Improved memory management in EiffelStore, ODBC implementation.


Click here to check out what was new in other versions

Release notes for EiffelStudio 6.7

Contents

Graphical environment

What's new

Improvements

  • Allows filtering of C compiler warnings in the Error and Warning tool.
  • Accepts "license.lic" and "licence.lic" as a way to perform automatic licensing during saving.
  • Added filter functionality to the "Add Library" dialog.
  • Added a new XML (lite) library which is void-safe without Unicode support.

Changes

Bug fixes

  • Fixed some formatting issues when using the new loop form using across.
  • Fixed the saving of the diagrams to PNG.
  • Fixed bug#16831: Picking and dropping class from Features window into Editor tab clears Features window.
  • Fixed issue with `libraries.cfg' files used to know where to look for libraries (the trouble was only on Windows)

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • ARRAY:
    • Made {ARRAY}.make and {ARRAY}.conservative_resize obsolete as they are not void safe. Alternative recommendation is to use {ARRAY}.make_empty, {ARRAY}.make_filled or {ARRAY}.conservative_resize_with_default.
    • Added {ARRAY}.rebase that would help creating an empty array with a given `lower'.
    • BOUNDED_QUEUE and BOUNDED_STACK have been rewritten to use the same implementation of ARRAYED_QUEUE and ARRAYED_STACK, the only difference is that `extendible' is defined to be False. The `correct_mismatch' feature has been updated to ensure retrieval.
  • FORMAT_DOUBLE:
    • Fixed eweasel test#lib036 in FORMAT_DOUBLE where `pad_fraction' did not process properly when one decided to not show the trailing zeros and there were only zeros after the decimal point.
    • Fixed the post-condition of {FORMAT_DOUBLE}.pad_fraction to reflect that the count is set to `decimals' but only when one shows the trailing zeros.
  • Added WEAK_REFERENCE to allow weak references in an Eiffel system. This supersedes the IDENTIFIED class which made it necessary to change one's code to allow weak referencing. Currently the class is only implemented for classic Eiffel; it is not available when compiling for .NET.
  • Added new Eiffel tracing facility classes TRACING_HANDLER and TRACING_SETTING which let you capture some information about the current execution via callbacks.
  • Fixed eweasel test#list010 with twinning and deep_twinning of a FIXED_LIST that would reset `capacity' to `count'.
  • Added {TYPE}.is_expanded to find out if a type is expanded or not.

EiffelVision2

Click here to check out what was new in other versions

Release notes for EiffelStudio 6.6

Contents

Graphical environment

What's new

  • Added the parent clauses of a class in the "Features tool" making it easier to navigate/edit parent classes.

Improvements

  • Double clicking in the editor tab ribbon will create a new tab of the editor.
  • Pressing "Ctrl+Enter" while typing a class name in the address bar will open the class or feature in a new tab of the editor.
  • Pressing the middle mouse button on a tab will now close that tab.
  • Added shortcuts for "Run workbench system" and "Run finalized system"

Changes

  • The experimental mode available in 6.5 and earlier version has become the default mode. To have access to the default mode of 6.5, one has to use the compatible version. It can be accessed on Windows via the Start menu shortcut or by using "-compat" on the command line.
  • Gobo had its ECF removed and replaced by several corresponding to sub-libraries of the Gobo framework. This change was already present in 6.4 and 6.5 under the experimental mode. To upgrade, you need to adapt your project configuration file to use the right sub-library of the Gobo framework.
  • The libraries (formerly the experimental mode of 6.4 and 6.5) contains some breaking changes to the compatible libraries. Those breaking changes were already part of 6.4 and 6.5. It affects the following classes: ARRAY, ARRAYED_LIST, HASH_TABLE, SPECIAL and TO_SPECIAL. It is possible to adjust your code so that a single version compiles against both sets of libraries. See below under EiffelBase how to adapt your code to those breaking changes.

Bug fixes

  • Fixed an issue in which the error tooltip would keep flashing when the cursor is outside the EiffelStudio environment.
  • Fixed an issue while searching text in the implementers or descendants view it would not scroll to the found text.
  • Fixed an issue with the Error List pane in which the Error List would come up blank on error if it had been auto-hidden when EiffelStudio started.

Compiler

  • Click here for the compiler release notes.

AutoTest

  • Changed AutoTest Tool to store testing results permanently, and added the ability to export results to a text file.
  • Added tool for displaying the result details of a single test execution.
  • Added tool for comparing the current testing results to a previously exported set of results, highlighting tests for which the latest execution revealed a different result.
  • Improved wizard/preferences dialog for creating and executing tests, also allowing the user to skip the wizard and create new tests from default settings.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • Added ability to traverse most containers in EiffelBase using the new iteration (across) form of the loop construct.
  • Added a new feature trim to the RESIZABLE class and its decendants to allow for minimizing the allocated storage.
  • Modified ARRAYED_QUEUE to avoid using an extra slot that did not keep any value and was used only for implementation purposes.
  • Added support for correct mismatch in the SED serialization cluster.
  • Fixed ARRAY2 so that it can be used in void-safe mode too. Improved ARRAY2 resizing efficiency.
  • Changed the display of REAL/DOUBLE fields to show REAL_32 or REAL_64.
  • Changed the display of NaN/-Infinity/Infinity for real numbers so that it is the same on all our supported platforms.
  • Adaptation of ARRAY, ARRAYED_LIST, HASH_TABLE and SPECIAL from the 6.5 to 6.6:
    • {ARRAY}.make_from_special had its signature changed and only take a SPECIAL argument and the created array would have a range from 1 to the number of elements in the SPECIAL
    • ARRAY: Some preconditions have been added for void-safety. In non-void-safe mode they are equivalent to the previous ARRAY behavior.
    • {ARRAY}.auto_resize: a private routine has been removed.
    • {ARRAYED_LIST}.count and {ARRAYED_LIST}.area are not an attribute anymore
    • ARRAYED_LIST does not conform to ARRAY. One has to use {ARRAYED_LIST}.to_array to convert it to an ARRAY.
    • HASH_TABLE internals have been changed so that order of traversal will be different from what it used to be.
    • The non-void safe routine {SPECIAL}.make has been removed. Instead one has to use either {SPECIAL}.make_empty (which is not available in compatible mode) or {SPECIAL}.make_filled (which is available in both)
    • To reflect the change in SPECIAL, TO_SPECIAL was also modified and `make_area' was replaced by `make_empty_area'. Again to have compatible code between both mode use `make_filled_area' instead.

EiffelThread

  • Made the THREAD class thread-safe which prevents using the same object to launch a new thread. Now there is a precondition is_launchable and a status report is_last_launch_successful to help in determining whether a thread was actually launched.

EiffelNet

  • Fixed precondition violation in {ARRAY}.force when compiling EiffelNet in void-safe mode.
  • Changed internal of MEDIUM_POLLER to use HASH_TABLE, as a consequence the queries read_command_list, write_command_list and exception_command_list are now obsolete and should not be used.

EiffelVision2

Click here to check out what was new in other versions

Release notes for EiffelStudio 6.5

Contents

Graphical environment

What's new

  • A new output tool that combines the Eiffel compilation output, the C compilation output, the testing output as well as the system information.
  • When there is a C compilation error, the errors are now reported in the error list. Currently we only support error reported by either the GNU C compiler or the Microsoft C compiler. The error is also linked to the source Eiffel feature when the information is available.

Improvements

  • In the recent projects submenu, one can select the most recently compiled target.
  • The automatic class licenser can now use the license.lic files next to an ECF instead of naming the license after the ECF. It makes it easier for projects that have multiple ECF.
  • Double clicking on an ECF file will select the previously compiled target by default.
  • Added tooltip to the precompilation wizard list to show item's ECF file path.

Changes

No changes in this release.

Bug fixes

  • Addressed issue where the first change made to the diagram tool could not be undone.
  • Fixed issue with ES crashing when trying to merge a license, when class contains an empty note clause.
  • Fixed issue where project settings would let you add twice the same include file rule.
  • Fixed an issue where clicking in the project settings entry to display a dialog and then clicking cancel would show the dialog a second time.
  • Fixed bug preventing the new features dialog from being displayed when using newer syntax.
  • Fixed issue where one could not change an integer based preference entry in EiffelStudio.
  • Many more issues have been fixed. For a more complete list, see the change logs.

Compiler

  • Click here for the compiler release notes.

AutoTest

  • Library: EQA_TES_SET.on_prepare is now called during default_create, making it simpler to write void-safe tests.
  • Library: Added the possibility to wrap the actual test routine call.
  • AutoTest traverses all writeable clusters in the project for possible test classes, making <tests>-clusters obsolete. The traversal happens in the background allowing the user to continue to work on the project.
  • Tags can be used to control the test execution flow. Tagging a test with "execution/isolated" makes the test execute in a separate evaluator process, meaning the evaluator is restarted before and after executing the corresponding test (useful for tests relying on the initial access to a once routine or tests which possibly leave the memory corrupted).
    Also any tag of the form "execution/serial[/*]" groups the tests to ensure that they are not executed in parallel (useful when a group of tests share a resource which has to be accessed sequentially).
  • Any results are stored between EiffelStudio sessions.
  • Improved the management of existing tests by merging the "View" and "Filter" box into one input field.
  • Improved bottom part of AutoTest tool by only having two tabs displaying test execution and test creation results.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • In experimental mode, we have changed the signature of generating_type to return an instance of TYPE rather than an instance of STRING. Existing code should still compile out of the box since we have equipped TYPE with conversions and new features similar to those of STRING. In the few cases where it would still not compile, use `generating_type.out' to ensure that the code will compile fine regardless of the compiler mode chosen (i.e. experimental or non-experimental).
  • Fixed an issue in copy from HEAP_PRIORITY_QUEUE which would not do anything because it was simply copying itself, not the other queue.
  • Fixed a bug in remove from HEAP_PRIORITY_QUEUE which caused the internal structure to be referenced beyond its bounds.
  • Made clear_all in STRING_8, STRING_32 and HASH_TABLE obsolete. One has to use wipe_outinstead.
  • Strengthen precondition of resize in STRING_8/STRING_32 to forbid values that would shrink the string content. Use grow instead to preserve the former resize behavior.
  • Added the base extension library that offers some extra functionality to EiffelBase: SEARCH_TABLE which is a HASH_TABLE where keys and items are the same (basically becoming a set), and sorting facilities for INDEXABLE containers.
  • Added the "+" operator in READABLE_STRING_GENERAL.
  • Added ability to create a directory recursively.
  • Fixed bug#4118 where on .NET {EXECUTION_ENVIRONMENT}.put had no effect on the actual process environment variables because the API was only available in .NET 2.0 which is what we now support at the minimum.
  • Fixed a bug in {MEMORY}.memory_map which would cause a precondition violation in one of its call.
  • Fixed issue with {BINARY_SEARCH_TREE_SET}.remove which would not move the cursor and thus causing an infinite loop in subtract and intersect.
  • Fixed issue with {PART_SORTED_SET}.put and {PART_SORTED_SET}.extend which had no effect and thus causing a postcondition violation.
  • Fixed invalid retrieval of SPECIAL objects using the Eiffel SED serializer in experimental mode.
  • Fixed a missing element in {BOUNDED_QUEUE}.linear_representation.

EiffelNet

  • Fixed an issue with {NETWORK_STREAM_SOCKET}.make_server_by_port (0) which would not automatically get a port assigned.
  • Fixed obsolete warnings in the library.
  • Prevented a socket to change its blocking mode when connecting with a timeout (it would end up always being blocking even if requested otherwise before the call to `connect'.
  • Ensured that a socket is indeed connected when successfully connecting to it while the socket is in non-blocking mode.

EiffelVision2

Click here to check out what was new in other versions

Release notes for EiffelStudio 6.4

Contents

Graphical environment

What's new

  • Initial support for the iPhone platform to develop command line applications. Support for graphical applications will be available in the next release.
  • Added new libraries: api wrapper, diff, encoding, and internationalization libraries.
  • To minimize breaking changes, EiffelStudio comes with two sets of libraries. The first set, which is the default set, is compatible with previous versions of EiffelStudio. The second set, which is labeled experimental, is void-safe and contains some breaking changes such as new ARRAY, ARRAYED_LIST, HASH_TABLE, SPECIAL classes. Users are encouraged to compile with the experimental libraries in order to prepare their code for the future when today's experimental libraries will become the de facto libraries. It is possible to adjust code so that a single version compiles against both sets of libraries.
  • Added new tools to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin. The new tools are:
  • compile_all: compile all the Eiffel Configuration File projects found under a directory and report which ones do and do not compile.
  • syntax_updater: update the Eiffel code found under a directory to use the latest ECMA syntax in your code.

Improvements

  • Added automatic completion of the attribute keyword to create an attribute body.
  • The completion window will now show a feature or class description tool tip.
  • Added support for new attached syntax for code completion.
  • Better formatting of verbatim strings, guaranteeing that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.
  • Improved display of ~ and /~ operators, as well as object test expressions.
  • The project name is displayed in the status bar, when a configuration is loaded (i.e: even before any compilation)
  • Vastly improved population of the error list tool when thousands of errors/warnings are generated.
  • Added option in the new library dialog to show only void-safe libraries, for void-safe projects.

Changes

  • The EiffelNet library with IPv6 support is now the default library. The old one is still available as part of our obsolete libraries.
  • The project configuration format has a new version with new settings for void-safety compilation. The compiler will choose the default options based on the version of the project configuration file. Making it easy to have the same code compile identically with old versions of EiffelStudio.
  • Changed the Eiffel Information System to use the note element in project configuraton file in this style: <note><eis name="NAME1"/><eis name="NAME2"/></note>.
  • The experimental version of gobo had its ECF removed and replaced by several corresponding to sub-libraries of the Gobo framework.

Bug fixes

  • Fixed failure when generating the flat view of some classes.
  • Fixed various issues with the testing tool.
  • Fixed a bug which caused editor to disappear when debugging.
  • Fixed some corruptions of the docking layout of EiffelStudio.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • Changed the default assigner of {TABLE}.item from originally put to force. As a consequence, descendants of TABLE might get a VDRD error if redefining item
  • Added same_keys to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.
  • For object comparison, containers are now using the ~ operator instead of is_equal. As a result, if you had heterogeneous containers, then it might not find items that were found before (although it was a catcall).
  • EiffelBase is now using the alias notation instead of infix/prefix.
  • 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.
  • The creation procedure default_create from CELL has been removed to ensure that the same code can be compiled in both non-void-safe and void-safe mode.
  • Implemented {EXCEPTION}.cause which returns the exception object that caused the current exception while executing the rescue clause.
  • Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions.
  • Ensured that in void-safe mode, one can call {INTERNAL}.set_reference_field to set a reference attribute to Void if the attribute is of a detachable type.
  • In INTERNAL, fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.
  • Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changing the pattern read_line/last_string.
  • The following classes have been excluded from the void-safe version of EiffelBase as they cannot be made void-safe under their current design:
  • COMPACT_CURSOR_TREE
  • LINKED_CURSOR_TREE
  • TWO_WAY_CURSOR_TREE
  • COMPACT_TREE_CURSOR
  • LINKED_CURSOR_TREE_CURSOR
  • TWO_WAY_CURSOR_TREE_CURSOR
  • 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.
  • Fixed eweasel test#list014 where calling merge_left and merge_right on a TWO_WAY_LIST was violating the invariant.
  • Fixed eweasel test#array005 where calling wipe_out on an ARRAY2 was violating the invariant.
  • Fixed eweasel test#except035 where we incorrectly merged the code value for IO_EXCEPTION and RUNTIME_IO_EXCEPTION thus breaking existing code not based on Eiffel exception object.
  • Fixed eweasel test#except033 that an exception thrown through rescues caused infinite loop.

EiffelNet

  • Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.
  • Fixed some issues when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. The fix also solves a security issue, because if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface.
  • Fixed a memory leak in read and receive from SOCKET caused by failure to free the temporary buffer used to hold the data.
  • Renamed privately exported make_from_fd to make_from_descriptor_and_address.
  • Re-enabled listening on 256 ports on Windows for the IPv6 library.

EiffelProcess

  • Changed the redirection semantics so that the output is now appended to a file rather than recreating it.

EiffelVision2

Click here to check out what was new in other versions

Release notes for EiffelStudio 6.3

Contents

Graphical environment

What's new

  • Innovative testing tools let you automatically test your software, extract test cases from failed execution as well as manually creating your own test cases.
  • Added brace matching in the editor.
  • Added ability to automatically license your Eiffel classes each time you save a class.
  • Added the argument_parser library which provides an easy way to manipulate command line arguments.
  • Added a new version of the EiffelNet library with IPv6 support. Because it has some breaking changes, the library is called net_ipv6 and can be, in most cases, be used in place of the original EiffelNet library.

Improvements

  • Improved the library choice dialog which can also be customized to include your own locations.
  • Added support for note keyword and the updated variant keyword location in a loop through the environment.
  • You can remove errors from the Warning and Error list tool which is practical when fixing many errors at once.
  • Improved the problem report submission dialog.
  • Better messaging about the installed C/C++ compiler on Windows.
  • Improved cursor rendering colors, so that in all background colors.

Changes

Bug fixes

  • Code completion works even if the obsolete is keyword is missing.
  • Fixed an installation issue of the enterprise/evaluation release of EiffelStudio on Windows Vista.
  • Properly refreshes the Feature tool after a save or a compilation.
  • Fixed browsing of .NET classes in EiffelStudio.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • EiffelBase has been rewritten to be Void safe. To use the void safe version, one has to use the base-safe.ecf configuration file of EiffelBase. Not all libraries are void safe, so the void safe version can only be used for code that does not depend on other libraries. EiffelStudio 6.4 should provide void safe version of all libraries provided in EiffelStudio.
  • Added sleep to EXECUTION_ENVIRONMENT and made sleep from THREAD_CONTROL obsolete.
  • Added read_xxx_thread_aware in IO_MEDIUM so that reading a file is not blocking in a multithreaded context.
  • Added the notion of read-only and immutable strings (respectively READABLE_STRING_8/32 and IMMUTABLE_STRING_8/32). Because READABLE_STRING_8 is deferred, some code using expression of the form STRING + SYSTEM_STRING in .NET mode will not compile anymore. Instead one has to do STRING + create {STRING}.make_from_cil (SYSTEM_STRING).
  • Added {READABLE_STRING_GENERAL}.same_string to compare any kind of strings together.
  • Added ability to stop and start the Eiffel tracing mechanism from code using the new TRACING_SETTING class.
  • Changed the default assigner for {TABLE}.item from put to force a new feature of TABLE. This allows the bracket operator on HASH_TABLE to work properly, that is to say hash_table [i] := j will indeed insert 'j' at key 'i' even if key 'i' is already present. Before it was silently doing nothing since it was using put.
  • Fixed eweasel test#list012 which showed an invariant violation after twining a SORTED_TWO_WAY_LIST and then modifying the copy by adding an element. This introduces a breaking change in all descendants of SORTED_TWO_WAY_LIST.

EiffelNet

  • EiffelNet can select on 256 ports at the same time
  • Fixed on Unix improper handling of EWOULDBLOCK and EINPROGRESS error on Unix which would raise an exception instead of silently ignoring the error as it is done on Windows.
  • New library for IPv6 support.

EiffelProcess

  • Fixed an issue with the library when redirecting inputs/outputs of the child process. Sometime we would be missing some characters and cause a memory corruption at the same time.

EiffelVision2

Click here to check out what was new in other versions


Release notes for EiffelStudio 6.2

Contents

Graphical environment

What's new

  • Added new contract editor tool to ease edition of contracts on routines and classes.
  • Added Eiffel Information System which let you connect external documentation to your Eiffel code and vice versa.
  • Added ability to avoid comment duplication by using the <Precursor> in your descendant comment to reuse the parent one which is shown in all our formatter tools..
  • Added new light batch compiler `ecb'. It provides the same features as `ec' when using the batch mode. Currently projects compiled with `ec' are not compatible with those compiled with `ecb'. The main difference between the two is that `ec' is compiled with exception trace and multithreading support which could slow down the compiler by a factor of 20 to 40% depending on your platform.
  • Added experimental unit testing tool.

Improvements

  • Error list tool now supports multiple selection, for better copy to clipboard usage.
  • Enhanced some errors to report better context information.
  • Optimized adding of items to the Error List by circumventing an expensive search when adding single items.

Changes

  • Error list items context now shows the full group name but after CLASS.feature because it is of lesser importance.
  • Restructured layout of user files to support unification and user-override files of Eiffel compiler installation files. Relocated default Eiffel projects location into the user files folder (windows and mac only).

Bug fixes

  • Fixed the EiffelCOM wizard so that it generates C code that compiles.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • Changed signature of {SPECIAL}.same_items and {SPECIAL}.all_default to take an extra argument. Our analysis shows that it was only used by ARRAY and that it should be harmless. If you have a compilation error, simply add `0' as first argument of your call.
  • Changed physical_size in INTERNAL to return the real allocated size of an object along with its header size.
  • Added deep_physical_size in INTERNAL to compute the size of an object and all its dependencies.
  • Improved speed of read_stream in FILE so that it used underlying `fread' once rather than calling `getc' for each requested character. Our benchmarks show that you can save up to 2s for 1000 calls.
  • Added an assigner routine for item in ARRAY2. This might break descendant classes of ARRAY2 redefining item.
  • Updated code toward Void safety.

EiffelNet

  • Fixed bug in {SOCKET}.read_stream where if there was a socket error, then it would cause a precondition violation in C_STRING.

EiffelTime

  • Added support for DEBUG_OUTPUT for DATE, TIME and DATE_TIME objects making it easier to debug code based on them.
  • Fixed bug where duration in days between two dates overlapping a leap year would yield a result off by +1 or -1.
  • 10% speed improvement on certain date operations (can be seen on eweasel test#time002).

EiffelVision2

EiffelVision2

  • Fixed a bug in {WEL_REGISTRY}.enumerate_key where the routine would go in an infinite loop if the key name was larger than 64 characters.

Click here to check out what was new in other versions


Release notes for EiffelStudio 6.1

Contents

Graphical environment

What's new

  • New default layout for EiffelStudio tools to highlight the most common used tools whereas other tools are still available at the bottom or via the View menu.
  • New Errors and Warnings tool. It replaces the former Errors tool and Warnings tool and provides a nicer way to show errors and filtering them.
  • Revisited all the dialogs to provide a nicer and consistent look and feel.
  • Multiple errors are reported for each compilation degree.

Improvements

  • Use the default OS font for displaying tooltips.
  • C compilation failure will now show up as an error in the new Errors and Warnings tool.
  • Completion list will now show immediately after pressing '.' when the completion list is active.
  • Added ability to submit a problem report within EiffelStudio when it quits unexpectedly.

Changes

  • Support for the MinGW C compiler on Windows 32-bit. Borland is officially not supported anymore.
  • Completion list no longer shows obsolete items by default (set via a preference option).

Bug fixes

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • BINARY_SEARCH_TREE: Added tree_item which matches the item being searched.
  • LINEAR: Added item_for_iteration as a synonym of item.
  • STRING_8 and STRING_32:
    • Improved speed of the to_xxx routines.
    • Added starts_with and ends_with.
  • GC_INFO: Fixed non working computation of CPU time usage on Windows and added two new queries (cpu_total_time and sys_total_time) to find out the total CPU execution time of the program at the last GC cycle.
  • MEMORY: Added execute_without_collection to execute a procedure with no GC.

EiffelVision2

Click here to check out what was new in other versions


Release notes for EiffelStudio 6.0

Contents

Graphical environment

What's new

  • New docking facilities which let you control the layout of tools in EiffelStudio. One can also lock the layout to prevent unwanted changes.
  • New tabbed editor.
  • Added configurable pick and drop which lets you choose between traditional context menu or pick and drop for a mouse right click operation.
  • EiffelStudio is now internationalized, it fully supports English, Chinese and German. A partial translation for French and Russian is provided.
  • Shortcuts can now be customized.
  • Added dependency view so supplier/client dependency of a group/folder/class can be investigated. Feature calls are included in dependency view.

Improvements

  • The combo boxes in the address bar can now be resized to see more text (useful with long class names).
  • Added ability to add new classes/clusters/assemblies early on in the compilation phase instead of waiting for a successful compilation.
  • Faster rendering of EiffelStudio when running it through Remote Desktop.
  • Auto-completion after bracketed expression. i.e. arr [i].*
  • Added preference "Maximum processor usage" to dictate the maximum number of processors/cores to use when compiling c-code.
  • Updated metrics documentation, see for more details .

Changes

  • Changed the diagram default color from light yellow to white for consistency with the background color of other tools.
  • Improved history behavior.
  • Project settings such as arguments/working directory/location are now stored in a user specific location that does not depend on the UUID of the project, but on its path.
  • Favorites are now stored in the user settings.

Bug fixes

  • EiffelStudio and various tools should better handle paths with spaces.
  • Fixed add assemblies dialog not showing assemblies such as mscorlib on 64 bit systems.
  • Fixed bug#12083 where classes in override clusters would not get recompiled properly when automatically saved by EiffelStudio when requesting a compilation.
  • More bug fixes can be seen at the EiffelStudio open source site .

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio's debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • Fixed issue with LINKED_QUEUE.twin which would violate its invariant.
  • Revisited contracts of LINEAR_ITERATOR.
  • Added facilities to read/write REAL_32 and REAL_64 values in big and little endian format in MANAGED_POINTER.
  • Changed INTERNAL so that it does not have the is_pre_ecma_mapping_disabled attribute. If you were setting it to True, you should instead create an instance of ECMA_INTERNAL (fixes bug#11792).
  • HASH_TABLE:
    • Sped up HASH_TABLE iteration and lookup by about 8% or more.
    • Added two new possibilities to detect/prevent catcalls, they can be enabled by enabling assertion checking and enabling the debug clauses prevent_hash_table_catcall and detect_hash_table_catcall.
  • TUPLE can now compare items using reference equality (=) or object comparison (is_equal).
  • Sped up SPECIAL.copy_data which was previously not inlined due to a change of signature preventing the inlining.
  • EXECUTION_ENVIRONMENT.get will only retrieve environment variable. It won't retrieve a value from the registry key on Windows (from HKLM\Software\ISE\Eiffelxx\app_name). This also means that MELT_PATH on Windows cannot be set in registry; this is not really a problem because now you do not need to set it since the W_code knows where to find it.

EiffelNet

  • Updated reading routines of EiffelNet so that for all basic types they would read all the required bytes, not just stop after reading the first. This is important as in some very bad network situation or if you have some signals you could mess up the reading by only reading half of the expected bytes.

EiffelThread

  • Fixed bug#12838 where on Linux you could not create more than 2^15 threads even if they all exited. Now we force creation of threads in a detached mode to allow more than 2^15 thread creations.

EiffelVision2

WEL

  • Raised compatibility bar to Windows 2000 or greater. No more support for Windows 98 or NT 4.0.
  • Added ability to convert image formats among all image formats on Windows (using WEL_GDIP_BITMAP).

Click here to check out what was new in other versions


EiffelStudio 5 release notes

Release notes for EiffelStudio 5.7

Contents

Graphical environment

What's new

  • Dual licensing of EiffelStudio both commercial and open-source.
  • Refactoring facilities: renaming and feature pull-up.
  • Metric engine. It lets you define more advanced metrics. This is the first result of our new query engine.
  • UUID library for generating UUID.
  • Process library for launching, waiting, redirecting outputs of processes.
  • Configuration system. It brings a new dimension to the way you manage multiple projects and simplifies it.

Improvements

  • Output of C compilation now appears within the EiffelStudio environment.
  • Improved tool for launching external commands from within the EiffelStudio environment.
  • Introduced basic support for Unicode in Eiffel libraries, namely EiffelBase, EiffelVision2 and WEL.
  • Improved display of clusters, libraries and assemblies.
  • Added ability to see more relations in the diagram tool. For example, you can select a class and choose to see its descendants in the diagram.
  • If a project that needs a precompile is opened and the precompile does not exist it will automatically be compiled.
  • New projects use precompiles by default which speeds up the initial compilation.
  • Improved search facility that has two faces: a quick search bar in the editor for finding text in the current editor, and a search panel to perform exhaustive search over your project.
  • Profiler output is now sortable and can also be represented as a tree.
  • Redesigned completion engine:
    • Completion on wild-cards to quickly find a routine in a long list.
    • Completion list is now available anytime a text field accepts a class or an expression (Class creation dialog, debugger evaluation expression, ...)
    • On .NET, overloaded routines are all put together under one name.
    • Hidden option can now be set with a toolbar at its bottom.
    • Completion is available even if you have a syntax error in your class.
  • Formatters are now presenting results in a structured way with sorting capability.
  • Overridden classes are now shown with the list of classes they are overriding.

Changes

  • New configuration system. EiffelStudio will automatically convert your existing ace or epr files to the new format.
  • Compilation progress is now displayed in the status bar and in the output pane, no more dialog box.
  • Display of errors and warnings is now done in different panes, so that you do not lose their content when the output pane has changed.
  • Pick and drop is now a dashed line.
  • Redesigned the starting dialog to make it easier to create new projects as well as managing many existing projects.

Bug fixes

  • When in a different format than the editable format, one can now select a feature and it will bring you to the feature in the selected format, rather than going back to the editable format.
  • Fixed various formatting issue for our documentation format.
  • Fixed some memory corruption that could cause EiffelStudio to randomly crash.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio's debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

EiffelBase

  • STRING, STRING_8, STRING_32 and STRING_GENERAL:
    • Added Unicode support through the addition of STRING_32. For the moment Unicode support is limited to the data-structure.
    • Added STRING_GENERAL, a common ancestor to STRING_8 and STRING_32. It is useful if you want to handle both ASCII and Unicode string. For example this facility is used in EiffelVision2 and WEL.
    • STRING can be either STRING_8 or STRING_32 depending on your configuration. Default is STRING_8.
    • Added is_integer_xx, is_natural_xx, to_integer_xx and to_natural_xx where xx stands for 8, 16, 32 or 64.
    • Added is_number_sequence which is semantically identical to the behavior of is_integer in 5.6. Changed behavior of is_integer to check that it fits into a 32-bit integer value.
    • Updated is_double, is_real, is_real_32, is_real_64 so that the specification allows optional integral part or decimal part, but not both (as per the ECMA specification of a real constant). This fixes the bug where 1.e-4 was not considered a valid floating point value.
    • Changed behavior of is_boolean to match the ELKS specification which says the lower case version of the string should either be true or false.
    • Fixed issue in from_c_substring which would not properly if argument start_pos was greater than 1.
  • SED serialization facility:
    • Fixed read_attributes in SED_INDEPENDENT_DESERIALIZER because we simply forgot to check that between the retrieved system and the stored system, a type has the same number of attributes.
    • Fixed wipe_out in SED_OBJECTS_TABLE' which did not reset last_index. As a consequence if you were doing several storing in a row, then last_index kept being incremented but when retrieving the data it would fail because it would expect last_index to start at 1, not at the last incremented value.
    • Changed SED_MEDIUM_READER_WRITER encoding so that it can also be used in a networking context. Basically now before sending the data, we first send the number of bytes of the data, and then the data. The old encoding is still available in SED_MEDIUM_READER_WRITER_1.
  • Added lock_marking and unlock_marking to use lock and unlock in INTERNAL in a multithreaded context. Currently used by the serialization classes.
  • IO_MEDIUM:
    • Added read_integer_XX, put_integer_XX, last_integer_xx and read_natural_XX, put_natural_XX, last_natural_XX where XX stands for 8, 16, 32, 64.
  • HASH_TABLE:
    • Fixed an infinite cycle when using replace_key with a key which is not present in the table.
    • Improved correct_mismatch to also retrieve HASH_TABLEs from version 5.4.
    • Prevented catcalls in HASH_TABLE when you have keys which have a different type.
  • Added a bracket feature to item from ARRAY2.
  • In ACTIVE_INTEGER_INTERVAL the action sequence will only be called if the range actually changes.
  • Fixed launch from EXECUTION_ENVIRONMENT to not inherit handles on Windows.
  • Moved list_eiffel3 and table_eiffel3 to the obsolete library.
  • Changed .NET implementation of the feature FILE.read_line to follow the behavior of the feature in classic mode and to treat either single '%N' or a sequence of '%R' and '%N' as an end of line.
  • Ensured that feature POINTER.out produces under .NET a hexadecimal number like in classic mode rather than a decimal number preceded by 0x.

EiffelNet

  • Added in SOCKET read_integer_XX, put_integer_XX, last_integer_xx and read_natural_XX, put_natural_XX, last_natural_XX where XX stands for 8, 16, 32, 64.
  • Modified put and read in NETWORK_RESOURCE, FTP_PROTOCOL, HTTP_PROTOCOL, FILE_PROTOCOL so that the error checking code is not using socket_ok which might triggers error when there are none.
  • Improved handling of recipients and header_from in SMTP_PROTOCOL so that you can provide a nice `From' or `To' in the message since they are different from the addresses you have to pass from MAIL FROM and RCPT TO.
  • Improved error handling in EiffelNet. Now each time an error occurs you get an exception and the operating system error code is preserved.
  • Added ability to get the number of bytes read for all the read operation through the bytes_read query. This is useful to detect graceful shutdown of sockets.

EiffelThread

  • Refactored the library so that even if you do not have the multithreaded option set, it will compile. However new preconditions have been added so that you know when you are using the library when you cannot.

EiffelVision2

Process

  • New library to launch processes and redirect their output.

UUID

  • New library to generate UUID.

WEL

  • Added Unicode support:
    • All routines taking an argument of type STRING or a generic type with STRING in one of the actual generic parameter have been changed to take an argument of type STRING_GENERAL which should not impact you at all, however make sure that if your redefine such a routine, you need to change the signature to STRING_GENERAL, otherwise you may introduce a CATCALL.
    • All queries of type STRING have been changed to STRING_32. Because STRING_32 should not be convertible to STRING, it would break a lot of existing code, as a result and only for a transition period, we made STRING_32 convert to STRING. In the next release this conversion will be marked obsolete, and in the release after the next it will be removed.
    • For queries whose type is a generic with STRING as one of the actual generic parameter, we changed STRING into STRING_32. Because no automatic conversion can be done in this case, we have introduced for a routine nnnnn following this pattern a new routine nnnnn_8 whose actual generic parameter is still STRING.
  • WEL_TREE_VIEW:
    • Fixed get_item_rect which was always returning a 0,0,0,0 rect as we were not correctly initializing the rect structure with the pointer to the item.
    • Added get_item_text_rect which returns a rect only for the text of the items.
  • WEL_WINDOWS_ROUTINES:
    • Improved window_of_item to reduce the number of cases where we might get an exception. This makes debugging easier.
    • Fixed resource_string_id which generated a call on Void target exception.
  • Added ability to have drop down menus in WEL_TOOL_BAR_BUTTON.
  • Added the ability to add an icon to the SystemTray.
  • Added ability to drop files to WEL_WINDOW components.
  • Made all contextual menus being selectable from both left and right click (formerly it was only left click).
  • Fixed issue with contextual menus which might not appear correctly, nor respond to click or Esc key properly because the menu is not at the front.
  • Fixed in WEL_LIST_VIEW a bug where if the text of the string is too long, it would be displayed but truncated.
  • Fixed incorrect result for title_bar_height in WEL_SYSTEM_METRICS.
  • Fixed a memory corruption due to Windows not sending a WM_DESTROY or WM_NCDESTROY message in all cases when a window is actually destroyed.
  • Fixed a bug in WEL_REGISTRY_KEY_VALUE.string_value that might cause assertion violation when a value is an empty string, because a check whether the last character is null was done without checking if string has at least one character.

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.6

Contents

Graphical environment

Improvements

  • New implementation of the diagram tool with enhanced performance and functionalities
    • Support for UML view.
    • Physics: auto-arrangement of classes using force directed graph.
    • Multiple selection of classes.
    • Improved speed/behavior of drawing/scrolling operations especially on large diagram.
  • Added ability to find features performing an assignment to an attribute, or creating an attribute, as well as features using a procedure as creation procedure.
  • Feature tree is now showing a different icon for frozen and obsolete features.
  • Improved look and feel of applications using the EiffelVision library under Windows XP theme engine.
  • Improved keyboard navigation in EiffelStudio windows/dialogs.
  • Full support for 64 bits operating systems such as Windows, Linux, Solaris, Irix, OpenVMS,...
  • Features tree is also available for classes which are part of the universe, but not yet compiled.
  • New EiffelCOM wizard. Click here for more details.
  • Improved speed of class completion for large system.
  • Added new toggles for alias names and assigner commands to feature tree.

Changes

  • Changed the default C compilation flags on Windows when using Visual Studio as a back-end C compiler. It will now compile C code using the -MT option. It may cause some linking problems if you are using C libraries compiled against the static C library. To solve those issues recompile your C code using the -MT option.
  • Provided keyword highlighting in editor and different views for new keyword assign.

Bug fixes

  • Fixed infinite loop in finish_freezing which could use all the available memory.
  • Fixed some issues with formatting of agent using expressions as target, and display of character and string constants in context tool.
  • Fixed issue where tools that have been externally docked were not properly restored when reopening EiffelStudio.
  • Fixed issue where one could not remove entries added to the list of external commands.
  • Supported keyword highlighting for the keywords infix and prefix in editor and different views.

Compiler

  • Click here for the compiler release notes.

Debugger

  • Click here for the EiffelStudio's debugger release notes.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Libraries

CECIL

  • Due to renaming of EIF_REAL and EIF_DOUBLE into EIF_REAL_32 and EIF_REAL_64, we have also changed the names of some CECIL facilities. Although old names are still valid we may remove their definition in future releases of the compiler. Below is the list of old names and their corresponding new names:
Old name New name
EIF_REAL_FUNCTION EIF_REAL_32_FUNCTION
EIF_DOUBLE_FUNCTION EIF_REAL_64_FUNCTION
eif_real_function eif_real_32_function
eif_double_function eif_real_64_function
EIF_REAL_TYPE EIF_REAL_32_TYPE
EIF_DOUBLE_TYPE EIF_REAL_64_TYPE
EIF_FN_FLOAT EIF_FN_REAL_32
EIF_FN_DOUBLE EIF_FN_REAL_64


EiffelBase

  • Added new storable facility entierly written in Eiffel which enables you to exchange data between classic and .NET. Former version built-in in the Eiffel run-time did not apply for .NET. The classes are located in the new serialization cluster of EiffelBase.
  • ARRAY:
    • Changed signature of subarray to match ELKS specification. It now returns an ARRAY [G] instead of like Current.
    • Fixed has to return True when searching for Void when comparing objects in an array containing a Void element.
    • Fixed issue on .NET with clone/copy which were not really duplicating the internal of the array, and therefore enabling aliasing of its content by more than one array.
    • Fixed a bug in feature occurences that returned   when called with void argument and object_comparision is true.
    • Fixed a bug in feature is_equal that caused stack overflow when some array item is the array itself and object_comparision is true.
  • ARRAYED_LIST:
    • Removed array_valid_index from ARRAYED_LIST. Descendants of ARRAYED_LIST may need to update their inheritance clause. This fixes ability to use put_i_th with indexes that may violate the invariant of ARRAYED_LIST, for example the code below should trigger a precondition and not violate the invariant of ARRAYED_LIST:

list: ARRAYED_LIST [INTEGER]
 
create list.make (5)
list.put_i_th (3, 3)

    • Added implementation query new_filled_list in ARRAYED_LIST. Descendants of ARRAYED_LIST may need to update their inheritance clause.
  • HASH_TABLE:
    • Added merge to HASH_TABLE.
    • Now remove will reset found_item when an element is removed.
  • INTERNAL:
    • Implemented all the routines in the .NET version.
    • Added support for creating TUPLE types in dynamic_type_from_string.
    • Added precondition to set_reference_field to ensure validity of reattachement to attributes.
  • STRING:
    • Changed signature of infix "+" to match ELKS specification. It now returns like Current instead of STRING.
    • Added implementation query new_string. Descendants of STRING may need to update their inheritance clause.
    • Fixed a bug in .NET implementation of feature replace_substring that might produce incorrect result when argument and target of the call is the same object.
    • Merged .NET and classic implementation of STRING so that all features of STRING are now properly implemented for both platforms.
    • Fixed center_justify that would corrupt memory on classic.
    • Changed character_justify, left_justify, right_justify and center_justify so that justification is now done on count instead of capacity. You might expect different results after upgrading, thus check all callers of those routines.
    • Added is_case_insenstive_equal to compare two strings regardless of their case.
    • Rewrote routines is_integer, is_real, is_double, to_integer, to_real and to_double so that they do not rely on C externals. This could breeak some existing code relying on specific locale to read floating numbers.
  • Changed behavior of item and eval in FUNCTION. They will not set last_result with their result. If you want to use last_result you should use call instead.
  • Added new set of classes NATURAL_8, NATURAL_16, NATURAL_32 and NATURAL_64 to perform unsigned integer operations.
  • Made implementations of cursor in descendants of CURSOR_STRUCTURE return a precise CURSOR type.
  • Reduced feature exportation of routines also used as creation procedures of CURSOR descendants to NONE
  • Removed make_sublist from TWO_WAY_LIST public creation procedures.
  • Made file_prunable from FILE obsolete. Use prunable instead.
  • Implemented features collect and full_collect of class MEMORY for .NET.
  • Changed type of feature sign in classes INTEGER_8 and INTEGER_16 to INTEGER_8 and INTEGER_16 respectively.
  • Added a subcluster refactoring with classes that can be helpful for performing code refactoring.
  • Augmented many features that are used to access items by their index (such as ARRAY.item and TABLE.item) with a bracket alias and an assigner command.

EiffelNet

  • Enable to open an URL on a virtual host.
  • Enable to open an URL with login and password (for instance http://login:password@host/path/).
  • Fixed wrong URL analysis.

EiffelThread

EiffelTime

  • Breaking changes:
    • In time format, the use of hh12 alone without specifying AM or PM will default to AM.
    • Changed implementation of DATE_SET to use ordered_compact_date as storage.
  • Added support for [0]hh12 hour format.
  • Added support for specifying hh12 as a standalone format string.
  • Fixed a bug where calling TIME.make_by_fine_seconds would set fractional_second to zero rather than to the expected value.
  • In TIME, comparison of fractional_second is done using a precision of 1.0e-10.
  • Fixed is_positive in DATE_TIME_DURATION so that it is true when either the date or time is zero but the other is positive.
  • Fixed incorrect postcondition of set_origine_date_time in DATE_TIME_DURATION which would fail when argument was Void.
  • Fixed is_correct_date in DATE_VALIDITY_CHECKER to check that year is less than 65535.
  • Fixed DATE_TIME_PARSER when handling time in 12h format, but internally we would convert it into 24h format thus making is_time and is_date_time return False where True was expected.

EiffelVision2

WEL

  • Made WEL 64 bits compliant. This required a breaking change in signatures. Some routines were actually using an INTEGER to represent a POINTER. On 64 bits platform this is not working as INTEGER is 32 bits and POINTER is 64 bits. As a consequence if you are using low level facilities of WEL your code might not compile anymore. Simply replace INTEGER by POINTER to make it compile.

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.5

Contents

Graphical environment

Improvements

  • Added full configuration of colors used in editor
  • Added docking facilities for various tools. It permits the re-ordering of tools within the interface, including making them "float" externally (See EiffelBuild documentation on docking mechanism for more details) .
  • Ability to see when a class is deferred in the context tool formatters. It is shown by adding the `*' character at the end of the class name.

Changes

  • One cannot add a .NET assembly from the GAC anymore, instead you have to specify the path to the assembly in the assembly references list.

Bug fixes

  • Fixed a crash when performing feature completion on classes with errors.
  • On Windows, prevented the EiffelStudio window to go to the back of all windows when you click Ok on the dialog box which appears when a syntax error occurs while compiling a project.

Debugger

  • Enabled conditional breakpoint and expression evaluation for .NET
  • Improved expression evaluation abilities (full range of Eiffel expressions are now supported).
  • Improved object viewer window (word wrapping for large text, ability to see the whole content in one click without having to enter the lower and upper index of a range).

EiffelBuild

  • Click here for the EiffelBuild release notes.

Compiler

  • Click here for the compiler release notes.

Libraries

CECIL

  • Added ability to query type of a generic class where an actual generic parameter is expanded although its base class is not. It suffices to prefix the class name with "expanded ". Reciprocally, you can use the reference version of an expanded class by prefixing with "reference ".

EiffelBase

  • Removed consistent and setup from ANY
  • Removed Void from ANY as Void is now a keyword.
  • Added for_all, do_all, do_if and there_exists to ARRAY. As a consequence descendants of ARRAY which also inherit from LINEAR have to select the proper version of those routines as they also appear in LINEAR.
  • Fixed dynamic_type_from_string from INTERNAL under .NET which was not working if you were using the .NET naming convention or if you specified a namespace.
  • Added generic_count, generic_count_with_type in INTERNAL to find out how many generic parameter a type has.
  • Added generic_dynamic_type_with_type in INTERNAL to find out the type of the i-th generic parameter of a given type.
  • Added memory_map and memory_count_map to give you a precise accounting of all living objects in the running system. It will help you find out any potential memory leak because objects are still referenced where they should not.
  • Improved performance of FILE objects creation by not allocating the last_string internal buffer until it is needed.
  • On Windows, removed side effects of put from EXECUTION_ENVIRONMENT. Before it was setting also some registry keys, now it only set the environment variable for the running process and its children when launched.
  • Allowed zero sized MANAGED_POINTER. Allowed MANAGED_POINTER to share a pointer rather than doing a full memory copy at creation time.
  • Fixed issue with agents where GC did not collect passed arguments to call or item from ROUTINE/FUNCTION. Thus arguments stayed alive until the next call to call or item.

EiffelNet

  • Added close_socket in SOCKETwhich only close the socket for the current process. It will not close it for all processes which are using this socket (e.g. obtained after a fork on Unix platform).

EiffelTime

  • Fixed incorrect display of the short year format when using the following code:

l_date: DATE_TIME
...
create l_date.make_now
print (l_date.formatted_out ("[0]mm/[0]dd/yy"))


EiffelThread

  • Added a new C routine eif_thread_fork for Unix based system for users who would like to use a forking mechanism in a multithreaded system, as the default version of fork will most likely causes some deadlock.

EiffelVision2

WEL

  • Added various missing constants in WEL_*_CONSTANTS classes.
  • Added creation procedure make_permanent in WEL_DLL so that the loaded DLL is loaded until the very end of program's execution. Now WEL_RICH_EDIT_DLL and WEL_COMMON_CONTROLS_DLL are using this new creation procedure. It fixes the issue where a program using WEL_RICH_EDIT would crash when exiting.
  • Fixed a possible C compilation error when using WEL_RICH_EDIT due to a bug in the Microsoft Platform SDK header file for RichEdit.
  • Fixed WEL_SCROLL_BAR to return a valid position when position is more than 65535.
  • Added string_size_extended in WEL_FONT to better know where to draw a string using a specified font on screen,
  • Added height_in_points, height_in_pixels, height_in_twips, and log_font in WEL_CHARACTER_FORMAT. Made height and set_height obsolete.
  • Changed implementation of WEL_REGISTRY_KEY_VALUE in order to fix set_dword_valuewhich was writing incorrect data to the registry keys. Enhanced the typing of values, thus making the non-typed routines obsolete.
  • Made default_key_value obsolete in WEL_REGISTRY.
  • Properly defined is_equal and copy in WEL_STRUCTURE, possibly causing some compilation errors while analyzing the inheritance structure of your classes.
  • Changed signature of non exported routine cwin_destroy_window from WEL_WINDOW to now return a value.
  • Fixed issues when using WEL in a multithreaded application. It would crash if a non WEL thread was trying to destroy a WEL window.

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.4

Contents

Graphical environment

Improvements

  • Added support for mouse wheel in editor and associated parameterization in preferences.
  • Cluster tree is not collapsed anymore between compilation.
  • All callers will not show empty entries.

Bug fixes

  • Fixed issue where setting the string background color to `auto' in the preferences will set it to a black color next time your relaunch EiffelStudio.
  • Fixed issue where typing in an empty features tree will close down EiffelStudio.
  • Fixed issue with BON diagram where expanded client links were not properly displayed (the expanded bar was drawn on top of classes instead of on the link itself).

Debugger

Improvements

  • Ability to debug .NET applications from EiffelStudio. It behaves like the traditional debugger except with the current limitations:
    • no conditional breakpoints
    • no expression evaluation
    • no expansion to see attributes of non-Eiffel objects


Bug fixes

  • Fixed issue on Unix platforms where passing more than 5 arguments will disable debugging and ultimately crash the environment.

EiffelBuild

  • Click here for the EiffelBuild release notes.

Compiler

  • Click here for the compiler release notes.

Libraries

Eiffel2Java

  • Fixed incorrect memory freeing in get_string in JNI_ENVIRONMENT that could cause some memory corruption.
  • Fixed VDRD error in method_id from JAVA_OBJECT.

EiffelBase

  • Optimized i_th from PRIMES for the first 200 prime numbers.
  • Fixed bug in generic_typecode from TUPLE in .NET implementation which fixed an issue with is_reference_item.
  • Made TUPLE a descendant of HASHABLE and defined hash_code (based on the hash_codes of the elements of a TUPLE).
  • Added default_create as creation procedure of TUPLE and made make obsolete.
  • Added convenience features to TUPLE: put_XX_item where `XX' can be replaced by `character, boolean, integer, double,...'.
  • Optimized ROUTINE, PROCEDURE and FUNCTION implementation to speed up agent calls by a factor of 2 to 3. Removed open_operand_type from ROUTINE as its specification was only used internally and specification was not precise enough to be used by clients of ROUTINE.
  • Fixed append from SEQUENCE to not perform a deep_clone when passed argument is the same reference as Current. This was a problem when the base class of the type of the elements inherited from MEMORY and redefined dispose. You could possibly end up freeing twice an external resource.
  • Changed implementation of INTERACTIVE_LIST to be based on ARRAYED_LIST rather than on LINKED_LIST.
  • Added efficient implementation of append in ARRAYED_LIST.
  • Fixed bug in multithreaded mode when you open in two different threads a different file with a different mode. For example one is in read mode, the other one is in write mode. If the operation happens at the same time, you could end up with two files open in read mode or two files open in write mode, which is not the expected behavior.

EiffelNet

  • Fixed bug in set_delay and set_nodelay in NETWORK_STREAM_SOCKET, because their implementations were inverted.
  • Fixed incorrect spelling of maximum_seg_size in NETWORK_STREAM_SOCKET.
  • Added recoverable storable to EiffelNet (was not included in previous version although recoverable storable was available for files).
  • Fixed SMTP_PROTOCOL to follow more closely SMTP RFCs.
  • Added support for multi-line error codes in SMTP_PROTOCOL.

EiffelTime

  • Improved speed of DATE and TIME comparison.
  • In DATE_VALUE added ordered_compact_date and made compact_date obsolete.
  • In DATE added make_by_ordered_compact_date and make_by_compact_date obsolete.
  • In DATE_VALIDITY_CHECKER added ordered_compact_date_valid.
  • Fixed C_DATE to buffer the current time rather than querying it for each of the time components. Not doing that was causing a bug in DATE, DATE_TIME and TIME where if the computation was done on December 31st at 23:59:59 2003, we could end up with a date of January 1st 2003, therefore being one year off. This is a breaking change from before and if you are using C_DATE, use update before each call to the *_now queries if you expected to reflect the time at the time of the query.

EiffelThread

  • Added support for .NET
  • Made OBJECT_OWNER obsolete
  • Added wait_with_timeout in CONDITION_VARIABLE
  • Added READ_WRITE_LOCK class to be used in a system where few writes are done compare to reads. A typical example of its use would be to have a thread safe lookup table where few insertions are done.
  • Now a C externals that might block the execution of a system, should be marked `blocking'. See compiler changes for more details .

EiffelVision2

EiffelWeb

  • Fixed issue when sending exception trace to browser. On most servers you were getting an internal error rather than the exception trace.
  • Fixed issue with cookies from CGI_ENVIRONMENT as keys were stored as items, now the keys are stored as keys, items as items.

WEL

  • Renamed convert from CONVERTER class into extract_definition.
  • Renamed convert from WEL_FONT_FAMILY_ENUMERATOR class into update_current.
  • In WEL_TREE_VIEW, calling deselect_item will now really deselect the item, whereas previously, it only caused the item to be redrawn without selection.
  • In WEL_REGISTRY, open_value_key will now accept an empty string so that the default key value can be read.
  • Fixed issue with dword_value in WEL_REGISTRY_KEY_VALUE which returned incorrect values.
  • Made make in WEL_REGISTRY_KEY_VALUE accepts only string values, if you want to create a new instance with a value of a different type you need to use the new creation procedure make_with_value.

.NET libraries

  • Renamed THREAD and MUTEX into SYSTEM_THREAD and SYSTEM_MUTEX to avoid name conflicts with EiffelThread.

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.3

Contents

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 compiler release notes for more info).
  • Recoverable storable (See 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 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

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.

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.2

Contents

Graphical environment

  • Added a status bar, which gives a lot of information, such as the state of the compilation or the name of the current project.
  • Clicking feature clauses in the feature tree now centers the editor on the selected feature clause.
  • More specific icons in the feature and cluster trees, so that identifying deferred classes and the nature of features is now straightforward.
  • Up to 10 external commands can now be defined and called from the Tools menu.
  • The new Quick compile command lets you recompile only the classes that have been edited in EiffelStudio, skipping the sometimes tedious degree 6, that looks for modified classes.
  • Control picking now has a configurable effect.
  • More improvements in usability and bug fixes.

Compiler

  • Click here for more details on compiler improvements and full Eiffel support on .NET

Debugger

  • Right-clicking on one of the run buttons will pop up a dialog enabling you to choose the command line argument (it is a shortcut for `Project Settings'-> Debug tab).
  • Expressions can now be dynamically evaluated in the debugger. ( info )
  • Conditional breakpoints. ( info )
  • Classes can now define  debug_output , a feature inherited from  DEBUG_OUTPUT , whose string result is automatically displayed in the debugger for all objects of that type. ( info )
  • Possible stack overflows can now be detected in the debugger before they occur. ( info )

Libraries

EiffelBase

  • Improved speed of search operations in  ARRAYED_LIST and  HASH_TABLE .
  • Reduced number of exported features in  TUPLE .
  • Updated  INTERNAL and  TUPLE to accept  INTEGER_XX based queries/commands.
  •  STRING changes:
    • Fixed  is_integer to return False for strings of the form "(-|+)[a-zA-Z]+[0-9]*)"
    • Improved speed of  to_lower and  to_upper .
    • Updated for ELKS 2001 conformance:
      • Changed signature of  out and  replace_substring to use  STRING instead of `like Current'.
      • Added  keep_tail ,  keep_head ,  remove_tail ,  remove_head and make  head and  tail obsolete.
      • Added  string ,  same_string ,  has_substring ,  fill_with ,  insert_string ,  insert_character ,  as_lower ,  as_upper .
      • Modified  make_from_string so that no sharing of internal string is done.
      • Made  remake ,  replace_character and  insert obsolete.


EiffelThread

  • Fixed crashes when using  join or  terminated from  THREAD_CONTROL .

EiffelTime

  • Rewritten so that no additional C libraries is needed. Therefore you have to update your project configuration files to reflect this change, i.e. removing the include directory and the object file of the old EiffelTime library.

EiffelVision2

WEL

  • Changed type of non-exported feature  internal_data of  WEL_WINDOW from  INTEGER to  POINTER .
  • Fixed a GDI memory leak when creating/releasing instances of descendant of  WEL_CONTROL .

Patch releases

Version 5.2.1402:

  • Put Windows and Unix version to the same version number.
  • Fixed EiffelWeb documentation and example.
  • Fixed minor issues found with EiffelVision2 on Unix and Windows which were affecting EiffelBuild.
  • 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 EiffelStore handle for Oracle so that it works fine when compiled with the Borland C compiler.
  • Fixed incorrect version number in VERSION file on Unix platforms.

Version 5.2.1313:

  • Fixed resource leak on Windows 98 and Windows Me.
  • Fixed incorrect implementation of  area and  substring for  STRING in dotnet mode.
  • 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 in IL code generation where having a class that inherits from a non-Eiffel .NET class. And the class has the following features:

a: ARRAY [like f]
f: STRING is
	do
	end

Then you could neither load nor execute the generated code.

  • Fixed issue with incorrect C code generation of inspect instruction based on character values above 128.
  • 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

  • Fixed incorrect C file naming when generating a .NET system that uses a C++ external (it should be .cpp, not just .c).
  • Enabled support for Borland C compiler in .NET.
  • 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.

Version 5.2.1123:

  • Fixed issue when inheriting a .NET class that has some static constants defined.

Version 5.2.1122:

  • Fixed issue when opening the about dialog of EiffelStudio.
  • Enabled EiffelStudio for all users on a machine, not just for the one installing EiffelStudio.

Version 5.2.1118:

  • First initial release of EiffelStudio 5.2

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.1

Contents

Graphical environment

  • Numerous improvements in usability and bug fixes.
  • Richer class and cluster creation dialogs.
  • Class name completion in the editor (by pressing Ctrl+Shift+Space half-way through the class name).
  • Editor now supports drag-and-drop of the selection.
  • When debugging a project from EiffelStudio, the current directory will be your project directory. It is a change from previous version where:
    • on Windows, it used to be launched in the W_code subdirectory of your project directory
    • on Unix, it used to be launched from the same directory where `estudio' (or `ebench') was launched.
  • EiffelStudio GUI now also available on Unix platforms and Windows 9x/Me

Compiler and .NET

  • Click here for more details on compiler improvements and full Eiffel support on .NET

Libraries

EiffelBase

  • It is now forbidden to create a  BIT_REF or a  BIT X object using its creation procedure (before it was accepted but did not work)
  • Added  make_temporary_name in  FILE_NAME
  • Made  to_c obsolete from class  INTEGER_INTERVAL
  • Changed semantic of  split from class  STRING
  • Fixed a bug in  clear_all from  HASH_TABLE that kept a reference to the last found item. Now it does not keep the reference after a call to  clear_all .

Vision2

Click here to check out what was new in other versions


Release notes for EiffelStudio 5.0

Contents

Graphical environment

  • New Look and feel.
  • New way of starting EiffelStudio and simplified the process of compiling an existing project.
  • New editor with:
    • smart syntax highlighting
    • feature completion (by pressing Ctrl+Space after an identifier).
    • syntax completion of major control statement (if, from, is,...)and of symbols such as `{', `[', `(', `"',...
    • smart auto indenting
    • block indent and exdent.
    • infinite level of Undo/Redo
  • When edition of a class text which has been successfully compiled, the class will be fully `pick-and-droppable'.
  • Faster rendering for Clickable, Flat, Contract (previously known as Short) and Flat Contract views.
  • System tool has been replaced by a `project settings' window. The underlying mechanism of the configuration file is kept, but all changes are done through a nice GUI making it simpler for beginners to create their first configuration file.
  • Toolbars are now customizable
  • EiffelCase has been merged within EiffelStudio to provide a true reverse engineering using the BON notation.

Compiler

The compiler has been improved in many ways and some functionality have been added. Check it out .

Debugger

  • New debugger functionalities:
    • one can step-in, step-out, step-by-step when they want to.
    • one can put a breakpoint on the fly (Windows Only)
    • one can see all local variables and arguments.
    • one can set breakpoints in all kind of assertion clauses except in invariants.
  • Debugging is faster.

Documentation

  • New documentation generation (limited now to HTML) which is completely clickable as if within EiffelStudio. It also includes an EiffelCase-like documentation generation.
  • Generation of XMI which can be used in tools such as Rational Rose.

Libraries

EiffelBase:

  • No more GENERAL class as proposed by the NICE committee. It has been replaced by ANY which does not inherit any more from PLATFORM.
  • Adaptation of the ARRAY class to the ELKS 2000 standard.
  • This implies a change in our CONTAINER class where we renamed empty into is_empty and made empty obsolete. If you were inheriting from CONTAINER and redefining empty, make sure to update your code so that you redefine is_empty instead. That way your polymorphic calls will still work as expected without having to change all call to empty into calls to is_empty.
  • New implementation of is_equal on LIST which will now check that two lists are identical if their items are identical.
  • New implementation of copy on LIST.
  • New implementation of an iterative is_equal on TREE which will now check that two trees are identical if their items are identical.
  • New implementation of an iterative copy on TREE, which recursively copies the tree.
  • New ROUTINE classes which perform better type checking on argument passing.
  • Introduction of binary operations on INTEGER types: infix "&",infix "|", bit_xor, bit_not, bit_shift, infix "|>>", infix "|<<"and bit_text.
  • Removed infix "^" from NUMERIC. It does not break any inheritance, but break clients that were using this operator on an entity declared of type NUMERIC. This is due to the different return type of this operator depending the NUMERIC type you are handling.
  • Changed the signature of pruned in BINARY_SEARCH_TREE to take an extra argument. This was necessary to fix a problem that caused the `parent' attributes to become inconsistent under certain conditions when calling pruned.
  • Re-implemented the features disjoint and symdif of SUBSET. These features caused problems under certain conditions and were also quite inefficient. The new implementation of these features uses the strategy pattern to choose among different versions of these calculations depending on the properties of the elements contained in the set.
  • All features on SUBSET that take another subset as an argument(e.g. intersect) now accept any other subset type as an argument, independent of its underlying implementation, and not only subsets of type `like Current'.
  • Many smaller bug fixes for bugs that were reported by our customers or that have been discovered during our development andtesting.

WEL:

Modified classes relative to the use of registry keys to be written only using Eiffel and externals to Win32 API (no more C intermediates). In the process close_key and delete_key are now commands and not queries. To find out if it their call was successful, you can query last_call_successful.

Click here to check out what was new in other versions