Release notes for EiffelStudio 5.7
- 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.
- 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.
- 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.
- 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.
- Click here for the compiler release notes.
- 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).
- 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
- Click here for the EiffelBuild release notes.
STRING, STRING_8, STRING_32and STRING_GENERAL:
- Added Unicode support through the addition of STRING_32. For the moment Unicode support is limited to the data-structure.
STRING_GENERAL, a common ancestor to STRING_8and 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.
STRINGcan be either STRING_8or STRING_32depending on your configuration. Default is STRING_8.
is_integer_xx, is_natural_xx, to_integer_xxand to_natural_xxwhere xx stands for 8, 16, 32 or 64.
is_number_sequencewhich is semantically identical to the behavior of is_integerin 5.6. Changed behavior of is_integerto check that it fits into a 32-bit integer value.
is_double, is_real, is_real_32, is_real_64so 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-4was not considered a valid floating point value.
- Changed behavior of
is_booleanto match the ELKS specification which says the lower case version of the string should either be true or false.
- Fixed issue in
from_c_substringwhich would not properly if argument
start_poswas greater than 1.
CHARACTER, CHARACTER_8and CHARACTER_32:
WIDE_CHARACTERand WIDE_CHARACTER_REF; they are replaced by CHARACTER_32and CHARACTER_32_REF.
REALinto REAL_32, and DOUBLEinto REAL_64. REALcan be either REAL_32or REAL_64depending on your configuration. Default is REAL_32.
rounded_xxx, floor_xxxand ceiling_xxxwhere xxx is the current floating point type, as the version returning an INTEGERis definitely not precise for large numbers.
- SED serialization facility:
read_attributesin SED_INDEPENDENT_DESERIALIZERbecause we simply forgot to check that between the retrieved system and the stored system, a type has the same number of attributes.
wipe_outin SED_OBJECTS_TABLE' which did not reset last_index. As a consequence if you were doing several storing in a row, then last_indexkept being incremented but when retrieving the data it would fail because it would expect last_indexto start at 1, not at the last incremented value.
SED_MEDIUM_READER_WRITERencoding 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.
lock_markingand unlock_markingto use lockand unlockin INTERNALin a multithreaded context. Currently used by the serialization classes.
read_integer_XX, put_integer_XX, last_integer_xxand read_natural_XX, put_natural_XX, last_natural_XXwhere XX stands for 8, 16, 32, 64.
- Fixed an infinite cycle when using
replace_keywith 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_TABLEwhen you have keys which have a different type.
- Fixed an infinite cycle when using
- Added a bracket feature to
ACTIVE_INTEGER_INTERVALthe action sequence will only be called if the range actually changes.
launchfrom EXECUTION_ENVIRONMENTto not inherit handles on Windows.
list_eiffel3and table_eiffel3to the obsoletelibrary.
- Changed .NET implementation of the feature
FILE. read_lineto 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. outproduces under .NET a hexadecimal number like in classic mode rather than a decimal number preceded by 0x.
- Added in
SOCKET read_integer_XX, put_integer_XX, last_integer_xxand read_natural_XX, put_natural_XX, last_natural_XXwhere XX stands for 8, 16, 32, 64.
putand readin NETWORK_RESOURCE, FTP_PROTOCOL, HTTP_PROTOCOL, FILE_PROTOCOLso that the error checking code is not using socket_okwhich might triggers error when there are none.
- Improved handling of
recipientsand header_fromin SMTP_PROTOCOLso that you can provide a nice
Toin 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_readquery. This is useful to detect graceful shutdown of sockets.
- 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.
- Added Unicode support. Read the WEL entry for Unicode below to see the impact on your code.
- Click here for EiffelVision2 release notes.
- New library to launch processes and redirect their output.
- New library to generate UUID.
- Added Unicode support:
- All routines taking an argument of type
STRINGor a generic type with STRINGin one of the actual generic parameter have been changed to take an argument of type STRING_GENERALwhich 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
STRINGhave been changed to STRING_32. Because STRING_32should 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_32convert 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
STRINGas one of the actual generic parameter, we changed STRINGinto 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.
- All routines taking an argument of type
get_item_rectwhich was always returning a 0,0,0,0 rect as we were not correctly initializing the rect structure with the pointer to the item.
get_item_text_rectwhich returns a rect only for the text of the items.
window_of_itemto reduce the number of cases where we might get an exception. This makes debugging easier.
resource_string_idwhich generated a call on Void target exception.
- Added ability to have drop down menus in
- Added the ability to add an icon to the SystemTray.
- Added ability to drop files to
- 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_VIEWa bug where if the text of the string is too long, it would be displayed but truncated.
- Fixed incorrect result for
- 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_valuethat 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.