mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-08 07:42:33 +01:00
Author:halw
Date:2010-08-13T16:15:37.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@653 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
[[Property:title|Changes to Eiffel libraries in support of void-safety]]
|
||||
[[Property:link_title|Void-safe changes to Eiffel libraries]]
|
||||
[[Property:title|Void-safe changes to Eiffel libraries]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|dc993c0e-fbec-dc5a-82c8-fbfd9fa9bc3a]]
|
||||
{{Beta}}
|
||||
@@ -7,18 +6,20 @@
|
||||
|
||||
==Overview==
|
||||
|
||||
During the adoption of void-safety, the software libraries provided by Eiffel Software have been converted to be void-safe. To a large extent the changes made to these libraries will have little or no adverse effect on your own existing software as you go through the process of void-safe conversion. However, there are a few changes to the library that we consider "breaking" changes, that is, important changes that might cause problems in existing systems.
|
||||
During the adoption of void-safety, the software libraries provided by Eiffel Software have been converted to be void-safe. The bulk of the changes made to these libraries will have little or no adverse effect on your existing software as you go through the process of void-safe conversion. However, there are a few changes to the library that we consider "breaking" changes, that is, important changes that might cause problems in existing systems that use certain library classes.
|
||||
|
||||
|
||||
{{note|Many of these changes were in effect in the ''experimental'' mode of versions 6.4 and 6.5. With the release of version 6.6, the ''experimental'' mode of previous versions became the ''default'' mode and, consequently may have caused these changes to become more apparent to some users. A ''compatibility'' mode is available to ease transition. The ''compatibility'' mode is accessible using the <code>-compat</code> command line option or through the EiffelStudio choices provided through the Microsoft Windows ''Start'' button. }}
|
||||
|
||||
{{note|Many of these changes were in effect in the "experimental" mode of versions 6.4 and 6.5. With the release of version 6.6, the "experimental" mode of previous versions became the "default" mode and, consequently, may have caused these changes to become more apparent to some users.}}
|
||||
|
||||
|
||||
==Important changes to library classes==
|
||||
|
||||
|
||||
===Class <code>ARRAY</code>===
|
||||
|
||||
====New preconditions====
|
||||
|
||||
Some additional preconditions are in force in ARRAY in void-safe mode.
|
||||
Some additional preconditions are in force in <code>ARRAY</code> in void-safe mode.
|
||||
|
||||
In void-unsafe mode, the behavior is equivalent to that of previous versions.
|
||||
|
||||
@@ -36,6 +37,7 @@ Using the current version will create an array with a range from 1 to the number
|
||||
|
||||
This implementation (private) feature has been removed.
|
||||
|
||||
|
||||
===Class <code>ARRAYED_LIST</code>===
|
||||
|
||||
====Relationship to ARRAY====
|
||||
@@ -46,11 +48,34 @@ Previously <code>ARRAYED_LIST</code> conformed to <code>ARRAY</code>. This is no
|
||||
|
||||
Previously these two queries were attributes. They are now functions.
|
||||
|
||||
|
||||
===Class <code>HASH_TABLE</code>===
|
||||
|
||||
The internal implementation has changed in ways that cause the order of traversal will differ from previous versions.
|
||||
The internal implementation has changed in ways that cause the order of traversal to differ from previous versions.
|
||||
|
||||
|
||||
===Classes <code>SPECIAL</code> and <code>TO_SPECIAL</code>===
|
||||
|
||||
====Feature <code>{SPECIAL}.make</code>====
|
||||
|
||||
This void-unsafe feature has been removed.
|
||||
|
||||
In its place, the creation procedures <code>{SPECIAL}.make_filled</code> and <code>{SPECIAL}.make_empty</code> can be used.
|
||||
|
||||
<code>{SPECIAL}.make_filled</code> is available in both ''default'' and ''compatible'' modes. Use this creation procedure if you want code that is compatible with both modes.
|
||||
|
||||
<code>{SPECIAL}.make_empty</code> is available in ''default'' mode only.
|
||||
|
||||
====Feature <code>{TO_SPECIAL}.make_area</code>====
|
||||
|
||||
In order to reflect the above change to class <code>SPECIAL</code>, the <code>make_area</code> feature of <code>TO_SPECIAL</code> has been removed in favor of <code>{TO_SPECIAL}.make_filled_area</code> and <code>{TO_SPECIAL}.make_empty_area</code>.
|
||||
|
||||
The availability of <code>{TO_SPECIAL}.make_filled_area</code> and <code>{TO_SPECIAL}.make_empty_area</code> corresponds to that noted above for the creation features of <code>SPECIAL</code>:
|
||||
|
||||
<code>{TO_SPECIAL}.make_filled_area</code> is available in both ''default'' and ''compatible'' modes. Use <code>make_filled_area</code> for code that needs to compile in both modes.
|
||||
|
||||
<code>{TO_SPECIAL}.make_empty_area</code> is available only in ''default'' mode.
|
||||
|
||||
===Class <code>SPECIAL</code>===
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
[[Property:title|Converting existing software to void-safety]]
|
||||
[[Property:weight|6]]
|
||||
[[Property:uuid|eb901272-d405-2277-005d-e37275b9baa4]]
|
||||
|
||||
If you have been using Eiffel for a while, you may be maintaining systems which were developed before Eiffel became void-safe. If that's the case, then you will probably want to make those systems void-safe.
|
||||
|
||||
In this section we will use the experience of converting a set of simple (but not too simple) legacy Eiffel classes to show the types of issues that you may encounter, and how to deal with them.
|
||||
@@ -38,6 +37,10 @@ Also, as you sift through your existing software during the void-safe conversion
|
||||
|
||||
In the discussions that follow you will see these redesign opportunities arise, and the decisions that were made for these cases.
|
||||
|
||||
==Be aware of changes to Eiffel libraries==
|
||||
|
||||
The libraries distributed with EiffelStudio have been converted to support void-safety. Mostly the changes made will cause no problems for existing software. However a few changes have been identified as "breaking" changes. You may or may not encounter the effects of these changes, but you should be aware of how they could effect your software and what options you have for adapting to them. Breaking changes are described in the [[EiffelStudio release notes]] and in the page dedicated to [[Void-safe changes to Eiffel libraries]].
|
||||
|
||||
=Conversion process=
|
||||
|
||||
==Enable full class checking==
|
||||
@@ -326,7 +329,7 @@ To support the "empty array" design, <code>segment_start</code>'s postcondition
|
||||
|
||||
|
||||
|
||||
{{SeeAlso|[[Converting EiffelVision 2 Systems to Void Safety]]}}
|
||||
{{SeeAlso|<br/>[[Converting EiffelVision 2 Systems to Void Safety]]<br/>[[Void-safe changes to Eiffel libraries]]}}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user