mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-06 23:02:28 +01:00
Replace occurrences of ..' by ..` (backtick+text+quote replaced by backtick+text+backtick).
git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1597 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -121,7 +121,7 @@ After the compile completes, then the first pane of the New Eiffel Test Wizard a
|
||||
|
||||
Here we will name our test. Let's say that we plan to write this test against the feature <code>{BANK_ACCOUNT}.deposit</code>. We'll give this test the name <code>test_deposit_01</code>. The name uses an ad hoc naming convention for tests. You can use this, or develop your own. The prefix <code>test_</code> comes before the feature name it will test, and the suffix <code>_01</code> follows, so that we have a framework for adding more tests against <code>deposit</code>. Again, you can choose any naming scheme that makes sense to you. You may want to try to describe the test in its name. For example, <code>test_deposit_very_large_amount</code>.
|
||||
|
||||
We're ready to click '''Next''', but before we do, let's look at the check boxes on this wizard pane. The two check boxes labeled '''Redefine `on_prepare'''' and '''Redefine `on_clean'''' have to do with the way that tests are run.
|
||||
We're ready to click '''Next''', but before we do, let's look at the check boxes on this wizard pane. The two check boxes labeled '''Redefine `on_prepare`''' and '''Redefine `on_clean`''' have to do with the way that tests are run.
|
||||
|
||||
AutoTest runs each test as a three step process:
|
||||
# Preparation
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
## Picking the feature and dropping its pebble into the '''Rename''' hole ([[Image:refactor-rename-icon]]) on the [[Main toolbars|refactoring toolbar]].
|
||||
# After a compilation the '''Refactoring: Feature Rename''' dialog appears. You can enter a new name.
|
||||
# You can choose between these options:
|
||||
#* '''Replace Name in Comments''': replace usage of the feature name in comments that follow the '''`featurename'''' syntax.
|
||||
#* '''Replace Name in Strings''': replace usage of the feature name in strings that follow the '''`featurename'''' syntax.
|
||||
#* '''Replace Name in Comments''': replace usage of the feature name in comments that follow the '''`featurename`''' syntax.
|
||||
#* '''Replace Name in Strings''': replace usage of the feature name in strings that follow the '''`featurename`''' syntax.
|
||||
#* '''Reuse existing name''': allow two or more features to have the same name during refactoring (note: the compiler will still report an error, if there are two or more features with same name, but this option could be use to merge two features).
|
||||
# Click '''OK'''.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
In order to launch a compilation without user intervention you need to specify the `-batch` switch in the '''ec''' command line, otherwise the Eiffel compilation will be blocked. We will present below a typical example of batch processing on both Unix and Windows platforms where we want to compile a project in both frozen and finalized mode, then to launch the C compilations. At the same time we want to save the output of '''ec''' and the C compilations.
|
||||
|
||||
===Unix===
|
||||
In a file called `launch_ec' you can have the following:
|
||||
In a file called `launch_ec` you can have the following:
|
||||
<code lang=text>
|
||||
#!/bin/sh
|
||||
output_file="/output_path/OUTPUT"
|
||||
@@ -26,7 +26,7 @@ It will go the directory where your project is located and compile your Eiffel c
|
||||
{{note|All output from '''ec''' are going to the error output, so do not forget to redirect the error output when you want to see the result. }}
|
||||
|
||||
===Windows===
|
||||
In a file called `launched_ec.bat' you can have the following:
|
||||
In a file called `launched_ec.bat` you can have the following:
|
||||
<code lang=text>
|
||||
rem Launch Eiffel compilation
|
||||
ec -batch -config config.ecf -finalize -c_compile > c:\output_path\OUTPUT
|
||||
|
||||
@@ -23,18 +23,18 @@ A side effect is that all calls on passive regions are synchronous.
|
||||
==Improvements==
|
||||
* runtime: Improved memory management by performing O(log N) lookups when looking for a large block of memory instead of O(N). This would occur after allocating many large objects whose size is greater than 512 bytes (on 32-bit platform) and 1024 bytes on 64-bit platform and then freeing all those objects. Next time you look for a large object it might have to go through all those large objects without finding one that is large enough.
|
||||
* code generation: Made code slightly more compact (2 to 6% size reduction on some platform).
|
||||
* Optimized `expr and False' and `expr and then False' to just False if `expr' is a local, a argument, Result, Current, an attribute access or if it is the `and' boolean op.
|
||||
* Optimized `expr and False` and `expr and then False` to just False if `expr` is a local, a argument, Result, Current, an attribute access or if it is the `and` boolean op.
|
||||
|
||||
==Changes==
|
||||
|
||||
==Bug fixes==
|
||||
|
||||
===Compiler issues===
|
||||
* Fixed eweasel test#final122 and bug#19028 where we would incorrectly optimize `expr and False' or `expr and then False' into just `expr' which is wrong if `expr' is True (as the whole expression would be True and not False).
|
||||
* Fixed eweasel test#final122 and bug#19028 where we would incorrectly optimize `expr and False` or `expr and then False` into just `expr` which is wrong if `expr` is True (as the whole expression would be True and not False).
|
||||
|
||||
===SCOOP issues===
|
||||
* The SCOOP runtime is now fully written in C to avoid portability issues.
|
||||
* Corrected access to tuple fields in SCOOP mode that now follow the validity rules and the semantics of ordinary attributes of a class.
|
||||
* test#scoop034 - Fixed a code generation bug in finalized mode for a generic derivation with an actual generic of a basic type.
|
||||
* test#term216 - Fixed a crash when processing conversion queries defined as constant attributes.
|
||||
* Changed agent creation rules for separate targets. This change makes it possible to introduce library features that help users to avoid writing small little wrapper features in SCOOP to control an object. It is now possible to create agents on separate, uncontrolled target. The newly created agent object is placed on the same processor as the target, and it inherits the 'is_controlled' status.
|
||||
* Changed agent creation rules for separate targets. This change makes it possible to introduce library features that help users to avoid writing small little wrapper features in SCOOP to control an object. It is now possible to create agents on separate, uncontrolled target. The newly created agent object is placed on the same processor as the target, and it inherits the 'is_controlled' status.
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
* Implementation of new external syntax.
|
||||
* Implementation of verbatim strings.
|
||||
* Implementation of agents.
|
||||
* Implementation of agent creations on `Result' and `Current' object.
|
||||
* Implementation of agent creations on `Result` and `Current` object.
|
||||
* Improved incrementality of the C compilation: fewer directories will have their C files changed after a freeze.
|
||||
* New MSIL generation.
|
||||
* Introduction of 4 new basic classes: INTEGER_8, INTEGER_16, INTEGER_64, WIDE_CHARACTER.
|
||||
* Changed the storable mechanism so that we do not store POINTER objects with their value, instead we store a NULL value. As a consequence it is safe to store on disk objects that have references to C objects. Upon retrieval those references will be equal to `default_pointer'. This is now the default behavior, if someone wants to have the previous behavior, simply call `set_keep_pointer_value' from STORABLE.
|
||||
* Changed the storable mechanism so that we do not store POINTER objects with their value, instead we store a NULL value. As a consequence it is safe to store on disk objects that have references to C objects. Upon retrieval those references will be equal to `default_pointer`. This is now the default behavior, if someone wants to have the previous behavior, simply call `set_keep_pointer_value` from STORABLE.
|
||||
|
||||
==Improvements==
|
||||
* New run-time speed improvement (between 30 to 100% faster than the 4.5 release).
|
||||
@@ -24,7 +24,7 @@
|
||||
* CHARACTER has been extended to support the extended ASCII which means that the following expressions are now True instead of being False as it was in our previous version:
|
||||
** '%/127/' < '%/128/'
|
||||
** '%/127/' < '%/128/'
|
||||
** When using `independent_store', in case of retrieval error due to a name change in one of the class attributes we will display the original attribute name that was used to make the storable file. This will help when managing many storable files.
|
||||
** When using `independent_store`, in case of retrieval error due to a name change in one of the class attributes we will display the original attribute name that was used to make the storable file. This will help when managing many storable files.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
|
||||
And the following limitations:
|
||||
** Eiffel classes cannot inherit from non-Eiffel .NET classes (but they can be clients).
|
||||
** No support for `expanded' keyword.
|
||||
** No support for `expanded` keyword.
|
||||
|
||||
|
||||
* .NET generation now supports assembly signing in enterprise edition.
|
||||
* .NET generation now supports precompiled libraries.
|
||||
* Supports for manifest integer constants of different sizes, i.e. you can now assign for example the value `8` to a location of type <eiffel>INTEGER_8</eiffel>, <eiffel>INTEGER_16</eiffel>, <eiffel>INTEGER</eiffel> or <eiffel>INTEGER_64</eiffel>, however you can only assign the value `254' to a location of type <eiffel>INTEGER_16</eiffel>, <eiffel>INTEGER</eiffel> or <eiffel>INTEGER_64</eiffel>.
|
||||
* Supports for manifest integer constants of different sizes, i.e. you can now assign for example the value `8` to a location of type <eiffel>INTEGER_8</eiffel>, <eiffel>INTEGER_16</eiffel>, <eiffel>INTEGER</eiffel> or <eiffel>INTEGER_64</eiffel>, however you can only assign the value `254` to a location of type <eiffel>INTEGER_16</eiffel>, <eiffel>INTEGER</eiffel> or <eiffel>INTEGER_64</eiffel>.
|
||||
|
||||
==Improvements==
|
||||
* Compiler that is about 20% faster than 5.1.
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* For .NET, allow calling of overloaded features for a .NET classes to be called without using disambiguated names. Disambiguated names are still needed when redefining inherited features from .NET classes.
|
||||
* Support for inclusion of .NET resources within Eiffel assemblies.
|
||||
* Launch C compilation when needed if "-c_compile" option is specified on the "ec" command line.
|
||||
* Added ability to define custom attributes on assembly. One as to define custom attributes under the new `assembly_metadata' index clause of the root class.
|
||||
* Added ability to define custom attributes on assembly. One as to define custom attributes under the new `assembly_metadata` index clause of the root class.
|
||||
* Limited support for new <code> convert </code> keyword (only on argument passing and assignments. Not supported when used with infix routines).
|
||||
|
||||
==Improvements==
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
==Changes==
|
||||
* Changed the way we generate calls to C/C++ external routines. It is possible that because of this change, code that used to C compile, will not compile anymore. This happens mostly when mixing C and C++ code and the C call being made is incorrect but was not previously checked against the C header files if provided.
|
||||
* In multithreaded mode, all C externals that could potentially block the execution of the system should be marked `blocking' as in: <br/>
|
||||
* In multithreaded mode, all C externals that could potentially block the execution of the system should be marked `blocking` as in: <br/>
|
||||
<code> sleep (m: INTEGER) is
|
||||
external
|
||||
"C blocking"
|
||||
@@ -36,7 +36,7 @@ ti: TUPLE [INTEGER]
|
||||
td := ti</code>
|
||||
The warning will help you correct code using this pattern, because in the next release this will be rejected in order to conform to the Eiffel programming language specification.
|
||||
* Now we do not generate by default the .NET attribute <eiffel>ComVisibleAttribute</eiffel> with a False value. If needed it has to be done through the new compiler functionality to add custom attributes on assembly.
|
||||
* Changed indexing clause tag for specifying custom attributes for .NET systems. Now `attribute' is replaced by `metadata'. Now you can have:
|
||||
* Changed indexing clause tag for specifying custom attributes for .NET systems. Now `attribute` is replaced by `metadata`. Now you can have:
|
||||
** metadata: generated for both interface and implementation classes
|
||||
** assembly_metadata: generated for assembly only when specified in root class of system
|
||||
** class_metadata: generated only for implementation class
|
||||
|
||||
@@ -21,7 +21,7 @@ to say that the valid actual generic parameters for <eiffel>A</eiffel> are alway
|
||||
==Changes==
|
||||
* Compiler is now checking that you cannot redeclare a formal generic parameter into a reference type unless the formal generic parameter is being constraint to be always a reference type (See the '''What's new''' section above).
|
||||
* Removed obsolete <eiffel>eifcid</eiffel>, <eiffel>eif_expand</eiffel> and <eiffel>eifexp</eiffel>from the CECIL interface, one has to use <eiffel>eif_type_id</eiffel>instead.
|
||||
* In .NET, changed the naming conventions of resources included in an assembly. The extension `.resources' is appended for resources that are originally provided as `.resx' or `.txt' files. Other files are embedded as is in the assembly and the name of the resource is the name of the file.
|
||||
* In .NET, changed the naming conventions of resources included in an assembly. The extension `.resources` is appended for resources that are originally provided as `.resx` or `.txt` files. Other files are embedded as is in the assembly and the name of the resource is the name of the file.
|
||||
* In .NET, now all classes inherit from <eiffel>ANY</eiffel>. Before all classes inherited from <eiffel>SYSTEM_OBJECT</eiffel>. The consequences are:
|
||||
** You can write an Eiffel generic classes where the actual generic parameter is a .NET class.
|
||||
** If you used to inherit from .NET classes and Eiffel classes you can replace the inheritance clause below:
|
||||
@@ -139,7 +139,7 @@ instead of
|
||||
|
||||
===.NET issues===
|
||||
* Fixed incorrect code generation of native arrays which would cause the code to be rejected in newer version of the .NET Framework.
|
||||
* Fixed incorrect computation of `max_stack' for a routine body which could make the generated code not verifiable.
|
||||
* Fixed incorrect computation of `max_stack` for a routine body which could make the generated code not verifiable.
|
||||
|
||||
===Store/Retrieve issues===
|
||||
* Fix some issues related to the use of recoverable storable when manipulating generic types.
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
* No freeze is required when adding an agent, saving you time since C compilation can be long for very large project.
|
||||
* Reduced the required disk space for a workbench compilation in classic mode (went from 1.8 GB to 1GB for a very large project).
|
||||
* Improved speed of agent calls in classic mode.
|
||||
* Support use of IL enumerations with underlying integer types different from System.Int32. In particular, the built-in features `to_integer' and `from_integer' now use the underlying type rather than System.Int32.
|
||||
* Support use of IL enumerations with underlying integer types different from System.Int32. In particular, the built-in features `to_integer` and `from_integer` now use the underlying type rather than System.Int32.
|
||||
* Support generation of IL properties as well as custom attributes for them.
|
||||
* Support the new syntax without the <code>is</code> keyword in the feature declaration.
|
||||
* Allowed bracket expressions to be used as a target of a qualified feature call (this is an extension to ECMA standard that does not permit this syntax at the moment).
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
* 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 time is spent in GC during an Eiffel compilation.
|
||||
* 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 time is spent in GC during an Eiffel compilation.
|
||||
* Introduced several new much more powerful CAPs that now can be applied not only to read-only entities, but also to local variables (including <code>Result</code>), and can take into account execution paths as well as some obvious void-safe patterns.
|
||||
|
||||
==Improvements==
|
||||
@@ -21,7 +21,7 @@
|
||||
* Removed <code>VUOT(2)</code> that required that the type of an object test local is attached.
|
||||
|
||||
==Changes==
|
||||
* Protected several calls to `eif_wean' on the same EIF_OBJECT. This will prevent a memory corruption for people using it incorrectly with a minor slow down since in a typical application there should not be too many protected objects.
|
||||
* Protected several calls to `eif_wean` on the same EIF_OBJECT. This will prevent a memory corruption for people using it incorrectly with a minor slow down since in a typical application there should not be too many protected objects.
|
||||
* Removed <code>VFAV(4)</code> validity error that is no longer specified in the standard.
|
||||
* Due to new meaning of ~, the old syntax for agents is not being supported anymore. If you still have some code using the old agent syntax, compile it with 6.1 with syntax warning enabled to fix your code before upgrading to 6.2.
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
===Compiler issues===
|
||||
* Fixed eweasel test#final046 by avoiding useless creation of temporary objects during dynamic dispatch. It can also dramatically speed up certain kinds of code; on the compiler itself, the speed up is about 8-10%. In the worst case scenario it is 400% or more. Note this bug was introduced in version 6.0. Compared to 5.7, in 6.2 the worst case scenario is still about 10% slower.
|
||||
* Fixed an incorrect code generation for `is_equal' in ANY when exception trace is off which could cause a memory corruption.
|
||||
* Fixed an incorrect code generation for `is_equal` in ANY when exception trace is off which could cause a memory corruption.
|
||||
* Fixed various issues with compiler when inlining is enabled.
|
||||
* Fixed compiler crash when compiling a class where a type used in a signature of a feature has the wrong number of generic parameters. Fixed eweasel test#incr285.
|
||||
* Fixed an incorrect code generation for the dynamic binding of routines defined in generic classes and attribute access in general. Fixed eweasel test#exec272 and test#final039.
|
||||
@@ -43,7 +43,7 @@
|
||||
* Various bug fixes with respect of handling of expanded generic classes used in generic classes.
|
||||
|
||||
===Runtime/code generation issues===
|
||||
* Changed the usage of `eif_adopt', `eif_protect', `eif_wean', `eif_freeze' and `eif_unfreeze' so that they can be used in concurrent thread, meaning that it is safe to use them as long as the argument is different in various threads.
|
||||
* Changed the usage of `eif_adopt`, `eif_protect`, `eif_wean`, `eif_freeze` and `eif_unfreeze` so that they can be used in concurrent thread, meaning that it is safe to use them as long as the argument is different in various threads.
|
||||
|
||||
===Store/Retrieve issues===
|
||||
* Fixed some issues with the storing or retrieving of generic expanded types.
|
||||
|
||||
@@ -27,15 +27,15 @@
|
||||
* Fixed compiler issues with handling of attached types.
|
||||
|
||||
===Compiler issues===
|
||||
* Renamed `eif_com.h' from the compiler delivery into `eif_com_exception.h' as it conflicts with `eif_com.h' from the EiffelCOM library.
|
||||
* Renamed `eif_com.h` from the compiler delivery into `eif_com_exception.h` as it conflicts with `eif_com.h` from the EiffelCOM library.
|
||||
* Fixed eweasel test#final061 and test#final063 where some kind of code could cause a crash of the compiler during degree -3 with inlining enabled.
|
||||
* Fixed eweasel test#final063 which caused a C compiler error when your code uses an inline agent in an assertion and the routine in which it is defined is deferred.
|
||||
* Fixed Makefile code generation issue on machine with many cores which could cause a C compilation error because some dependencies are missing in the Makefile targets.
|
||||
* Fixed bug#13881 where if you have a VKCN error when using a routine whose return type is a like argument then it would crash instead of reporting the VKCN error. Improved VKCN error reporting by providing the instruction or expression which causes the problem.
|
||||
* Fixed eweasel test#rdtp001 and test#term158 where if TUPLE is not written using upper case characters, then the compiler will crash when trying to analyze the type.
|
||||
* Fixed the issue found with GCC 4.x series where an assignment of the form *(a + x) = f() would first evaluate (a+x) and then `f' which could cause a memory corruption if `f' triggers a GC cycle. As far as we could tell, this kind of code generation was only done when `f' would return a basic type. See eweasel test#runtime007.
|
||||
* Fixed eweasel test#ccomp076 where C/C++ inlines did not get the protected object if any, but only the unprotected one which could cause some issue if the C/C++ inline code uses `eif_access' or `eif_adopt'.
|
||||
* Fixed various issues with the `full class checking' option that would not work for inherited code involving conversion or labeled tuples (see eweasel test#svalid001, test#svalid007, test#svalid009 and test#svalid010).
|
||||
* Fixed the issue found with GCC 4.x series where an assignment of the form *(a + x) = f() would first evaluate (a+x) and then `f` which could cause a memory corruption if `f` triggers a GC cycle. As far as we could tell, this kind of code generation was only done when `f` would return a basic type. See eweasel test#runtime007.
|
||||
* Fixed eweasel test#ccomp076 where C/C++ inlines did not get the protected object if any, but only the unprotected one which could cause some issue if the C/C++ inline code uses `eif_access` or `eif_adopt`.
|
||||
* Fixed various issues with the `full class checking` option that would not work for inherited code involving conversion or labeled tuples (see eweasel test#svalid001, test#svalid007, test#svalid009 and test#svalid010).
|
||||
* Fixed bug#14856 and test#final064 where if before generating the agent call/item routine we generated a call to a deferred routine without implementation we would not generate the arguments of the agent causing a C compilation error in finalized mode.
|
||||
* Fixed improper runtime semantics for creation of manifest tuples, arrays and agents (see eweasel test#tuple011, test#tuple014 and test#agent006)
|
||||
* Fixed eweasel test#term159 where the compiler would crash if there is a conversion for one of the closed argument of an agent creation.
|
||||
@@ -50,7 +50,7 @@
|
||||
* When registering externally created threads, make sure that the runtime does not exit them when no more Eiffel code needs to be run as it must be done by the code that created it. Also made sure that the runtime per thread data are reset to 0 to ensure that we can register/unregister the external thread as many times as needed.
|
||||
* Fixed a buffer overflow that would occur on some Unix platforms when a signal was received by the application.
|
||||
* Fixed eweasel test#thread006 where if many threads allocate small objects which are quickly dying then we could break the runtime synchronization and cause a crash.
|
||||
* Added a cast to ensure that `eif_globals' can compile properly in C++ mode.
|
||||
* Added a cast to ensure that `eif_globals` can compile properly in C++ mode.
|
||||
* Fixed eweasel test#runtime008 where we have a leak on each created thread if invariants are monitored.
|
||||
* Fixed eweasel test#runtime009 where a reallocation of a SPECIAL object could cause a memory corruption.
|
||||
* Fixed various issues with exceptions (performance, failure when reporting invariant, added I/O reason to exception object, extended stack traces up to the root class, rather than stopping at the first rescue clause).
|
||||
|
||||
@@ -28,7 +28,7 @@ a: detachable MY_TYPE note option: stable attribute end
|
||||
* Removed usage of infix/prefix in most of the libraries. To ease transition, added a compatibility option that allows existing code using the infix/prefix notation to continue to compile.
|
||||
* Attachment status of formal generic constraints are now taken into account 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. The old behavior is available by using the '''-verbose''' option.
|
||||
* Fixed incorrect display of NATURAL_32 attributes when calling `out' (fixes eweasel test#exec298 and bug#13862.)
|
||||
* Fixed incorrect display of NATURAL_32 attributes when calling `out` (fixes eweasel test#exec298 and bug#13862.)
|
||||
|
||||
==Bug fixes==
|
||||
|
||||
@@ -50,13 +50,13 @@ a: detachable MY_TYPE note option: stable attribute end
|
||||
* 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.
|
||||
* 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===
|
||||
* 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#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.
|
||||
|
||||
@@ -23,7 +23,7 @@ No major improvements in 6.5 as this release was mostly focused on quality impro
|
||||
===Compiler issues===
|
||||
* Fixed eweasel test#incr313, test#incr317 and test#incr318 where removal of a convert clause was not taken into account by the compiler.
|
||||
* Fixed eweasel test#svalid022 where conversion to a target of a detachable type was not accepted, and also now the compiler will verify that the source of the conversion is always attached. Ensured that the source or the target type mentioned in a convert clause is attached.
|
||||
* Fixed eweasel test#svalid024 where using an inspect clause with static constant access would failed to compile in a descendant class when `full class checking' is enabled.
|
||||
* Fixed eweasel test#svalid024 where using an inspect clause with static constant access would failed to compile in a descendant class when `full class checking` is enabled.
|
||||
* Fixed eweasel test#term156 and test#svalid025 where compiler would crash while compiling code that needs to be regenerated in descendant classes (e.g. code from precondition) involving anchors or formal generic parameters.
|
||||
* Supported tracking changes made to a shared library definition file to trigger freeze automatically when there are any modifications to this file.
|
||||
* Fixed bug on Unix platforms where spaces in project/installation paths failed to create the necessary symbolic links, when using precompiles.
|
||||
@@ -44,6 +44,6 @@ No major improvements in 6.5 as this release was mostly focused on quality impro
|
||||
|
||||
|
||||
===Store/Retrieve issues===
|
||||
* Fixed bug#16395 and eweasel test#store026 to avoid mismatch if the metadata stored in `eskelet' is simplified or not (i.e. for class A[G] feature g: B[G], and then having A [INTEGER] could either describe `g' as either `B[G]' or `B[INTEGER]', even though different they are the same type and should not yield a mismatch).
|
||||
* Fixed bug#16395 and eweasel test#store026 to avoid mismatch if the metadata stored in `eskelet` is simplified or not (i.e. for class A[G] feature g: B[G], and then having A [INTEGER] could either describe `g` as either `B[G]` or `B[INTEGER]`, even though different they are the same type and should not yield a mismatch).
|
||||
* Fixed eweasel test#store028 where retrieving an object whose type involves a TUPLE type without a TUPLE instance could corrupt the retrieval system.
|
||||
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
* The Eiffel Configuration Files accept C compiler and linker flags. Former ECFs using a workaround to specify those flags as part of the external includes or external objects sections are automatically updated to the new specification.
|
||||
* Report invalid Unicode code point for STRING_8 manifest.
|
||||
* Ensured you can switch C compilers after compiling with one on Windows.
|
||||
* Speed up C compilation with Visual Studio by using `#pragma once' on our header files (bug#17092).
|
||||
* Speed up C compilation with Visual Studio by using `#pragma once` on our header files (bug#17092).
|
||||
* Speed up execution of expanded comparison using ~ when types are known to be different at compile time.
|
||||
* Optimized code generation of <e>{CHARACTER_32}.is_character_8</e>.
|
||||
* Optimized code generation of boolean expressions that are known to be False or True at compile time in both workbench and finalized mode.
|
||||
|
||||
==Changes==
|
||||
* Breaking change of generating Unicode code point for STRING_8 manifest written in UTF-8 source code. (Written UTF-8 bytes was generated). Unlike previous versions, what you see will be what you get at runtime, i.e. the character codes are the same.
|
||||
* In the `on-demand' void-safety mode, the compiler will not report a VD88 error when you are using a non-void safe library. This should help migrating existing code to full void-safety.
|
||||
* In the `on-demand` void-safety mode, the compiler will not report a VD88 error when you are using a non-void safe library. This should help migrating existing code to full void-safety.
|
||||
* Removed support for type qualifier for strings used in obsolete messages.
|
||||
* Removed type qualifiers from manifest constants to follow the changes in the language rules that now prevent from using them in constant attribute declarations.
|
||||
* VWEQ warnings will only be triggered for immediate code, not inherited code.
|
||||
@@ -48,10 +48,10 @@
|
||||
|
||||
===Runtime/code generation issues===
|
||||
* Fixed code generation in melted mode when you declare a CHARACTER_32 constant feature such as <e>x: CHARACTER_32 = '%/027/'</e>.
|
||||
* Prevented a deadlock situation after a fork is performed on Unix platforms when using the `eif_thread_fork' (bug#18094).
|
||||
* Prevented a deadlock situation after a fork is performed on Unix platforms when using the `eif_thread_fork` (bug#18094).
|
||||
* Fixed a traitor situation where a multi-dot chain involving a separate target are treated as separate calls rather than normal calls (test#scoop024).
|
||||
* Fixed code generation of object test on basic types that was failing on .NET (test#dotnet113).
|
||||
* Fixed some definitions conflicts with `complex.h' which occurs on some platforms.
|
||||
* Fixed some definitions conflicts with `complex.h` which occurs on some platforms.
|
||||
* Ensured that on Windows using any Microsoft C++ compiler only 2 digits are displayed for exponents that can be represented on 2 digits and three otherwise.
|
||||
* Fixed a potential memory leak of thread context when a parent and a child are exiting at about the same time.
|
||||
* Fixed an incorrect handling of <e>detachable NONE</e> at runtime (test#melt088, test#valid154).
|
||||
|
||||
@@ -31,6 +31,6 @@ N/A
|
||||
* Fixed a bug where the TYPE instance of a new generic derivation in the running system would be corrupted.
|
||||
|
||||
===Store/Retrieve issues===
|
||||
* Fixed a bug in .NET where using the Eiffel serialization or marking objects would trigger computation of `hash_code' on Eiffel objects and thus changing their state.
|
||||
* Fixed a bug in .NET where using the Eiffel serialization or marking objects would trigger computation of `hash_code` on Eiffel objects and thus changing their state.
|
||||
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ The previous call is valid, if and only if:
|
||||
|
||||
==Added external support==
|
||||
|
||||
Look at the page for [[C externals|C]] and [[C++ Externals|C++]] with the introduction of `struct' and C++ external features encapsulation.
|
||||
Look at the page for [[C externals|C]] and [[C++ Externals|C++]] with the introduction of `struct` and C++ external features encapsulation.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
[[Property:uuid|4d4a70fa-b6da-cecb-83e0-dcc18d6ed54a]]
|
||||
==Unix/Linux Users:==
|
||||
|
||||
EiffelStudio supports `gcc' on most platforms and the native`cc' compiler if it is an ANSI C compiler.
|
||||
|
||||
EiffelStudio supports `gcc` on most platforms and the native`cc' compiler if it is an ANSI C compiler.
|
||||
|
||||
|
||||
==Microsoft Windows Users==
|
||||
@@ -13,7 +12,7 @@ EiffelStudio supports Microsoft and MinGW compilers on Microsoft Windows.
|
||||
|
||||
===Microsoft Visual C++ Users===
|
||||
|
||||
By default the installation program will set in the registry keys the ISE_C_COMPILER key to `msc'.
|
||||
By default the installation program will set in the registry keys the ISE_C_COMPILER key to `msc`.
|
||||
|
||||
EiffelStudio supports only version 14.0 and higher of the Microsoft Visual C++ environment. This is available in Visual Studio 2005 or higher revision, or in version of the Windows SDK 6.1 or higher.
|
||||
|
||||
@@ -21,7 +20,7 @@ EiffelStudio will automatically detect the location of the C compiler.
|
||||
|
||||
===MinGW Users:===
|
||||
|
||||
By default the installation program will set in the registry keys the ISE_C_COMPILER key to `mingw'.
|
||||
By default the installation program will set in the registry keys the ISE_C_COMPILER key to `mingw`.
|
||||
|
||||
In versions as late as 6.6, there is a [[EiffelCOM Wizard Guided Tour|restriction]] that prevents the use of EiffelCOM with the MinGW compiler.
|
||||
|
||||
@@ -29,9 +28,9 @@ In versions as late as 6.6, there is a [[EiffelCOM Wizard Guided Tour|restrictio
|
||||
|
||||
You can do it in either of two different ways.
|
||||
|
||||
You can manually edit the registry key HKLM\Software\ISE\Eiffel''nn'' and change the value of the ISE_C_COMPILER string key to either `msc' or `mingw' depending upon the effect you desire.
|
||||
You can manually edit the registry key HKLM\Software\ISE\Eiffel''nn'' and change the value of the ISE_C_COMPILER string key to either `msc` or `mingw` depending upon the effect you desire.
|
||||
|
||||
Alternatively, you can set the environment variable ISE_C_COMPILER to either `msc' or `mingw'.
|
||||
Alternatively, you can set the environment variable ISE_C_COMPILER to either `msc` or `mingw`.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ Choosing "Add Custom..." produces a freeform dialog, much like the editing dialo
|
||||
|
||||
<code>
|
||||
my_routine (a_string: STRING)
|
||||
-- Do something with `a_string'.
|
||||
-- Do something with `a_string`.
|
||||
do
|
||||
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ Here is a list of exceptions that may appear in the [[Call stack tool: Interface
|
||||
|
||||
'''Floating point exception''' (signal SIGFPE): An error occurred while processing floating point numbers. This may be for example a FPU overflow, a division by zero, or an invalid operation.
|
||||
|
||||
'''Unmatched inspect value''': An inspect clause couldn't find the value it was passed among the `when' clauses. If any value maybe passed to the `when' clause, adding an `else' clause will solve this problem.
|
||||
'''Unmatched inspect value''': An inspect clause couldn't find the value it was passed among the `when` clauses. If any value maybe passed to the `when` clause, adding an `else` clause will solve this problem.
|
||||
|
||||
'''I/O error''': An error occurred while accessing a stream. Examples of this are a missing file, or insufficient rights.
|
||||
|
||||
@@ -37,9 +37,9 @@ Here is a list of exceptions that may appear in the [[Call stack tool: Interface
|
||||
|
||||
'''Run-time I/O error''': Exception raised by the run-time when encountering a I/O error internally.
|
||||
|
||||
'''External event''': On Unix, this happens when an operating system error occurs and does not set the `errno' variable.
|
||||
'''External event''': On Unix, this happens when an operating system error occurs and does not set the `errno` variable.
|
||||
|
||||
'''Operating system error''': On Unix, this happens when an operating system error occurs and sets the `errno' variable.
|
||||
'''Operating system error''': On Unix, this happens when an operating system error occurs and sets the `errno` variable.
|
||||
|
||||
'''COM error''': Raised when EiffelCOM encounters an error.
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ There are rather exceptional but sometimes useful class designs in which the ext
|
||||
|
||||
|
||||
=Example of violation=
|
||||
<e>
|
||||
<eiffel>
|
||||
height: INTEGER
|
||||
-- Height in pixel of Current.
|
||||
|
||||
@@ -37,19 +37,19 @@ width: INTEGER
|
||||
do
|
||||
height := height + 10
|
||||
Result := 100 - height
|
||||
end</e>
|
||||
end</eiffel>
|
||||
|
||||
=Recommendation=
|
||||
Ensures that no query changes the state of the current object.
|
||||
|
||||
In the example, one could replace the routine <e>width</e> by an attribute and calling <e>update_width</e> before querying <e>width</e> where <e>update_width</e> would be:
|
||||
<e>update_width
|
||||
In the example, one could replace the routine `width` by an attribute and calling `update_width` before querying `width` where `update_width` would be:
|
||||
<eiffel>update_width
|
||||
-- Update `height' and `width' with ....
|
||||
do
|
||||
height := height + 10
|
||||
width := 100 - height
|
||||
end</e>
|
||||
end</eiffel>
|
||||
|
||||
Or you can remove the line <e>height := height + 10</e> from the body of <e>width</e>.
|
||||
Or you can remove the line `height := height + 10` from the body of `width`.
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Some of the keyboard shortcuts used in the editor can be customized. A subfolder
|
||||
{{note|You should avoid using key combinations made of only <code>ALT</code> and another key as they are reserved for menu shortcuts. }}
|
||||
|
||||
|
||||
{{Tip|You may use combinations made of only one key to create very fast shortcuts, for example with the function keys. To know what string corresponds to a given key, you can look up in the EV_KEY_CONSTANTS of EiffelVision2.The `key_strings' table links keys with a string representation. }}
|
||||
{{Tip|You may use combinations made of only one key to create very fast shortcuts, for example with the function keys. To know what string corresponds to a given key, you can look up in the EV_KEY_CONSTANTS of EiffelVision2.The `key_strings` table links keys with a string representation. }}
|
||||
|
||||
|
||||
There are three other categories in the shortcut preferences. These can be used to automatically insert a user-defined string in the editor. If you find yourself typing some strings very often, these preferences can be handy.
|
||||
|
||||
@@ -20,7 +20,7 @@ This category gathers the preferences related to context tools.
|
||||
| Number of cached formatted text in history.
|
||||
|-
|
||||
| Show all callers
|
||||
| Show all callers (as opposed to local callers) in `callers' form.
|
||||
| Show all callers (as opposed to local callers) in `callers` form.
|
||||
|}
|
||||
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* EiffelStudio is now integrated with the new support site entirely rewritten using EWF and in beta until now.
|
||||
|
||||
===Improvements===
|
||||
* When displaying the flat of code involving conversions of manifest constants such as assigning 1 to an INTEGER_8 variable, we will simply show 1 and not `1.to_integer_8' which is not valid Eiffel code.
|
||||
* When displaying the flat of code involving conversions of manifest constants such as assigning 1 to an INTEGER_8 variable, we will simply show 1 and not `1.to_integer_8` which is not valid Eiffel code.
|
||||
|
||||
===Bug fixes===
|
||||
* Fixed display of flat form involving a procedure agent.
|
||||
@@ -23,10 +23,10 @@
|
||||
All libraries have been updated to the latest syntax for the agent's type.
|
||||
|
||||
===Base===
|
||||
* Exported `read_to_string' from FILE to allow user side buffering.
|
||||
* Exported `read_to_string` from FILE to allow user side buffering.
|
||||
|
||||
===Preferences===
|
||||
* Added a precondition to `add_parent_structure_preference_row' and `formatted_name' that a preference name cannot be empty (this might be the case when preference names get erroneously converted from non-ASCII strings, e.g. as it was with incorrect implementation of code analysis preferences).
|
||||
* Added a precondition to `add_parent_structure_preference_row` and `formatted_name` that a preference name cannot be empty (this might be the case when preference names get erroneously converted from non-ASCII strings, e.g. as it was with incorrect implementation of code analysis preferences).
|
||||
* Avoided automatic formatting of a preference name if it has whitespace to allow for preference names with underscore characters or those that are pre-formatted.
|
||||
* Added a creation procedure to pass a preference grid control explicitly in case some fine-tuning is needed.
|
||||
* Changed type of preference values to READABLE_STRING_32 to avoid conversion when the values are loaded from XML where values are returned as READABLE_STRING_32.
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
** block indent and exdent.
|
||||
** infinite level of Undo/Redo
|
||||
|
||||
* When edition of a class text which has been successfully compiled, the class will be fully `pick-and-droppable'.
|
||||
* When edition of a class text which has been successfully compiled, the class will be fully `pick-and-droppable`.
|
||||
* Faster rendering for Clickable, Flat, Contract (previously known as Short) and Flat Contract views.
|
||||
* System tool has been replaced by a `project settings' window. The underlying mechanism of the configuration file is kept, but all changes are done through a nice GUI making it simpler for beginners to create their first configuration file.
|
||||
* System tool has been replaced by a `project settings` window. The underlying mechanism of the configuration file is kept, but all changes are done through a nice GUI making it simpler for beginners to create their first configuration file.
|
||||
* Toolbars are now customizable
|
||||
* EiffelCase has been merged within EiffelStudio to provide a true reverse engineering using the BON notation.
|
||||
|
||||
@@ -47,9 +47,9 @@ The compiler has been improved in many ways and some functionality have been add
|
||||
* New <code>ROUTINE</code> classes which perform better type checking on argument passing.
|
||||
* Introduction of binary operations on <code>INTEGER</code> types: <code>infix "&"</code>,<code>infix "|"</code>, <code>bit_xor</code>, <code>bit_not</code>, <code>bit_shift</code>, <code>infix "|>>"</code>, <code>infix "|<<"</code>and <code>bit_text</code>.
|
||||
* Removed <code>infix "^"</code> from <code>NUMERIC</code>. It does not break any inheritance, but break clients that were using this operator on an entity declared of type NUMERIC. This is due to the different return type of this operator depending the NUMERIC type you are handling.
|
||||
* Changed the signature of <code>pruned</code> in <code>BINARY_SEARCH_TREE</code> to take an extra argument. This was necessary to fix a problem that caused the `parent' attributes to become inconsistent under certain conditions when calling <code>pruned</code>.
|
||||
* Changed the signature of <code>pruned</code> in <code>BINARY_SEARCH_TREE</code> to take an extra argument. This was necessary to fix a problem that caused the `parent` attributes to become inconsistent under certain conditions when calling <code>pruned</code>.
|
||||
* Re-implemented the features <code>disjoint</code> and <code>symdif</code> of <code>SUBSET</code>. These features caused problems under certain conditions and were also quite inefficient. The new implementation of these features uses the strategy pattern to choose among different versions of these calculations depending on the properties of the elements contained in the set.
|
||||
* All features on <code>SUBSET</code> that take another subset as an argument(e.g. <code>intersect</code>) now accept any other subset type as an argument, independent of its underlying implementation, and not only subsets of type `like Current'.
|
||||
* All features on <code>SUBSET</code> that take another subset as an argument(e.g. <code>intersect</code>) now accept any other subset type as an argument, independent of its underlying implementation, and not only subsets of type `like Current`.
|
||||
* Many smaller bug fixes for bugs that were reported by our customers or that have been discovered during our development andtesting.
|
||||
|
||||
===WEL:===
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* Editor now supports drag-and-drop of the selection.
|
||||
* When debugging a project from EiffelStudio, the current directory will be your project directory. It is a change from previous version where:
|
||||
** on Windows, it used to be launched in the W_code subdirectory of your project directory
|
||||
** on Unix, it used to be launched from the same directory where `estudio' (or `ebench') was launched.
|
||||
** on Unix, it used to be launched from the same directory where `estudio` (or `ebench`) was launched.
|
||||
|
||||
* EiffelStudio GUI now also available on Unix platforms and Windows 9x/Me
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
* Click [[Major changes between ISE Eiffel 5.1 and ISE Eiffel 5.2|here]] for more details on compiler improvements and full Eiffel support on .NET
|
||||
|
||||
==Debugger==
|
||||
* Right-clicking on one of the run buttons will pop up a dialog enabling you to choose the command line argument (it is a shortcut for `Project Settings'-> Debug tab).
|
||||
* Right-clicking on one of the run buttons will pop up a dialog enabling you to choose the command line argument (it is a shortcut for `Project Settings`-> Debug tab).
|
||||
* Expressions can now be dynamically evaluated in the debugger. ( [[Expression evaluation|info]] )
|
||||
* Conditional breakpoints. ( [[Breakpoints|info]] )
|
||||
* Classes can now define <code> debug_output </code>, a feature inherited from <code> DEBUG_OUTPUT </code>, whose string result is automatically displayed in the debugger for all objects of that type. ( [[Debug output|info]] )
|
||||
@@ -31,7 +31,7 @@
|
||||
** Fixed <code> is_integer </code> to return False for strings of the form "(-|+)[a-zA-Z]+[0-9]*)"
|
||||
** Improved speed of <code> to_lower </code> and <code> to_upper </code>.
|
||||
** Updated for ELKS 2001 conformance:
|
||||
*** Changed signature of <code> out </code> and <code> replace_substring </code> to use <code> STRING </code> instead of `like Current'.
|
||||
*** Changed signature of <code> out </code> and <code> replace_substring </code> to use <code> STRING </code> instead of `like Current`.
|
||||
*** Added <code> keep_tail </code>, <code> keep_head </code>, <code> remove_tail </code>, <code> remove_head </code> and make <code> head </code> and <code> tail </code> obsolete.
|
||||
*** Added <code> string </code>, <code> same_string </code>, <code> has_substring </code>, <code> fill_with </code>, <code> insert_string </code>, <code> insert_character </code>, <code> as_lower </code>, <code> as_upper </code>.
|
||||
*** Modified <code> make_from_string </code> so that no sharing of internal string is done.
|
||||
@@ -58,14 +58,14 @@
|
||||
* Put Windows and Unix version to the same version number.
|
||||
* Fixed EiffelWeb documentation and example.
|
||||
* Fixed minor issues found with EiffelVision2 on Unix and Windows which were affecting EiffelBuild.
|
||||
* Fixed incorrect configuration file specification for EiffelVision2 examples and wizards on Unix platforms where application could be linked dynamically with `libpng' but should not.
|
||||
* Fixed incorrect configuration file specification for EiffelVision2 examples and wizards on Unix platforms where application could be linked dynamically with `libpng` but should not.
|
||||
* Fixed EiffelStore handle for Oracle so that it works fine when compiled with the Borland C compiler.
|
||||
* Fixed incorrect version number in VERSION file on Unix platforms.
|
||||
|
||||
===Version 5.2.1313:===
|
||||
* Fixed resource leak on Windows 98 and Windows Me.
|
||||
* Fixed incorrect implementation of <code> area </code> and <code> substring </code> for <code> STRING </code> in dotnet mode.
|
||||
* Fixed issue with setting of arguments. After restarting EiffelStudio the command line argument contains an extra `]' character.
|
||||
* Fixed issue with setting of arguments. After restarting EiffelStudio the command line argument contains an extra `]` character.
|
||||
* Fixed issue with working directories where only the first one ever set was used even if new ones have been set afterwards.
|
||||
* Fixed issue in IL code generation where having a class that inherits from a non-Eiffel .NET class. And the class has the following features: <br/>
|
||||
<code>
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
* Recoverable storable (See [[Major changes between ISE Eiffel 5.2 and ISE Eiffel 5.3|compiler release notes]] for more info).
|
||||
|
||||
===Bug fixes===
|
||||
* Fixed issue with setting of arguments. After restarting EiffelStudio the command line argument contains an extra `]' character.
|
||||
* Fixed issue with setting of arguments. After restarting EiffelStudio the command line argument contains an extra `]` character.
|
||||
* Fixed issue with working directories where only the first one ever set was used even if new ones have been set afterwards.
|
||||
* Fixed issue where generating documentation for all/library cluster would stop during generation without completing.
|
||||
* Fixed crash in diagram tool when moving label on client/supplier link between two classes.
|
||||
* Fixed resource leak on Windows 98 and Windows Me.
|
||||
* Fixed issue in projects where clusters are specified with relative path would not compile after adding a local assembly.
|
||||
* Fixed problem with cluster tool management where moving classes around or looking up a class will generate an error box instead of performing the requested operation.
|
||||
* Fixed incorrect configuration file specification for EiffelVision2 examples and wizards on Unix platforms where application could be linked dynamically with `libpng' but should not.
|
||||
* Fixed disappearance of EiffelStudio when debugging a routine `infix' or `prefix' in which an exception was raised. This issue was only occurring with melted code (usually noticeable when using a precompiled library).
|
||||
* Fixed incorrect configuration file specification for EiffelVision2 examples and wizards on Unix platforms where application could be linked dynamically with `libpng` but should not.
|
||||
* Fixed disappearance of EiffelStudio when debugging a routine `infix` or `prefix` in which an exception was raised. This issue was only occurring with melted code (usually noticeable when using a precompiled library).
|
||||
* Changing the project specific command line arguments will not touch the project settings configuration file (ace file).
|
||||
|
||||
==Compiler==
|
||||
@@ -65,7 +65,7 @@ make is
|
||||
end</code>
|
||||
|
||||
* Fixed .NET implementation of <code> open_write </code> and <code> create_read_write </code> in <code> FILE </code>. They were not resetting the file size to zero if file already existed.
|
||||
* Added <code>correct_mismatch</code> on <code>ANY</code> used for `recoverable storable'.
|
||||
* Added <code>correct_mismatch</code> on <code>ANY</code> used for `recoverable storable`.
|
||||
* Added <code>correct_mismatch</code> on <code>HASH_TABLE</code> to enable retrieval of the 5.1 and older version of <code>HASH_TABLE</code>.
|
||||
* Fixed bug in implementation of <code>copy</code> and <code>is_equal</code> for <code>TREE</code> and descendant classes. Now descendants of <code>TREE</code> that would like to compare additional attributes of their class needs to redefine <code>node_is_equal</code> whose default implementation will always result in a true value.
|
||||
* Changed default semantic of <code>make</code> and <code>put_child</code> from <code>FIXED_TREE</code>, to preserve existing semantic, you should use <code>make_filled</code> and <code>replace_child</code> instead.
|
||||
@@ -83,7 +83,7 @@ make is
|
||||
* Updated library so that it works both in classic and dotnet mode.
|
||||
* Fixed issue with oracle handle which did not work with the included Borland C compiler.
|
||||
* Removed <code> nb_classes </code> from <code> EXT_INTERNAL </code>.
|
||||
* Removed need for additional object file (`support.lib' on Windows and `libsupport.a' on Unix platforms), so make sure to remove it from your project configurations.
|
||||
* Removed need for additional object file (`support.lib' on Windows and `libsupport.a` on Unix platforms), so make sure to remove it from your project configurations.
|
||||
|
||||
===EiffelVision2===
|
||||
* [[Revisions and Bug Fixes|Click here to see list of update and modification to Eiffel Vision2]] .
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* All callers will not show empty entries.
|
||||
|
||||
===Bug fixes===
|
||||
* Fixed issue where setting the string background color to `auto' in the preferences will set it to a black color next time your relaunch EiffelStudio.
|
||||
* Fixed issue where setting the string background color to `auto` in the preferences will set it to a black color next time your relaunch EiffelStudio.
|
||||
* Fixed issue where typing in an empty features tree will close down EiffelStudio.
|
||||
* Fixed issue with BON diagram where expanded client links were not properly displayed (the expanded bar was drawn on top of classes instead of on the link itself).
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
* Fixed bug in <code>generic_typecode</code> from <code>TUPLE</code> in .NET implementation which fixed an issue with <code>is_reference_item</code>.
|
||||
* Made <code>TUPLE</code> a descendant of <code>HASHABLE</code> and defined <code>hash_code</code> (based on the hash_codes of the elements of a <code>TUPLE</code>).
|
||||
* Added <code>default_create</code> as creation procedure of <code>TUPLE</code> and made <code>make</code> obsolete.
|
||||
* Added convenience features to <code>TUPLE</code>: <code>put_XX_item</code> where `XX' can be replaced by `character, boolean, integer, double,...'.
|
||||
* Added convenience features to <code>TUPLE</code>: <code>put_XX_item</code> where `XX` can be replaced by `character, boolean, integer, double,...`.
|
||||
* Optimized <code>ROUTINE</code>, <code>PROCEDURE</code> and <code>FUNCTION</code> implementation to speed up agent calls by a factor of 2 to 3. Removed <code>open_operand_type</code> from <code>ROUTINE</code> as its specification was only used internally and specification was not precise enough to be used by clients of <code>ROUTINE</code>.
|
||||
* Fixed <code>append</code> from <code>SEQUENCE</code> to not perform a <code>deep_clone</code> when passed argument is the same reference as Current. This was a problem when the base class of the type of the elements inherited from <code>MEMORY</code> and redefined <code>dispose</code>. You could possibly end up freeing twice an external resource.
|
||||
* Changed implementation of <code>INTERACTIVE_LIST</code> to be based on <code>ARRAYED_LIST</code> rather than on <code>LINKED_LIST</code>.
|
||||
@@ -69,7 +69,7 @@
|
||||
* Made <code>OBJECT_OWNER</code> obsolete
|
||||
* Added <code>wait_with_timeout</code> in <code>CONDITION_VARIABLE</code>
|
||||
* Added <code>READ_WRITE_LOCK</code> class to be used in a system where few writes are done compare to reads. A typical example of its use would be to have a thread safe lookup table where few insertions are done.
|
||||
* Now a C externals that might block the execution of a system, should be marked `blocking'. [[Major changes between ISE Eiffel 5.3 and ISE Eiffel 5.4|See compiler changes for more details]] .
|
||||
* Now a C externals that might block the execution of a system, should be marked `blocking`. [[Major changes between ISE Eiffel 5.3 and ISE Eiffel 5.4|See compiler changes for more details]] .
|
||||
|
||||
===EiffelVision2===
|
||||
* [[Revisions and Bug Fixes|Click here to see list of update and modification to EiffelVision2]] .
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
* Various minor bug fixes and improvements regarding the interface
|
||||
|
||||
===Debugger engine===
|
||||
* Fixed a memory leak with the `estudio' process when conditional breakpoints are enabled.
|
||||
* Fixed a memory leak with the `estudio` process when conditional breakpoints are enabled.
|
||||
* Improved speed of execution when conditional breakpoints are enabled (about 20 times faster).
|
||||
* Fixed a bug where after killing a debugged process, the debugger could not be launched anymore.
|
||||
* Improved speed regarding STRING and SPECIAL manipulation in the debugger
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
===EiffelNet===
|
||||
* Added in <eiffel>SOCKET</eiffel> <eiffel>read_integer_XX</eiffel>, <eiffel>put_integer_XX</eiffel>, <eiffel>last_integer_xx</eiffel> and <eiffel>read_natural_XX</eiffel>, <eiffel>put_natural_XX</eiffel>, <eiffel>last_natural_XX</eiffel> where XX stands for 8, 16, 32, 64.
|
||||
* Modified <eiffel>put</eiffel> and <eiffel>read</eiffel> in <eiffel>NETWORK_RESOURCE</eiffel>, <eiffel>FTP_PROTOCOL</eiffel>, <eiffel>HTTP_PROTOCOL</eiffel>, <eiffel>FILE_PROTOCOL</eiffel> so that the error checking code is not using <eiffel>socket_ok</eiffel> which might triggers error when there are none.
|
||||
* Improved handling of <eiffel>recipients</eiffel> and <eiffel>header_from</eiffel> in <eiffel>SMTP_PROTOCOL</eiffel> so that you can provide a nice `From' or `To' in the message since they are different from the addresses you have to pass from MAIL FROM and RCPT TO.
|
||||
* Improved handling of <eiffel>recipients</eiffel> and <eiffel>header_from</eiffel> in <eiffel>SMTP_PROTOCOL</eiffel> so that you can provide a nice `From` or `To` in the message since they are different from the addresses you have to pass from MAIL FROM and RCPT TO.
|
||||
* Improved error handling in EiffelNet. Now each time an error occurs you get an exception and the operating system error code is preserved.
|
||||
* Added ability to get the number of bytes read for all the read operation through the <eiffel>bytes_read</eiffel> query. This is useful to detect graceful shutdown of sockets.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* Added new contract editor tool to ease edition of contracts on routines and classes.
|
||||
* Added Eiffel Information System which let you connect external documentation to your Eiffel code and vice versa.
|
||||
* Added ability to avoid comment duplication by using the <code><Precursor></code> in your descendant comment to reuse the parent one which is shown in all our formatter tools..
|
||||
* Added new light batch compiler `ecb'. It provides the same features as `ec' when using the batch mode. Currently projects compiled with `ec' are not compatible with those compiled with `ecb'. The main difference between the two is that `ec' is compiled with exception trace and multithreading support which could slow down the compiler by a factor of 20 to 40% depending on your platform.
|
||||
* Added new light batch compiler `ecb`. It provides the same features as `ec` when using the batch mode. Currently projects compiled with `ec` are not compatible with those compiled with `ecb`. The main difference between the two is that `ec` is compiled with exception trace and multithreading support which could slow down the compiler by a factor of 20 to 40% depending on your platform.
|
||||
* Added experimental unit testing tool.
|
||||
|
||||
===Improvements===
|
||||
@@ -46,18 +46,18 @@
|
||||
==Libraries==
|
||||
|
||||
===EiffelBase===
|
||||
* Changed signature of {<eiffel>SPECIAL</eiffel>}.<eiffel>same_items</eiffel> and {<eiffel>SPECIAL</eiffel>}.<eiffel>all_default</eiffel> to take an extra argument. Our analysis shows that it was only used by <eiffel>ARRAY</eiffel> and that it should be harmless. If you have a compilation error, simply add `0' as first argument of your call.
|
||||
* Changed <eiffel>physical_size</eiffel> in <eiffel>INTERNAL</eiffel> to return the real allocated size of an object along with its header size.
|
||||
* Added <eiffel>deep_physical_size</eiffel> in <eiffel>INTERNAL</eiffel> to compute the size of an object and all its dependencies.
|
||||
* Improved speed of <eiffel>read_stream</eiffel> in <eiffel>FILE</eiffel> so that it used underlying `fread' once rather than calling `getc' for each requested character. Our benchmarks show that you can save up to 2s for 1000 calls.
|
||||
* Added an assigner routine for <eiffel>item</eiffel> in <eiffel>ARRAY2</eiffel>. This might break descendant classes of <eiffel>ARRAY2</eiffel> redefining <eiffel>item</eiffel>.
|
||||
* Changed signature of {`SPECIAL`}.`same_items` and {`SPECIAL`}.`all_default` to take an extra argument. Our analysis shows that it was only used by `ARRAY` and that it should be harmless. If you have a compilation error, simply add `0` as first argument of your call.
|
||||
* Changed `physical_size` in `INTERNAL` to return the real allocated size of an object along with its header size.
|
||||
* Added `deep_physical_size` in `INTERNAL` to compute the size of an object and all its dependencies.
|
||||
* Improved speed of `read_stream` in `FILE` so that it used underlying `fread` once rather than calling `getc` for each requested character. Our benchmarks show that you can save up to 2s for 1000 calls.
|
||||
* Added an assigner routine for `item` in `ARRAY2`. This might break descendant classes of `ARRAY2` redefining `item`.
|
||||
* Updated code toward Void-safety.
|
||||
|
||||
===EiffelNet===
|
||||
* Fixed bug in {<eiffel>SOCKET</eiffel>}.<eiffel>read_stream</eiffel> where if there was a socket error, then it would cause a precondition violation in <eiffel>C_STRING</eiffel>.
|
||||
* Fixed bug in {`SOCKET`}.`read_stream` where if there was a socket error, then it would cause a precondition violation in `C_STRING`.
|
||||
|
||||
===EiffelTime===
|
||||
* Added support for <eiffel>DEBUG_OUTPUT</eiffel> for <eiffel>DATE</eiffel>, <eiffel>TIME</eiffel> and <eiffel>DATE_TIME</eiffel> objects making it easier to debug code based on them.
|
||||
* Added support for `DEBUG_OUTPUT` for `DATE`, `TIME` and `DATE_TIME` objects making it easier to debug code based on them.
|
||||
* Fixed bug where duration in days between two dates overlapping a leap year would yield a result off by +1 or -1.
|
||||
* 10% speed improvement on certain date operations (can be seen on eweasel test#time002).
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
* [[Revisions and Bug Fixes|Click here for EiffelVision2 release notes.]]
|
||||
|
||||
===EiffelVision2===
|
||||
* Fixed a bug in {<eiffel>WEL_REGISTRY</eiffel>}.<eiffel>enumerate_key</eiffel> where the routine would go in an infinite loop if the key name was larger than 64 characters.
|
||||
* Fixed a bug in {`WEL_REGISTRY`}.`enumerate_key` where the routine would go in an infinite loop if the key name was larger than 64 characters.
|
||||
|
||||
[[EiffelStudio release notes|Click here to check out what was new in other versions]]
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ No changes in this release.
|
||||
==Libraries==
|
||||
|
||||
===EiffelBase===
|
||||
* In experimental mode, we have changed the signature of <eiffel>generating_type</eiffel> to return an instance of <eiffel>TYPE</eiffel> rather than an instance of <eiffel>STRING</eiffel>. Existing code should still compile out of the box since we have equipped <eiffel>TYPE</eiffel> with conversions and new features similar to those of <eiffel>STRING</eiffel>. In the few cases where it would still not compile, use `generating_type.out' to ensure that the code will compile fine regardless of the compiler mode chosen (i.e. experimental or non-experimental).
|
||||
* In experimental mode, we have changed the signature of <eiffel>generating_type</eiffel> to return an instance of <eiffel>TYPE</eiffel> rather than an instance of <eiffel>STRING</eiffel>. Existing code should still compile out of the box since we have equipped <eiffel>TYPE</eiffel> with conversions and new features similar to those of <eiffel>STRING</eiffel>. In the few cases where it would still not compile, use `generating_type.out` to ensure that the code will compile fine regardless of the compiler mode chosen (i.e. experimental or non-experimental).
|
||||
* Fixed an issue in <eiffel>copy</eiffel> from <eiffel>HEAP_PRIORITY_QUEUE</eiffel> which would not do anything because it was simply copying itself, not the other queue.
|
||||
* Fixed a bug in <eiffel>remove</eiffel> from <eiffel>HEAP_PRIORITY_QUEUE</eiffel> which caused the internal structure to be referenced beyond its bounds.
|
||||
* Made <eiffel>clear_all</eiffel> in <eiffel>STRING_8</eiffel>, <eiffel>STRING_32</eiffel> and <eiffel>HASH_TABLE</eiffel> obsolete. One has to use <eiffel>wipe_out</eiffel>instead.
|
||||
@@ -80,7 +80,7 @@ No changes in this release.
|
||||
===EiffelNet===
|
||||
* Fixed an issue with {NETWORK_STREAM_SOCKET}.make_server_by_port (0) which would not automatically get a port assigned.
|
||||
* Fixed obsolete warnings in the library.
|
||||
* Prevented a socket to change its blocking mode when connecting with a timeout (it would end up always being blocking even if requested otherwise before the call to `connect'.
|
||||
* Prevented a socket to change its blocking mode when connecting with a timeout (it would end up always being blocking even if requested otherwise before the call to `connect`.
|
||||
* Ensured that a socket is indeed connected when successfully connecting to it while the socket is in non-blocking mode.
|
||||
|
||||
===EiffelVision2===
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
** ARRAYED_LIST does not conform to ARRAY. One has to use {ARRAYED_LIST}.to_array to convert it to an ARRAY.
|
||||
** HASH_TABLE internals have been changed so that order of traversal will be different from what it used to be.
|
||||
** The non-void safe routine {SPECIAL}.make has been removed. Instead one has to use either {SPECIAL}.make_empty (which is not available in compatible mode) or {SPECIAL}.make_filled (which is available in both)
|
||||
** To reflect the change in SPECIAL, TO_SPECIAL was also modified and `make_area' was replaced by `make_empty_area'. Again to have compatible code between both mode use `make_filled_area' instead.
|
||||
** To reflect the change in SPECIAL, TO_SPECIAL was also modified and `make_area` was replaced by `make_empty_area`. Again to have compatible code between both mode use `make_filled_area` instead.
|
||||
|
||||
===EiffelThread===
|
||||
* Made the <e>THREAD</e> class thread-safe which prevents using the same object to launch a new thread. Now there is a precondition <e>is_launchable</e> and a status report <e>is_last_launch_successful</e> to help in determining whether a thread was actually launched.
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
* Fixed some formatting issues when using the new loop form using <e>across</e>.
|
||||
* Fixed the saving of the diagrams to PNG.
|
||||
* Fixed bug#16831: Picking and dropping class from Features window into Editor tab clears Features window.
|
||||
* Fixed issue with `libraries.cfg' files used to know where to look for libraries (the trouble was only on Windows)
|
||||
* Fixed issue with `libraries.cfg` files used to know where to look for libraries (the trouble was only on Windows)
|
||||
|
||||
==Compiler==
|
||||
* Click [[Major changes between ISE Eiffel 6.6 and ISE Eiffel 6.7|here]] for the compiler release notes.
|
||||
@@ -32,7 +32,7 @@
|
||||
===Debugger engine===
|
||||
*Now handle correctly manifest string and string_32 in debugger (expression evaluation)
|
||||
*Improved stepping in MT debugging session. Now the debugger stays in the same thread (instead of jumping from a thread to another without any coherence).
|
||||
*Fixed void-safety issue, when trying to evaluate `Result' in watch tool (previously, it was reporting VEVI ...)
|
||||
*Fixed void-safety issue, when trying to evaluate `Result` in watch tool (previously, it was reporting VEVI ...)
|
||||
|
||||
==EiffelBuild==
|
||||
* Click [[EiffelBuild Version History|here]] for the EiffelBuild release notes.
|
||||
@@ -42,14 +42,14 @@
|
||||
===EiffelBase===
|
||||
* <e>ARRAY</e>:
|
||||
** Made <e>{ARRAY}.make</e> and <e>{ARRAY}.conservative_resize</e> obsolete as they are not void safe. Alternative recommendation is to use <e>{ARRAY}.make_empty</e>, <e>{ARRAY}.make_filled</e> or <e>{ARRAY}.conservative_resize_with_default</e>.
|
||||
** Added <e>{ARRAY}.rebase</e> that would help creating an empty array with a given `lower'.
|
||||
** <e>BOUNDED_QUEUE</e> and <e>BOUNDED_STACK</e> have been rewritten to use the same implementation of <e>ARRAYED_QUEUE</e> and <e>ARRAYED_STACK</e>, the only difference is that `extendible' is defined to be False. The `correct_mismatch' feature has been updated to ensure retrieval.
|
||||
** Added <e>{ARRAY}.rebase</e> that would help creating an empty array with a given `lower`.
|
||||
** <e>BOUNDED_QUEUE</e> and <e>BOUNDED_STACK</e> have been rewritten to use the same implementation of <e>ARRAYED_QUEUE</e> and <e>ARRAYED_STACK</e>, the only difference is that `extendible` is defined to be False. The `correct_mismatch` feature has been updated to ensure retrieval.
|
||||
* <e>FORMAT_DOUBLE</e>:
|
||||
** Fixed eweasel test#lib036 in <e>FORMAT_DOUBLE</e> where `pad_fraction' did not process properly when one decided to not show the trailing zeros and there were only zeros after the decimal point.
|
||||
** Fixed the post-condition of <e>{FORMAT_DOUBLE}.pad_fraction</e> to reflect that the count is set to `decimals' but only when one shows the trailing zeros.
|
||||
** Fixed eweasel test#lib036 in <e>FORMAT_DOUBLE</e> where `pad_fraction` did not process properly when one decided to not show the trailing zeros and there were only zeros after the decimal point.
|
||||
** Fixed the post-condition of <e>{FORMAT_DOUBLE}.pad_fraction</e> to reflect that the count is set to `decimals` but only when one shows the trailing zeros.
|
||||
* Added <e>WEAK_REFERENCE</e> to allow weak references in an Eiffel system. This supersedes the <e>IDENTIFIED</e> class which made it necessary to change one's code to allow weak referencing. Currently the class is only implemented for classic Eiffel; it is not available when compiling for .NET.
|
||||
* Added new Eiffel tracing facility classes <e>TRACING_HANDLER</e> and <e>TRACING_SETTING</e> which let you capture some information about the current execution via callbacks.
|
||||
* Fixed eweasel test#list010 with twinning and deep_twinning of a <e>FIXED_LIST</e> that would reset `capacity' to `count'.
|
||||
* Fixed eweasel test#list010 with twinning and deep_twinning of a <e>FIXED_LIST</e> that would reset `capacity` to `count`.
|
||||
* Added <e>{TYPE}.is_expanded</e> to find out if a type is expanded or not.
|
||||
|
||||
===EiffelVision2===
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
* Prevented creation of instances of <e>PROCEDURE</e>, <e>FUNCTION</e>, and <e>PREDICATE</e> using a creation instruction. An agent has to be created via the agent expression provided at the language level.
|
||||
* Fixed a potential reporting of version mismatch when there is a mismatch but actually no version changes.
|
||||
* Added <e>TABLE_ITERATOR</e> and <e>TABLE_ITERATION_CURSOR</e> to provide a common way for <e>TABLE</e> like datastructure to iterate over using the new across loop.
|
||||
* Improved speed of `replace_substring_all' when replacing a smaller string by a larger one.
|
||||
* Improved speed of `replace_substring_all` when replacing a smaller string by a larger one.
|
||||
* Added support for string searches of a <e>STRING_32</e> string (previously it was limited to <e>STRING_8</e>).
|
||||
* Fixed {IMMUTABLE_STRING_XX}.shared_substring which would not be properly processed by many string operations (e.g. item, item_code, code, ...).
|
||||
* Changed the behavior of {STRING_XX}.twin to create a new string where the capacity is set to the count of the twinned strings and not to its capacity. In scenarios where a large buffer is used but a frequent twin is used it has a big impact on speed and memory usage.
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
* Better copy/paste of code to avoid useless reformatting after copying and pasting a block of text. The smart behavior is available via Ctrl+V or Shift+Ins. If the new behavior is not adequate, Ctrl+Shift+V will paste as is.
|
||||
* Better formatting of Eiffel source code when using the pretty printer.
|
||||
* Better performance of SCOOP runtime for certain types of concurrent calls.
|
||||
* Printing in postscript mode now allowed on Unix (previously, printing always defaulted to RTF); added `use_postscript' preference.
|
||||
* Printing in postscript mode now allowed on Unix (previously, printing always defaulted to RTF); added `use_postscript` preference.
|
||||
* Take into account mice with high resolution wheels.
|
||||
* Avoid flashing when completion window is updated at each keystroke.
|
||||
* Avoid resizing the grid all the time in Info tool when grid items are recreated for sorting, or other operations.
|
||||
@@ -71,8 +71,8 @@
|
||||
* Added ability to create a local string using a separate string.
|
||||
* Moved most of the queries of strings descendants (e.g. <code>is_real</code>, <code>is_integer</code>, ...) to class <code>READABLE_STRING_GENERAL</code> to make it easier to handle all the various kinds of strings.
|
||||
* Added <code>{HASH_TABLE}.disjoint</code> to find out if 2 tables have some common elements or not based on the key comparison criteria.
|
||||
* Made explicit that the `<code>area</code>' is shared between an <code>ARRAY</code> and an <code>ARRAYED_LIST</code> created via conversion.
|
||||
* Fixed improper implementation of `<code>copy</code>' for <code>UNIX_FILE_INFO</code> and <code>BOOL_STRING</code> which caused for the former a sharing of some <code>FILE</code> specific information.
|
||||
* Made explicit that the `<code>area</code>` is shared between an <code>ARRAY</code> and an <code>ARRAYED_LIST</code> created via conversion.
|
||||
* Fixed improper implementation of `<code>copy</code>` for <code>UNIX_FILE_INFO</code> and <code>BOOL_STRING</code> which caused for the former a sharing of some <code>FILE</code> specific information.
|
||||
* Fixed <code>{STRING_32}.left_adjust</code> that did not work properly when the string contained only white spaces.
|
||||
* Fixed an issue with <code>{FILE}.exists</code> on Windows 32-bit when files are larger than 2GB. It only occurs with the latest version of the Microsoft C++ compiler (VS2010 or later).
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
* Made <e>INTERNAL</e> obsolete. It is now replaced by two sets of classes: a static introspection class and a dynamic one. The class that lets you examine the static content is <e>REFLECTOR</e>; most references to <e>INTERNAL</e> can easily be replaced by <e>REFLECTOR</e>. To inspect objects, you have a new set of classes starting with <e>REFLECTED_OBJECT</e>. This lets you inspect objects with copy semantics without actually causing a copy each time you access it, unlike what was happening before with <e>INTERNAL</e>.
|
||||
* Fixed a reallocation bug in <e>SED_MEMORY_READER_WRITER</e> where if you retrieve a large chunk, we would not allocate enough memory.
|
||||
* Added ability to store/retrieve expanded objects and objects with copy semantics with SED.
|
||||
* Storables made using SED from version 6.6 or earlier of EiffelStudio not using the `is_for_fast_retrieval' setting won't be recoverable.
|
||||
* Storables made using SED from version 6.6 or earlier of EiffelStudio not using the `is_for_fast_retrieval` setting won't be recoverable.
|
||||
|
||||
===EiffelStore===
|
||||
* Do not remove trailing spaces for string content.
|
||||
|
||||
@@ -51,7 +51,7 @@ N/A
|
||||
* Added functions <e>{TUPLE}.new_tuple_from_special</e> and <e>{TUPLE}.new_tuple_from_tuple</e> to create a tuple of a specified type filled with given values (rev#92917).
|
||||
* Added features <e>{ROUTINE}.flexible_call</e> and <e>{FUNCTION}.flexible_item</e> that accept argument tuples whose type should not exactly match the type of the routine as soon as the types of arguments match (rev#92918).
|
||||
* Marked <e>{ROUTINE}.empty_operands</e> as obsolete to be ready for removal in the future as non-void-safe (rev#92918).
|
||||
* In <e>HASH_TABLE</e>, in the event of a mismatch, it is possible that the value of `control' was invalid (see bug#18670) so we reset it to 0.
|
||||
* In <e>HASH_TABLE</e>, in the event of a mismatch, it is possible that the value of `control` was invalid (see bug#18670) so we reset it to 0.
|
||||
* Introspection changes in <e>OBJECT_GRAPH_TRAVERSABLE</e>:
|
||||
**Rewrote <e>traverse</e> to fix an issue with objects with expanded fields where we would not recurse into them. Added support for <e>SPECIAL</e> of expanded as well. We still have restrictions for <e>TUPLE</e> with expanded for which a copy be done.
|
||||
** Added new callbacks <e>on_processing_object_action</e> and <e>on_processing_reference_action</e> each time a new object is traversed, that help building a graph of objects.
|
||||
@@ -70,7 +70,7 @@ N/A
|
||||
* Simplified compilation of unix side of the library to load the webkit shared library at runtime without requiring it at compile time.
|
||||
|
||||
===XML===
|
||||
* Fixed XML cases where we have <foo att/> or <foo att> ... take into account the attribute `att' but report missing value for attribute `att'.
|
||||
* Fixed XML cases where we have <foo att/> or <foo att> ... take into account the attribute `att` but report missing value for attribute `att`.
|
||||
* Add report_unsupported_bom_value routine to report unsupported BOM value error.
|
||||
|
||||
[[EiffelStudio release notes|Click here to check out what was new in other versions]]
|
||||
|
||||
Reference in New Issue
Block a user