Authors
Andrew Kennedy and Don Syme
Abstract
The Microsoft .NET Common Language
Runtime provides a shared type system, intermediate language and dynamic
execution environment for the implementation and inter-operation of multiple
source languages. In this paper we extend it with direct support for
parametric polymorphism (also known as generics), describing the design
through examples written in an extended version of the C# programming
language, and explaining aspects of implementation by reference to a
prototype extension to the runtime.
Our design is very expressive, supporting parameterized types, polymorphic
static, instance and virtual methods, "F-bounded" type parameters,
instantiation at pointer and value types, polymorphic recursion, and exact
run-time types.
Early performance results are encouraging and suggest that programmers will
not need to pay an overhead for using generics, achieving performance almost
matching hand-specialized code.
Full Text
[pdf]