C Omega: C#, Concurrency and Data Access

Damien Watkins, Microsoft Research



In the last decade, strongly-typed, garbage-collected object-oriented languages have left the laboratory and become mainstream industrial tools. This has led to improvements in programmer productivity and software reliability, but some common tasks are still harder than they should be. Two of the most critical for the development of the next generation of loosely-coupled, networked applications and web services are concurrent programming and the processing of relational and semi-structured data. C Omega is an experimental language designed at Microsoft Research that makes programming with concurrency and external data simpler and less error-prone.

The C Omega approach to both the data and control issues is to extend C# with new, first-class, types and language constructs, rather than relying on external libraries, mappings and tools. The concurrency extensions, based on the join-calculus, provide a simple and powerful asynchronous programming model, which is applicable in both the local (multiple threads on a single machine) and distributed (asynchronous message over a LAN/WAN) settings. The data extensions add new type constructors giving first-class support of both relational (database tables) and semi-structured (XML trees) data. Generalized member access allows XPath-like processing to be expressed directly within the language, and checked by the compiler.