EiffelStudio 14.05 Releases

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

EiffelStudio 14.05.x Releases

Beta download: ftp://beta:beta57@ftp.eiffel.com/14.05/

14.05.9.5417 (July 26th, Maintenance Release)

Bug Fixes

  • compiler: Fixed issues with usage of qualified anchored types that would either cause a crash or report bogus validity errors
  • dotnet: Fixed an issue with consuming .NET COM wrapped classes on Windows Server 2012 or Windows 8 only due to a different interface implementation of System.__ComObject on those platforms compared to older version of Windows. We have reported the mismatch to Microsoft http://connect.microsoft.com/VisualStudio/feedback/details/906018/.
  • studio: Better type suggestion for missing type suggestion not involving attachment marks when not needed.
  • inspector: New command line options to allow more command line regression testing.
  • studio: Fixed crash in outgoing PDF links.
  • studio: Fixed `fix' contextual menu that was not doing anything in error tool panel
  • studio: menu entries are not truncated anymore
  • studio: Less flashing over remote desktop/citrix session when using completion window.

14.05.9.5220 (June 2nd, Final Release)

New features

  • zeromq: Added some samples
  • compile_all: Made it possible to compile projects for a specific platform or to exclude a platform.

Improvements

  • studio: Improved UI for fixes.
  • studio: Improved error list layout to avoid too many columns. Fixed an issue on Windows when sorting by Description the word `Description' will be mangled.
  • static_analyzer: Made it work with the command line version of the compiler (ecb).

Feature removed

Bug fixes

  • studio: Cannot apply a fix more than once.
  • studio: Improved fixes for unused local by removing the `local' keyword if they are no more locals left, removed comments if it appears on the same line as the unused local.
  • studio: Made sure that the groups content is shown very early on during compilation. Made sure that the `search' mini-toolbar button is always active.
  • studio: Fixed a major slowdown when generating formatted text of classes/features if the associated class text had been recently touched. We were rebuilding the cache each time. (rev#95120).
  • compiler: Fixed a compiler crash when analyzing the following qualified anchored type `like x.f' where f is defined as `f: like y.z.w' (See eweasel test#anchor077).
  • static_analyzer: Fixed a crash when processing a class with a note clause entry that does not have a tag.
  • static_analyzer: Fixed an issue with static code analyzer if launched from a directory without any write permission, it would crash trying to write `last_analysis_result.csv' in that directory. Now we save the file in the EIFGENs/target directory.
  • static_analyzer: Improved reports for CA020 to take into account the rescue compound and thus preventing messages of `retried set but never read'.
  • static_analyzer: Ensured that we do not report an error for l := list; across l as c loop .. end stating that l was set but never read.
  • vision2: Fixed a bug that would allow pick and drop on disabled items because we had made them ok to be dropped on.
  • vision2: Fixed various assertions violations on Windows when closing/destroying a dialog.
  • vision2: Fixed issue when wiping out a notebook (See autotest#TEST_EV_NOTEBOOK.test_wipe_out).
  • vision2: Fixed bug#18716 where if a menu entry is of the form `my_entry' it will remove the `_' and make the `e' an underlined letter. The issue is that on GTK we need to replace _ by __ and the & by _.
  • vision2: Fixed autotest#TEST_EV_STANDARD_DIALOG and bug#18877 where if you call destroy on a dialog after closing it, it will violate its postcondition on Windows.
  • vision2: Avoided a few catcalls in Vision2 by refactoring some code.
  • base: Fixed {FILE_UTILITIES}.files_end_with to respect the depth level specified in argument. This caused EiffelStudio's profiler wizard to take a few seconds to load on large projects.

User changes

Developer changes

14.05.9.4974 (May 1st 2014)

New features

  • iron: Integration of iron package manager to EiffelStudio.
  • studio: New Fix facilities to semi-automatically fix errors or warnings such as unused local variables.

Improvements

  • iOS: Refreshed our runtime support for the latest iOS 7 with support for both 32-bit and 64-bit architecture.
  • compiler: Now compiler reports all VWEQ warnings as before it was only doing it if you were comparing an expanded with a reference. (rev#94966)
  • store: Better handling of REAL_32 and REAL_64 to decimal when the associated column is a decimal (see updated TEST_NUMERIC_TYPES test).
  • store: Removed precondition `is_allocatable' or `descriptor_available' or `descriptor_is_available'. We simply perform a check after trying to allocate a descriptor if it is successful or not. This fixes some issue with the interface of DATABASE_MANAGER which never checked that precondition anyway. (rev#94913)
  • wel: Optimized WEL_RICH_EDIT_BUFFER_SAVER.
  • vision2: On GTK made creation of an EV_PIXEL_BUFFER slightly faster.
  • vision2: Made it possible to query `start_selection' and `end_selection' even when there is no selection, in which case they return the same value as `caret_position'. Same for `selected_text' and returning an empty string when there is no selection.

Feature removed

Bug fixes

  • compiler: Fixed CECIL library creation to take into account the new memory_analyzer.o and offset.o modules of the runtime.
  • compiler: Fixed bug#18855 where we used the wrong constant to display the command switch for the `-debug' option. (rev#94884)
  • studio: Fixed error that prevented adding templates when editing the contract of a routine.
  • autotest: Fixed issue introduced in previous intermediate release which prevented AutoTest from running.
  • base: Fixed postcondition of `escaped_utf_32_substring_into_utf_16_0_pointer' where we forgot the `negation' on whether the source string has a %U character or not. As a consequence we never checked that the output string would roundtrip. (rev#94842).
  • base: Fixed issues with the handling of the Unicode escape character. If the escaped UTF-32 string contains the escape sequence and it is trying to escape something that could fit the UTF-16 or UTF-8 encoding, then we store the content as is. This is to avoid the case for UTF-16 where if you have: "?61" it would yield "a" after round-tripping. Now if the UTF-16 or UTF-8, contains the escape character, the resulting string would have it twice, which again preventing proper roundtriping. (review#6283628036227072, autotest#TEST_UTF_CONVERTER, rev#94898).
  • store: Fixed issue with storing large strings when using a prepared statement or a stored procedure (rev#94776).
  • store: Fixed a bug when storing a string into a binary column in the database, because we would convert the database type from binary to longvarchar which would cause a mismatch.
  • store: For stored procedures and prepared statements, improved the behavior of storing binary data by not imposing on the user to convert its binary stream to hexadecimal. This is a breaking change as now it will store whatever you provide as is. For traditional SQL statements it remains the same and binary data needs to be converted. (rev#94824).
  • wel: Fixed autotest#TEST_WEL_STRING where if you have Unicode characters above the 65535 value, the result of the conversion to UTF-16 requires more space and when you have to replace %N into %R%N we forgot to resize the content before inserting the %R%N characters. (rev#94836).
  • vision2: Fixed a bug in {EV_TEXT}.selected_text on the Unix platform where if the text contained non-ASCII character, then it will just return the UTF-8 sequence of those Unicode characters instead of the Unicode characters (rev#94874).
  • vision2: Fixed `{EV_DRAWABLE}.draw_sub_pixel_buffer' on GTK when the rectangle provided is larger than the image. This was causing a seg fault on GTK. Fixed `{EV_PIXEL_BUFFER}.sub_pixel_buffer' which also failed if the provided area was larger than the image. (rev#94882)
  • vision2: Fixed a precondition violation in the implementation of `get_pixel' where the C memory was shared with a size too small we need 4 extra-bytes to read our pixel integer data. This fixes autotest#TEST_EV_SCREEN.text_pixel_color_relative_to.(rev#94887).
  • vision2: Fixed various issues on Windows with EV_TEXTABLE component when the text contains Unicode characters that generate a surrogate pair in UTF-16, the Windows API always refers to UTF-16 code units while at the Eiffel level we still refer to character position.
  • vision2: * Made `selection_start' and `selection_end' obsolete as `selection_end' was returning a character position and not a caret position which is counter-intuitive since `set_selection' is using caret positions. Introduced `start_selection' and `end_selection' instead that return the selection start and end in caret positions. This fixes autotest#TEST_EV_TEXT with respect to `has_selection', `set_selection', `selected_text', `start_selection' and `end_selection'.
  • autotest: Fixed an issue that happens once in a while where on Linux tests would fail with "Evaluator Died" . (bug#18078, rev#94876)
  • autotest: Partial fix for bug#18838 by preventing a crash when no executable is present (case of compiling an ECF as a library instead of an application). Now the next step will be to disable the menu entries when we have such as system. (rev#94972).
  • autotest: Fixed bug#18686 where if you start running a test that you just renamed it would crash because we reset the evaluator controller and thus make `connection' Void. Now we check that connection is still active before sending the request. (rev#94973)

User changes

Developer changes

14.05.9.4743 (March 31st 2014)

New features

  • Inspector Eiffel: Added a new static analysis tool to help you improve the quality of your code using predefined rules such as useless entities, unneeded nested ifs, unused arguments,... More details at Code Analysis
  • Added tool `emdc.exe' to inspect the .NET cache at a given location.
  • base: Added is_substring_whitespace (rev#94633).
  • logging: Added support for PATH in log writer file to handle unicode file name (rev#94634).

Improvements

  • store: Added support for handling NULL values in a database using ODBC when using a mapping in DB_SELECTION, DB_DYN_SELECTION, DB_CHANGE or DB_DYN_CHANGE (rev#94622).
  • compiler: various improvements to type inference.

Feature removed

Bug fixes

  • store: Fixed a crash when the length of a table or column name would be more than 50 characters (Fixes test TEST_LENGTH_OF_COLUMN_NAME in rev#94591).
  • store: Fixed an issue where large ASCII data would have their first byte missing when using ODBC (Fixed in rev#94661).
  • runtime: Fixed an issue where retrieving a large amount of objects on a x86 platform, we would crash where restoring one of the store/retrieve stack using `epop' (see rev#94572).
  • runtime: Fixed a potential overflow issue with store/retrieve when you have more than 2^31 objects. (Fixes bug#18835 in rev#94573).
  • studio: The addition of the showing of contracts in the completion window had the side effect of removing the comment when showing a feature tooltip because we forgot to ask for them (Fixes bug#18839).

User changes

  • arguments: Changed the default display of help by showing first the option arguments and then the non-switched arguments.
  • studio: EiffelStudio will not load 5.7 and older .ACE file or .EPR file. Support for .EPR files is completely dropped. Support for .ACE file is continued but a tool is provided to convert them into a .ECF file; the tool is available with the other tools from EiffelStudio and its name is ace2ecf.
  • regexp: Renamed CHARACTER_SET and BYTE_CODE into PCRE_CHARACTER_SET and PCRE_BYTE_CODE to avoid name conflicts with libraries that have the same class names.

Developer changes

  • void-safety: most of the framework libraries are now fully void-safe.

14.05.9.4570 (March 3rd 2014)

New features

Improvements

Bug fixes

  • xml: Fixed XML parser when the input file is exactly the same size as the xml file input stream chunk size (default 4096 bytes). Improved parser to catch earlier issue related with end of input. This fixed an issue in the compiler not being able to retrieve ECFs with such a size.
  • compiler: Fixed eweasel test#valid265 where if the variant expression is of an anchored type, it would fail to accept it, even if the anchor resolves to an integer type.
  • compiler: Fixed test#anchor075 for bug#18824 where `like {X}.dotnet_query' would crash the compiler at degree 3 because we do not fill the {SYSTEM_I}.rout_info_table for .NET routines.
  • compiler: Fixed eweasel test#freez022 by recording the converted type of an argument to later properly evaluate like arguments.
  • compiler: Fixed an issue with catcall checking which would crash when enabled in the specific case where a type used as argument has some conversion routines. See test#catcall013.

14.05.9.4490 (February 21st 2014)

New features

  • compiler: Added ability to extract file location of a class in interactive mode.
  • compiler: Made it possible to compile a project for Windows on Unix, and vice-versa by using the -platform xxx command line, where xxx can be unix, windows, macintosh or vxworks.
  • compile_all: Improved compile_all tool to return a non-zero exit code when there is a failure. Made it possible to target a specific platform. Also if an ECF has a platform setting set, and we are not compiling for that platform, the ECF will be ignored.
  • compiler: The interactive mode of the compiler can now show the path of a class using the w menu in the class menu.
  • base: Added is_whitespace and is_substring_whitespace.
  • compiler: improved support for type inference.

Improvements

  • studio: Reduced size of project.epr and time it takes to save/retrieve a project by only saving what is needed. Some large projects went from 250MB down to 100MB on disk, and from 800MB to 300MB in memory usage.
  • store: All sublibraries compile in complete void-safety mode.
  • compiler: Made compiler more robust if some routines/classes are not found as expected by the compiler. It will now report a Library_error error instead of crashing at various stages of the compilation process.
  • libraries: All libraries/examples/tools and other ECFs are now checked daily to ensure nothing breaks. As a result fixed a few issues for code that did not compile.
  • compiler: Improved command line usage which will report why the command line is incorrect instead of displaying the whole help which is not very useful.
  • compiler: Fixed an issue when you provide a directory instead of a file, it would report an internal error instead of just stating it could not open the file.

Feature removed

Bug fixes

  • vision2: Fixed by one error when mapping a caret position to the actual caret position of the underlying Windows implementation that has %R%N and not just %N. This fixes vision2 test {TEST_EV_TEXT}.test_test_caret_positioning.
  • compiler: Fixed an issue with interactive mode where displaying all classes was actually not display classes which are part of a recursive cluster.
  • compiler: Fixed eweasel test#anchor073 and test#anchor074 for bug#18758, and test#anchor059. Code now compiles, but it shows that there is still some work to be done. It improves the behavior of test#anchor005 and test#anchor042.
  • compiler: Fixed test#anchor050. This addresses an issue where on .NET it would fail because for a query whose type is `like {X}.val' we would record what the type of `{X}.val' was, and not record that we needed the routine `val' of {X} for generating the type information for .NET code.
  • compiler: Fixed eweasel test#anchor065 where if you have `like {G}.value' it would crash the compiler.
  • compiler: Remove a code generation cast that caused a failure. The drawback is that the code does not verify any more (even though the code is safe). This fixes test#anchor018, test#anchor050, test#anchor054, test#anchor056, test#anchor059, test#anchor063 and potentially other tests.
  • compiler: Fixed a bug in the interactive mode of the compiler that was preventing the display of classes that belong to a folder of a cluster.

User changes

  • studio: Now EiffelStudio will never propose to save tests in the hidden EIFGENs/project/Testing subdirectory.

Developer changes

  • compiler: Fixed test#term194.
  • compiler: Improved memory tool to list all fields of an object.

14.05.9.4243 (February 10th 2014)

New features

  • net: EiffelNet with SSL support.
  • zlib: New Zlib compression library
  • ribbon: Added support for assigning hot keys to ribbon elements.

Bug fixes

  • compiler: Fixed bug#18758 and test#anchor072 which only affected .NET code generation of qualified anchor types.
  • compiler: Fixed a long standing bug where descriptions in external nodes were lost.
  • compiler: Fixed eweasel test#config028, test#config029 and test#config038 where compiler would crash when using a cluster/library with an invalid path.
  • compiler: Fixed a regression that caused a C compilation error after removing a type from the system.
  • studio: Fixed improper display of conditions in task and external nodes.
  • vision2: Fixed a regression in EV_DRAWABLE_IMP on Unix platforms that causes a crash on some Unix platforms.
  • other: Fixed various regression from rev#94113.

14.05.9.4113 (January 29th 2014)

New features

  • base: Added epsilon and machine_epsilon queries as requested by users in REAL_32 and REAL_64. Added missing min_value and max_value from the .NET version of REAL_32 and REAL_64.
  • espec: Added latest version of ESPEC.
  • compiler: The compiler will now report syntax warnings for non-supported empty lists such as {}, () and []. And it will report an error in an export clause if after the type nothing is specified.

Improvements

  • argument: we allow the nologo command line option on Unix to ensure that programs have pretty much the exact same command line interface.
  • compiler: we now provide syntax warnings for unsupported empty lists such as (), or [], or {}, as well as an empty export clause `export {NONE} end'. It is not ECMA compliant to accept those.
  • compiler: made workbench code more compact and faster by about 5 to 9% average.
  • Made most libraries compile in the highest level of void-safety except the following ones:
    • docking
    • editor
    • edk
    • graph
    • memory_analyzer
  • testing: Made possible to run AutoTest test cases outside of the AutoTest framework by simply calling them from a normal class.
  • vision2: Created a set of classes to make it easier to develop AutoTest tests for code based on vision2.
  • runtime: In workbench mode, if the melted file cannot be found, instead of exiting the application, the application will run as if it had never been melted and will print a warning in the console.

Feature removed

  • library: Removed obsolete feature {TUPLE}.make.

Bug fixes

  • compiler: bug#18759 (test#iteration004) - Changed processing of {ITERABLE}.new_cursor to use a renamed version of the feature in a descendant class rather than the feature having this name.
  • compiler: bug#17233 (test#term196) - Supported iteration on an expression of a formal generic type.
  • compiler: bug#17239 (test#term198) - Fixed a bug that caused a crash when compiling the code that used an inline agent as an iteration expression.
  • compiler: bug#16983 (test#anchor055), bug#17034 (test#anchor057) - Fixed a bug that caused a crash when compiling the code with the creation of an object of a qualified anchored type with a formal generic.
  • compiler: test#anchor070 - Fixed a bug that might cause compiler crash when nested qualified anchored types with a longer feature chain were involved in qualifiers of other qualified anchored types.
  • compiler: bug#16991 (test#anchor056) - Fixed a bug that might cause a compiler to report an unknown feature in a qualified anchored type with a formal generic qualifier constrained only by formal generic types.
  • compiler: bug#18795 (test#melt104) - Fixed an issue with address expression (not part of the Eiffel specification, only supported for backward compatibility) when melting code would crash the compiler.
  • compiler: fixed test#exec341 where performing an assignment via "{EXT}.fea := bar" would fail at runtime.
  • dotnet: Fixed a code generation bug when using across where the .NET code generation would perform a cast on the target type of the expression instead of on the type of the cursor.
  • studio: Fixed an issue where if you open EiffelStudio on screen 1 of a multiple screen setup, then maximize EiffelStudio on screen 2. Next time you open EiffelStudio it would open maximized on screen 1 rather than on screen 2.
  • wel: Fixed a bug with `set_string_with_newline_conversion' where if the input string had only one character after the last %N, that character would be discarded. That is to say "%Na" would yield "%R%N" instead of "%R%Na". This fixes bug#18783.
  • studio: Fixed an issue on Windows where once you set a preference to True, you could never go back to its default value. For example, force debug mode would always be active once set, same for linking the editor and the context tool and many others.
  • studio: Fixed a saving issue where each time you saved a document, it will blink instead of not changing anything.
  • studio: Fixed a copy and paste texts with multiple lines with some leading tabs into the editor. The cursor in the end is positioned N characters before the place it used to be. (N is the number of lines of the pasted text)
  • base_extension: Fixed a crash in ENVIRONMENT_ARGUMENTS when arguments are removed after first access to ENVIRONMENT_ARGUMENTS. This is the case when using `--sync' option in a Vision2 application on Unix.
  • process: Fixed redirection of standard error to a file which was redirecting to standard output instead.
  • runtime: Fixed bug#18785 and eweasel test#ccomp089 for Linux 32-bit, but the fix will also affect any platform where the C compiler was not doing what we expected to compute the value of NaN, +Infinity and -Infinity for floating numbers.
  • compiler: test#anchor071 - Fixed computation of a qualified anchored type that involves a formal generic parameter and feature redeclaration in a descendant of the formal generic constraint.
  • studio: Fixed bug#18792, bug#18501 and bug#17626 when searching for a feature while the editor hasn't finished loading.
  • studio: Fixed a long standing issue where the new class template had the wrong newline on Windows.
  • store: Fixed Autotest test#test_numeric_types and test#test_numeric_types_use_decimal_mode by ensuring that a decimal read from the database (almost like a string representation) is converted to a REAL_64 the same way it is done in class {STRING}.to_real_64, otherwise we get different rounding.

User changes

  • studio: Moved project setting option Full class checking to Advanced section.
  • studio: Changed project settings defaults to complete void safety.
  • compiler: In circa 2000, we allowed $x and $(expr) as expression instead of just argument passing. But while this was good for just $x, $(expr) is actually not supported properly in the code generation. As a consequence we have disallowed $(expr) outside argument passing.
  • wel: Fixed incorrect signatures of wrapping for PostMessage, GetCurrentProcessId and GetWindowThreadProcessID which do not return a pointer but an integer type.

Developer changes