Difference between revisions of "EiffelStudio 6.4 Releases"
(→Bug fixes) |
(→Bug fixes) |
||
(192 intermediate revisions by 10 users not shown) | |||
Line 4: | Line 4: | ||
==6.4.x== | ==6.4.x== | ||
− | Placeholder for new stuff since last intermediate release. | + | Placeholder for new stuff since last intermediate release. |
+ | ===New features=== | ||
+ | *compiler: Add support for transient attributes. | ||
+ | ===Improvements=== | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure. | ||
+ | *compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes. | ||
+ | *base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER | ||
+ | *studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio. | ||
+ | |||
+ | ===User changes=== | ||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.9451 (Final Release, June 29th 2009) == | ||
+ | ===Bug fixes=== | ||
+ | *libraries: Ensured void-safety of libraries under .NET too. | ||
+ | *compiler: Fixed issue where finalizing twice without a change in a row would cause the full recompilation of degree -2 and -3. | ||
+ | *compiler: Fixed an issue with documentation generation which was always failing. | ||
+ | *compiler: Fixed an issue when using `generating_type: TYPE [like Current]' in ANY causing the compiler to crash. | ||
+ | *testing: Fixed output tool documentation link. | ||
+ | *vision2: Fixed an issue with EV_GRID in the experimental version. | ||
+ | |||
+ | ==6.4.7.9263 (June 14th 2009, Release Candidate) == | ||
+ | ===New features=== | ||
+ | *studio: Added support for new version of EiffelBase which is void-safe for ARRAY and SPECIAL. Because they are breaking changes, this is only available when starting the compiler or EiffelStudio in experimental mode (ec -experiment or estudio -experiment). | ||
+ | ===Improvements=== | ||
+ | *studio: the WEL new project wizard will now freeze the code to avoid issue with user having to freeze the code for the inclusion of the Windows resources. | ||
+ | *iphone: Extended the iPhone library. One can now create a full blown application, but not yet handle the touch event. | ||
+ | *runtime: When handling a mismatch instead of generating the _REF classes for basic types, we generate directly an instance of the basic type so that one can do an object test on the basic type directly. | ||
+ | *runtime: Improved compatibility of storables between void-safe and non-void-safe systems so that a non-void-safe system can retrieve a storable created by a void-safe system by ignoring all the attachement marks. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *runtime: Fixed eweasel test#melt091 where the interpreter would crash if creating a manifest string, a once manifest string or an agent if the STRING or ROUTINE class got melted as part of a recompilation. | ||
+ | *vision2: Fixed bug#15507 where the vision2 demo was looking at the wrong place for the bitmaps. | ||
+ | *net: Fixed a memory leak in read and receive from SOCKET because we forgot to free the temporary buffer used to hold the data. | ||
+ | |||
+ | ===User changes=== | ||
+ | *base: Added in the non-void-safe version of EiffelBase a few routines that makes it possible to have code that compile both against the non-void-safe as well as the void-safe version of EiffelBase. | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8984 (June 1st 2009)== | ||
+ | ===New features=== | ||
+ | * compiler: Added support for iPhone platform. | ||
+ | * libraries: Added api_wrapper, encoding and internationalization libraries to delivery. | ||
+ | |||
+ | ===Improvements=== | ||
+ | * studio: Added completion of attribute...end to the editor, with preferences. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | * studio: Fixed GTK locking issue when exiting the debugger. | ||
+ | * studio: Fixed completion issue crashing when rapidly editing and filtering the list. | ||
+ | * studio: Fixed automatic scrolling of the testing output tool. | ||
+ | * runtime: Fixed eweasel test#thread010 where if a child thread would crash if its parent has already terminated and that child thread never started a thread. | ||
+ | * runtime: Fixed various SPECIAL initialization bugs with the new SPECIAL implementation (which is not yet included). | ||
+ | * compiler: Fixed eweasel test#incr322 and test#final079 where compiler would crash when a routine was implemented as an attribute that can be access statically in final mode. | ||
+ | * compiler: Improved inlining of deferred routines implemented as attributes or constants in INLINER by allowing their inlining. | ||
+ | * compiler: Made precompilation work on Mac OS X. | ||
+ | |||
+ | ===User changes=== | ||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8765 (May 19th 2009)== | ||
+ | ===New features=== | ||
+ | * studio: Completion now has a feature/class description tool tip (on by default) | ||
+ | * Promoted the dynamic API wrapper framework to a library. | ||
+ | * runtime: added support for void-safe SPECIAL but EiffelBase is still using the non-void-safe version. | ||
+ | |||
+ | ===Improvements=== | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | * studio: Fixed non-Windows bug where transition windows didn't appear due to GTK deferring GUI manipulation events. | ||
+ | * compiler: Fixed eweasel test#incr322 and test#final079 which caused a crash during finalization of a call to a deferred routine implemented as an attribute with a body or some assertions. | ||
+ | * compiler: Fixed bug#15798 by avoiding register propagation that does not work well when combined with multidot call chain (see test#attach065). | ||
+ | * runtime: Allowed for `attached' and `detachable' for creating types at runtime (previously it only supported ? and ! which are now obsolete). | ||
+ | * debugger: Fixed bug#15772 and bug#15772 where evaluating expressions involving ~ could yield the wrong result. | ||
+ | * debugger: Fixed bug#15134: Step Into goes to wrong line in debugger after sequence of changes. | ||
+ | |||
+ | ===User changes=== | ||
+ | *{{Red|time: DATE_TIME_VALUE is now a deferred class}} | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8600 (May 10th 2009)== | ||
+ | ===New features=== | ||
+ | ===Improvements=== | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash. | ||
+ | * compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error. | ||
+ | * compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064). | ||
+ | |||
+ | ===User changes=== | ||
+ | * net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'. | ||
+ | * compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored). | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8493 (May 4th 2009)== | ||
+ | ===New features=== | ||
+ | ===Improvements=== | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool | ||
+ | *debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints. | ||
+ | *debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger. | ||
+ | *debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window | ||
+ | *runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption. | ||
+ | *install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows. | ||
+ | *install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects. | ||
+ | *compiler: Fixed broken generation of single threaded DLL. | ||
+ | *net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch. | ||
+ | *build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file. | ||
+ | |||
+ | ===User changes=== | ||
+ | *process: File redirection in the process library will now append to a file rather than recreating it. | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8382 (April 27th 2009)== | ||
+ | ===New features=== | ||
+ | ===Improvements=== | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio. | ||
+ | *debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context | ||
+ | *debugger: improved support for object test locals | ||
+ | *runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux. | ||
+ | |||
+ | ===User changes=== | ||
+ | * compiler: Incremented ECF XML schema version to reflect the recent changes. | ||
+ | * compiler: Replaced ECF schema attribute ''syntax_level'' of an integer type with ''syntax'' of a string type that contains one of the three possible values. | ||
+ | * compiler: Replaced ECF schema attribute ''is_void_safe'' of a boolean type with ''void_safety'' of a string type that contains one of the three possible values (''none'' - no void safety checks, ''all'' - all void safety checks, ''initialization'' - on-demand void safety checks, i.e. only for entities that are attached). | ||
+ | * compiler: Application options are applied after applying options specified in the library when option ''Use application options'' is set to true. | ||
+ | * {{Red|compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.}} | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8212 (April 13th 2009)== | ||
+ | ===New features=== | ||
+ | ===Improvements=== | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061). | ||
+ | *compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted. | ||
+ | *compiler:Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error. | ||
+ | *compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs. | ||
+ | *compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime. | ||
+ | |||
+ | *studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view. | ||
+ | *studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere. | ||
+ | *studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor. | ||
+ | *runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet. | ||
+ | *runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers. | ||
+ | *runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive. | ||
+ | *base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable. | ||
+ | |||
+ | ===User changes=== | ||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.8090 (April 6th 2009)== | ||
+ | Placeholder for new stuff since last intermediate release. | ||
+ | ===New features=== | ||
+ | * EiffelParse: void-safe, added void-safe example. | ||
+ | |||
+ | ===Improvements=== | ||
+ | *profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool). | ||
+ | *runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow. | ||
+ | *runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495). | ||
+ | *runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862. | ||
+ | *runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object. | ||
+ | *runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched). | ||
+ | *runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash. | ||
+ | *studio: Fixed bug#15546: Can't get a flat view of a compiled class. | ||
+ | *studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action. | ||
+ | |||
+ | ===User changes=== | ||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.7957 (March 29th 2009)== | ||
+ | ===New features=== | ||
+ | *{{Red|base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.}} | ||
+ | *{{Red|compiler: Added support for detecting Mac OS X and VxWorks target compilation.}} | ||
+ | |||
+ | ===Improvements=== | ||
+ | *encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms. | ||
+ | *net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | * studio: Fixed bug#15516: Error tool reshuffles needlessly. | ||
+ | * studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool. | ||
+ | * studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556). | ||
+ | * {{Red|base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions}}. | ||
+ | * compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack. | ||
+ | * compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged. | ||
+ | *{{Red|net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.}} | ||
+ | |||
+ | ===User changes=== | ||
+ | * compiler: Relaxed note element in .ecf to accept anything. | ||
+ | * studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note> | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.7848 (March 23rd 2009)== | ||
+ | ===New features=== | ||
+ | ===Improvements=== | ||
+ | *studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code. | ||
+ | *base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *{{Red|runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.}} | ||
+ | *{{Red|runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.}} | ||
+ | *runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006. | ||
+ | *runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU. | ||
+ | *finish_freezing: Fixed various bugs introduced at rev#77762. | ||
+ | *{{Red|compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.}} | ||
+ | *{{Red|compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "<e>l_x := x.y.z (create .make (l_x))</e>" to override the value of `l_x' with the value of `x.y' which is wrong.}} | ||
+ | *studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting. | ||
+ | |||
+ | ===User changes=== | ||
+ | *base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are: | ||
+ | :* COMPACT_CURSOR_TREE | ||
+ | :* LINKED_CURSOR_TREE | ||
+ | :* TWO_WAY_CURSOR_TREE | ||
+ | :* COMPACT_TREE_CURSOR | ||
+ | :* LINKED_CURSOR_TREE_CURSOR | ||
+ | :* TWO_WAY_CURSOR_TREE_CURSOR | ||
+ | |||
+ | ===Developer changes=== | ||
+ | *compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings. | ||
+ | *compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard). | ||
+ | |||
+ | ==6.4.7.7762 (March 17th 2009)== | ||
+ | ===New features=== | ||
+ | *ec: Added command line version of auto test (not available with ecb) | ||
+ | *net: Unix part of EiffelNet is now also void-safe. | ||
+ | |||
+ | ===Improvements=== | ||
+ | * debugger: watch tool now support object test locals in expression | ||
+ | * compiler: Conformance checks do not take attachment status of types into account for void-unsafe code. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | * studio: Supported new attached syntax for code completion. | ||
+ | * studio: Replaced documentation generation marks !/? with attached/detachable keywords. | ||
+ | * compiler: Fixed potential issue which prevents error/warning source lines from being displayed. | ||
+ | * compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context. | ||
+ | * compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails. | ||
+ | * debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error) | ||
+ | * debugger: display object test locals declared without type (i.e: attached foo as x) | ||
+ | * c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit. | ||
+ | |||
+ | ===User changes=== | ||
+ | * studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation) | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.7646 (March 9th 2009)== | ||
+ | ===New features=== | ||
+ | * compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value ''stable'' of the note tag ''option'', for example: <e> | ||
+ | a: detachable MY_TYPE note option: stable attribute end</e> | ||
+ | |||
+ | ===Improvements=== | ||
+ | *Made the code of the Eiffel Matrix generator generates code that compiles without warnings. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements. | ||
+ | *base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant. | ||
+ | *base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant. | ||
+ | *install: Fixed missing distribution of `syntax_updater' tool on Unix. | ||
+ | *dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class. | ||
+ | *dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET. | ||
+ | *install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine. | ||
+ | *syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001). | ||
+ | *{{red|store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE}} | ||
+ | *studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash. | ||
+ | *debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through | ||
+ | *debugger: Fixed bug#15300: Objects Tab | ||
+ | |||
+ | ===User changes=== | ||
+ | *gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code. | ||
+ | |||
+ | ===Developer changes=== | ||
+ | *consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer. | ||
+ | |||
+ | ==6.4.7.7440 (March 2nd 2009)== | ||
+ | ===New features=== | ||
+ | *libraries: Have been updated to the new object test syntax. | ||
+ | |||
+ | ===Improvements=== | ||
+ | *compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds. | ||
+ | *compiler: Improved speed of error generation by caching certain disk access operations. | ||
+ | *studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated. | ||
+ | *studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation. | ||
+ | *studio: Errors are now shown first in the error list tool, for better visibility. | ||
+ | *{{Red|compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic. | ||
+ | :'''Important:''' default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.}} | ||
+ | *compiler: we now check that `is_equal' exists in ANY. | ||
+ | *compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type. | ||
+ | *debugger: fixed bug#15218: ~ not supported in the watch window. | ||
+ | *debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed' | ||
+ | *compiler: Supported detection of VUTA(2) errors for unary and binary operators. | ||
+ | *compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types. | ||
+ | *compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051. | ||
+ | *compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375). | ||
+ | *compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007. | ||
+ | *compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053. | ||
+ | *runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB). | ||
+ | |||
+ | ===User changes=== | ||
+ | *general: Updated all our libraries to use the new object test syntax. | ||
+ | *favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch. | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.7252 (February 23rd 2009)== | ||
+ | ===New features=== | ||
+ | *compiler: Added support for the new syntax for object test, i.e. <e>attached {T} exp as u</e> instead of <e>{u: T} expr</e> | ||
+ | *syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming <e>{t: like x} x</e> into just <e>attached x as t</e>. | ||
+ | |||
+ | ===Improvements=== | ||
+ | *compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict. | ||
+ | *compiler: speed up parsing time in compiler that can provide about 3% speed up. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted. | ||
+ | *compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls. | ||
+ | *debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...) | ||
+ | *debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch. | ||
+ | *compiler: Fixed some issues with non-conforming inheritance (bug#15224) | ||
+ | |||
+ | ===User changes=== | ||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.7062 (February 9th 2009)== | ||
+ | ===New features=== | ||
+ | * Eiffel2Java: void-safe, added void-safe example. | ||
+ | * EiffelWeb: void-safe. | ||
+ | |||
+ | ===Improvements=== | ||
+ | *compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *testing: Fixed a bug where minimization of test was not done resulting in very large regression tests. | ||
+ | *compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type. | ||
+ | *compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant). | ||
+ | *eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so. | ||
+ | *eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT. | ||
+ | |||
+ | ===User changes=== | ||
+ | *{{Red|base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.}} | ||
+ | |||
+ | ===Developer changes=== | ||
+ | *studio: The Groups tool and Favorites tool are now based on ESF. | ||
+ | *studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed. | ||
+ | |||
+ | ==6.4.7.6930 (February 2nd 2009)== | ||
+ | ===New features=== | ||
+ | *compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode. | ||
+ | |||
+ | ===Improvements=== | ||
+ | *compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors. | ||
+ | *compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones. | ||
+ | |||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected. | ||
+ | *compiler: Fixed some regressions eweasel test#fixed119 and test#incr318. | ||
+ | *compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117. | ||
+ | *runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances. | ||
+ | *studio: Fixed a bug where editor will disappear when debugging. | ||
+ | |||
+ | ===User changes=== | ||
+ | *compiler: renamed VUPR errors to their ECMA name VDPR. | ||
+ | |||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.6833 (January 26th 2009)== | ||
+ | ===New features=== | ||
+ | ===Improvements=== | ||
+ | *wel: now void-safe | ||
+ | *lex: now void-safe | ||
+ | *encoding: now void-safe | ||
+ | *process: now void-safe | ||
+ | *time: added void-safe sample | ||
+ | ===Feature removed=== | ||
+ | ===Bug fixes=== | ||
+ | *studio: Fixed bug#15253 where editor is missing from docking layout. | ||
+ | *base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035) | ||
+ | *base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop. | ||
+ | *studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable. | ||
+ | |||
+ | ===User changes=== | ||
+ | ===Developer changes=== | ||
+ | |||
+ | ==6.4.7.6747 (January 19th 2009)== | ||
===New features=== | ===New features=== | ||
===Improvements=== | ===Improvements=== | ||
Line 19: | Line 430: | ||
===Developer changes=== | ===Developer changes=== | ||
− | ==6.4.7.6645 (January 12th | + | ==6.4.7.6645 (January 12th 2009)== |
===New features=== | ===New features=== | ||
*studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin. | *studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin. | ||
+ | *editor: Added `flush' to force a full load of texts. | ||
===Improvements=== | ===Improvements=== | ||
===Feature removed=== | ===Feature removed=== | ||
Line 35: | Line 447: | ||
*net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official). | *net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official). | ||
===User changes=== | ===User changes=== | ||
+ | *studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid". | ||
===Developer changes=== | ===Developer changes=== | ||
Line 44: | Line 457: | ||
===Bug fixes=== | ===Bug fixes=== | ||
*studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors. | *studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors. | ||
+ | *studio: Fixed EIS tool broken by either compiler changes or improper attachment usage. | ||
+ | *studio: Fixed a library target compiled as an application target was not editable by EIS. | ||
+ | *studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries. | ||
===User changes=== | ===User changes=== | ||
*{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}} | *{{red|net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.}} | ||
*{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}} | *{{red|compiler: The compiler now accepts <e>attribute</e> and <e>note</e> as keyword by default.}} | ||
*{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}} | *{{red|argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.}} | ||
+ | *studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com". | ||
===Developer changes=== | ===Developer changes=== | ||
Line 55: | Line 472: | ||
===Improvements=== | ===Improvements=== | ||
*compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive. | *compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive. | ||
− | + | *studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193. | |
===Feature removed=== | ===Feature removed=== | ||
===Bug fixes=== | ===Bug fixes=== | ||
Line 61: | Line 478: | ||
*compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166. | *compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166. | ||
*runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception. | *runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception. | ||
+ | *studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified. | ||
===User changes=== | ===User changes=== | ||
Line 93: | Line 511: | ||
===Improvements=== | ===Improvements=== | ||
+ | *studio: Tabulated format of copied selection from the Error List tool. | ||
===Feature removed=== | ===Feature removed=== | ||
===Bug fixes=== | ===Bug fixes=== | ||
Line 98: | Line 517: | ||
*studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green. | *studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green. | ||
*studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel. | *studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel. | ||
+ | *studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available. | ||
*compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available. | *compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available. | ||
*compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099. | *compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099. |
Latest revision as of 23:15, 27 August 2009
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.4.x Releases
6.4.x
Placeholder for new stuff since last intermediate release.
New features
- compiler: Add support for transient attributes.
Improvements
Feature removed
Bug fixes
- compiler: Fixed eweasel test#final084 where compiler would generate incorrect type at run-time causing some memory corruption or a general failure.
- compiler: Fixed eweasel test#final083 where compiler would crash when inlining certain type of code involving generic classes.
- base: Added missing `own_from_pointer' in .NET version of MANAGED_POINTER
- studio: Fixed issue where one could not change an integer based preference entry in EiffelStudio.
User changes
Developer changes
6.4.7.9451 (Final Release, June 29th 2009)
Bug fixes
- libraries: Ensured void-safety of libraries under .NET too.
- compiler: Fixed issue where finalizing twice without a change in a row would cause the full recompilation of degree -2 and -3.
- compiler: Fixed an issue with documentation generation which was always failing.
- compiler: Fixed an issue when using `generating_type: TYPE [like Current]' in ANY causing the compiler to crash.
- testing: Fixed output tool documentation link.
- vision2: Fixed an issue with EV_GRID in the experimental version.
6.4.7.9263 (June 14th 2009, Release Candidate)
New features
- studio: Added support for new version of EiffelBase which is void-safe for ARRAY and SPECIAL. Because they are breaking changes, this is only available when starting the compiler or EiffelStudio in experimental mode (ec -experiment or estudio -experiment).
Improvements
- studio: the WEL new project wizard will now freeze the code to avoid issue with user having to freeze the code for the inclusion of the Windows resources.
- iphone: Extended the iPhone library. One can now create a full blown application, but not yet handle the touch event.
- runtime: When handling a mismatch instead of generating the _REF classes for basic types, we generate directly an instance of the basic type so that one can do an object test on the basic type directly.
- runtime: Improved compatibility of storables between void-safe and non-void-safe systems so that a non-void-safe system can retrieve a storable created by a void-safe system by ignoring all the attachement marks.
Feature removed
Bug fixes
- runtime: Fixed eweasel test#melt091 where the interpreter would crash if creating a manifest string, a once manifest string or an agent if the STRING or ROUTINE class got melted as part of a recompilation.
- vision2: Fixed bug#15507 where the vision2 demo was looking at the wrong place for the bitmaps.
- net: Fixed a memory leak in read and receive from SOCKET because we forgot to free the temporary buffer used to hold the data.
User changes
- base: Added in the non-void-safe version of EiffelBase a few routines that makes it possible to have code that compile both against the non-void-safe as well as the void-safe version of EiffelBase.
Developer changes
6.4.7.8984 (June 1st 2009)
New features
- compiler: Added support for iPhone platform.
- libraries: Added api_wrapper, encoding and internationalization libraries to delivery.
Improvements
- studio: Added completion of attribute...end to the editor, with preferences.
Feature removed
Bug fixes
- studio: Fixed GTK locking issue when exiting the debugger.
- studio: Fixed completion issue crashing when rapidly editing and filtering the list.
- studio: Fixed automatic scrolling of the testing output tool.
- runtime: Fixed eweasel test#thread010 where if a child thread would crash if its parent has already terminated and that child thread never started a thread.
- runtime: Fixed various SPECIAL initialization bugs with the new SPECIAL implementation (which is not yet included).
- compiler: Fixed eweasel test#incr322 and test#final079 where compiler would crash when a routine was implemented as an attribute that can be access statically in final mode.
- compiler: Improved inlining of deferred routines implemented as attributes or constants in INLINER by allowing their inlining.
- compiler: Made precompilation work on Mac OS X.
User changes
Developer changes
6.4.7.8765 (May 19th 2009)
New features
- studio: Completion now has a feature/class description tool tip (on by default)
- Promoted the dynamic API wrapper framework to a library.
- runtime: added support for void-safe SPECIAL but EiffelBase is still using the non-void-safe version.
Improvements
Feature removed
Bug fixes
- studio: Fixed non-Windows bug where transition windows didn't appear due to GTK deferring GUI manipulation events.
- compiler: Fixed eweasel test#incr322 and test#final079 which caused a crash during finalization of a call to a deferred routine implemented as an attribute with a body or some assertions.
- compiler: Fixed bug#15798 by avoiding register propagation that does not work well when combined with multidot call chain (see test#attach065).
- runtime: Allowed for `attached' and `detachable' for creating types at runtime (previously it only supported ? and ! which are now obsolete).
- debugger: Fixed bug#15772 and bug#15772 where evaluating expressions involving ~ could yield the wrong result.
- debugger: Fixed bug#15134: Step Into goes to wrong line in debugger after sequence of changes.
User changes
- time: DATE_TIME_VALUE is now a deferred class
Developer changes
6.4.7.8600 (May 10th 2009)
New features
Improvements
Feature removed
Bug fixes
- compiler: Fixed eweasel test#term177 where having some routines using anchors to arguments from a non-generic class used in a generic class where a formal generic parameter is given as argument would cause the compiler to crash.
- compiler: Fixed eweasel test#term176 and test#incr323 where if you have a syntax error at degree 5 then the compiler would misbehave after fixing the syntax error.
- compiler: Fixed bug#15761 when an object test local was not set in the generated C code if the source is a creation expression (test#attach064).
User changes
- net: Renamed privately exported `make_from_fd' to `make_from_descriptor_and_address'.
- compiler: Ensured that particular options specified in the library cannot be overridden in a project, because they apply to the source code (e.g., specify a variant of a syntax) rather than to the code generation (e.g., specify which assertions have to be monitored).
Developer changes
6.4.7.8493 (May 4th 2009)
New features
Improvements
Feature removed
Bug fixes
- debugger: fixed bug#15557: Empty value shifts the popup window in Watch tool
- debugger: fixed recently introduced bug related to expression evaluation and conditional breakpoints.
- debugger: Prevented crash from "bug#15693: catcall and segfault produced" by handling erroneous cases in the debugger.
- debugger: fixed bug#15708: Incorrect VUOT error being reported in debugger watch window
- runtime: Fixed eweasel test#expanded008 and bug#15693 where if you had an expanded with references attributes then the garbage collector would not update the internal references of the expanded and cause some memory corruption.
- install: Fixed incorrect link for compatibility mode of EiffelStudio on Windows.
- install: Fixed improper COM registration of .NET consumer preventing compilation of .NET projects.
- compiler: Fixed broken generation of single threaded DLL.
- net: Made compilable in void-safe mode since new compiler is detecting errors that previous compiler did not catch.
- build: Fixed bug#15578 in EiffelBuild which causes it to report an exception trace when it should not. This was due to a bug introduced in our preference library which also was showing hidden preferences if no default value was provided in the configuration file.
User changes
- process: File redirection in the process library will now append to a file rather than recreating it.
Developer changes
6.4.7.8382 (April 27th 2009)
New features
Improvements
Feature removed
Bug fixes
- debugger: fixed recently introduced bug#15610: Feature call on void target in {DBG_EXPRESSION_EVALUATOR_B}.is_boolean_expression in EiffelStudio.
- debugger: fixed bug#15669 Feature call on void target in {AST_DEBUGGER_BREAKABLE_STRATEGY}.initialize_current_context
- debugger: improved support for object test locals
- runtime: Fixed a non-detection of stack overflow in a multithreaded application on Linux.
User changes
- compiler: Incremented ECF XML schema version to reflect the recent changes.
- compiler: Replaced ECF schema attribute syntax_level of an integer type with syntax of a string type that contains one of the three possible values.
- compiler: Replaced ECF schema attribute is_void_safe of a boolean type with void_safety of a string type that contains one of the three possible values (none - no void safety checks, all - all void safety checks, initialization - on-demand void safety checks, i.e. only for entities that are attached).
- compiler: Application options are applied after applying options specified in the library when option Use application options is set to true.
- compiler: Added compatibility for recognizing code using `infix/prefix' instead of `alias'.
Developer changes
6.4.7.8212 (April 13th 2009)
New features
Improvements
Feature removed
Bug fixes
- compiler: Fixed bug#15570 that caused the compiler to crash or misbehave when redeclaring a feature that has object tests in both preconditions and postconditions (test#attach061).
- compiler: Fixed eweasel test#melt012 where if you have a routine with a rescue clause where an exception is raised while executing the compound of a 'when' clause the interpreter stack would get corrupted.
- compiler:Fixed bug#15092: Adding pre-compilation task with empty command causes config file parse error.
- compiler: Fixed a bug on Windows where including some Eiffel multithreaded code in a DLL would cause a crash. This was due to the way we compiled our Thread Local Storage using a Microsoft optimization that only works for normal binaries, not DLLs.
- compiler: Fixed eweasel test#melt085 and test#melt086 where using Precursor in a manifest array, manifest tuple or expression of an object test would cause a crash at runtime.
- studio: Fixed bug#15550 that object test local of a expression type wasn't formatted correctly in flat view.
- studio: Fixed bug#15584: Search report does not support standard shortcuts available elsewhere.
- studio: Fixed bug#15590 that "~" and "/~" were not highlighted as operators in the editor.
- runtime: Fixed eweasel test#thread003 and test#thread007 where you could have a memory corruption at runtime when calling {THREAD}.join and no children threads have been launched yet.
- runtime: Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.
- runtime: Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.
- base: Fixed INTERNAL so that `set_reference_field' can be used to set a reference attribute to Void if the attribute is detachable.
User changes
Developer changes
6.4.7.8090 (April 6th 2009)
Placeholder for new stuff since last intermediate release.
New features
- EiffelParse: void-safe, added void-safe example.
Improvements
- profiler: provides better precision of profiler result and standardized internal computation of the profiler to be independent of the platform on which profiling is done.
Feature removed
Bug fixes
- debugger: better handling of object test locals in debugger (the scopes are not yet supported, and then object test with same name might cause trouble in watch tool).
- runtime: Fixed eweasel test#exec310 and bug#14477 where if you have a class name that is longer than 512 bytes or an attribute name longer than 512 bytes and you call `out' it would cause a buffer overflow.
- runtime: Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).
- runtime: Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.
- runtime: Fixed eweasel test#exec300 and test#store022 with the processing of deep_twin/deep_equal/store/retrieve of an expanded object.
- runtime: Fixed eweasel test#exec311 where profiling with invariant checking enabled would cause a profiler failure (profile stack botched).
- runtime: Fixed eweasel test#melt091 where if you somehow end up melting the code of STRING and that you have melted code that creates a manifest string it will cause the interpreter to crash.
- studio: Fixed bug#15546: Can't get a flat view of a compiled class.
- studio: Fixed bug#13986: Locale list becomes empty after "Restore defaults" action.
User changes
Developer changes
6.4.7.7957 (March 29th 2009)
New features
- base: Implemented {EXCEPTION}.cause which returns the exception object that caused current exception in rescue execution.
- compiler: Added support for detecting Mac OS X and VxWorks target compilation.
Improvements
- encoding: Cached the conversion descriptors on Unix systems to avoid many `iconv_open' calls, which increases performance by around 25% - 300% depending on platforms.
- net: Added ability to only listen on the loopback address in NETWORK_STREAM_SOCKET.
Feature removed
Bug fixes
- studio: Fixed bug#15516: Error tool reshuffles needlessly.
- studio: Errors reported by one subsystem and then taken over by another now retain the previous selection in the error list tool.
- studio: Fixed some crashes when trying to execute tests for which there is no .exe or trying to open documentation from EiffelStudio and Firefox cannot open the links (fixed bug#15556).
- base: Fixed the inconsistent behaviors of {EXCEPTIONS}.original* with 5.7 potentially breaking code using exceptions.
- compiler: Fixed eweasel test#exec151 where exceptions triggered in workbench mode where you have a mix of melted and frozen code could corrupt the stack.
- compiler: Fixed eweasel test#except035 by manually raising an exception if on Solaris based OS we read EOF and the file is either stdout or stderr. Other platforms remain unchanged.
- net: Fixed some issues with the EiffelNet library when trying to listen for either any address or the loopback address in both IPv4 and IPv6 mode on Windows. It also solves a security issue since if you have IPv6 enabled, then listening to the loopback would also listen to any address on the IPv4 interface. This is a Windows only bug.
User changes
- compiler: Relaxed note element in .ecf to accept anything.
- studio: Changed EIS to use note element in ecf in this style: <note><eis name="NAME1"><eis name="NAME2"></note>
Developer changes
6.4.7.7848 (March 23rd 2009)
New features
Improvements
- studio: Better formatting of verbatim strings, that guarantees that copy/pasting from the formatted text will yield the same string content as the one in the Eiffel source code.
- base: Changed IO_MEDIUM.last_string to be attached so that existing code can easily be migrated to void-safe without changes in the pattern `read_line/last_string'.
Feature removed
Bug fixes
- runtime: Improved signal handling to use more recent APIs when available. It especially fixes issue on Solaris where a signal handler was not reinstated after a SIGSEGV signal. It fixes eweasel test#except029.
- runtime: Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.
- runtime: Worked around a bug in the Sun C compiler which caused the creation of SPECIAL in melted code to always fail when runtime is compiled with optimizations. It fixes eweasel test#melt070, test#melt081, test#term139, test#store014 and test#tuple006.
- runtime: Fixed a potential infinite loop when exiting a crash application when while quitting a signal is received which cause our last print statement to also fail (case of SIGPIPE), then it will infinitely repeat that sequence. This fixes the issue where eweasel test#vsrp208, although it was passing, ec was still using 100% CPU.
- finish_freezing: Fixed various bugs introduced at rev#77762.
- compiler: Fixed eweasel test#syntax042 and test#syntax047 as well as bug#15514 that allowed invalid characters in new C external specification. Removed generation of error when trying the old syntax, the syntax error will be based in the new syntax now. Added generation of warnings when using the old syntax and warnings are enabled.
- compiler: Fixed eweasel test#final077 where the arguments passed to a creation expression where not properly processed when analyzing expressions. This caused the following instruction: "
l_x := x.y.z (create .make (l_x))
" to override the value of `l_x' with the value of `x.y' which is wrong. - studio: Fixed a bug where EiffelStudio would not see that the class text has changed while reporting an error and thus shows the text as it was last seen by EiffelStudio at the previous error reporting.
User changes
- base: Explicitly excluded non-void safe classes from the void-safe version of EiffelBase. The list of excluded classes are:
- COMPACT_CURSOR_TREE
- LINKED_CURSOR_TREE
- TWO_WAY_CURSOR_TREE
- COMPACT_TREE_CURSOR
- LINKED_CURSOR_TREE_CURSOR
- TWO_WAY_CURSOR_TREE_CURSOR
Developer changes
- compiler: Improved parser and changed factories so that we get proper position information for strings and verbatim strings.
- compiler: Improved parser benchmark tool so that one can provide the proper type of parser (obsolete, transitional, standard).
6.4.7.7762 (March 17th 2009)
New features
- ec: Added command line version of auto test (not available with ecb)
- net: Unix part of EiffelNet is now also void-safe.
Improvements
- debugger: watch tool now support object test locals in expression
- compiler: Conformance checks do not take attachment status of types into account for void-unsafe code.
Feature removed
Bug fixes
- studio: Supported new attached syntax for code completion.
- studio: Replaced documentation generation marks !/? with attached/detachable keywords.
- compiler: Fixed potential issue which prevents error/warning source lines from being displayed.
- compiler: Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.
- compiler: Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.
- debugger: Fixed bug#15494: Cannot eval detached expression (i.e VUTA error)
- debugger: display object test locals declared without type (i.e: attached foo as x)
- c_compiler: Updated to newer version of the MSYS DLL so that it should also work on Windows Vista 64-bit.
User changes
- studio: set the project name in status bar, when we load a configuration (i.e: even before any compilation)
Developer changes
6.4.7.7646 (March 9th 2009)
New features
- compiler: supported explicitly defined "stable" attributes. Stable attribute is an attribute of a detachable type that is never assigned void. This property makes it possible to apply to it most of the CAP rules suitable for read-only entities. The stable attributes can be declared using value stable of the note tag option, for example:
a: detachable MY_TYPE note option: stable attribute end
Improvements
- Made the code of the Eiffel Matrix generator generates code that compiles without warnings.
Feature removed
Bug fixes
- base: Fixed eweasel test#list003 where calling copy on a non-empty LINKED_LIST and providing the same list as argument would wipe out the content of the LINKED_LIST instead of preserving the elements.
- base: Fixed eweasel test#list014 where calling `merge_left' and `merge_right' on a TWO_WAY_LIST was violating the invariant.
- base: Fixed eweasel test#array005 where calling `wipe_out' on an ARRAY2 was violating the invariant.
- install: Fixed missing distribution of `syntax_updater' tool on Unix.
- dotnet: Fixed a crash while compiling a .NET system in void-safe mode when the class inherited from a .NET class.
- dotnet: Fixed bug in .NET code generation where if you do not specify a version of the .NET runtime in your config file, it will always use .NET 1.0 if installed causing the .NET metadata consumer to fail since it is compiled against v2.0 of .NET.
- install: Fixed a bug in the Makefile.SH needed to compile the C code of our Eiffel libraries which could cause the C compilation to fail on a multiprocessor machine.
- syntax_updater: Fixed a bug when converting a class that contains an attribute with an assign clause as well as an attribute clause (See updated eweasel test#rdtp001).
- store: Fixed bug#15470 introduced in 6.3 where some HASH_TABLE lookups failed because HASH_TABLE is now using `~' instead of `is_equal'. Now EiffelStore uses `same_string' to compare the keys of the HASH_TABLE
- studio: Fixed bug#15447 where selecting the properties entry for the context menu would cause a crash.
- debugger/studio: fixed bug#15232: Loop variants mess up debugger step-through
- debugger: Fixed bug#15300: Objects Tab
User changes
- gobo: For the remaining of the 6.4 development, we are now using the latest version of the Gobo source code.
Developer changes
- consumer: The .NET consumer is now compiled in void-safe mode. Changed the GUID of the COM component and version, that way it is easy to switch between the old and new consumer.
6.4.7.7440 (March 2nd 2009)
New features
- libraries: Have been updated to the new object test syntax.
Improvements
- compiler: speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ in 64-bit. We went from a benchmark of 3 minutes down to 1 minute. It is definitely a bug in VS since their 32-bit version compiles the same code in just a matter of a few seconds.
- compiler: Improved speed of error generation by caching certain disk access operations.
- studio: Vastly improved population of the error list tool when thousands or errors/warnings are generated.
- studio: Error list now shows a synchronization message (Windows only) when displaying the tool for the first time after a compilation.
- studio: Errors are now shown first in the error list tool, for better visibility.
- compiler: Taken into account attachment status of formal generic constraints when checking conformance and detecting VUTA errors when target type is a formal generic.
- Important: default attachment status of the constraints follows the "attached-by-default" setting, so the code might need to be updated by adding a detachable mark in front of the formal generic constraints if the actual generic parameters can be detachable types.
- compiler: we now check that `is_equal' exists in ANY.
- compiler: Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.
Feature removed
Bug fixes
- runtime: Fixed eweasel test#conform008 where creating an attached formal generic parameter of a generic type whose actual generic parameter is a TUPLE type would not create the proper TUPLE type.
- debugger: fixed bug#15218: ~ not supported in the watch window.
- debugger: improved/fixed expression evaluation related to `a = b' and `a ~ b'. As well conditional breakpoint of type `Has Changed'
- compiler: Supported detection of VUTA(2) errors for unary and binary operators.
- compiler: Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.
- compiler: Fixed system validity errors which were not previously detected or on the other hand rejected when it was correct. Fixes eweasel tests test#svalid019, test#svalid020 and test#multicon051.
- compiler: Fixed incorrect C code generation when calling routine of a generic class under some circumstances (see eweasel test#ccomp040 and test#ccomp083, it fixes bug#15375).
- compiler: Fixed bug with {SPECIAL}.put_default which did not insert the correct object for expanded generic derivations of SPECIAL. It fixes eweasel test#exec283 and test#catcall007.
- compiler: Fixed improper precedence of the new object test syntax. It fixes eweasel test#syntax056 and test#attach053.
- runtime: Fixed various memory corruption when manipulation large SPECIAL (i.e. whose actual size is greater than 4GB).
User changes
- general: Updated all our libraries to use the new object test syntax.
- favorites: Data is now kept in project's session data; favorites are kept even after a recompilation from scratch.
Developer changes
6.4.7.7252 (February 23rd 2009)
New features
- compiler: Added support for the new syntax for object test, i.e.
attached {T} exp as u
instead of{u: T} expr
- syntax_updater: Syntax updater will convert the old syntax for object test to the new one, and will also perform some optimizations, such as transforming
{t: like x} x
into justattached x as t
.
Improvements
- compiler: Supported object tests using the same object test local name in a single feature provided that their scopes do not conflict.
- compiler: speed up parsing time in compiler that can provide about 3% speed up.
Feature removed
Bug fixes
- runtime: Fixed bug#15280 and eweasel test#except034 that {EXCEPTION_MANAGER}.last_exception not cleared after successful retry if melted.
- compiler: Correctly reported VEVI error for attributes initialized from a creation procedure by calling a once routine because the latter is not guaranteed to be executed on subsequent calls.
- debugger: Fixed bug#15384: Debugger does not step at correct position (related to require else...)
- debugger: now the debugger remembers correctly the breakpoint, even when recompiling from scratch.
- compiler: Fixed some issues with non-conforming inheritance (bug#15224)
User changes
Developer changes
6.4.7.7062 (February 9th 2009)
New features
- Eiffel2Java: void-safe, added void-safe example.
- EiffelWeb: void-safe.
Improvements
- compiler: attached attribute initialization in creation procedures is now detected not only by inspecting the top-level instructions, but also the nested complex instructions with several possible execution paths, like conditional instruction, multi-branch, etc.
Feature removed
Bug fixes
- testing: Fixed a bug where minimization of test was not done resulting in very large regression tests.
- compiler: Fixed eweasel test#attach047 where type of array of string passed as argument to the creation procedure of the root class should have an attached actual argument type.
- compiler: Fixed eweasel test#svalid018 where a crash occurred in `process_converted_expr_as' because we failed to verify that the expression still compiles fine even if inherited, because although it might compile fine in the ancestor, in the descendant it might not if they use a different set of options (e.g. non-void-safe in parent and void-safe in descendant).
- eiffelweb: Fixed issue with `hexa_to_ascii' to make sure we process correctly even incorrectly encoded URL. Added `insert_pair_without_encoding' and `parse_urlencoded_input'. Fixed input_data to return an empty string and not to report an error and the content_length is empty as it is permitted to do so.
- eiffelweb: Fixed issue bug#15267 by inheriting from SHARED_STDIN and SHARED_STDOUT to provide `stdin' and `output' in CGI_IN_AND_OUT.
User changes
- base: Made several changes in EiffelBase so that the same version can be compiled in void-safe mode as well as in non-void safe mode. The code that might not be compile anymore is `create {CELL [SOME]}' because default_create is not a creation procedure anymore.
Developer changes
- studio: The Groups tool and Favorites tool are now based on ESF.
- studio: Significant changes made in ESF tool foundations to further optimize startup and memory performance. Panels are no longer created unless the panel UI is actually needed.
6.4.7.6930 (February 2nd 2009)
New features
- compiler: for enhanced backward compatibility with 6.3, estudio and ec/ecb have a new command line option `-compat' to launch EiffelStudio or the command line compiler with compilation settings compatible with those of 6.3. On Windows, you also have a new shortcut entry in the start menu for launching EiffelStudio in this compatibility mode.
Improvements
- compiler: Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.
- compiler: Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.
Feature removed
Bug fixes
- compiler: Fixed eweasel test#attach042 and test#attach043 where type of agent was incorrect when target was of type `like Current' or when the routine had no open arguments, in both cases the compiler generated detachable types when attached were expected.
- compiler: Fixed some regressions eweasel test#fixed119 and test#incr318.
- compiler: Fixed invalid precursor missed detection thus fixing eweasel test#valid117.
- runtime: Fixed eweasel test#runtime011 were a memory corruption could occur when twining a SPECIAL or a TUPLE object under certain circumstances.
- studio: Fixed a bug where editor will disappear when debugging.
User changes
- compiler: renamed VUPR errors to their ECMA name VDPR.
Developer changes
6.4.7.6833 (January 26th 2009)
New features
Improvements
- wel: now void-safe
- lex: now void-safe
- encoding: now void-safe
- process: now void-safe
- time: added void-safe sample
Feature removed
Bug fixes
- studio: Fixed bug#15253 where editor is missing from docking layout.
- base: Fixed bug#15266 where we incorrectly merged the code value for {IO_EXCEPTION} and {RUNTIME_IO_EXCEPTION} thus breaking existing code not based on Eiffel exception object. (eweasel test#except035)
- base: Fixed bug#15273 and eweasel test#except033 that an exception thrown through rescues caused infinite loop.
- studio: Fixed the bug "Show disambiguated names" and "Show obsolete items" button on completion window did not function correctly and made tooltips on option buttons translatable.
User changes
Developer changes
6.4.7.6747 (January 19th 2009)
New features
Improvements
- base: Updated the IMMUTABLE_STRING classes to have an efficient string extraction query `shared_substring' which will let you create a substring of an existing immutable string without actually duplicating the data.
- studio: Added option in the new library dialog to show only void-safe libraries, for void-safe projects.
Feature removed
Bug fixes
- compiler: Fixed a bug with pre/post actions which were always executed regardless of the specified condition.
- runtime: Fixed eweasel test#store020 where our recoverable store mechanism could not retrieve an object if it was generic and using a formal as actual generic parameter in a generic derivation using an expanded type. This is because in 6.2, we decided not to perform the instantiation of the attribute as it was not working properly when generic derivation is a generic expanded type. For the time being, if there is a mismatch where expected type is a FORMAL_TYPE, we try to instantiate it in the current processed type and if there is a match then we know it is ok, otherwise we reject the code. This also fixes bug#15256.
- runtime: Fixed eweasel test#store019 where using the SED facilities to store/retrieve attributes which are attached would fail.
User changes
Developer changes
6.4.7.6645 (January 12th 2009)
New features
- studio: Added compile_all, syntax_updater and Eiffel image embedder tool to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin.
- editor: Added `flush' to force a full load of texts.
Improvements
Feature removed
Bug fixes
- compiler: Fixed bug#15235 where some C compilers do not like that we generate a C array of size 0.
- compiler: Fixed correctly location reporting of error classes, using the location where the code is written which differs from the current class being analyzed.
- compiler: Fixed bug#15139 by checking when parts of a multi-branch conditional instruction even when the inspect expression does not type check (see test#valid228).
- compiler: Fixed test#attach039 by using written class when evaluating precursor features as the current feature may be inherited.
- compiler: Fixed bug#15144 by checking that a self-initializing attribute is not processed recursively (see test#term169).
- compiler: Fixed bug#15129 by using a mixed routine-attribute table for attributes that may be self-initializing (see test#final072).
- studio: Fixed issue bug#15222 to respected existing note clause tags and values.
- finish_freezing: Fixed typo reported in bug#15239.
- net: Move definition of FD_SETSIZE before using the Windows header files so that we can really listen on 256 descriptors (breaking change introduced in the IPv6 version which is now the official).
User changes
- studio: Added EIS built-in variable "ISE_DOC_UUID" with value of "http://doc.eiffel.com/isedoc/uuid".
Developer changes
6.4.7.6592 (January 5th 2009)
New features
Improvements
- studio: Automatic class licenser now preserves all other note clause terms when replacing a license in the class text.
Feature removed
Bug fixes
- studio: Fixed reporting of feature errors to report the correct class name when referring to parent class errors.
- studio: Fixed EIS tool broken by either compiler changes or improper attachment usage.
- studio: Fixed a library target compiled as an application target was not editable by EIS.
- studio: Fixed a bug that note elements were not properly setup when recomputing configuration, which caused missing of some EIS entries.
User changes
- net: The IPv6 version of the EiffelNet library is now the official one. The old one has been moved in the obsolete cluster.
- compiler: The compiler now accepts
attribute
andnote
as keyword by default. - argument parser: The argument parser library introduces some breaking changes in deferred feature signatures due to the conversion to Void-Safe.
- studio: Added built-in EIS variable "ISE_DOC" with value of "http://doc.eiffel.com".
Developer changes
6.4.7.6402 (December 27th 2008)
New features
Improvements
- compiler: speed up degree 6 by not looking at the content of all .e files to figure out the associated class name. We now assume on the first pass that the file name is the class name. On EiffelStudio, if none of the file were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more when classes are on a remote drive.
- studio: Set current line number as initial line number of the Go to line dialog. This fixed bug#15193.
Feature removed
Bug fixes
- compiler: Fixed missing detection of VRFT errors in cases like "
a: TUPLE [a: TUPLE [out: INTEGER]]
". Fixes eweasel test#exec293. - compiler: Fixed catcall checker crashing when enabled. Fixes eweasel test#term166.
- runtime: Fixed eweasel test#exec293 where accessing labels of a Void tuple would not cause a call on Void target exception.
- studio: Fixed a bug that shortcut preferences with `+'/`Numpad +' could not be modified.
User changes
- compiler: now the compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use -verbose option.
Developer changes
6.4.7.6313 (December 22nd 2008)
New features
- base: Added `same_keys' to HASH_TABLE. You can redefine this feature to use a different comparison criterion for the keys.
Improvements
- compiler: Improved implementation of ~ and expanded comparison to use `is_equal' directly rather than using `equal'.
Feature removed
Bug fixes
- compiler: Fixed eweasel test#exec292 where type of inherited formals where incorrectly interpreted in descendants.
- base: Fixed a bug that would not recognize a class name A_SOMETHING as a valid identifier for INTERNAL.
- studio: New library dialog now correctly sorts the contents base on the library name and not the path.
- studio: Fixed bug#15173: EiffelStudio crash when selecting library
- runtime: Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.
User changes
- base: We do not use
is_equal
in EiffelBase, but instead the ~ operator. This could break some of your code, especially with HASH_TABLE.
Developer changes
6.4.76164 (December 15th 2008)
New features
- studio: In-grid-item selection in Error List tool.
- editor: Customizing some editor attributes, fonts, line height and etc., per instance.
Improvements
- studio: Tabulated format of copied selection from the Error List tool.
Feature removed
Bug fixes
- studio: Fixed bug#14237 where some manipulations on the UI could corrupt the EiffelStudio docking layout.
- studio: Fixed bug#12453 where VYCQ error would print the feature name in blue rather than in green.
- studio: Added a protection for bug#15116 where we could still try to access `content' while EiffelStudio has already destroyed the panel.
- studio: Fixed bug#15073 that Pick and drop from output window didn't work when no class tool was available.
- compiler: Fixed eweasel test#multicon050 where compiler did not handle renaming of a routine with an alias into a routine without one as it still thought the alias was available.
- compiler: Added printing of referenced configuration file in which there is a conflict. This fixes bug#15099.
- compiler: Fixed an incorrect VUTA(2) error being reported when compiling a static access call in void-safe mode. This fixes eweasel test#valid223.
- compiler: Fixed an incrementality corruption (bug#15061 and eweasel test#incr296) which would occur a feature has an invalid signature for one failed compilation before it is fixed again.
- compiler: Fixed bug#15027 where if you have a class which was originally only in an override cluster and then keep it in the override cluster but also now in a normal cluster, then we would not remove the compiled information from the override cluster which would cause in a later compilation the class to be forcibly removed from the system even though it is still in use.
User changes
- base: it is now using the new alias syntax for operators instead of obsolete syntax based on `infix/prefix' keywords. As a result some of your code may not compile.