From 3114005a49f4454bb89e8b0ae7f7ef80ce2b79e1 Mon Sep 17 00:00:00 2001 From: eiffel-org Date: Mon, 10 Sep 2018 10:32:05 +0000 Subject: [PATCH] Added a first version of the page. Updated wikipage Language and Capabilities. (Signed-off-by:alexk). git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@2069 abb3cda0-5349-4a8f-a601-0c33ac3a8c38 --- .../Language-and-Capabilities.wiki | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 documentation/18.07/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/Language-and-Capabilities.wiki diff --git a/documentation/18.07/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/Language-and-Capabilities.wiki b/documentation/18.07/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/Language-and-Capabilities.wiki new file mode 100644 index 00000000..7ab8a3ab --- /dev/null +++ b/documentation/18.07/eiffelstudio/eiffelstudio-reference/eiffelstudio-project-settings-window/general-target-options/Language-and-Capabilities.wiki @@ -0,0 +1,16 @@ +[[Property:modification_date|Mon, 10 Sep 2018 10:32:05 GMT]] +[[Property:publication_date|Mon, 10 Sep 2018 10:32:05 GMT]] +[[Property:uuid|81E6A18A-C7D8-4F80-8D08-8B2C0B6350C8]] +[[Property:weight|0]] +[[Property:title|Language and Capabilities]] +The sections *Language* and *Capability* list closely-related options that work together. The values in the section *Language* specify what rules or semantics the compiler should use when compiling and running the code. If not specified, the value of the corresponding option from the section *Capability* is used. A selected value in the section *Language* should be compatible with the value in the section *Capability*. In other words, the values listed in *Capability* tell what source code is capable of, whereas the values in *Language* tell what is used when compiling for a specific target. + +The values in the section *Language* are used only when the corresponding target is compiled as a root one. Otherwise, they are ignored. The values in the section *Capability* are used to verify that current project settings allow for using a particular library (or classes of the project itself). For example, the standard library _Base_ can be used in a non-void-safe project, because project settings are compatible with capabilities of the library. On the other hand, the library _Thread_ cannot be used in a SCOOP project, because the library is not SCOOP-capable. + +Capabilities are supported for the following settings, listed together with compatibility order, where _X < Y_ means _X_ is compatible with _Y_: + +# CAT-call detection: None < Transitional < Complete +# Concurrency: Thread < None < SCOOP +# Void safety: None < Conformance < Initialization < Transitional < Complete + +In addition to the restriction on the compilation setting specified in the section *Language*, a project or a library with a higher level of capabilities cannot rely on a library with a lower level. \ No newline at end of file