An overview of the SSCLI Distribution Mark Lewin Microsoft Research

Slides:



Advertisements
Similar presentations
Network II.5 simulator ..
Advertisements

Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12 Introduction to ASP.NET.
Ahead of Time Dynamic Translation PreJit/NGEN by any other name George Bosworth Microsoft MRE04 March 21, 2004.
Common Language Infrastructure (CLI) Introduction and Class Library Factorization Hewlett-Packard Intel Microsoft.
By Sam Nasr September 28, 2004 Understanding MSIL.
.NET Framework Overview
Using.NET Platform Note: Most of the material of these slides have been taken & extended from Nakov’s excellent overview for.NET framework, MSDN and wikipedia.
SSCLI (Shared Source Common Language Infrastructure) (code name: Rotor)
History of.Net Introduced by Microsoft Earlier technology was VC++ and VB VC++ comes with so many library and VB was so easy to use and not flexible to.
SSCLI: The Microsoft Shared Source CLI Implementation Mark Lewin Microsoft Research
The Java Language. Topics of this Course  Introduction to Java  The Java Language  Object Oriented Programming in Java  Exceptions Handling  Threads.
.NET Framework Overview Pingping Ma Nov 16 th, 2006.
Introduction. What is.Net? The hype: “Microsoft.Net is a set of Microsoft software technologies for connecting information, people, systems, and devices.
Overview of the.NET Framework. What is the.NET Framework A new computing platform designed to simplify application development A consistent object-oriented.
C#.NET C# language. C# A modern, general-purpose object-oriented language Part of the.NET family of languages ECMA standard Based on C and C++
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
JETT 2003 Java.compareTo(C++). JAVA Java Platform consists of 4 parts: –Java Language –Java API –Java class format –Java Virtual Machine.
Thursday Evening 6.30VB.NET Introduction 7.30Break for food 8.00VB.NET Migration 8.45Q & A 9.00Done.
Introducing the Common Language Runtime. The Common Language Runtime The Common Language Runtime (CLR) The Common Language Runtime (CLR) –Execution engine.
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
Platforms and tools for Web Services and Mobile Applications Introduction to C# Bent Thomsen Aalborg University 3rd and 4th of June 2004.
Java Security Updated May Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security.
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Effective C# 50 Specific Way to Improve Your C# Item 50 Scott68.Chang.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
MODERN OPERATING SYSTEMS Third Edition ANDREW S. TANENBAUM Chapter 11 Case Study 2: Windows Vista Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall,
.NET Framework Introduction: Metadata
1 8/29/05CS360 Windows Programming Professor Shereen Khoja.
Session 1 - Introduction and Data Access Layer
Meir Botner David Ben-David. Project Goal Build a messenger that allows a customer to communicate with a service provider for a fee.
CIS NET Applications1 Chapter 2 –.NET Component- Oriented Programming Essentials.
Introduction to .NET Framework
Understanding Code Compilation and Deployment Lesson 4.
Introduction .NET Framework
C# Overview and Features. Content I.History of C# II.Architecture III.How to install IV.Features V.Code Sample VI.Microsoft.NET Platform VII.Why use C#
C# Programming Fundamentals of Object-Oriented Programming Fundamentals of Object-Oriented Programming Introducing Microsoft.NET Introducing Microsoft.NET.
Managed C++. Objectives Overview to Visual C++.NET Concepts and architecture Developing with Managed Extensions for C++ Use cases Managed C++, Visual.
.NET Framework Danish Sami UG Lead.NetFoundry
MSIL & CLI Kun-Yuan Shieh.
Java2C# Antonio Cisternino Part V. Outline Assembly & co. Visual Studio environment Example: using DirectX from C#
C# Versus Java Author: Eaddy, Marc Source: Software Tools for the Professional Programmer. Dr. Dobb's Journal. Feb2001, Vol. 26 Issue 2, p74 Hong Lu CS699A.
tom perkins1 XML Web Services -.NET FRAMEWORK – Part 1 CHAPTER 1.1 – 1.3.
C# EMILEE KING. HISTORY OF C# In the late 1990’s Microsoft recognized the need to be able to develop applications that can run on multiple operating system.
Advanced Computer Science Teaching with the Shared Source Common Language Infrastructure.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
PRIOR TO WEB SERVICES THE OTHER TECHNOLOGIES ARE:.
Architecture of.Net Framework. Multiple Language Support  IL (MSIL or CIL) – Intermediate Language  It is low-level (machine) language, like Assembler,
Object Oriented Software Development 4. C# data types, objects and references.
DEV394.NET Framework: Migrating To Managed Code Adam Nathan QA Lead Richard Lander Program Manager Microsoft Corporation.
Copyright © 2009 Elsevier Chapter 15:: Run-time Program Management Programming Language Pragmatics Michael L. Scott.
Module 4: Deployment and Versioning. Overview Introduction to Application Deployment Application Deployment Scenarios Related Topics and Tools.
Bruno Cabral “Reflection, Code Generation and Instrumentation in the.NET platform” University of Coimbra.
The Execution System1. 2 Introduction Managed code and managed data qualify code or data that executes in cooperation with the execution engine The execution.
Text Introduction to.NET Framework. CONFIDENTIAL Agenda .NET Training – Purpose  What is.NET?  Why.NET?  Advantages  Architecture  Components: CLR,
METADATA IN.NET Presented By Sukumar Manduva. INTRODUCTION  What is Metadata ? Metadata is a binary information which contains the complete description.
Just-In-Time Compilation. Introduction Just-in-time compilation (JIT), also known as dynamic translation, is a method to improve the runtime performance.
INTRODUCTION BEGINNING C#. C# AND THE.NET RUNTIME AND LIBRARIES The C# compiler compiles and convert C# programs. NET Common Language Runtime (CLR) executes.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Intro to ASP.NET CS-422 Dick Steflik. What is.NET As applications in the Enterprise become more and more netcentric and less and less standalone.NET is.
Introduction to the Microsoft.NET Framework Chris Wastchak Student Ambassador to Microsoft.
Computer System Structures
.NET Framework.
.NET Native & CoreRT.
Muen Policy & Toolchain
An Introduction to the Shared Source Common Language Infrastructure (SSCLI) Damien Watkins Copyright Watkins 2002.
Microsoft .NET 3. Language Innovations Pan Wuming 2017.
.NET and .NET Core 2. .NET Runtimes Pan Wuming 2017.
Programming in C# CHAPTER 1
Chapter 15:: Run-time Program Management
Presentation transcript:

An overview of the SSCLI Distribution Mark Lewin Microsoft Research

Stats for SSCLI Archive (approximate as of 27 March 2002) Packaged as single compressed file archive 1.9 million lines of code –1.15M of C and C++ –625K of C# –125K of CIL (intermediate language) –Smattering of assembly code 5900 source files (9700 total) –2900 tests Build output –1200 defined types –About 20 dynamically loadable libraries –About 22 executable programs

The Lay of the Land Four major areas in source code 1.Runtime “execution engine” 2.Frameworks 3.Compilers and tools 4.Portability layer, tests, and build infrastructure Other important points of interest –License –Documentation –Samples

Root Directory: License & Doc Shared source license –Allows for non-commercial redistribution of both binary and source, including modified versions –Simple restrictions (primarily non-commercial use) READFIRST.html –Points to relnotes.html with late breaking items –Points to docs/index.html Also important, but not included: –ECMA specifications –Microsoft.NET Frameworks SDK

Area #1: Execution Engine Heart of component-oriented infrastructure Converts metadata, resources, and CIL (on disk as PE/COFF image) into running code Great interoperability with “unmanaged code” JIT compilation and IL verification Cross-language exception handling Language-agnostic, object-capable, type system Automatic heap and stack management Dynamic code loading Evidence-based security (code access security)

Look For: PE Reading/Writing “Portable Executable” format –Based on PE/COFF (see ceefilegen for details) –Uses existing extension mechanism –Three kinds of CLI data: metadata, CIL instructions, resources Persistent packaging for types –Methods include stack frame size, types of local variables and parameters, pinned variable info, and exception handler table –Powerful metadata extensibility Logical components as “assemblies” –Enforced security boundary, see fusion for binding logic –Also contains refs to other assemblies and version info –Cryptographic “strong names” an option (required for sharing)

Look For: Metadata Facilities Metadata is heart of CLI execution model –Metadata interwoven with instruction set –Read-only PE pages shared between processes –Tokens used for addressing metadata –Data stored in tables (heaps when variable length) –Tokens are concatenated table + record number –Optimized for load time at expense of generation complexity/speed; compact within these parameters Three levels of API –Reflection for managed code –Both internal and external API for C/C++, see md

Look For: CIL Basis for most managed code execution in the CLI Simple stack machine model – see vm directory Typeless opcodes defined in opcodes.def –Verifiable subset – see fjit directory for verification –Signed and unsigned via opcode, not type CIL code is JIT compiled to run under CLI management –Type layout, control, and dispatching Typed variable argument lists, dynamically typed pointers Tail calls, virtual dispatch, call via function pointer –Rich set of conversion operations, calling conventions, interop –Exception handling (two-pass) –Garbage collection

Area #2: Frameworks A “minimal toolkit” for the 21 st century programmer Base class library –Collections, arrays, strings, and other compound datatypes –Globalization and formatting –System services (threads, I/O, synchronization, etc.) –Security Floating point and extended arrays libraries Networking, regular expressions, and XML libraries Includes access to runtime infrastructure –Reflection and custom attributes –Remoting, unmanaged interop, serialization, and marshaling –AppDomains, Assemblies, GC, other execution engine features

Area #3: Compilers and Tools Full-featured C# compiler (also used in build) JScript compiler written entirely in C# Additional developer tools –clix, the shared source CLI program launcher –Assembly tools: resource compiler, assembly linker, metainfo metadata viewer, assembler, disassembler –Debuggers: cordbg managed debugger, plus a debug extension for working on managed code from C/C++

Interesting C# Features to Examine Unified type system (boxing) Extensible attributes Properties Events Indexers struct types Enumeration types Delegate types override Unsafe code Conditional methods Interop (parameter marshaling) Multi-dimensional arrays Operator overloading User-defined conversions Variable parameter lists ref and out parameters Unsigned types Decimal type Conditional compilation foreach statement Overflow checking Explicit interface implementations

Area #4: Build, Port, & Test Platform Adaptation Layer (PAL) in pal directory –System resources all consumed via PAL –Less than 250 partially complete Win32 APIs –Missing system features layered into PAL on any given platform –“PAL runtime” contains shared code for upper level tools Good specification can be found in pal_guide.html Loading and teardown of context Threading model, scheduling, and timers Synchronous file I/O, asynchronous network I/O Synchronization (critsec, mutex, semaphore, events) Debugging and tool support Additional work for port: –JIT (very portable 3 layer macro emitter design) –Small amount of assembly code in execution engine

Build Infrastructure and Utilities Build scripts and programs –Scripts for environment setup and build –build, binplace, nmake, and resource compiler utilities Utility configuration programs –gacutil – manage the “global assembly cache” –sn – manage assembly signing –peverify – verify CIL in an assembly –caspol – modify policy for “code access security” –storeadm – manage “isolated storage”

Build Bootstrap Process Initial phase –Build PAL using native toolchain –Build build tools against PAL –Complete by building resource compiler and PAL runtime using newly compiled build tools Main phase has complex interdependencies –Unmanaged frameworks, compilers, and tools, are built –Managed portions of runtime and frameworks are built –Assemblies and runtime are configured Finally, when managed portions are used at runtime, they are, of course, JIT compiled

Tests Incredibly handy when modifying code! Two major areas: managed code and PAL PAL suites –Test driver script is pvtun.pl –Can be used on new PAL implementations Quality suites –Test driver script is rrun.pl –Three primary areas in this release IL verification “BVT” smoke tests – many small programs Tests for the BCL

Additional Resources ECMA specs: Microsoft commercial C# and CLR SDK Shared source info: