4 Kernel Profile Feature Requirements


All conforming implementations of the CLI support at least the Kernel Profile, and consequently all CLI features required by the Kernel Profile must be implemented by all conforming implementations. This section defines that minimal feature set by enumerating the set of features that are not required i.e., a minimal conforming implementation must implement all CLI features except those specified in the remainder of this section. The feature requirements of individual Libraries as specified in Partition IV, section 5 are defined by reference to restricted items described in this section. For ease of reference, each feature has a name indicated by the name of the section heading. Where Libraries do not specify any additional feature requirement, it shall be assumed that only the features of the Kernel Profile as described in this section are required.

4.1 Features Excluded from Kernel Profile

The following internal data types and constructs, specified elsewhere in this Standard, are not required of CLI implementations that conform only to the Kernel Profile. All other CLI features are required.

ANNOTATION

As stated, the features in this section are not required for Kernel Profile implementations. Choosing what to support depends on the languages that you intend to support and other features that you decide you require. For example, some languages, like Microsoft Visual Basic, have filtered exceptions, while C# does not. If your VES runs Microsoft Visual Basic, it needs to support filtered exceptions.


4.1.1 Floating Point

The floating point feature set consists of the user-visible floating point data types float32 and float64, and support for an internal representation of floating point numbers.

If omitted: The CIL instructions that deal specifically with these data types throw the System.NotImplementedException exception. These instructions are: ckfinite, conv.r.un, conv.r4, conv.r8, ldc.r4, ldc.r8, ldelem.r4, ldelem.r8, ldind.r4, ldind.r8, stelem.r4, stelem.r8, stind.r4, stind.r8. Any attempt to reference a signature including the floating point data types shall throw the System.NotImplementedException exception. The precise timing of the exception is not specified.

NOTE

These restrictions guarantee that the VES will not encounter any floating point data. Hence the implementation of the arithmetic instructions (add, etc.) need not handle those types.


Part of Library: Extended Numerics (see Partition IV, section 5.6).

4.1.2 Non-vector Arrays

The non-vector arrays feature set includes the support for arrays with more than one dimension or with lower bounds other than zero. This includes support for signatures referencing such arrays, runtime representations of such arrays, and marshalling of such arrays to and from native data types.

If omitted: Any attempt to reference a signature including a non-vector array shall throw the System.NotImplementedException exception. The precise timing of the exception is not specified.

NOTE

The generic type System.Array is part of the Kernel Profile and is available in all conforming implementations of the CLI. An implementation that does not provide the non-vector array feature set can correctly assume that all instances of that class are vectors.


Part of Library: Extended Arrays (see Partition IV, section 5.7).

4.1.3 Reflection

The reflection feature set supports full reflection on data types. All of its functionality is exposed through methods in the Reflection Library.

If omitted: The Kernel Profile specifies an opaque type, System.Type, instances of which uniquely represent any type in the system and provide access to the name of the type.

NOTE

With just the Kernel Profile there is no requirement, for example, to determine the members of the type, dynamically create instances of the type, or invoke methods of the type given an instance of System.Type. This can simplify the implementation of the CLI compared to that required when the Reflection Library is available.


Part of Library: Reflection (see Partition IV, section 5.4).

4.1.4 Application Domains

The application domain feature set supports multiple application domains. The Kernel Profile requires that a single application domain exist.

If omitted: Methods for creating application domains (part of the Base Class Library; see Partition IV, section 5.2) throw the System.NotImplementedException exception.

Part of Library: (none)

4.1.5 Remoting

The remoting feature set supports remote method invocation. It is provided primarily through special semantics of the class System.MarshalByRefObject as described in the .NET Framework Standard Library Annotated Reference.

If omitted: The class System.MarshalByRefObject shall be treated as a simple class with no special meaning.

Part of Library: (none)

4.1.6 Varargs

The varargs feature set supports variable-length argument lists and runtime typed pointers.

If omitted: Any attempt to reference a method with the varargs calling convention or the signature encodings associated with varargs methods (see Partition II [section 7]) shall throw the System.NotImplementedException exception. Methods using the CIL instructions arglist, refanytype, mkrefany, and refanyval shall throw the System.NotImplementedException exception. The precise timing of the exception is not specified. The type System.TypedReference need not be defined.

Part of Library: (none)

4.1.7 [Varargs] Frame Growth

The frame growth feature set supports dynamically extending a stack frame.

If omitted: Methods using the CIL localloc instruction shall throw the System. NotImplementedException exception. The precise timing of the exception is not specified.

Part of Library: (none)

4.1.8 Filtered Exceptions

The filtered exceptions feature set supports user-supplied filters for exceptions.

If omitted: Methods using the CIL endfilter instruction or with an exceptionentry that contains a non-null filterstart (see Partition I, sections 12.4.2.5 through 12.4.2.8) shall throw the System.NotImplementedException exception. The precise timing of the exception is not specified.

Part of Library: (none)



The Common Language Infrastructure Annotated Standard (Microsoft. NET Development Series)
The Common Language Infrastructure Annotated Standard (Microsoft. NET Development Series)
ISBN: N/A
EAN: N/A
Year: 2002
Pages: 121

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net