1 / 17

The Microsoft Shared Source CLI (aka “Rotor”)

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.

damisi
Download Presentation

The Microsoft Shared Source CLI (aka “Rotor”)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The MicrosoftShared Source CLI(aka “Rotor”) David Stutz Microsoft Corporation

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. Quick Tour

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

More Related