130 likes | 538 Views
SSCLI: The Microsoft Shared Source CLI Implementation. Mark Lewin Microsoft Research marklew@microsoft.com. Announcing: Availability of Microsoft Shared Source CLI. Example implementation of full ECMA standards 334: C# language 335: Common Language Infrastructure (CLI)
E N D
SSCLI:The Microsoft Shared Source CLI Implementation Mark LewinMicrosoft Research marklew@microsoft.com
Announcing: Availability ofMicrosoft Shared Source CLI • Example implementation of full ECMA standards • 334: C# language • 335: Common Language Infrastructure (CLI) • 242: ECMAScript language (JScript implementation) • Non-commercial, source code distribution • Modifiable (and documented for modification) • Easy to re-distribute and share changes • First shipment: beta-quality, experimental code • Cross-platform implementation • Code builds and runs on FreeBSD and Windows XP • Code designed to easily port to other platforms
“Shared Source” License Offering • Part of Microsoft “shared source” access program • One of many source code distributions at Microsoft • Full access to code, including ability to modify and distribute modifications • Non-commercial use only (books, courseware, and/or websites that teach the CLI are included in this) • Long-term investment • To seed the future of a strong technology industry • To enable better understanding of commercial product • To grow Microsoft’s development community • To improve feedback process by enabling deep input
A Guide for Implementers • CLI and C# standards were written to enable third-party implementations • Shared source CLI is an example implementation • License allows for “safe” examination of code • For implementers of CLI alternatives: • Augments large, complex spec with code • Proves that multiple platform support is possible • Demonstrates interoperability • For compiler writers who want to target CLI: • JScript compiler shows dynamic techniques • C# compiler shows nearly all runtime features • IL Assembler shows low-level API implementation and use
Implemented for Teaching/Learning • Many areas of interest (1.9 million lines of code) • Advanced virtual execution environment for components • Flexible, powerful, access to underlying platform • Typesafe, yet language-agnostic, services (think: C runtime) • Contains useful component-based frameworks • Standard programming constructs • Web-service oriented networking and remoting • Contains compilers, tools, and utilities • C#, JScript, and IL JIT compilers • Assembler, disassembler, linker, debuggers • Configuration utilities • Extensive tests and build harness
Overview of the CLI • A common type system… …and a specification for language integration (CLS) • Execution engine with garbage collector and exception handling • Integral security system with verification • A factored class library • A “modern” equivalent to the C runtime • An intermediate language • CIL: Common Intermediate Language • A file format • PE/COFF format, with extensions • An extensible metadata system • Access to the underlying platform
Example Teaching Topics • Component-based programming • Comparative languages/infrastructure • Language integration • Type systems • Compiler internals, runtime internals • Language topics: verification, security • Asynchronous web services • Industrial software engineering • Internationalization • Code structure and maintenance • Build and test harness
Potential Research Areas • Proof-carrying code, reflective environments • JIT-supported pre/post conditions • Runtime layout, compaction, or rewriting of code/data • High-level support for mobile/distributed computing • Garbage collection and other memory management techniques • Distributed computing • XML-based • Asynchronous • Concurrency, memory models, locking • Others? You tell us!
Relationship of Shared Source CLIand .NET Frameworks (CLR) • Both CLI and CLR implement complete ECMA • Shared Source CLI superset of ECMA, subset of commercial .NET Frameworks • Shared source CLI implementation differs: • JIT and garbage collector replaced with more portable, more approachable, implementations • Many Windows-specific features not included: COM interop, WinForms, and other integration • Commercial features not included, such as ADO.NET, enterprise services, NGEN (JIT-ahead), and ASP.NET
Community and Future Plans • Shared source CLI will evolve over time • Additional drops coming from Microsoft • Desire for shared access to changes, patches, etc. • Plans not final – please give feedback! • Active help for self-sustaining communities • Announcing today: grant program to seed research • Working with authors on books about implementation • Microsoft team will have presence in community • Mailing lists and newsgroups • news:microsoft.public.shared_source.cli • http://mailserver.di.unipi.it/mailman/listinfo/dotnet-sscli for mailing list and archive • Mailing list dotnet-rotor at discuss.develop.com
Where to get SSCLI • http://msdn.microsoft.com/net/sscli • MSDN • Send me email (marklew@microsoft.com) for a copy of the SSCLI Toolkit which includes tutorial DVD