EiffelStudio 6.3 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 red. The release notes of EiffelStudio can be found at the following URL. You can also download the latest revision here. Information about other version can be found under Category:Releases.

EiffelStudio 6.3.x Releases

6.3.7.6070 (Final Release, December 5th 2008)

Bug fixes

  • debugger/watch: fixed issue with missing "..." in watch tool's grid.
  • debugger: fixed bug#15065: Crash when picking a feature name in object tool
  • compiler: fixed an incorrect evaluation of the invariant of the root class in finalize mode (it was checked before where it should only be done after the completion of the creation procedure).
  • eiffelstudio: fixed broken accelerator for object viewer tool
  • eiffelstudio: fixed bug in refactoring where use of transitional/standard syntax would not parse the class text correctly.

6.3.7.5863 (Release Candidate 2, November 24th 2008)

New features

  • Updated to Gobo 3.9 release.
  • Debugger: added a basic way to export/import to/from file the expressions of the watch tool

Improvements

Feature removed

  • removed generation of "Once in generic" and "verbatim strings" warnings as they were made for much old version of EiffelStudio when breaking changes were introduced.

Bug fixes

  • diagram: fixed dialog positioning when adding client/supplier link
  • runtime: fixed a dead lock in a multithreaded application when a store operation fails to store data to a stream.
  • compiler: fixed a bug in the creation of manifest tuple which were given a wrong type when code is compiled in Void safe mode.
  • base: Fixed eweasel test#tuple015 by ensuring that the `valid_type_for_index' follows the new attachment rules.
  • debugger: fixed display of agent's details
  • debugger: when adding an action to a breakpoint, enable this action by default (avoid extra click)
  • debugger: fixed bug#15017: Feature call on void target in {EV_GRID_ITEM_I}.deactivate in EiffelStudio
  • debugger: add debugger support for self initialized attributes
    • fixed bug#15023: Unable to debug self-init attributes
    • fixed bug#15024: Self-init attribute Result and locals not shown in the Objects Tool
  • Diagram tool: fixed dialog positioning when adding client/supplier link
  • examples: fixed various windows makefiles for cecil example (handle blank in path, and win64)
  • vision2/Windows: fixed bug#15026: EV_PRINTER: feature call on void target while creating

User changes

  • base: Allowed for void-safe keys in HASH_TABLE.
  • debugger: added preferences for move up/down shortcuts in watch tools (default: Shift+Alt+[Up|Down])
  • debugger: pasting a multiline text into the "..." cell of the watch tool, create multiple expressions.
  • debugger: watch tool allows to move multiple expressions at the same time.

Developer changes

6.3.7.5660 (Release Candidate, November 17th 2008)

New features

  • runtime: Implemented proper runtime conformance for attached types, that is to say A [!ANY] will conform to A [!ANY] or A [?ANY], but A [?ANY] will only conform to A [?ANY].

Improvements

  • compiler: Supported object tests in preconditions and check instructions so that the object test local is available only within the corresponding assertion.

Feature removed

Bug fixes

  • debugger: fixed major issue of the dotnet debugger on Win32 (and potentially on Win64)
  • debugger: fixed expression evaluation issue on XYZ_REF version of basic types (dotnet and classic)
  • debugger: fixed expression evaluation issue on basic type (dotnet)
  • debugger: fixed a call on void case when P&D from empty area of debugger's objects grid
  • debugger: fixed bug#14946: Feature call on void target in [EB_EXEC_RESTART_DEBUG_CMD.internal_execute] in EiffelStudio (dotnet)
  • debugger: fixed missing support for slices resizing in object viewer tool
  • debugger: fixed bug#14961: Feature call on void target in {EV_GRID_ROW_I}.subrow in EiffelStudio
  • debugger: fixed bug#14976: Failure after slice
  • debugger: fixed bug#14502: Automatic (de)activtion of replay mode causes buttons to flicker
  • debugger: fix bug#14993: Catcall message incorrect for attached catcalls

User changes

Developer changes

6.3.7.5403 (November 3rd 2008)

New features

  • net: Added a new library net_ipv6 which is a slightly modified version of EiffelNet that supports IPv6. Due to some internal changes this new library is almost compatible with EiffelNet but not quite. The main change is the deprecation of HOST_ADDRESS in favor of something that can cope with IPv6 addresses.
  • autotest: The autotest tool has been integrated to EiffelStudio.

Improvements

Feature removed

Bug fixes

  • compiler: Fixed an issue with the DLL specification which would not allow hyphen in the name of a DLL.
  • compiler: Fixed eweasel test#exec287 where if you assigned a basic type (INTEGER, CHARACTER, ...) to a TUPLE entry expecting a reference type and that you were assigning it via its assigner (t.field := value) then it would generate incorrect code causing a crash at runtime.
  • compiler: Fixed eweasel test#syntax050 where the compiler incorrectly valid code using an assigner where the target is a parenthesized expression (e.g. (create {A}).item := b).
  • compiler: Fixed eweasel test#agent005 where some large agent signature would cause a crash in the compiler.
  • compiler: Fixed eweasel test#term163 where we tried to analyze an incorrect feature signature and causing a crash in the compiler because we continued the analyzis instead of stopping an reporting an error.
  • dotnet: Fixed a .NET compilation issue which was introduced in rev#75278 preventing any .NET compilation.
  • debugger: fixed bug#14924: Feature call on void target in [DEBUGGER_COMPILER_UTILITIES.feature_from_runtime_data] ...
  • debugger: fixed bug#14853: Wheel page by page scrolling preference not taken into account in the call stack tool
  • debugger: fixed bug#14890: Objects tool shows wrong class/feature for agent objects (it was related to precompiled lib)
  • debugger: fixed bug#14916: Feature call on void target in {DBG_EVALUATOR}.evaluate_attribute in EiffelStudio (it was mainly for dotnet debugging, when exception occurs)
  • studio: Fixed refactoring issue when renaming an uncompiled class of the project's target.
  • studio: Fixed adding a require ; when licensing a class for the first time and the last feature of the class is an attribute.

User changes

  • UI: added foreground and background colors preferences for the grid related to debugger's tools.

Developer changes

6.3.7.5278 (October 27th 2008)

New features

Improvements

  • studio: When an invariant is violated, we know show the proper stack trace making invariant debugging much better.

Feature removed

Bug fixes

  • compiler: Fixed C compilation error when using CECIL on system using gcc 3.4 or greater as the later generated an abort sequence rather than calling a feature. Partially improves eweasel test#ccomp063 behavior.
  • dotnet: made sure that C++ external code is compiled in C++ mode and the same for C code. The issue was that some C code does not compile well if compiled by a C++ compiler and before as soon as you had one C++ external, all your C externals would be compiled in C++ mode.
  • studio: improved the browsing of .NET external classes and features. Made the scroll to feature works for .NET classes. Avoid loading the same .NET class each time a different feature of that class is selected.
  • debugger: fixed retrieving of stack value when invariant is violated (now a _invariant stack will appear in the call stack to help debugging)
  • debugger: implemented request #14903: Display all constant attributes of an object

User changes

Developer changes

  • studio: Added a wrapper for Eiffel parsers to handle and ignore error cases and to set up a parse based off a configuration option object. The code modification API now utilizes this.

6.3.7.5186 (October 19th 2008)

New features

  • studio: Integrated automatic class licenser when saving a document. Read ISE_EIFFEL/studio/templates/licenses/README for more details.

Improvements

  • runtime: reduced memory usage of Eiffel applications using a lot of generic classes. For example EiffelStudio used to allocate 132MB of memory when starting, and now 101MB. This also translates into a more efficient runtime execution. On the compiler it went from taking 111s down to 107s.

Feature removed

Bug fixes

  • studio: The Features Tool now refreshes corrected after a save or a compilation.
  • windows: The installers now precompile correctly without the Dll Failure message appearing.
  • .net: The Eiffel Metadata Consumer now correctly registers itself during install.
  • compiler: Fixed some inlining problem of routines that may return an expanded type (fixes eweasel test#final065 and test#exec147).
  • compiler: Fixed eweasel test#dotnet112 and test#term162 where compiler would crash in .NET code generation when generating various generic derivation of a class.
  • compiler: Fixed eweasel test#agent007, test#term143 and test#term161 where recent changes to improve type of manifest arrays/tuples and agents would cause the compile to crash in .NET code generation.
  • base: 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.
  • studio: Launching help through a new browser process no longer has ES waiting for the browser process to exit, when no browser was previously opened.
  • studio: Fixed bug in completion caused by referencing feature names in comments were treated a regular text and caused invalid evaluations.

User changes

Developer changes

6.3.7.5070 (October 12th 2008)

New features

Improvements

  • compiler: now the compiler properly reports the VREG and VRFT errors for labels of names tuples, thus some of your code might be broken since the compiler failed to check this before.

Feature removed

Bug fixes

  • windows: Fixed non-precompile issue with the GPL installer. Precompilation should proceed as normal now.
  • studio: Fixed editor tab resurrection between loaded project sessions.
  • compiler: Fixed missing detection of VREG and VRFT errors for labels of a named tuples which is used as an actual generic parameter of a type (fixes eweasel test#tuple012 and test#tuple013).
  • compiler: Fixed improper runtime semantics for creation of manifest tuples, arrays and agents (see eweasel test#tuple011, test#tuple014 and test#agent006)
  • compiler: Fixed eweasel test#term159 where the compiler would crash if there is a conversion for one of the closed argument of an agent creation.
  • compiler: Fixed bug#14856 and test#final064 where if before generating the agent call/item routine we generated a call to a deferred routine without implementation we would not generate the arguments of the agent causing a C compilation error in finalized mode.

User changes

Developer changes

  • studio: Class license and new class templates now use NOTE_KEYWORD token to respect configuration syntax options.

6.3.7.4971 (October 6th 2008)

New features

  • base: Added IMMUTABLE_STRING_8 and IMMUTABLE_STRING_32 which are immutable versions of STRING_8 and STRING_32.
  • base: Added {READABLE_STRING_GENERAL}.same_string to compare any kind of strings together.

Improvements

  • windows: Updated the installers to notify users when attempting to use a deprecated MS C/C++ compiler.

Feature removed

  • windows: Deprecated VC6.0, VS 2002/2003 MS C/C++ compilers.

Bug fixes

  • compiler: Fixed various issues with the `full class checking' option that would not work for inherited code involving conversion or labeled tuples (see eweasel test#svalid001, test#svalid007, test#svalid009 and test#svalid010).
  • net: 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.
  • studio: Fixed brace matching when using ENTER, SPACE or typing directly before a matching brace.
  • studio: Fixed brace matching crash when removing lines.
  • studio: Fixed integrated help launching on Unix where the xdg utilities are not present.
  • studio: Fixed bogus error dialog when launching help on Windows.
  • compiler: Fixed a crash when trying to precompile a system in .NET code generation.
  • studio: Added scoping to completion, fixing issues with locals appearing in-line agents, object-test locals as well as many other problems.
  • studio: Fixed completion to no longer require the is keyword when analyzing features.
  • studio: Fixed completion to correctly analyzed feature signatures that span multiple lines.
  • studio: Fixed a number of issues with braces matching, it should function fully now.

User changes

  • base: 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'.

Developer changes

6.3.7.4757 (September 22nd 2008)

New features

  • studio: implemented brace matching in editor.

Improvements

Feature removed

Bug fixes

User changes

Developer changes

6.3.7.4644 (September 12th 2008)

New features

  • studio: Added delete button to the Error list tool, to remove items explicitly.
  • studio: The editor highlights brace matches.
  • studio: Added keyboard shortcut (default CTRL+[) to locate matching braces in the editor.

Improvements

  • studio: Drastically improved naming and comprehension of the argument parser framework library, readying for library promotion.

Feature removed

Bug fixes

  • Fixed bug#14762: Operating system signal in {ES_DOCKABLE_STONABLE_TOOL_PANEL}.synchronize
  • Fixed bug#14738: Pick does not work in Error List tab
  • Fixed issue with the Error Info button not disabling when no row is selected in the error list tool.

User changes

  • studio: We only support VS 2005 or greater as a backend C++ compiler on Windows 32-bit. If you still use older version please upgrade your C compiler. Eiffel Software can still provide VC++ 6.0 compatible libraries on demand for customers under maintenance.

Developer changes

  • studio: Started integrating cleaner means to managed default docking layouts, possibly with external persona files describing layouts before the release.
  • studio: Added a exception handler utility class to ESF - EXCEPTION_HANDLER.

6.3.7.4554 (August 26th 2008)

New features

  • base: Added the notion of read-only strings in EiffelBase. The goal is to also introduce the notion of immutable string before the final 6.3 release.
  • base: Because READABLE_STRING_8 is deferred, some code using STRING + SYSTEM_STRING in .NET mode will not compile anymore. Instead one has to do STRING + create {STRING}.make_from_cil (SYSTEM_STRING).
  • base: Added ability to stop and start the Eiffel tracing mechanism from code using the new TRACING_SETTING class.
  • compiler: It now accepts the new syntax for variant in a loop (i.e. before the `end' keyword).
  • studio: Added license file modifier to automatically license Eiffel source text from within EiffelStudio (ES debug menu option), with the hopes to automatically perform licensing when saving classes.

Improvements

  • studio: Supported the new standard syntax for the indexing clause with the note keyword in the clickable view.
  • studio: Made note to be highlighted in the editor as a keyword.
  • studio: Supported the new standard syntax in the clickable view for a loop variant that is shown just before the end of the loop.
  • studio: Refactoring uncompiled classes now only looks at potential client classes instead of all classes.
  • net: Made sure that EiffelNet can select on 256 ports at the same time.

Feature removed

Bug fixes

  • studio: Fixed some memory leaks when opening and closing EiffelStudio over times.
  • runtime: Fixed bug#14548 (eweasel#except031) where a stack trace only contained the stack trace up to the `rescue' clause which caught the exception. Now it shows the stack trace up to the root creation procedure.
  • compiler: Fixed .NET code generation which was broken due to new STRING hierarchy.
  • wel: Fixed a read after memory free in the internals of Window handling in WEL in multithreaded mode. This was actually mostly visible in .NET where the `dispose' routines are called in a different thread as very few have been using WEL windows in several threads (fixes bug#13413).
  • Fixed all potential memory leaks cause by not iterating out of a Gobo cursor's bounds.

User changes

Developer changes

  • compiler: you can now specifies several root class/procedure for one project. This functionality is currently hidden to the compiler and the new testing tool. It will be exposed in the project configuration file, debugger and UI in 6.4.
  • compiler: there is syntactic support for new attribute keyword (no semantics yet). This can be enabled with the same project setting options use for `note' for backward compatibility reason.

6.3.7.4335 (August 4th 2008)

Improvements

  • studio: Improved the library choice dialog.
  • studio: Fixed bug#14123, bug report dialog now takes information from original exception object as titles.

Bug fixes

  • compiler: Fixed eweasel test#final061 and test#final063 where some kind of code could cause a crash of the compiler during degree -3 with inlining enabled.
  • compiler: Fixed eweasel test#final063 which caused a C compiler error when your code uses an inline agent in an assertion and the routine in which it is defined is deferred.
  • runtime: Fixed a buffer overflow that would occur on some Unix platforms when a signal was received by the application. Found while finding that test#execpt016 started to fail consistently on a run of eweasel. It actually fixes about 8 other eweasel tests on Unix.
  • runtime: Fixed eweasel test#thread005 due to a recently added modification in the 6.3 runtime series which caused a potential memory corruptions when threads are exiting.
  • runtime: Fixed eweasel test#thread006 where if many threads allocate small objects which are quickly dying then we could break the runtime synchronization and cause a crash.
  • runtime: Fixed eweasel test#except030 trace was not correct for the first time an exception was raised in an once routine.
  • runtime: Fixed bug#14578 and test#except029, where finalized code crashed when trace printing due to the original exception raised by invalid objects.
  • studio: Fixed bug#14600 that many undoes crashed the editor.
  • studio: Fixed a memory leak in EIS tool which prevented a second development window from collection.
  • studio: Fixed bug#13251 that user without write permission crashed ES when opening an existing project.
  • studio: Fixed bug#14526 that double clicking did not select a whole word.
  • studio: Fixed bug#14350, a code completion crash when there were obsolete features.

Developer changes

  • runtime: Exposed `ereturn' so that generated code can see it.

6.3.7.4123 (July 21st 2008)

New features

  • base: Added `sleep' to EXECUTION_ENVIRONMENT and made `sleep' from THREAD_CONTROL obsolete.
  • base: Added `read_xxx_thread_aware' in IO_MEDIUM so that reading a file is not blocking in a multithreaded context.
  • editor: support Unicode.

Improvements

  • Optimized code generation for object test to avoid type evaluation when it is not used and to replace a full-fledged object test with a plain voidness test if an expression type is known to conform to the object test local type at compile time.
  • runtime: Improved trace printing by using ellipses when names are too long to print.

Feature removed

Bug fixes

  • process: 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.
  • com/compiler: Renamed `eif_com.h' from the compiler delivery into `eif_com_exception.h' as it conflicts with `eif_com.h' from the EiffelCOM library.
  • compiler: Fixed eweasel test#valid222 where compiler properly detects VDRS-4 errors when you redefine a repeatedly inherited routine in at least one but not all branches, but fail to provide a local definition.
  • compiler: Fixed Makefile code generation issue on machine with many cores which could cause a C compilation error because some dependencies are missing in the Makefile targets.
  • compiler: Fixed bug#13881 where if you have a VKCN error when using a routine whose return type is a like argument then it would crash instead of reporting the VKCN error. Improved VKCN error reporting by providing the instruction or expression which causes the problem.
  • compiler: Fixed updated eweasel test#rdtp001 and test#term158 where if TUPLE is not written using upper case characters, then the compiler will crash when trying to analyze the type.
  • compiler: Fixed the issue found with GCC 4.x series where an assignment of the form *(a + x) = f() would first evaluate (a+x) and then `f' which could cause a memory corruption if `f' triggers a GC cycle. As far as we could tell, this kind of code generation was only done when `f' would return a basic type. See eweasel test#runtime007.
  • compiler: Fixed eweasel test#ccomp076 where C/C++ inlines did not get the protected object if any, but only the unprotected one which could cause some issue if the C/C++ inline code uses `eif_access' or `eif_adopt'.
  • runtime: When registering externally created threads, make sure that the runtime does not exit them when no more Eiffel code needs to be run as it must be done by the code that created it. Also made sure that the runtime per thread data are reset to 0 to ensure that we can register/unregister the external thread as many times as needed.
  • runtime: Added a cast to ensure that `eif_globals' can compile properly in C++ mode.
  • runtime: Fixed eweasel test#runtime008 where we have a leak on each created thread if invariants are monitored.
  • runtime: Fixed eweasel test#runtime009 where an allocation in the free list does not always guarantee that the EO_NEW flag will be set. In some condition, when `moved_set' is full, we will clear the EO_NEW flag and set the object directly to EO_OLD. This is why in `sprealloc' we need to check for both `EO_NEW' and `EO_OLD' otherwise we will fail to update the content of the special after a GC cycle.
  • runtime: Save `errno' for runtime io error exception, so that it is accessible in exception object.
  • runtime: Free `ex_string.item' allocated for trace printing when disposing threads to avoid memory leak. Fixed bug#14472.
  • runtime: This fixed bug#14465, that exception trace always printed "Exit" as Effect.
  • runtime: Fixed test#except027 and bug#14450 that exception trace was not thread safe because of static buffers were used.
  • runtime: Fixed test#except026 and bug#14477 that `sprintf' overflew buffer, which caused crash.
  • runtime: Use per thread data as flags in `eif_panic' and `fatal_error' to avoid cascade. They were not thread safe.
  • runtime: Fixed a bug that the actual trace building was done twice. This was due to unwise macro use.
  • runtime: Use `eif_rt_xmalloc', `eif_rt_xfree' and `xrealloc' to process memory of `ex_string', so it is freed in `reclaim' automatically at the very end of process.
  • runtime: Fixed bug#14543, where there was actually a runtime crash when raising an invariant violation. See test#except028.
  • i18n: Corrected postcondition of `get_file_dictionary'. Use `get_file_dictionary' instead of `extract_dictionary' as `get_file_dictionary' handles `can_handle' properly.
  • editor: Improved cursor rendering colors, so that in all background colors, it has good feedback. Fixed bug#10165.
  • studio: Fixed bug#12220 that the action combo box on project startup dialog was too narrow to see full contents in it.
  • studio: Fixed an unprotected usage of {CHARACTER}.is_space . This fixed bug#14274.

User changes

  • runtime: changed the way files are opened on Windows by ensuring that they cannot be inherited by child processes. This was necessary since one would need to wait for the child process to exit to remove files owned by the parent process.
  • runtime: renamed `eif_thr_sleep' into `eif_sleep'.

Developer changes

  • encoding: Changed APIs of encoding library to be command/query. Added `last_converted_stream'.
  • encoding: Added SYSTEM_ENCODINS in encoding library (abstracted from SHARED_LOCALE).
  • encoding: Added abstract encoding detector in encoding library.
  • compiler: Changed {CLASS_I}.text to STRING_32 that returns class text in Unicode. Added interface ENCODING_CONVERTER into the compiler. This interface can also be used later to handle encoding conversion without introducing the encoding library.