Microsoft Shared Source CLI

Download Report

Transcript Microsoft Shared Source CLI

SSCLI:
The Microsoft Shared Source
CLI Implementation
Mark Lewin
Microsoft Research
[email protected]
Announcing: Availability of
Microsoft 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 CLI
and .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/dot
net-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 ([email protected])
for a copy of the SSCLI Toolkit which
includes tutorial DVD
Questions?