Version
Release notes for EiffelStudio 5.7
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
Graphical environment
- More flexibility has been added for the layout in the debugging tool. One can merge the Current objects with the locals and arguments.
- The objects and watches tools restore the tree structure when stepping, and highlight value differences.
- New thread tool that let you switch from one thread to another while debugging.
- New Exception handling tool that let you ignore or catch certain kind of exceptions.
- New breakpoint tool to see at glance the status of all your breakpoints.
- Added ability to see the routine that defines an agent object (classic only for now).
Debugger engine
- One can debug multithreaded application.
- One can ignore certain kind of exceptions.
- One can disable Assertion checking during debugging (only classic system for now).
- Dotnet debugger is now much more stable for dotnet 2.0
- Improved expression evaluation error reporting system to provide more information
EiffelBuild
- Click here for the EiffelBuild release notes.
Libraries
EiffelBase
-
STRING ,STRING_8 ,STRING_32 andSTRING_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 toSTRING_8 andSTRING_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 eitherSTRING_8 orSTRING_32 depending on your configuration. Default isSTRING_8 . - Added
is_integer_xx ,is_natural_xx ,to_integer_xx andto_natural_xx where xx stands for 8, 16, 32 or 64. - Added
is_number_sequence which is semantically identical to the behavior ofis_integer in 5.6. Changed behavior ofis_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 where1.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 argumentstart_pos
was greater than 1.
-
CHARACTER ,CHARACTER_8 andCHARACTER_32 :- Removed
WIDE_CHARACTER andWIDE_CHARACTER_REF ; they are replaced byCHARACTER_32 andCHARACTER_32_REF .
- Removed
-
REAL_32 andREAL_64 :- Renamed
REAL intoREAL_32 , andDOUBLE intoREAL_64 .REAL can be eitherREAL_32 orREAL_64 depending on your configuration. Default isREAL_32 . - Added
rounded_xxx ,floor_xxx andceiling_xxx where xxx is the current floating point type, as the version returning anINTEGER is definitely not precise for large numbers.
- Renamed
- SED serialization facility:
- Fixed
read_attributes inSED_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 inSED_OBJECTS_TABLE ' which did not resetlast_index . As a consequence if you were doing several storing in a row, thenlast_index kept being incremented but when retrieving the data it would fail because it would expectlast_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 inSED_MEDIUM_READER_WRITER_1 .
- Fixed
- Added
lock_marking andunlock_marking to uselock andunlock inINTERNAL in a multithreaded context. Currently used by the serialization classes. -
IO_MEDIUM :- Added
read_integer_XX ,put_integer_XX ,last_integer_xx andread_natural_XX ,put_natural_XX ,last_natural_XX where XX stands for 8, 16, 32, 64.
- Added
-
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_TABLE s from version 5.4. - Prevented catcalls in
HASH_TABLE when you have keys which have a different type.
- Fixed an infinite cycle when using
- Added a bracket feature to
item fromARRAY2 . - In
ACTIVE_INTEGER_INTERVAL the action sequence will only be called if the range actually changes. - Fixed
launch fromEXECUTION_ENVIRONMENT to not inherit handles on Windows. - Moved
list_eiffel3 andtable_eiffel3 to theobsolete 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 andread_natural_XX ,put_natural_XX ,last_natural_XX where XX stands for 8, 16, 32, 64. - Modified
put andread inNETWORK_RESOURCE ,FTP_PROTOCOL ,HTTP_PROTOCOL ,FILE_PROTOCOL so that the error checking code is not usingsocket_ok which might triggers error when there are none. - Improved handling of
recipients andheader_from inSMTP_PROTOCOL so that you can provide a niceFrom
orTo
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
- Added Unicode support. Read the WEL entry for Unicode below to see the impact on your code.
- Click here for EiffelVision2 release notes.
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 withSTRING in one of the actual generic parameter have been changed to take an argument of typeSTRING_GENERAL which should not impact you at all, however make sure that if your redefine such a routine, you need to change the signature toSTRING_GENERAL , otherwise you may introduce a CATCALL. - All queries of type
STRING have been changed toSTRING_32 . BecauseSTRING_32 should not be convertible toSTRING , it would break a lot of existing code, as a result and only for a transition period, we madeSTRING_32 convert toSTRING . 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 changedSTRING intoSTRING_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 stillSTRING .
- All routines taking an argument of type
-
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.
- Fixed
-
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.
- Improved
- 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 inWEL_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.
Back to 5.x
cached: 12/12/2024 12:35:28.000 PM