Upload
jared-beasley
View
215
Download
0
Embed Size (px)
Citation preview
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 ;-)
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.
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
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,
Runtime Engine
• Services:– JIT/AOT compilation.– Garbage Collection.– Thread management.
• Language independent
Runtime Engine
C#
Cobol
JavaScript
C++
Eiffel
Fortran
Java
Visual Basic
CommonIntermediateLanguage
JIT
ATC
X86
PPC
MIPS
StrongARM
SPARC
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
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
Documentation Project
• Monkeyguide– Tutorial on .Net, Mono, Gtk#, Glade, etc.
• Api Docs:– Ecma body.– Gtk# documentation.
• The Spanish Hackers• Integrate all the sources
– MonoDoc
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.
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.
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.
CLS: Interop subset
Java C#
Jscript
Eiffel
Common Type System
Lisp
C++
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.
More information
• Mono:– http://www.go-mono.com
• Microsoft.NET:– http://msdn.microsoft.com/net
• Ikvm (http://www.ikvm.net)• Team:
• Author:– [email protected]