EiffelStudio 6.2 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 6.2.x Releases
You may want to read the official 6.2 release notes before diving in the change log of 6.2.
6.2.7.3753 (May 30th 2008, Final Release)
Bug fixes
- compiler: fixed finalization bug with inlining (eweasel test#final055, test#final056 and test#final057).
- runtime: ensured proper alignment of double to ensure decent speed. On a benchmark we wrote, we went from 289s down to 11s.
- runtime: Fixed test#except015, unwound trace at retries.
- runtime: Fixed test#except021, wrong use of `sk_arena' as top most item in a chunk.
- runtime: Fixed test#except022, retries at boundary of chunks of `loc_set' caused runtime crash.
- runtime: Partially fixed test#except019, fixed memory leaks caused by incorrect restoration of stacks after `longjmp'.
- debugger: Fixed watch tool to show correct object test local's value.
- debugger: Partly fixed annoyance of bug#14129: Exec Param dialog selects the first profile annoyance
- debugger: Fixed bug#14343: Runtime warning to be fixed
- debugger: Fixed bug#14340: Precondition violation while debugging .NET code - 2
- debugger: Fixed bug#14337: Assertion violation when debugging .NET code
- debugger: Fixed bug#14353: Execution record and replay tooltip error
- debugger: Fixed bug#14352: Execution record and replay not work
- debugger: Fixed issue with row moving in watch tools
- EiffelNet: Fixed erroneous base64 encoding (the final(s) '=' were missing if count modulo 3 is positive)
User changes
- compiler: the command line compiler now provides numeric entries to choose between potential targets
Developer changes
6.2.7.3306 (May 5th 2008)
New features
- studio: Eiffel Information System which let you reference external documentations in your Eiffel code and vice versa.
- studio: PDF help provider, with attribute "page" and "nameddest" supported.
- configuration: Support note element.
- studio: Added unit testing tool based on eweasel
- studio: Added the contract edition tool.
Improvements
- time: added support for DEBUG_OUTPUT for DATE, TIME and DATE_TIME objects making it easier to debug code based on them.
- time: 10% speed improvement on certain date operations (can be seen on eweasel test#time002).
- debugger: integrated new features for execution recording and replay (UI + engine)
- finish_freezing: Supported Microsoft Visual C++ 2008 Express Edition compiler.
Feature removed
Bug fixes
- time: fixed bug#14089 where duration in days between two dates overlapping a leap year would yield a result off by +1 or -1.
- debugger: revert back timeout delay before closing ipc_engine (bug#14190 Long pause after execution finishes when run system under debugger)
- debugger: fixed bug#14117 Status bar message about `ignoring breakpoints' is not refreshed when status is changed
- compiler: Fixed a bug in the compiler with the merging of a routine taking a reference type (ANY) with a routine taking a basic type (INTEGER, ...) which would yield some uncompilable C code. Fixed a similar issue when merging a routine involving a formal generic parameter with one involving a basic type. This slightly reduces the size of the executable. This fixes eweasel test#final051, test#final052 and test#final053.
- compiler: Fixed test#final054 where polymorphic calls on external involving a formal generic parameter would not work properly.
- compiler: Fixed a bug with Precursor function calls when used in the last instruction of a routine to assign `Result' when the precursor signature and the current routine signature do not match (case of using `f (a: ANY): ANY' in ancestor and redefining it as `f (a: ANY): INTEGER' in descendant).
- compiler: Fixed an EIFGENs corruption due to changes in routine signature when types of the routine are not valid anymore. Fixes eweasel test#incr289.
- compiler: The `ecb' compiler does not depend anymore on GTK or X11 to be executed.
- studio: Fixed issue with editor token beams not being displayed on GTK
- studio: Fixed editor beam failing to show when viewing the same information as the last feature.
- com: Fixed the EiffelCOM wizard so that it generates C code that compiles. This was broken since 6.1.
User changes
- base: Added an assigner routine for `item' in ARRAY2. This might break descendant classes of ARRAY2 redefining `item'.
Developer changes
- debugger: store dbg profiles data in a dedicated session ".dbg-profiles", instead of storing in the same ".dbg" sessions.
- studio: Improved code merging in code modification API.
6.2.7.2969 (April 7th 2008)
New features
- studio: Integrated Eiffel Information System (incoming).
- compiler: Added `-gc_stats' option to get some information on how much CPU time is spent in GC during an Eiffel compilation.
Improvements
- base: 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.
- debugger: better catcall detection control from the debugger
- runtime: protected several calls to `eif_wean' on the same EIF_OBJECT. This will prevent a memory corruption for people using it incorrectly with a minor slow down since in a typical application there should not be too many protected objects.
Bug fixes
- base: Fixed bug in
{SOCKET}.read_stream
where if there was a socket error, then it would cause a precondition violation inC_STRING
. - wel: 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.
Developer changes
- tools: updated syntax updater to new AST.
6.2.7.2906 (March 30th 2008)
New features
- 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.
Bug fixes
- compiler: fixed eweasel test#final046 by avoiding useless creation of temporary objects during dynamic dispatch. It can also dramatically speed up certain kind of code; on the compiler itself, the speed up is about 8-10%. In the worst case scenario it is 400% or more. Note this bug was introduced in version 6.0. Compared to 5.7, in 6.2 the worst case scenario is still about 10% slower.
- debugger: Added support for object test local variables in expression evaluation.
- debugger: Fixed issue bug#14133: Run Finalized actually runs W_Code
6.2.7.2842 (March 24th 2008)
Improvements
- studio: Restructures layout of user files to support unification and user-override files of Eiffel compiler installation files.
- studio: Relocated default Eiffel projects location into the user files folder (windows and mac only)
- debugger: catcall detection at runtime are now handled by the Eiffel debugger in the UI.
- compiler: reduced size of generated executable by about 2%.
Bug fixes
- finish_freezing: Now supports latest 6.1 version of the Windows SDK.
- compiler: fixed an issue with catcall detection at runtime where one kind of harmful catcalls where not reported at runtime (when routine's arguments involve `like Current' and there is some reattachment to an attribute). This fixes eweasel test#catcall006.
- compiler: ensured that catcall detection also works with melted code.
- compiler: fixed eweasel test#final043 where inlining of a feature on a target which is the label of a named tuple would crash the compiler.
- compiler: various bug fixes with respect to inlining (fixes eweasel test#final042 and test#final047)
- compiler: fixed performance issue with {SPECIAL}.clear_all when handling a special of reference. It caused eweasel test#exec040 to take a long time instead of just a few seconds.
- runtime: fixed a catcall when comparing using `=' an expanded with something else of a different type, instead of reporting False (this addresses eweasel test#exec255 which was broken due to the new catcall detection).
6.2.7.2684 (March 11th 2008)
New features
- base: Added `deep_physical_size' in INTERNAL to compute the size of an object and all its dependencies.
- compiler: Added detection of harmful catcall at runtime (harmless one are currently ignored).
- debugger: display the `deep_physical_size' of an object.
Improvements
- studio: Optimized adding of items to the Error List by circumventing an expensive search when adding single items.
- studio: Error list items context now shows the full group name but after CLASS.feature because it is of lesser importance.
- studio: Enhanced some errors to report better context information.
- studio: Enhanced obsolete warnings to report the obsolete message.
- compiler: Improved number of dynamic to static bindings in finalized code. Improved quality of inlined code for reducing even more of the dynamic calls.
Feature removed
Bug fixes
User changes
- debugger: added a toggle tool bar button to "Ignore (or not) breakpoints" (no need to interrupt anymore for that).
Developer changes
- ESS: Event list service items can now be invalidated, for future use.
- ESS: Added code template catalog service and code template model.
6.2.7.2567 (March 3rd 2008)
New features
- ESS: Added logger service for logging internal messages.
- studio: Added logger tool to debug menu for viewing logged messages.
- debugger: Now you can disable/enable selected breakpoints by using key [Space], and delete using key [Del] in the breakpoints tool.
- debugger: Added "Object internals" to object viewers list to view some INTERNAL data.
Improvements
- compiler: reduced the size of the AST stored in memory during a compilation by 20/25% which results in a memory usage reduction for EiffelStudio of about 15%. For example when compiling EiffelStudio on Windows 64-bit, it was taking 920MB with the previous version, and now it would be 800MB.
- Removed the generation of .x files in finalized mode to make it easier to debug the C code of finalized application. It will also save some disk space in the EIFGENs since we do not need to concatene the .x files in large big .x files.
Bug fixes
- Debugger: Fixed part of bug#14013: Ctrl-RightClick is not supported in some tools that allow PnD for debugging tools based on ES_OBJECTS_GRID
User changes
- base: Changed `physical_size' in INTERNAL to return the real allocated size of an object along with its header size.
Developer changes
- ESS: The event list service now supports non-persistent items for bulky item pushers.
6.2.7.2437 (February 25th 2008)
New features
- studio: Integrated the contract viewer into the editor.
- studio: Implemented a inherited/original feature comment specification so there is no need to replicate comments.
- studio: All formatter tools show feature inherited/original comments
Improvements
Feature removed
Bug fixes
- compiler: various bug fixes with respect of handling of expanded generic classes used in generic classes.
- compiler: fixed eweasel test#melt081 (bug#13900) where having a redefined routine involving an anchor to a non-existing feature would crash the compiler instead of reporting a VEEN error.
User changes
- base: 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.
Developer changes
- compiler: Changed the internals of the compiler to remove TYPE_I and descendants (however kept TYPE_C and descendants) to merge them with TYPE_A. This avoids code duplications and provide more features at code generation time such as cheap conformance check.
- compiler: Changed the code generation so that encoded names are consistent as: Xyyy[_zzz] where `X' stands for the kind of name (feature, polymorphic table, address table), `yyy' and `zzz' are some IDs to identify the construct (for routine is is type ID followed by body index). This change enables in finalized mode to describe names more than 32767 alive types and 131071 generated features. However the number of types is still limited to 32767, possibly we will increase this to 65535 in 6.2 after reviewing the runtime code for proper typing. Once this is done, we can configure it to either 2^16 ot 2^32 during the compilation of the runtime.
- debugger: Added breakpoint when hits action to disable/restore assertion checking.
- debugger: fixed issue related to execution recording: bug#13951: Operating system signal in [DEBUG_EXT.send_rqst_3_integer] in EiffelStudio.
6.2.7.2277 (February 12th 2008)
New features
Improvements
- base: PLATFORM has a new query `is_mac' for detection of Darwin-base platforms.
- studio: The exception submit dialog now retains remembered login between EiffelStudio sessions.
- studio: Rendered the debug/editor transition window better, using ESF popup windows.
- studio: disabled menu entries have a nice disabled icon.
Feature removed
Bug fixes
- studio: Error list tool tips now disappear when the row is removed.
- studio: Fixed ESF dialog ENTER key handling for buttons.
- cURL: Library now supports the MacOSX's use of .dylib instead of Unix .so files.
- compiler: Fixed eweasel test#time001 where built_in `infix/prefix' routines were not processed. In the above eweasel test, `BOOLEAN.infix "or"' was always returning False regardless of the value of Current or its argument.
User changes
- debugger: data (breakpoints, profiles, ..) are now save on a per project basis
- debugger: the breakpoints tool offers now sorting and filtering on tags
- debugger: execution option dialog had been improved, discardable dialog when closing, no need to save when you keep the dialog open.
Developer changes
- ESF: Event List service tool foundations can now make use of partially dynamic lists for speed optimizations, just by enabling it on the event_grid.
- ESF: Added *temporary* widget propagation routines to the tool panel foundations copied from core tool foundations. The tool panel foundations will be switches to inherit one of the tool foundation classes in the future.
- studio: Feature relation tool view modes can now be switches through the tool proxy, as well as setting a stone + view mode.
- studio: Added file modification notifier service.
- compiler: One can use the AST_COMPILER_FACTORY alone to compile Eiffel code (no reliance on AST_ROUNDTRIP_COMPILER_LIGHT_FACTORY.
- debugger: data is now saved at the same location as the project location, rather than in a file in the EIFGENs directory.
- debugger: redesigned the way we launch execution.
6.2.7.2075 (January 28th 2008)
New features
Improvements
- debugger: support Exception As Object (i.e: show the exception object, updated the exception handling mechanism)
Feature removed
Bug fixes
- studio: Fixed issue with displaying the address bar on the metric tool.
- studio: Added new intelligent popup editor tokens for usability/annoyance feedback.
User changes
Developer changes
6.2.7.2001 (January 22nd 2008)
New features
Improvements
- compiler: Speed up compilation time at degree 3 (and degree 4 to some extend) by a significant factor for large systems. The more classes you have, better is the improvement. Speed up code generation (degree -1 and -3) as well by a smaller factor.
- studio: Pop up address bar and completion window respects maximized IDE window borders, when using multiple screens.
Feature removed
Bug fixes
- compiler: Fixed compiler crash when compiling a class where a type used in a signature of a feature has the wrong number of generic parameters. Fixed eweasel test#incr285.
- compiler: Fixed an incorrect code generation for the dynamic binding of routines defined in generic classes (eweasel test#exec272 and test#final039) and attribute access in general (eweasel test#final039).
- compiler: Fixed an incorrect code generation for `is_equal' in ANY when exception trace is off which could cause a memory corruption.
- library: Made EiffelCOM compilable (it was missing from the previous 6.2 releases due to an incompatibility with Exceptions as objects).
- base: Made STORABLE inherit from EXCEPTIONS again to avoid breaking existing code.
- vision2: Added hide actions to EiffelVision 2 windows.
User changes
- runtime: Changed the usage of `eif_adopt', `eif_protect', `eif_wean', `eif_freeze' and `eif_unfreeze' so that they can be used in concurrent thread. Meaning that it is safe to use them as long as the argument is different in various threads.
Developer changes
- Debugger: Added hidden breakpoints.
- ESF: Popup window foundations now respect screens and widgets. The popup automatically repositions itself when a popup widget is displayed/hidden.
- studio: Integrated handler for displaying smart token context buttons based on editor tokens.
6.2.7.1786 (January 7th 2008)
New features
- studio: Error list tool now supports multiple selection, for better copy to clipboard usage.
- compiler: Exceptions as objects are now implemented.
- compiler: Generated code is about 3-4% faster and generated executable about 2-3% smaller.
- debugger: new breakpoint editor dialog, and new when hits actions, including filter using tags
Feature removed
Bug fixes
- runtime: Fixed some issues with storing and retrieving of expanded generic types.
User changes
Developer changes
- studio: Added new session manager service for data persistence between running instances of EiffelStudio.
- studio: Improved selection handling in some tools and in common implementation.
- studio: Debug-memory tool is now hooked into the session manager service to retain selected buttons and filter information.
- studio: Integrated new help providers service. No help providers implemented yet.
- studio: Switched over features tool to use ESF and new optimizations.