Information technology — Common Language Infrastructure (CLI) Partitions I to VI

ISO/IEC 23271:2006 defines the Common Language Infrastructure (CLI) in which applications written in multiple high-level languages can be executed in different system environments without the need to rewrite those applications to take into consideration the unique characteristics of those environments. It consists of the following parts: Partition I: Concepts and Architecture -- Describes the overall architecture of the CLI, and provides the normative description of the Common Type System (CTS), the Virtual Execution System (VES), and the Common Language Specification (CLS). It also provides an informative description of the metadata. Partition II: Metadata Definition and Semantics -- Provides the normative description of the metadata, its physical layout (as a file format), its logical contents (as a set of tables and their relationships), and its semantics (as seen from a hypothetical assembler, ILAsm). Partition III: CIL Instruction Set -- Describes the Common Intermediate Language (CIL) instruction set. Partition IV: Profiles and Libraries -- Provides an overview of the CLI Libraries, and a specification of their factoring into Profiles and Libraries. A companion file, CLILibrary.xml, considered to be part of this Partition, but distributed in XML format, provides details of each class, value type, and interface in the CLI Libraries. Partition V: Debug Interchange Format. Partition VI: Annexes -- Contains some sample programs written in CIL Assembly Language (ILAsm), information about a particular implementation of an assembler, a machine-readable description of the CIL instruction set which can be used to derive parts of the grammar used by this assembler, as well as other tools that manipulate CIL, a set of guidelines used in the design of the libraries of Partition IV, and portability considerations.

Technologies de l'information — Infrastructure commune de langage (ICL) Partitions I à VI

General Information

Status
Withdrawn
Publication Date
26-Sep-2006
Withdrawal Date
26-Sep-2006
Current Stage
9599 - Withdrawal of International Standard
Completion Date
13-Feb-2012
Ref Project

Relations

Buy Standard

Standard
ISO/IEC 23271:2006 - Information technology -- Common Language Infrastructure (CLI) Partitions I to VI
English language
524 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

INTERNATIONAL ISO/IEC
STANDARD 23271
Second edition
2006-10-01


Information technology — Common
Language Infrastructure (CLI)
Partitions I to VI
Technologies de l'information — Infrastructure commune de langage
(ICL) Partitions I à VI




Reference number
ISO/IEC 23271:2006(E)
©
ISO/IEC 2006

---------------------- Page: 1 ----------------------
ISO/IEC 23271:2006(E)
PDF disclaimer
This PDF file may contain embedded typefaces. In accordance with Adobe's licensing policy, this file may be printed or viewed but
shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In
downloading this file, parties accept therein the responsibility of not infringing Adobe's licensing policy. The ISO Central Secretariat
accepts no liability in this area.
Adobe is a trademark of Adobe Systems Incorporated.
Details of the software products used to create this PDF file can be found in the General Info relative to the file; the PDF-creation
parameters were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In
the unlikely event that a problem relating to it is found, please inform the Central Secretariat at the address given below.


©  ISO/IEC 2006
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized in any form or by any means,
electronic or mechanical, including photocopying and microfilm, without permission in writing from either ISO at the address below or
ISO's member body in the country of the requester.
ISO copyright office
Case postale 56 • CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland

ii © ISO/IEC 2006 – All rights reserved

---------------------- Page: 2 ----------------------
Common Language Infrastructure (CLI)
Partitions I–VI

Partition I: Concepts and Architecture
Partition II: Metadata Definition and Semantics
Partition III: CIL Instruction Set
Partition IV: Profiles and Libraries
Partition V: Debug Interchange Format
Partition VI: Annexes

---------------------- Page: 3 ----------------------
Common Language Infrastructure (CLI)
Partition I:
Concepts and Architecture

---------------------- Page: 4 ----------------------
ISO/IEC 23271:2006(E)
Table of Contents
Foreword vii
1 Scope 1
2 Conformance 2
3 Normative references 3
4 Conventions                                                  4
4.1 Organization 4
4.2 Informative text 4
5 Terms and definitions 5
6 Overview of the Common Language Infrastructure 9
6.1 Relationship to type safety 9
6.2 Relationship to managed metadata-driven execution 10
6.2.1 Managed code 10
6.2.2 Managed data 11
6.2.3 Summary 11
7 Common Language Specification 12
7.1 Introduction 12
7.2 Views of CLS compliance 12
7.2.1 CLS framework 12
7.2.2 CLS consumer 13
7.2.3 CLS extender 13
7.3 CLS compliance 14
7.3.1 Marking items as CLS-compliant 15
8 Common Type System 16
8.1 Relationship to object-oriented programming 18
8.2 Values and types 18
8.2.1 Value types and reference types 18
8.2.2 Built-in value and reference types 19
8.2.3 Classes, interfaces, and objects 19
8.2.4 Boxing and unboxing of values 20
©ISO/IEC 2006 – All rights reserved iii
Partition I

---------------------- Page: 5 ----------------------
ISO/IEC 23271:2006(E)
8.2.5 Identity and equality of values 21
8.3 Locations 22
8.3.1 Assignment-compatible locations 22
8.3.2 Coercion 22
8.3.3 Casting 22
8.4 Type members 22
8.4.1 Fields, array elements, and values 23
8.4.2 Methods 23
8.4.3 Static fields and static methods 23
8.4.4 Virtual methods 23
8.5 Naming 24
8.5.1 Valid names 24
8.5.2 Assemblies and scoping 24
8.5.3 Visibility, accessibility, and security 26
8.6 Contracts 28
8.6.1 Signatures 29
8.7 Assignment compatibility 32
8.8 Type safety and verification 33
8.9 Type definers 33
8.9.1 Array types 34
8.9.2 Unmanaged pointer types 35
8.9.3 Delegates 35
8.9.4 Interface type definition 36
8.9.5 Class type definition 37
8.9.6 Object type definitions 38
8.9.7 Value type definition 40
8.9.8 Type inheritance 41
8.9.9 Object type inheritance 41
8.9.10 Value type inheritance 41
8.9.11 Interface type derivation 42
8.10 Member inheritance 42
8.10.1 Field inheritance 42
8.10.2 Method inheritance 42
8.10.3 Property and event inheritance 42
8.10.4 Hiding, overriding, and layout 43
8.11 Member definitions 44
8.11.1 Method definitions 44
8.11.2 Field definitions 44
iv Partition I ©ISO/IEC 2006 – All rights reserved

---------------------- Page: 6 ----------------------
ISO/IEC 23271:2006(E)
8.11.3 Property definitions 45
8.11.4 Event definitions 46
8.11.5 Nested type definitions 46
9 Metadata 47
9.1 Components and assemblies 47
9.2 Accessing metadata 47
9.2.1 Metadata tokens 47
9.2.2 Member signatures in metadata 48
9.3 Unmanaged code 48
9.4 Method implementation metadata 48
9.5 Class layout 48
9.6 Assemblies: name scopes for types 49
9.7 Metadata extensibility 50
9.8 Globals, imports, and exports 51
9.9 Scoped statics 51
10 Name and type rules for the Common Language Specification 52
10.1 Identifiers 52
10.2 Overloading 52
10.3 Operator overloading 53
10.3.1 Unary operators 53
10.3.2 Binary operators 54
10.3.3 Conversion operators 55
10.4 Naming patterns 56
10.5 Exceptions 56
10.6 Custom attributes 57
10.7 Generic types and methods 57
10.7.1 Nested type parameter re-declaration 57
10.7.2 Type names and arity encoding 58
10.7.3 Type constraint re-declaration 60
10.7.4 Constraint type restrictions 60
10.7.5 Frameworks and accessibility of nested types 60
10.7.6 Frameworks and abstract or virtual methods 61
11 Collected Common Language Specification rules 62
12 Virtual Execution System 65
12.1 Supported data types 65
©ISO/IEC 2006 – All rights reserved Partition I v

---------------------- Page: 7 ----------------------
ISO/IEC 23271:2006(E)
12.1.1 Native size: native int, native unsigned int, O and & 66
12.1.2 Handling of short integer data types 67
12.1.3 Handling of floating-point data types 67
12.1.4 CIL instructions and numeric types 69
12.1.5 CIL instructions and pointer types 70
12.1.6 Aggregate data 71
12.2 Module information 74
12.3 Machine state 74
12.3.1 The global state 74
12.3.2 Method state 75
12.4 Control flow 78
12.4.1 Method calls 79
12.4.2 Exception handling 82
12.5 Proxies and remoting 92
12.6 Memory model and optimizations 93
12.6.1 The memory store 93
12.6.2 Alignment 93
12.6.3 Byte ordering 93
12.6.4 Optimization 93
12.6.5 Locks and threads 94
12.6.6 Atomic reads and writes 95
12.6.7 Volatile reads and writes 95
12.6.8 Other memory model issues 96
13 Index 97
vi Partition I ©ISO/IEC 2006 – All rights reserved

---------------------- Page: 8 ----------------------
ISO/IEC 23271:2006(E)
Foreword

ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are members of
ISO or IEC participate in the development of International Standards through technical committees
established by the respective organization to deal with particular fields of technical activity. ISO and IEC
technical committees collaborate in fields of mutual interest. Other international organizations, governmental
and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information
technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.
International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2.
The main task of the joint technical committee is to prepare International Standards. Draft International
Standards adopted by the joint technical committee are circulated to national bodies for voting. Publication as
an International Standard requires approval by at least 75 % of the national bodies casting a vote.
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights.
ISO/IEC 23271 was prepared by Ecma (as Ecma-335) and was adopted, under a special “fast-track
procedure”, by Joint Technical Committee ISO/IEC JTC 1, Information technology, in parallel with its approval
by national bodies of ISO and IEC. This second edition cancels and replaces the first edition
(ISO/IEC 23271:2003), which has been technically revised.
©ISO/IEC 2006 – All rights reserved Partition I vii

---------------------- Page: 9 ----------------------
INTERNATIONAL STANDARD ISO/IEC 23271:2006(E)
Information technology —
Common Language Infrastructure (CLI) Partition I to VI

1 Scope
This International Standard defines the Common Language Infrastructure (CLI) in which applications written
in multiple high-level languages can be executed in different system environments without the need to rewrite
those applications to take into consideration the unique characteristics of those environments. This International
Standard consists of the following parts:
• Partition I: Concepts and Architecture – Describes the overall architecture of the CLI, and provides the
normative description of the Common Type System (CTS), the Virtual Execution System (VES) and
the Common Language Specification (CLS). It also provides an informative description of the
metadata.
• Partition II: Metadata Definition and Semantics – Provides the normative description of the metadata, its
physical layout (as a file format), its logical contents (as a set of tables and their relationships) and its
semantics (as seen from a hypothetical assembler, ilasm).
• Partition III: CIL Instruction Set – Describes the Common Intermediate Language (CIL) instruction set.
• Partition IV: Profiles and Libraries – Provides an overview of the CLI Libraries and a specification of
their factoring into Profiles and Libraries. A companion file, CLILibrary.xml, considered to be part of
this Partition, but distributed in XML format, provides details of each class, value type and interface in
the CLI Libraries.
• Partition V: Debug Interchange Format.
• Partition VI: Annexes – Contains some sample programs written in CIL Assembly Language (ILAsm),
information about a particular implementation of an assembler, a machine-readable description of the
CIL instruction set which can be used to derive parts of the grammar used by this assembler, as well as
other tools that manipulate CIL, a set of guidelines used in the design of the libraries of Partition IV and
portability considerations.
©ISO/IEC 2006 – All rights reserved
 1

---------------------- Page: 10 ----------------------
ISO/IEC 23271:2006(E)
2 Conformance
A system claiming conformance to this International Standard shall implement all the normative requirements
of this standard, and shall specify the profile (see Partition IV) that it implements. The minimal implementation
is the Kernel Profile. A conforming implementation can also include additional functionality provided that
functionality does not prevent running code written to rely solely on the profile as specified in this standard.
For example, a conforming implementation can provide additional classes, new methods on existing classes, or
a new interface on a standardized class, but it shall not add methods or properties to interfaces specified in this
standard.
A compiler that generates Common Intermediate Language (CIL, see Partition III) and claims conformance to
this International Standard shall produce output files in the format specified in this standard, and the CIL it
generates shall be correct CIL as specified in this standard. Such a compiler can also claim that it generates
verifiable code, in which case, the CIL it generates shall be verifiable as specified in this standard.
2 Partition I ©ISO/IEC 2006 – All rights reserved

---------------------- Page: 11 ----------------------
ISO/IEC 23271:2006(E)
3 Normative references
The following referenced documents are indispensable for the application of this document. For dated
references, only the edition cited applies. For undated references, the latest edition of the referenced
document (including any amendments) applies.

Extensible Markup Language (XML) 1.0 (Third Edition), 2004 February 4, http://www.w3.org/TR/2004/REC-
xml-2004
Federal Information Processing Standard (FIPS 180-1), Secure Hash Standard (SHA-1), 1995, April.
IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (previously designated IEC
559:1989)
ISO 639 (all parts), Codes for the representation of names of languages
ISO 3166 (all parts), Codes for the representation of names of countries and their subdivision
ISO/IEC 646:1991, Information technology — ISO 7-bit coded character set for information interchange
ISO/IEC 9899:1990, Programming languages — C
ISO/IEC 10646, Information technology — Universal Multiple-Octet Coded Character Set (UCS)
ISO/IEC 11578:1996, Information technology — Open Systems Interconnection — Remote Procedure Call (RPC)

ISO/IEC 14882:2003, Programming languages — C++
ISO/IEC 23270:2006, Information technology — Programming languages — C#
RFC-768, User Datagram Protocol, J. Postel, 1980, August
RFC-791, Internet Protocol, Darpa Internet Program Protocol Specification, 1981, September
RFC-792, Internet Control Message Protocol,  Darpa  Internet  Program  Protocol  Specification,
Network  Working  Group, J.  Postel, 1981, September
RFC-793, Transmission Control Protocol, Darpa Internet Program Protocol Specification, J. Postel, 1981, September
RFC-919, Broadcasting Internet Datagrams, Network Working Group, J. Mogul, 1984, October
RFC-922, Broadcasting Internet Datagrams in the presence of Subnets, Network Working Group, J. Mogul,
1984, October
RFC-1035, Domain Names - Implementation and Specification, Network Working Group, P. Mockapetris,
1987, November
RFC-1036, Standard for Interchange of USENET Messages, Network Working Group, M. Horton and R.
Adams, 1987, December
RFC-1112, Host Extensions for IP Multicasting, Network Working Group, S. Deering 1989, August
RFC-1222, Advancing the NSFNET Routing Architecture, Network Working Group, H.-W. Braun and Y. Rekhter,
1991, May ftp://ftp.isi.edu/in-notes/rfc1222.txt
RFC-1510, The Kerberos Network Authentication Service (V5), Network Working Group, J. Kohl and C.
Neuman, 1993, September
RFC-1741, MIME Content Type for BinHex Encoded Files, Network Working Group, P. Faltstrom, D.
Crocker and E. Fair, 1994, December
RFC-1764, The PPP XNS IDP Control Protocol (XNSCP), Network Working Group, S. Senum, 1995, March
RFC-1766, Tags for the Identification of Languages, Network Working Group, H. Alvestrand, 1995, March
RFC-1792, TCP/IPX Connection Mib Specification, Network Working Group, T. Sung, 1995, April
RFC-2236, Internet Group Management Protocol, Version 2, Network Working Group, W. Fenner, 1997,
November
©ISO/IEC 2006 – All rights reserved Partition I 3

---------------------- Page: 12 ----------------------
ISO/IEC 23271:2006(E)
RFC-2045, Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies,
Network Working Group, N. Freed, 1996, November
RFC-2616, Hypertext Transfer Protocol — HTTP/1.1, Network Working Group, R. Fielding, J. Gettys, J.
Mogul, H. Frystyk, L. Masinter, P. Leach, and T. Berners-Lee, 1999 June, ftp://ftp.isi.edu/in-notes/rfc2616.txt
RFC-2617, HTTP Authentication: Basic and Digest Access Authentication, Network Working Group,
J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen and L. Stewart, 1999 June,
ftp://ftp.isi.edu/in-notes/rfc2617.txt
The Unicode Consortium. The Unicode Standard, Version 4.0, defined by: The Unicode Standard, Version 4.0
(Addison-Wesley, Boston, MA, 2003. ISBN 0-321-18578-1)
4 Conventions
4.1 Organization
The divisions of this International Standard are organized using a hierarchy. At the top level is the Partition.
The next level is the clause, followed by subclause. Divisions within a subclause are also referred to as
subclauses. Partitions are numbered using Roman numerals. All other divisions are numbered using Arabic
digits with their place in the hierarchy indicated by nested numbers. For example, Partition II, 14.4.3.2 refers to
Subclause 2 in Subclause 3 in Subclause 4 in Clause 14 in Partition II.
4.2 Informative text
This International Standard is intended to be used by implementers, academics and application programmers.
As such, it contains explanatory material that, strictly speaking, is not necessary in a formal specification.
Examples are provided to illustrate possible forms of the constructions described. References are used to refer
to related clauses or subclauses. Notes are provided to give advice or guidance to implementers or
programmers. Annexes provide additional information.
Except for whole clauses or subclauses that are identified as being informative, informative text that is
contained within normative clauses and subclauses is identified as follows:
• The beginning and end of a block of informative text is marked using rectangular boxes.
• As some informative passages span pages, informative text also contains a bold set of vertical black
stripes in the right margin.
• By the use of the following pairs of markers: [Example: … end example], [Note: … end note], and
[Rationale: … end rationale].
Unless text is identified as being informative, it is normative.
4 Partition I ©ISO/IEC 2006 – All rights reserved

---------------------- Page: 13 ----------------------
ISO/IEC 23271:2006(E)
5 Terms and definitions

For the purposes of this International Standard, the following terms and definitions apply. Other terms are
defined where they appear in italic type.
5.1
ANSI character
character from an implementation-defined 8-bit character set whose first 128 code points correspond exactly to those of
ISO/IEC 10646
5.2
ANSI string
string of ANSI characters, of which the final character has the value all-bits-zero
5.3
assembly
configured set of loadable code modules and other resources that together implement a unit of functionality
5.4
attribute
characteristic of a type and/or its members that contains descriptive information
NOTE While the most common attributes are predefined, and have a specific encoding in the metadata associated with them,
user-defined attributes can also be added to the metadata.
5.5
behavior, implementation-specific
unspecified behavior, for which each implementation is required to document the choice it makes
5.6
behavior, unspecified
behavior, for a well-formed program construct and correct data, that depends on the implementation
NOTE The implementation is not required to document which behavior occurs.
5.7
behavior, undefined
behavior, such as might arise upon use of an erroneous program construct or erroneous data, for which this International
Standard imposes no requirements
NOTE Undefined behavior can also be expected in cases when this International Standard omits the description of any explicit
definition of behavior.
5.8
boxing
conversion of a value having some value type, to a newly allocated instance of the reference type System.Object
5.9
Common Intermediate Language
CIL
instruction set understood by the VES
5.10
Common Language Infrastructure
CLI
specification for the format of executable code, and the run-time environment that can execute that code
©ISO/IEC 2006 – All rights reserved Partition I 5

---------------------- Page: 14 ----------------------
ISO/IEC 23271:2006(E)
5.11
Common Language Specification
CLS
agreement between language designers and framework (class library) designers
NOTE It specifies a subset of the CTS and a set of usage conventions.
5.12
Common Type System
CTS
unified type system that is shared by compilers, tools and the CLI itself
NOTE It is the model that defines the rules the CLI follows when declaring, using and managing types. The CTS establishes a
framework that enables cross-language integration, type safety and high performance code execution.
5.13
delegate
reference type such that an instance of it can encapsulate one or more methods in an invocation list
NOTE Given a delegate instance and an appropriate set of arguments, one can invoke all of the methods in a delegate’s
invocation list with that set of arguments.
5.14
event
member that enables an object or class to provide notifications
5.15
Execution Engine
(See Virtual Execution System)
5.16
field
member that designates a typed memory location that stores some data in a program
5.17
garbage collection
process by which memory for managed data is allocated and released
5.18
generic argument
actual type used to instantiate a particular generic type or generic method
NOTE For example, in List, string is the generic argument corresponding to the generic parameter T in the
generic type definition List.
5.19
generic parameter
parameter within the definition of a generic type or generic method that acts as a place holder for a generic argument
NOTE For example, in the generic type definition List.T is a generic parameter.
5.20
generics
feature that allows types and methods to be defined such that they are parameterized with one or more generic parameters
5.21
library
repository for a set of types, which are grouped into one or more assemblies
NOTE A library can also contain modifications to types defined in other libraries. For example, a library can include additional
methods, interfaces and exceptions for types defined in other libraries.
6 Partition I ©ISO/IEC 2006 – All rights reserved

---------------------- Page: 15 ----------------------
ISO/IEC 23271:2006(E)
5.22
managed code
code that contains enough information to allow the CLI to provide a set of core services
NOTE For example, given an address for a method inside the code, the CLI will be able to locate the metadata describing that
method. It will also be able to walk the stack, handle exceptions and store and retrieve security information.
5.23
managed data
data that is allocated and released automatically by the CLI, through a process called garbage collection
5.24
manifest
that part of an assembly that specifies the following information about that assembly; its version, name, culture and
security requirements; which other files, if any, belong to that assembly, along with a cryptographic hash of each file;
which of the types defined in other files of that assembly are to be exported from that assembly; and, optionally, a digital
signature for the manifest itself, and the public key used to compute it
5.25
member
any of the fields, array elements, methods, properties and events of a type
5.26
metadata
data that describes and references the types defined by the CTS
NOTE Metadata is stored in a way that is independent of any particular programming language. Thus, metadata provides a
common interchange mechanism for use between tools that manipulate programs (such as compilers and debuggers) as well as
between these tools and the VES.
5.27
method
member that describes an operation that can be performed on values of an exact type
5.28
method, generic
method (be it static, instance or virtual), defined within a type, whose signature includes one or more generic parameters,
not present in the type definition itself
NOTE The enclosing type itself might, or might not, be generic. For example, within the generic type List, the generic
method S ConvertTo() is generic.
5.29
method, non-generic
method that is not generic
5.30
module
single file containing content that can be executed by the VES
5.31
object

instance of a reference type
NOTE An object has more to it than a value. An object is self-typing; its type is explicitly stored in its representation. It has an
identity that distinguishes it from all other objects and it has slots that store other entities (which can be either objects or values).
While the contents of its slots can be changed, the identity of an object never changes.
5.32
profile
set of libraries, grouped together to form a consistent whole that provides a fixed level of functionality
5.33
property
member that defines a named value and the methods that access that value
NOTE A property definition defines the accessing contracts on that value. Hence, the property definition specifies which
accessing methods exist and their respective method contracts.
©ISO/IEC 2006 – All rights reserved Partition I 7

---------------------- Page: 16 ----------------------
ISO/IEC 23271:2006(E)
5.34
signature
the part of a contract that can be checked and automatically enforced
NOTE Signatures are formed by adding constraints to types and other signatures. A constraint is a limitation on the use of or
allowed operations on a value or location.
5.35
type, generic
type whose definition is parameterized by one or more other types; for example, List, where T is a generic
parameter
NOTE The CLI supports the creation and use of instances of generic types. For example, List or List.
5.36
type, reference
type such that an instance of it contains a reference to its data
5.37
type, value
type such that an instance of it directly contains all its data
5.38
unboxing
conversion of a value having type System.Object, whose run-time type is a value type, to a value type instance
5.39
unmanaged code
code that is not managed
5.40
unmanaged data
data that is not managed
5.41
value
simple bit pattern for something like an integer or a float
NOTE Each value has a type that describes both the storage that it occupies and the meanings of the bits in its representation,
and also the operations that can be performed on that representation. Values are intended for representing the simple types and non-
objects in programming languages.
5.42
verification
checking of both CIL and its related metadata to ensure that the CIL code sequences do not permit any access to memory
outside the program’s logical address space
NOTE In conjunction with the validation tests, verification ensures that the program cannot access memory or other resources to
which it is not granted access.
5.43
Virtual Execution System
VES
system that implements and enforces the CTS model
NOTE The VES is responsible for loading and running programs written for the CLI. It provides the services needed to execute
managed code and data using the metadata to connect separately generated modules together at runtime. The VES is also known as the
Execution Engine.
8 Partition I ©ISO/IEC 2006 – All rights reserved
Execution Engine.
NOTE The VES is responsible for loading and running programs written for the CLI. It provides the services needed to execute
managed code and data using the metadata to connect separately generated modules together at runtime. The VES is also known as the
Execution Engine.

---------------------- Page: 17 ----------------------
ISO/IEC 23271:2006(E)
6 Overview of the Common Language Infrastructure
The Common Language Infrastructure (CLI) provides a specification for executable code and the execution
environment (the Virtual Execution System) in which it runs. Executable code is presented to the VES as
modules. A module is a single file containing executable content in the format specified in Partition II.
The remainder of this clause and its subclauses contain only informative text
At the center of the CLI is a unified type system, the Common Type System that is shared by compilers, tools,
and the CLI itself. It is the model that defines the rules the CLI follows when declaring, using, and managing
types. The CTS establishes a framework that enables cross-language integration, type safety, and high
performance code execution. This clause describes the architecture of the CLI by describing the CTS.
The following four areas are covered in this clause:
• The Common Type System (CTS)—The CTS provides a rich type system that supports the types
and operations found in many programming languages. The CTS is intended to support the
complete implementation of a wide range of programming languages. See §8
• Metadata—The CLI uses metadata to describe and reference the types defined by the CTS.
Metadata is stored (that is, persisted) in a way that is independent of any particular programming
language. Thus, metadata provides a common interchange mechanism for use between tools (such
as compilers and debuggers) that manipulate programs, as well as between these tools and the
VES. See §9.
• The Common Language Specification (CLS)—The CLS is an agreement between language
designers and framework (that is, class library) designers. It specifies a subset of the CTS and a
set of usage conventions. Languages provide their users the greatest ability to access frameworks
by implementing at least those parts of the CTS that are part of the CLS. Similarly, frameworks
will be most widely used if their publicly exported aspects (e.g., classes, interfaces, methods, and
fields) use only types that are part of the CLS and that adhere to the CLS conventions. See §10.
• The Virtual Execution System (VES)—The VES implements and enforces the CTS model. The
VES is responsible for loading and running programs written for the CLI. It provides the services
needed to execute managed code and data, using the metadata to connect separately generated
modules toge
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.