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
This commit is contained in:
eiffel-org
2018-09-10 10:32:05 +00:00
parent 309c2c6cd8
commit 3114005a49

View File

@@ -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.