Mono Update Miguel de Icaza miguelximian com Project

  • Slides: 16
Download presentation
Mono Update. Miguel de Icaza (miguel@ximian. com)

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

Project Overview • Mono: – Open Source implementation of. NET Framework • Development tools

Project Overview • Mono: – Open Source implementation of. NET Framework • Development tools • Runtime engine • Compatible class libraries. – Based on the ECMA tc 39 tg 1/tg 2/tg 3 standards • #1 Fun Open Source Project. – Also, the most important one ; -)

Need • Reduce cost of development: – Evolution: 850 k-wc, 17 people, 3 years.

Need • Reduce cost of development: – Evolution: 850 k-wc, 17 people, 3 years. – 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%) –

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,

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

Runtime Engine • Services: – JIT/AOT compilation. – Garbage Collection. – Thread management. • Language independent

Runtime Engine

Runtime Engine

Mono Today • Self hosting – C# written in C# – Second generation compile

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# – Open. GL# – Apache + ASP. NET • Other: – #Zip. Lib – #WT

Mono components Soap Web Clients Enterprise Svcs. #Zip Mono. Posix/PEA ADO. NET Win. Forms

Mono components Soap Web Clients Enterprise Svcs. #Zip Mono. Posix/PEA ADO. NET Win. Forms Xml. Rpc. Net Relax. Ng Soap Web Servers Xslt/XPath Open. GL# Ogg# Core classes Xml Gtk# Mozilla# Mono Runtime Engine

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

Documentation Project • Monkeyguide – Tutorial on. Net, Mono, Gtk#, Glade, etc. • Api Docs: – Ecma body. – Gtk# documentation. • The Spanish Hackers • Integrate all the sources – Mono. Doc

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

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

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

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 C++

CLS: Interop subset C++

Platforms • JIT: – X 86: Linux, xx. BSD, Windows. – PPC: RSN. •

Platforms • JIT: – X 86: Linux, xx. BSD, Windows. – PPC: RSN. • Interpreter: – Strong. Arm (Hello Malte!) – PPC, Sparc, S 390 • Hard to balance: – Desire to add more optimizations vs ports.

More information • Mono: – http: //www. go-mono. com • Microsoft. NET: – http:

More information • Mono: – http: //www. go-mono. com • Microsoft. NET: – http: //msdn. microsoft. com/net • Ikvm (http: //www. ikvm. net) • Team: – mono-devel-list@ximian. com • Author: – miguel@ximian. com