16
Mono Update. Miguel de Icaza ([email protected])

Mono Update. Miguel de Icaza ([email protected])

Embed Size (px)

Citation preview

Page 1: Mono Update. Miguel de Icaza (miguel@ximian.com)

Mono Update.

Miguel de Icaza

([email protected])

Page 2: Mono Update. Miguel de Icaza (miguel@ximian.com)

Project Overview

• Mono:– Open Source implementation of .NET Framework

• Development tools• Runtime engine• Compatible class libraries.

– Based on the ECMA tc39 tg1/tg2/tg3 standards

• #1 Fun Open Source Project.– Also, the most important one ;-)

Page 3: Mono Update. Miguel de Icaza (miguel@ximian.com)

Need

• Reduce cost of development:– Evolution: 850k-wc, 17 people, 3years.– GC, safe runtime eliminate source of errors.– Threaded runtime enable many new uses.

• Keep multi-language culture• Better languages to develop multi-year

software.

Page 4: Mono Update. Miguel de Icaza (miguel@ximian.com)

Development Tools

• Compilers produced by the Mono team:– C# compiler (100%)– IL Assembler (90%)– VB.NET (50%)– Jscript (10%)

• Debugger– Both Mono and Unix applications.

• Documentation system

Page 5: Mono Update. Miguel de Icaza (miguel@ximian.com)

C#

• High level systems programming language– Strong typing– OO, single inheritance, multiple interface– Application development language– Not appropriate for scripting tasks.

• Attributes– Novel mechanism: annotate elements

• C# 2.0: working with ECMA team.– Iterators, lamba, generic types,

Page 6: Mono Update. Miguel de Icaza (miguel@ximian.com)

Runtime Engine

• Services:– JIT/AOT compilation.– Garbage Collection.– Thread management.

• Language independent

Page 7: Mono Update. Miguel de Icaza (miguel@ximian.com)

Runtime Engine

C#

Cobol

JavaScript

C++

Eiffel

Fortran

Java

Visual Basic

CommonIntermediateLanguage

JIT

ATC

X86

PPC

MIPS

StrongARM

SPARC

Page 8: Mono Update. Miguel de Icaza (miguel@ximian.com)

Mono Today

• Self hosting– C# written in C#– Second generation

compile engine.

• Components:– Kernel– Xml (xpath,xslt)– asp.net (webforms)– ado.net ++

• Mono:– Mozilla#– Gtk#– Vorbis#– OpenGL#– Apache + ASP.NET

• Other:– #ZipLib– #WT

Page 9: Mono Update. Miguel de Icaza (miguel@ximian.com)

Mono components

Mono Runtime Engine

Soap Web Servers Xslt/XPath

ADO.NET WinForms

Core classes Xml

Soap Web Clients Enterprise Svcs.

Gtk# Mozilla#

OpenGL# Ogg#

XmlRpc.Net RelaxNg

#Zip MonoPosix/PEA

Page 10: Mono Update. Miguel de Icaza (miguel@ximian.com)

Documentation Project

• Monkeyguide– Tutorial on .Net, Mono, Gtk#, Glade, etc.

• Api Docs:– Ecma body.– Gtk# documentation.

• The Spanish Hackers• Integrate all the sources

– MonoDoc

Page 11: Mono Update. Miguel de Icaza (miguel@ximian.com)

New VM

• Second Generation VM:– Pre-compilation– Portability– Optimization platform.

• Internally:

– CIL -> MIR -> LIR

– SSA transform (a few today, more tomorrow)

– Register Allocation + Instruction scheduling.

Page 12: Mono Update. Miguel de Icaza (miguel@ximian.com)

Mono and Interop

• Cross Language Interop– Similar in spirit to CORBA interop subset

• Reusing existing C code:– Platform Invoke– Custom Marshalling.

• Embedding the Mono Runtime:– Just like embedding Python.

Page 13: Mono Update. Miguel de Icaza (miguel@ximian.com)

Interesting case: Java

• IKVM: jit compiler from jvm to cil.– Jeroen developed it on .NET in Windows.– Zoltan fixed the Mono issues.

• Exposes Java <-> .NET object bridge.• Very robust.

– Runs Eclipse, Jython, others.

Page 14: Mono Update. Miguel de Icaza (miguel@ximian.com)

CLS: Interop subset

Java C#

Jscript

Eiffel

Common Type System

Lisp

C++

Page 15: Mono Update. Miguel de Icaza (miguel@ximian.com)

Platforms

• JIT:– X86: Linux, xxBSD, Windows.– PPC: RSN.

• Interpreter:– StrongArm (Hello Malte!)– PPC, Sparc, S390

• Hard to balance:– Desire to add more optimizations vs ports.

Page 16: Mono Update. Miguel de Icaza (miguel@ximian.com)

More information

• Mono:– http://www.go-mono.com

• Microsoft.NET:– http://msdn.microsoft.com/net

• Ikvm (http://www.ikvm.net)• Team:

[email protected]

• Author:– [email protected]