Author:manus

Date:2009-06-16T19:40:40.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@237 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
manus
2009-06-16 19:40:40 +00:00
parent e93bdbc656
commit 7972262107
7 changed files with 79 additions and 8 deletions

View File

@@ -4,6 +4,12 @@
[[Property:uuid|c22fad22-3dce-cf2c-1d24-4e70fc29f3f3]] [[Property:uuid|c22fad22-3dce-cf2c-1d24-4e70fc29f3f3]]
==What's new== ==What's new==
{{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Implemented once manifest strings. They can be used at the same places where normal manifest strings can be used, e.g.:
<code>s := once "abc"
io.put_string (once "Hello World!")</code>
Once manifest strings are not created every time they are accessed. Instead one instance is created at the first access and then it is reused for subsequent accesses.==What's new==
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} {{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Implemented once manifest strings. They can be used at the same places where normal manifest strings can be used, e.g.: * Implemented once manifest strings. They can be used at the same places where normal manifest strings can be used, e.g.:
<code>s := once "abc" <code>s := once "abc"

View File

@@ -4,6 +4,9 @@
[[Property:uuid|fc50f98f-4dfd-0173-23d4-9db219dde0cf]] [[Property:uuid|fc50f98f-4dfd-0173-23d4-9db219dde0cf]]
==What's new== ==What's new==
{{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Support for new expanded semantics defined in ECMA-367.==What's new==
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} {{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Support for new expanded semantics defined in ECMA-367. The current limitations are: no copy semantics in the .NET code generation, and still no generic conformance. * Support for new expanded semantics defined in ECMA-367. The current limitations are: no copy semantics in the .NET code generation, and still no generic conformance.
* Inline agents as defined in ECMA-367 with the limitation to only accept the do form. * Inline agents as defined in ECMA-367 with the limitation to only accept the do form.

View File

@@ -4,6 +4,12 @@
[[Property:uuid|83f6c19c-b0da-6acb-0333-a92d445cfe56]] [[Property:uuid|83f6c19c-b0da-6acb-0333-a92d445cfe56]]
==What's new== ==What's new==
{{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Added support for multiple constraints in formal generic parameters.
* The root class can now be a generic class, and thus one can now specify a root type.
* The notion of creation readiness according to ECMA Eiffel standard (2nd edition, chapter 8.12.12) is implemented.
* Added experimental option for full class checking. It can be enabled at the system, cluster or class level.==What's new==
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} {{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Added support for multiple constraints in formal generic parameters. * Added support for multiple constraints in formal generic parameters.
* The root class can now be a generic class, and thus one can now specify a root type. * The root class can now be a generic class, and thus one can now specify a root type.

View File

@@ -4,6 +4,11 @@
[[Property:uuid|32beeca8-08df-4918-b231-8a14114fdd62]] [[Property:uuid|32beeca8-08df-4918-b231-8a14114fdd62]]
==What's new== ==What's new==
{{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Multiple errors are reported for each compilation degree.
* Experimental support for Non-conforming Inheritance has been added (Classic only). Classes may now be inherited (using inherit {NONE} but no conformance of that class is implied.
* Attachment marks are supported.==What's new==
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} {{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Multiple errors are reported for each compilation degree. * Multiple errors are reported for each compilation degree.
* Experimental support for Non-conforming Inheritance has been added (Classic only). Classes may now be inherited (using inherit {NONE} but no conformance of that class is implied. * Experimental support for Non-conforming Inheritance has been added (Classic only). Classes may now be inherited (using inherit {NONE} but no conformance of that class is implied.

View File

@@ -4,6 +4,13 @@
[[Property:uuid|20122f4c-22c6-d0ee-c38b-36908ca86ad2]] [[Property:uuid|20122f4c-22c6-d0ee-c38b-36908ca86ad2]]
==What's new== ==What's new==
{{seealso|See also: [[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Exceptions as objects are now implemented.
* Added support for new ~ operator which can compare 2 objects safely regardless of their type.
* Added detection of harmful catcall at runtime (harmless ones are currently ignored).
* Added support for `note' keyword with a migration path in case `note' is being used as an identifier in your code.
* Added `-gc_stats' option to get some information on how much CPU==What's new==
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} {{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Exceptions as objects are now implemented. * Exceptions as objects are now implemented.
* Added support for new ~ operator which can compare 2 objects safely regardless of their type. * Added support for new ~ operator which can compare 2 objects safely regardless of their type.

View File

@@ -4,31 +4,75 @@
[[Property:uuid|08206c9f-42fc-d007-ca09-4cf6a42207c2]] [[Property:uuid|08206c9f-42fc-d007-ca09-4cf6a42207c2]]
==What's new== ==What's new==
{{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }} {{seealso|[[Differences between standard ECMA-367 and Eiffel Software implementation|Differences between standard ECMA-367 and Eiffel Software implementation]] }}
* Added new compiler command line options: '''-experiment''' and '''-compat'''. The '''-compat''' option has no effect in 6.4. The '''-experiment''' option changes the internal value of $ISE_LIBRARY to look for libraries under $ISE_EIFFEL/experimental/library. Those libraries are tryly void-safe with respects to ARRAY/SPECIAL and because of that change it might break your existing code. In 6.5, the experimental libraries will be the default libraries and you are encouraged to take steps to ensure your code will compile fine with the experimental libraries. We made it possible to compile the same code under the 2 sets of libraries, and therefore testing should be quite easy.
* Added support for iPhone platform. * Added support for iPhone platform.
* Added support for the new syntax for object test, i.e. "<eiffel>attached {T} exp as u</eiffel>" instead of "<code>{u: T} expr</code>".
* Added free syntax for '''stable''' attributes; the final syntax is being discussed by the ECMA committee. 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:<eiffel>
a: detachable MY_TYPE note option: stable attribute end
</eiffel>
==Improvements== ==Improvements==
# Made precompilations work on Mac OS X. * Supported object tests using the same object test local name in a single feature provided that their scopes do not intersect.
# Improved inlining of deferred routines implemented as attributes or constants in INLINER by allowing their inlining. * Made precompilations work on Mac OS X.
* Improved inlining of deferred routines implemented as attributes or constants in INLINER by allowing their inlining.
* Added support for detecting Mac OS X and VxWorks target compilation.
* Speed up C compilation of E1/eskelet.c in workbench mode when using VS 2005 C++ for 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. Microsoft reports having fix this in VS 2010.
* Fixed bug#15343 when backups where very large if you referenced many .NET assemblies even when not compiling for .NET.
* 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.
* 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 files were buffered, we went from about 1 minute spent to just less than 3 seconds. The improvement should be even more visible when classes are on a remote drive.
* Fixed eweasel test#runtime010 where certain allocation patterns could cause a major slow down during a garbage collection cycle.
==Changes== ==Changes==
* Ensured that particular options specified in a 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). * Ensured that particular options specified in a 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).
* We have removed usage of infix/prefix in most of the libraries. To make the transition smooth for our users, we have added a compatibility option that allows existing code using the infix/prefix notation to still compile.
* 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.
* The compiler does not produce the class progress output in batch mode. If you want the old behavior, you have to use '''-verbose''' option.
* Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.
==Bug fixes== ==Bug fixes==
* 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.
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.
===Language issues=== ===Language issues===
* Renamed VUPR errors to their ECMA name VDPR.
* Better explanation for VDPR(3) errors when two or more precursor are available by listing all the precursors.
* Non-void arguments are now detected not only when they are specified in the voidness tests in immediate preconditions, but also in inherited ones.
* Fixed missing detection of VRFT errors in cases like "a: TUPLE [a: TUPLE [out: INTEGER]]".
===Compiler issues=== ===Compiler issues===
* Incremented ECF XML schema version to reflect the recent changes. * Incremented ECF XML schema version to reflect the recent changes.
* Replaced ECF schema attribute syntax_level of an integer type with syntax of a string type that contains one of the three possible values. * Replaced ECF schema attribute syntax_level of an integer type with syntax of a string type that contains one of the three possible values.
* 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). * 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).
* 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.
* Fixed eweasel test#agent004 and test#agent010 by ensuring the result type of the agent is properly instantiated in the agent target type context.
* Fixed missing reporting of 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.
* 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.
* 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.
* 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.
* Fixed multiple issues with validity checks involving multi-constraint formal generics and "like Current" types.
* 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.
* 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/code generation issues=== ===Runtime/code generation issues===
* Fixed broken generation of single threaded DLL. * Fixed broken generation of single threaded DLL.
* 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.
* Fixed some interpreter crashes when handling manifest strings or agent expressions.
* 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.
* Fixed eweasel test#incr321 when if you finalize after removing a class from the system, then execution of workbench code fails.
* 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.
* 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.
* Fixed a non-detection of stack overflow in a multithreaded application on Linux.
* Fixed test#thread002 where early termination of parent threads could corrupt memory if children thread are still alive.
* 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.
* Fixed test#thread008 where you could have a memory corruption at runtime when calling {MEMORY}.find_referers.
* Fixed eweasel test#thread010 where a child thread would crash if its parent has already terminated and that child thread never started a thread.
* 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.
* Fixed a bug with exception generated during the evaluation of a once in melted mode. This fixes eweasel test#except014 and test#except030.
* 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.
* 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.
===Store/Retrieve issues=== ===Store/Retrieve issues===
* 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.
* 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 attachment marks.
* Fixed an unnoticeable performance issue with the C storable/retrieval mechanism (bug#14495).

View File

@@ -6,7 +6,7 @@
===What's new=== ===What's new===
* Initial support for the iPhone platform to develop command line applications. Support for graphical applications will be available in the next release. * Initial support for the iPhone platform to develop command line applications. Support for graphical applications will be available in the next release.
* Added a few new libraries: the '''diff''' library, the '''encoding''' and '''internationalization''' libraries. * Added new libraries: the '''diff''' library, the '''encoding''' and '''internationalization''' libraries.
* To minimize breaking changes, EiffelStudio comes with two sets of libraries. The first set, which is the default set, is compatible with previous versions of EiffelStudio. The second set, which is labeled '''experimental''', is void-safe and contains some breaking changes such as new ARRAY, ARRAYED_LIST, HASH_TABLE, SPECIAL classes. Users are encourage to compile the experimental libraries to prepare their code when experimental will become the de facto library. It is possible to have code that compiles against both set without a change. * To minimize breaking changes, EiffelStudio comes with two sets of libraries. The first set, which is the default set, is compatible with previous versions of EiffelStudio. The second set, which is labeled '''experimental''', is void-safe and contains some breaking changes such as new ARRAY, ARRAYED_LIST, HASH_TABLE, SPECIAL classes. Users are encourage to compile the experimental libraries to prepare their code when experimental will become the de facto library. It is possible to have code that compiles against both set without a change.
* Added new tools to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin. The new tools are: * Added new tools to the EiffelStudio delivery. They are located under $ISE_EIFFEL/tools/spec/$ISE_PLATFORM/bin. The new tools are:
:*'''compile_all''': compile all the Eiffel Configuration File projects found under a directory and report which one do and do not compiles. :*'''compile_all''': compile all the Eiffel Configuration File projects found under a directory and report which one do and do not compiles.