170 likes | 334 Views
The Microsoft Shared Source CLI (aka “Rotor”). David Stutz Microsoft Corporation. Outline. Lightening CLI architectural tour What it is, how it works Lightening tour of the SSCLI History, structure, intent Community and Resources community, release plans. ECMA C#/CLI Standards.
E N D
The MicrosoftShared Source CLI(aka “Rotor”) David Stutz Microsoft Corporation
Outline • Lightening CLI architectural tour • What it is, how it works • Lightening tour of the SSCLI • History, structure, intent • Community and Resources • community, release plans
ECMA C#/CLI Standards • Work began Summer 2000 within ECMA working group. Participants include Microsoft, Intel, HP, IBM, Netscape • CLI and C# stds ratified Dec 2001 • Structure of the CLI std • Partition I – Concepts and Architecture • Partition II – Metadata • Partition III – CIL (MSIL) • Partition IV – The Libraries and Profiles • Partition V – Annexes • C# a separate document, ref’ing CLI • ISO progress • National Ballots complete – approved (with comments) • Ballot resolution October 2002 • Standard anticipated December 2002
Overview of the CLI • A common type system • A specification for language integration (CLS) • Integral security system with type verification • A component model with strong versioning • Execution semantics (garbage collection, exception handling, etc.) • An executable file format • PE/COFF format, with extensions • An extensible metadata scheme • An intermediate language • CIL: Common Intermediate Language • Designed to be JIT compiled and optionally verifiable • Designed to enable many programming languages • A factored class library • A “modern” equivalent to the C runtime • Access to the underlying platform • Easy to use layout and calling convention detailing • Excellent marshaling, remoting, and isolation
CLI Architecture: An Expanding Chain of Metadata High-leveltype definitions • Binding • Loading • Data layout • Verification • Compilation • Linking/reloc • Remoting • Memory mgmt. Assemblies (CIL,metadata & resources) App domain isolation& class loading Execution services (threads,exceptions, GC, security) JIT compile, verify,& annotate µ-processorspecific code,layout, & types
The Shared Source CLI • Non-commercial, source-code only distribution • Work begun in Fall of 2000 • Example implementation of ECMA standards • A Microsoft Shared Source License • Modifiable (and doc’ed for modification) • Easy to re-distribute and share changes • Beta Release: beta-quality, experimental code (Mar 2002) • Beta Refresh: bug fixes, docs, etc. (Jun 2002) • Cross-platform implementation • Code builds/runs on FreeBSD and Windows™ XP • Code designed to easily port to other platforms • Ongoing portability work
Implemented for Teaching, Learning, and Experimenting • Complete example to enable research and support teaching of modern programming languages • ECMA standards were written to enable 3rd parties • SSCLI supports large spec with a real implementation • Demonstrates multiple platform support • Rotor license allows for easy experimentation • For tool/compiler writers who want to target CLI: • JScript compiler shows dynamic techniques (in C#) • C# compiler shows nearly all runtime features • IL Assembler shows low-level APIs and usage • Rotor also supports .NET developer learning
Accumulating Structure in SSCLI • Loaders create in-memory structure of types • Files located by name (string, version, culture, optional cryptographic hash) • PE/COFF loader maps and integrity checks file • App domains isolate assemblies for security and grouping • Class loaders compute actual class structure • Compiler-oriented data into classes, with type detail • Runtime data into method tables, loaded with thunk triggers • JIT Compilation and verification • Processes class metadata, assembly CIL, into native code, after verifying typesafety • EIT, security, and GC information are computed and stored • Many interesting “stubs” for parameterized code generation • Delegate multi-cast message sends • Calls to and from unmanaged code • Interception for security, exceptions, debugging, and isolation • Rotor supports “code pitching” and re-jitting
EE Services Help Sidestep Complex Cooperative Protocols • General stackwalking facility aids components • Important transitions noted on stack by execution engine • Integrated exception handling uses same stack and exception mechanism for both managed and unmanaged code • Code access security: evidence, authentication, & permissions • Debugging, tracing, remoting, and profiling all are clients • Polling generational garbage collector • Two generations; large object heap • Younger generation always copied • Mark & sweep for elder generation • Interior pointer tracing using a write barrier and remembered generation; ECMA managed pointers for byref semantics • Data-driven marshaling, serialization, and remoting
The Shared Source CLIand .NET Frameworks (CLR) • Both CLI and CLR implement complete spec • Shared Source CLI is superset of ECMA, subset of commercial .NET Frameworks • Shared source CLI differences: • JIT and GC replaced with more portable 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 • Derived from main product tree
XSLT Serialization XPath The Commercial .NET Framework VS.NET System.Web(ASP.NET) System.WinForms UI SessionState C# Design ComponentModel HtmlControls Caching JScript Security WebControls System.Drawing Configuration VB Simple Web Services VC/MC++ Drawing2D Printing Protocols Imaging Text Debugger Discovery Description Designers System.Data (ADO.NET) System.Xml ADO SQL SDK Tools Design Adapters CorDBG System ILAsm Collections IO Security Runtime InteropServices Configuration Net ServiceProcess ILDbDump Remoting Diagnostics Reflection Text SN Serialization Globalization Resources Threading ILDAsm Common Language Runtime MetaInfo JIT GC App Domain Loader PEVerify MSIL Common Type System Class Loader Windows Platform Networking IIS COM+ MSMQ Active Directory Filesystem
XSLT Serialization XPath The ECMA C#/CLI Standards VS.NET System.Web(ASP.NET) System.WinForms UI SessionState C# Design ComponentModel HtmlControls Caching JScript Security WebControls System.Drawing Configuration VB Simple Web Services VC/MC++ Drawing2D Printing Protocols Imaging Text Debugger Discovery Description Designers System.Data (ADO.NET) System.Xml ADO SQL SDK Tools Design Adapters CorDBG System ILAsm Collections IO Security Runtime CLI InteropServices Configuration Net ServiceProcess ILDbDump Remoting Diagnostics Reflection Text SN Serialization Globalization Resources Threading ILDAsm Common Language Runtime MetaInfo JIT GC App Domain Loader PEVerify MSIL Common Type System Class Loader Platform Abstraction Networking Boot Loader Threads Sync Timers Filesystem
XSLT Serialization XPath The Shared Source CLI (Rotor) VS.NET System.Web (ASP.NET) System.WinForms UI SessionState C# Design ComponentModel HtmlControls Caching JScript Security WebControls System.Drawing Configuration VB Simple Web Services VC/MC++ Drawing2D Printing Protocols Imaging Text Debugger Discovery Description Designers System.Data (ADO.NET) System.Xml ADO SQL SDK Tools Design Adapters CorDBG System ILAsm Collections IO Security Runtime InteropServices Configuration Net ServiceProcess ILDbDump Remoting Diagnostics Reflection Text SN Serialization Globalization Resources Threading ILDAsm Common Language Runtime MetaInfo JIT GC App Domain Loader PEVerify MSIL Common Type System Class Loader Platform Adaptation Layer Networking Boot Loader Threads Sync Timers Filesystem
Distribution Stats for SSCLI(approximate as of 18 June 2002) • Packaged as 11.7MB .tgz archive • Over 1.9 million lines of code • Files: 8683 (6964 source) • Additional 5.1MB html docs archive • Additional html doc files: 1169 • Tests: 3686 units • Framework tests (in C#) • Integration and utility tests • CLI standard tests (in CIL) • PAL tests • Build output (expands to 550MB when built, over 1G w/ tests) • Approximately 1200 defined types • 22 dynamically loadable libraries • 23 executable programs
Shared Source CLI Community • Shared source CLI still evolving • Additional drops coming from Microsoft • Nascent porting communities • Abundant forks begun for research • Generics works being done at MS • New “semi-works” group at MS to interface with research community • Mailing lists and newsgroups • news:microsoft.public.shared_source.cli • http://mailserver.di.unipi.it/mailman/listinfo/dotnet-sscli (academic focus) • dotnet-rotor@discuss.develop.com
Additional Resources • Rotor homepage • http://msdn.microsoft.com/net/sscli • O’Reilly Network articles • http://www.oreillynet.com/dotnet • ECMA specs: • http://msdn.microsoft.com/net/ecma • Microsoft commercial C# and CLR SDK • http://msdn.microsoft.com/downloads • Shared source info: • http://www.microsoft.com/sharedsource