From 0671888cc90c827866bc8d06da8d4873fbc7f174 Mon Sep 17 00:00:00 2001 From: vwheeler Date: Fri, 21 Mar 2014 20:52:25 +0000 Subject: [PATCH] Author:manus Date:2014-03-03T19:11:30.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@1274 abb3cda0-5349-4a8f-a601-0c33ac3a8c38 --- ...etween-ise-eiffel-63-and-ise-eiffel-64.wiki | 2 +- ...ween-ise-eiffel-73-and-ise-eiffel-1311.wiki | 2 +- ...367-and-eiffel-software-implementation.wiki | 2 +- .../general-target-options/index.wiki | 2 +- .../release-notes-eiffelstudio-62.wiki | 2 +- .../index.wiki | 6 +++--- .../creating-new-void-safe-project.wiki | 18 ++++++++++-------- ...fel-removes-null-pointer-dereferencing.wiki | 7 +++---- .../microsoft-windows/com/index.wiki | 13 +++++++++++-- .../scoop-practical-matters.wiki | 2 +- ...ing-eiffelvision-2-systems-void-safety.wiki | 3 +-- 11 files changed, 34 insertions(+), 25 deletions(-) diff --git a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-63-and-ise-eiffel-64.wiki b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-63-and-ise-eiffel-64.wiki index 370eb3ed..c96a1a90 100644 --- a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-63-and-ise-eiffel-64.wiki +++ b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/eiffelstudio-6-compiler-history/major-changes-between-ise-eiffel-63-and-ise-eiffel-64.wiki @@ -41,7 +41,7 @@ a: detachable MY_TYPE note option: stable attribute end ===Compiler issues=== * 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 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. diff --git a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-73-and-ise-eiffel-1311.wiki b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-73-and-ise-eiffel-1311.wiki index e8f7c24e..581555d7 100644 --- a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-73-and-ise-eiffel-1311.wiki +++ b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/compiler-history/major-changes-between-ise-eiffel-73-and-ise-eiffel-1311.wiki @@ -22,7 +22,7 @@ ==Bug fixes== ===Language issues=== -* Fixed bug#18643 (test#attach107, test#attach102) - Fixed a bug that may lead to unreported VEVI errors for attributes not properly set by a creation procedure when compiled in complete void safety mode (rev#92835). +* Fixed bug#18643 (test#attach107, test#attach102) - Fixed a bug that may lead to unreported VEVI errors for attributes not properly set by a creation procedure when compiled in complete void-safety mode (rev#92835). * Fixed bug#18266 (test#svalid031) - Fixed a bug that caused reporting a non-existent error for a renamed feature with a bracket alias. * Fixed bug#18282 (test#multicon062) - Fixed a bug that caused incorrect error report for features with a bracket alias specified in multiple formal generic constraints. diff --git a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/differences-between-standard-ecma-367-and-eiffel-software-implementation.wiki b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/differences-between-standard-ecma-367-and-eiffel-software-implementation.wiki index f5029239..16dbf892 100644 --- a/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/differences-between-standard-ecma-367-and-eiffel-software-implementation.wiki +++ b/documentation/current/eiffelstudio/eiffelstudio-reference/compiler/differences-between-standard-ecma-367-and-eiffel-software-implementation.wiki @@ -197,7 +197,7 @@ | Yes |} -==Void safety== +==Void-safety== {| |- |
'''Feature'''
diff --git a/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/index.wiki b/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/index.wiki index 6f3f200f..b3e6eae6 100644 --- a/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/index.wiki +++ b/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/index.wiki @@ -50,7 +50,7 @@ Further options are * [[Tracing|Trace]]: display on the console all the features that are called during the system execution (C generation mode only). * .NET Namespace: specify the namespace for this target (.NET code generation mode only) * Line generation: generate some extra information that will enable a .NET debugger or a C debugger to step through the Eiffel code rather than MSIL code or C code. -* Full Class Checking, Void safety, Are types attached by default?: These settings are generally associated with increasing the safety of compiled code, particularly [[Creating a new void-safe project#Project settings for void-safe projects|void-safety]]. +* Full Class Checking, Void-safety, Are types attached by default?: These settings are generally associated with increasing the safety of compiled code, particularly [[Creating a new void-safe project#Project settings for void-safe projects|void-safety]]. * Cat call detection: Attempts to identify at compile time the possibility of the system making a [[ET: Inheritance#Catcalls|catcall]]. * Syntax: Allows you to select the [[Setting the syntax variant|syntax variant]] used by the compiler when compiling this target. * Concurrency: Controls the level of concurrency support for this target. ''No concurrency'' means mono-threaded; ''EiffelThread'' means concurrent threads using the [[EiffelThread Tutorial|EiffelThread]] library. ''SCOOP'' means concurrency based on the [[Concurrent Eiffel with SCOOP|SCOOP]] rules. diff --git a/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-62.wiki b/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-62.wiki index ff4e577e..3dbc75f6 100644 --- a/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-62.wiki +++ b/documentation/current/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/eiffelstudio-6-release-notes/release-notes-eiffelstudio-62.wiki @@ -51,7 +51,7 @@ * 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. +* Updated code toward Void-safety. ===EiffelNet=== * Fixed bug in {SOCKET}.read_stream where if there was a socket error, then it would cause a precondition violation in C_STRING. diff --git a/documentation/current/method/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki b/documentation/current/method/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki index 912c2001..24b0ca0a 100644 --- a/documentation/current/method/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki +++ b/documentation/current/method/void-safe-programming-eiffel/converting-existing-software-void-safety/index.wiki @@ -77,7 +77,7 @@ So, fix any problems that arise out of turning on full class checking. The second step in conversion of existing software is to change the values of the other void-safe related project settings and use the void-safe configurations for any delivered libraries and precompilations. In the project settings for the target in which you are working: -# Set '''Void safe''' to either '''Complete void safety''' or '''On demand void safety'''. +# Set '''Void-safe''' to either '''Complete''', '''Initialization''' or '''Conformance'''. # Set '''Are types attached by default?''' to '''True'''. {{note|Remember that during a transitional period starting with V6.4, there will be multiple versions of the configuration files for Eiffel libraries and precompiles. For example, base.ecf (void-unsafe) and base-safe.ecf (void-safe). It is expected that in the future there will only be one configuration file (e.g., base.ecf) that will work with both void-safe and void-unsafe client software. }} @@ -97,7 +97,7 @@ If you've replaced a precompiled library that you have not already built, Eiffel [[Image:VoidSafePrecompileOffer]] -Now you should see error messages representing any situation in your project in which the compiler determines that it cannot guarantee void safety. +Now you should see error messages representing any situation in your project in which the compiler determines that it cannot guarantee void-safety. This is what our legacy system produced: @@ -329,7 +329,7 @@ To support the "empty array" design, segment_start's postcondition -{{SeeAlso|
[[Converting EiffelVision 2 Systems to Void Safety]]
[[Void-safe changes to Eiffel libraries]]}} +{{SeeAlso|
[[Converting EiffelVision 2 Systems to Void-Safety]]
[[Void-safe changes to Eiffel libraries]]}} diff --git a/documentation/current/method/void-safe-programming-eiffel/creating-new-void-safe-project.wiki b/documentation/current/method/void-safe-programming-eiffel/creating-new-void-safe-project.wiki index 01032203..4857f79a 100644 --- a/documentation/current/method/void-safe-programming-eiffel/creating-new-void-safe-project.wiki +++ b/documentation/current/method/void-safe-programming-eiffel/creating-new-void-safe-project.wiki @@ -12,11 +12,13 @@ There are three project settings that are related to void-safety. These settings The '''Void-safe''' setting determines whether and how the Eiffel compiler checks your project against the void-safe related validity rules. This is the essential void-safe project setting. It can assume one of three values: -# '''No void safety''': No checking against any of the void-safety validity rules. -# '''On demand void safety''': Validity rules are selectively checked. Attachment status (VJAR/VBAR and related) is taken into account when performing conformance checks, but initialization rule (VEVI) and the target rule (VUTA) are checked only for attached entities and attached call targets -- i.e., detachable cases are not checked. -# '''Complete void safety''': Complete checking against all void-safety validity rules. +# '''No''': No checking against any of the void-safety validity rules. Attachment marks '''attached''' and '''detachable''' are simply ignored. +# '''Conformance''': The attachment marks are not ignored for type conformance checks (with respect to VJAR/VBAR and related validity rules). +# '''Initialization''': Validity rules are selectively checked. The initialization rule (VEVI) and the target rule (VUTA) are checked only for attached entities and attached call targets -- i.e., detachable cases are not checked. +# '''Transitional''': It is an obsolete level which is for users who have already migrated their code to void-safety using an old version of the compiler which did not implement all the void-safety validity rules (especially with agent initialization). +# '''Complete''': Complete checking against all void-safety validity rules. -So, for a new void-safe project, you would want to set this option to either '''Complete void safety''' or '''On demand void safety'''. +So, for a new void-safe project, you would want to set this option first to '''Conformance''', then '''Initialization'''' and finally to '''Complete'''. This will let you migrate your code progressively without much changes at each steps. ===The ''"Are types attached by default?"'' setting=== @@ -37,20 +39,20 @@ In a new project, ideally all of your declarations would be of attached types. B So, for a new void-safe project, it is recommended that a value of '''True''' is used. +{{Warning|As of EiffelStudio 14.05, this setting will always be True by default and future releases of EiffelStudio will not let you change this.}} + {{SeeAlso| [[Void-safety: Background, definition, and tools#Types as "attached" or "detachable"|Types as "attached" or "detachable"]].}} ===The ''"Full class checking"'' setting=== -This setting instructs the compiler to recheck inherited features in descendant classes. - -'''Full class checking''' should always be set to '''True''' when compiling void-safe code. +This setting instructs the compiler to recheck inherited features in descendant classes. This setting is True and cannot be changed for projects with some void-safety level enabled. ==Void-safe libraries== -As of EiffelStudio version 6.4, the majority of the libraries distributed with EiffelStudio are void-safe. +As of EiffelStudio version 13.11, all libraries distributed with EiffelStudio are void-safe except the EiffelCOM library. {{note|During a period of transition, there will be different Eiffel configuration files (.ecf's) for void-unsafe and void-safe projects (for example, base.ecf and base-safe.ecf). If you have set the '''Void-safe''' setting to check for void-safety, then when you add a library to your project in EiffelStudio, you will see only the void-safe configurations by default. After the transition period, it is expected that there will be only one version of each of the configuration files for each library. The single configuration files will serve both void-unsafe and void-safe projects. }} diff --git a/documentation/current/papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki b/documentation/current/papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki index f34727f0..effc78ac 100644 --- a/documentation/current/papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki +++ b/documentation/current/papers/void-safety-how-eiffel-removes-null-pointer-dereferencing.wiki @@ -1,8 +1,7 @@ -[[Property:title|Void safety: how Eiffel removes null-pointer dereferencing]] -[[Property:link_title|Void-safety: how Eiffel removes null-pointer dereferencing]] +[[Property:title|Void-safety: how Eiffel removes null-pointer dereferencing]] [[Property:weight|0]] [[Property:uuid|d9380464-4312-b76e-9bfd-e57df0f59b4a]] -This white paper (see [[file:void-safe-eiffel.pdf|"Attachment" link ]] below) presents the Eiffel void safety mechanism, fully implemented in EiffelStudio 6.4. +This white paper (see [[file:void-safe-eiffel.pdf|"Attachment" link ]] below) presents the Eiffel void-safety mechanism, fully implemented in EiffelStudio 6.4. In almost every program running today there is a ticking time bomb: the risk of a "void call". A void call is possible in programs written in almost any programming language; its effect is usually to crash the program. Many unexplained program failures and other abnormal behaviors result from void calls. @@ -26,5 +25,5 @@ The Eiffel solution relies on a combination of language mechanisms:
  • The "Object Test" instruction lets programmers treat void values in a special way. -The White Paper (see the link below) describes the theoretical and practical challenges of ensuring void safety and presents the Eiffel mechanism. +The White Paper (see the link below) describes the theoretical and practical challenges of ensuring void-safety and presents the Eiffel mechanism.- diff --git a/documentation/current/platform-specifics/microsoft-windows/com/index.wiki b/documentation/current/platform-specifics/microsoft-windows/com/index.wiki index 5b58027c..cf78f3d4 100644 --- a/documentation/current/platform-specifics/microsoft-windows/com/index.wiki +++ b/documentation/current/platform-specifics/microsoft-windows/com/index.wiki @@ -1,7 +1,16 @@ [[Property:title|COM]] [[Property:weight|0]] [[Property:uuid|993f5778-97c1-e113-31d7-61ae81c559fb]] -==Microsoft COM== +Microsoft COM is a platform-independent, distributed, system for creating binary software components that can interact. COM is the foundation technology for Microsoft's OLE (compound documents) and ActiveX (Internet-enabled components) technologies. + +{{definition|Automation|Automation enables software packages to expose their unique features to scripting tools and other applications. Automation uses the Component Object Model (COM), but may be implemented independently from other OLE features, such as in-place activation.}} -Eiffel support for Microsoft COM. +:See also [http://msdn.microsoft.com/en-us/library/windows/desktop/ms221375%28v=vs.85%29.aspx Automation]. + + +There is a host of technologies and capabilities that are available to your Eiffel applications on the Microsoft Windows platform through COM interfaces. For instance, a number of Microsoft products (e.g. Microsoft Word, Excel, Visio, Outlook, etc.) can be enhanced or even controlled by other software through a COM interface. It is not complicated to, for example, have your Eiffel application open Excel, open a worksheet, evaluate its contents, and make extensive changes, or in-depth queries into its contents, either on the screen or invisibly. At this writing, all Microsoft Office products offer extensive COM interfaces for such purposes. + +In addition, Eiffel supports the capability of making Eiffel applications into COM-compliant COM objects, thus exposing callable COM interfaces to other software for similar purposes. + +The EiffelCOM Wizard, EiffelCOM runtime, and EiffelCOM library are there to make this job easier. diff --git a/documentation/current/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-practical-matters.wiki b/documentation/current/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-practical-matters.wiki index cedbc15e..cde22c82 100644 --- a/documentation/current/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-practical-matters.wiki +++ b/documentation/current/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-practical-matters.wiki @@ -44,7 +44,7 @@ Then, you should select ''SCOOP'' as a value for the ''Concurrency'' setting for ===Clean compile=== -Changing the ''Concurrency'' setting, the ''Void safety'' setting, and precompiled libraries each would cause you to have to do a [[Clean compile|clean compile]] of your system in order to become effective. So, next you should do a clean compile. At this point, your project should be void-safe and SCOOP enabled. +Changing the ''Concurrency'' setting, the ''Void-safety'' setting, and precompiled libraries each would cause you to have to do a [[Clean compile|clean compile]] of your system in order to become effective. So, next you should do a clean compile. At this point, your project should be void-safe and SCOOP enabled. diff --git a/documentation/current/solutions/gui-building/eiffelvision-2/converting-eiffelvision-2-systems-void-safety.wiki b/documentation/current/solutions/gui-building/eiffelvision-2/converting-eiffelvision-2-systems-void-safety.wiki index 92b3d6ad..da3f7852 100644 --- a/documentation/current/solutions/gui-building/eiffelvision-2/converting-eiffelvision-2-systems-void-safety.wiki +++ b/documentation/current/solutions/gui-building/eiffelvision-2/converting-eiffelvision-2-systems-void-safety.wiki @@ -1,5 +1,4 @@ -[[Property:title|Converting EiffelVision 2 Systems to Void Safety]] -[[Property:link_title|Converting EiffelVision 2 Systems to Void-Safety]] +[[Property:title|Converting EiffelVision 2 Systems to Void-Safety]] [[Property:weight|1]] [[Property:uuid|96e01318-700b-da6e-42d1-14fee219daf5]] ==Introduction==