By way of the article “A glimpse into a new general purpose programming language under development at Microsoft” from the Lambda the Ultimate weblog, I came across Joe Duffy’s new post on C# for Systems Programming.
Microsoft may be developing a native version of C# with additional extensions for systems programming that would compete with languages like C++, and D. Duffy’s work on immutability and isolation in C# is directly related to this native version of C# and mostly likely would not be part of CLR C#. While I use the term “native C#,” “systems C#” might be more accurate as garbage collection will likely still have a diminished role in this new world.
C++ is constrained by compatibility, leading to obsolete, complex and inelegant syntax. C++ is also not type-safe. A new version of C# for systems programming is advantageous in a number of ways. It would leverage past efforts with CLR C# and allow Microsoft to evolve the language faster than any standards body and in a way that best meets its needs. Porting code between systems and CLR C# might be a trivial recompilation at least in the CLR-to-native direction. This effort appears to involve extensive collaboration with or may even be entirely based inside the research group, which should mean the introduction of many new and advanced ideas from academia.
Joe lists six major categories of features being introduced into systems C#:
- Lifetime understanding (with stack allocation and deterministic destruction)
- Side-effects understanding. (Immutability and isolation)
- Async programming at scale.
- Typesafe systems programming.
- Modern error model (with code contracts).
- Modern frameworks.
A prior post of Duffy’s hinted at the development of a new framework in which he was calling out for interested new hires. This new framework might be yet another framework built entirely to support systems C#. Duffy is rumored to be working on Midori, a new distributed, concurrent OS. A deleted job post for a Midori-based programming language called M#. Midori may be the testbed for systems C# and its supporting libraries.