About: Common Language Runtime is a research topic. Over the lifetime, 229 publications have been published within this topic receiving 4135 citations. The topic is also known as: CLR & Common Language Runtime, CLR.
TL;DR: This paper extends the Microsoft.NET Common Language Runtime 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.
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. The implementation takes advantage of the dynamic nature of the runtime, performing just-in-time type specialization, representation-based code sharing and novel techniques for efficient creation and use of 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.
TL;DR: Compact and free of fluff or proprietary hype, .NET Framework Essentials is an outstanding value for experienced programmers and architects who need to get up to speed quickly on a far-reaching new technology.
Abstract: From the Publisher:
.NET Framework Essentials is an objective, concise, and technical overview of the new Microsoft .NET framework for developing web applications and services.
Specifically written for intermediate to advanced VB, C/C++, Java, and Delphi developers, .NET Framework Essentials is also useful to system architects and leaders who are assessing tools for future projects. The authors devote special attention to the writing of .NET components plus web applications and services.
This book takes on all of the most important .NET Framework topicsfrom the underlying Common Language Run-Time (CLR) to its specialized packages for ASP.NET, Web Forms, Windows Forms, XML and data access (ADO.NET). The authors survey each of the major .NET languages, including VB.NET, C#, and Managed C++, as well as MSIL, the intermediate language understood by the CLR. They've included working code samples in every .NET language.
Compact and free of fluff or proprietary hype, .NET Framework Essentials is an outstanding value for experienced programmers and architects who need to get up to speed quickly on a far-reaching new technology.
TL;DR: The technical details of the CLI are briefly described and a comparison is made with the Java virtual machine (JVM), making it a much more difficult target for languages other than Java.
Abstract: The functionality of the recently announced Microsoft .NET system is founded on the capabilities of the Common Language Infrastructure (CLI). Unlike some other recent systems based on virtual machines, the CLI was designed from the start to support a wide range of programming languages. It is also expected that ECMA standardization will make the CLI available on a wide range of computing platforms. This combination of multi-language capability and multiplatform implementation make the CLI an important target for future language compilers. In this paper, the technical details of the CLI are briefly described. To motivate some of the discussion a comparison is made with the Java virtual machine (JVM). The JVM was designed under rather different constraints, making it a much more difficult target for languages other than Java . We also briefly discuss the issues involved in mapping various language constructs to the primitives of the CLI.
TL;DR: The main theorem asserts type safety, that well-typed programs in their IL fragment do not lead to untrapped execution errors, and the formal system of this paper is an abstraction of informal and executable specifications the authors wrote for the full product during its development.
Abstract: The Microsoft .NET Framework is a new computing architecture designed to support a variety of distributed applications and web-based services. .NET software components are typically distributed in an object-oriented intermediate language, Microsoft IL, executed by the Microsoft Common Language Runtime. To allow convenient multi-language working, IL supports a wide variety of high-level language constructs, including class-based objects, inheritance, garbage collection, and a security mechanism based on type safe execution.This paper precisely describes the type system for a substantial fragment of IL that includes several novel features: certain objects may be allocated either on the heap or on the stack; those on the stack may be boxed onto the heap, and those on the heap may be unboxed onto the stack; methods may receive arguments and return results via typed pointers, which can reference both the stack and the heap, including the interiors of objects on the heap. We present a formal semantics for the fragment. Our typing rules determine well-typed IL instruction sequences that can be assembled and executed. Of particular interest are rules to ensure no pointer into the stack outlives its target. Our main theorem asserts type safety, that well-typed programs in our IL fragment do not lead to untrapped execution errors.Our main theorem does not directly apply to the product. Still, the formal system of this paper is an abstraction of informal and executable specifications we wrote for the full product during its development. Our informal specification became the basis of the product team's working specification of type-checking. The process of writing this specification, deploying the executable specification as a test oracle, and applying theorem proving techniques, helped us identify several security critical bugs during development.
TL;DR: A survey deployed inside Microsoft in January 2007 indicates that the use of concurrency is widespread at Microsoft, and most engineers feel concurrency issues will be more of an issue going forward.
Abstract: Concurrent programming is gaining significant prominence in the software industry, especially due to the advent of multi-core architectures. In this report, we present the results of a survey deployed inside Microsoft in January 2007 to assess the state of the practice of concurrency at Microsoft. Our survey polled 10% of the Microsoft technical staff and collected data for each of the three major business units, namely Microsoft platforms and services division, mobile and embedded devices division and Microsoft business division. Our major findings indicate that the use of concurrency is widespread at Microsoft. Of our 684 respondents, over 60% of our respondent population had to deal with concurrency issues frequently (on a monthly basis). The most popular platforms for concurrent programming inside Microsoft are Win32 and CLR (Common Language Runtime), which are equally popular. Also, multi-threading and message-passing forms of concurrency appear to be equally pervasive. Concurrency bugs take on average several days to detect, reproduce, debug and fix. Most of these bugs are of high severity. Most engineers feel concurrency issues will be more of an issue going forward, and would welcome additional help in terms of language support, libraries, tools, processes and training.