Presentation is loading. Please wait.

Presentation is loading. Please wait.

<Session>.

Similar presentations


Presentation on theme: "<Session>."— Presentation transcript:

1 <Session>

2 魅せます、Monoの実力。 Atsushi Enomoto Novell, Inc.
最初にatokとbansheeを起動. SL,unityのsshots, simdのtextを展開 paintdotnet, MoMA, gsharp, remixtokyo, rubyclock using System.IO; from f in Directory.GetFiles ("/etc") where f.EndsWith ("rc") select f; gsharp with Banshee using Banshee.ServiceStack; using Banshee.Sources; Describe (typeof (SourceManager)); var engine = ServiceManager.PlayerEngine; engine; Describe (engine); engine.IsPlaying (); engine.Pause(); engine.CurrentTrack; Describe (engine.CurrentTrack); engine.Play(); Atsushi Enomoto Novell, Inc.

3 はじめに About this session first public mono/moonlight session
at Microsoft the best of PDC2008 About me mono contributor since 0.17 (2002) sys.xml, and random stuff

4 Topics Mono introduction Mono and .NET interop
PDC 2008 Mono session highlights Moonlight

5 The Mono Project Mono - .NET everywhere
Moonlight - silverlight on Linux (so far) .NET Mono Windows x86 Mac x86,ppc Linux etc. x86,ppc,arm ... Silverlight Moonlight

6 Mono: Introduction

7 2001: the bootstrap Miguel de Icaza: GNOMEプロジェクト創始者 ※Ximian
でもMicrosoft技術が大好き COM → “Unixをもう少しマシなものにしよう” .NET → “ECMA標準の利用” Mono rationale: .NETの生産性をLinux/GNOME環境で実現 .NETアプリケーションをcross platformに オープンソース.NET環境の実現

8 Mono: .NET everywhere できること .NETアプリケーションのビルドと実行 everywhere! 再ビルドは原則不要
主な開発内容 mono: CLI ランタイム (VES) mcs: C# コンパイラ, 各種ツール クラスライブラリ xsp: ASP.NETサーバ $ mono [options] xsp2.exe [options]

9 Mono: GNOME dev. platform
GTK#: C# binding for gtk+ GTK#アプリケーション: banshee, f-spot, beagle, tomboy, gnome do ... MonoDevelop IDE (Gtk# GUIデザイナ)

10 Mono in games Second Life (Linden Lab) オブジェクト - Linden scriptで記述
ILにコンパイルしてmonoで実行 Unity (Unity3D) Mac OS X上で動作する統合ゲーム開発実行環境 Nintendo WiiやiPhoneでも実行可能 ※ Mono on Wii, Mono on iPhone FusionFall (Cartoon Network)

11 Mono for .NET Interoperability

12 Demo Windows Forms on Linux [paint-mono] ASP.NET on Linux

14 Mono does not support ... .NET 3.0: 未実装
Windows依存: COM, MSMQ, WMI, ACL etc. 一部のランタイム機能 世代別GC コード アクセス セキュリティ ※ClickOnce

15 クラスライブラリの互換性 互換性の実現と現状の把握 未実装のAPI MonoTODOAttribute
throw new NotImplementedException(); アセンブリから公開APIを取得して比較 API status page ( テストケースの作成と.NET上での動作確認 …といっても、目で確認してはいられない

16 MoMA MoMA (Mono Migration Analyzer)
ユーザ アプリケーションから、未実装のAPIや存 在しないAPI、P/Invokeの利用をチェック 大まかな互換性チェックに有用 DEMO

17 MoMA MoMA (Mono Migration Analyzer)
ユーザ アプリケーションから、未実装のAPIや存 在しないAPI、P/Invokeの利用をチェック 大まかな互換性チェックに有用 DEMO ※アプリケーションがMonoで動くかどうかは、 やってみないと分からない。でも完全には 動かないということを事前に知ることは可能。

18 more porting blockers ※Monoは.NET互換性実現のためだけに存在しているわ けではない
プラットフォーム毎の相違は尊重する ファイルシステムの相違 ドライブ、大文字・小文字、slash/backslash → MONO_IOMAP環境変数 デフォルト文字コード (特にASP.NET) → web.config, gmcs -codepage:932

19 more porting blockers ランタイム シリアライゼーション private実装に依存
→レポートがあれば簡単なものは修正される P/Invoke [DllImport (“user32.dll”)] ANSI文字列マーシャリング (monoはutf-8) → FooBarW() / <dllmap> in *.config / pray … and bugs (please report!)

20 ここまでのまとめ Mono: .NET everywhere, rich GNOME, embedded
Mono 2.0 ≒ .NET NET 3.5の一部 no .NET 3.0, no Windows-ism MoMAで移植NGコードをチェック 移植には障害も多いが、解決できることが多い

21 The Root of Mono Framework

22 Mono Runtime (VES) written in C (組み込みAPIも公開) VESの機能はほぼサポート
ガベージコレクション ※古典的 アセンブリローダ、GAC、side-by-side P/Invoke (*.so on Linux, *.dylib on OS X) (未) コード アクセス セキュリティ ※(済)coreclr IL verifier (Mono 2.4) Win32 I/Oエミュレーション

23 付論: native code interop
P/Invoke - [DllImport (“gdiplus”)] static extern Status GdipCreateLineBrushI(...); icall - [MethodImpl (MethodImplOptions.InternalCall)] static extern bool CreateDirectory(...); Win32 I/Oエミュレーション ves_icall_System_IO_MonoIO_CreateDirectory(...); Sys.Drawing, Windows.Forms libgdiplus

24 付論: 多様な実行方式 実行方式 インタープリタ [deprecated], JIT (Just In Time),
AOT (Ahead Of Time), full AOT (2.2) full AOTは組み込みに有用 実行方式 ネイティブコード生成 処理できるIL 速度 移植性 interp しない(VESが解釈・実行) 全て JIT 実行中随時 AOT 実行前 一部JIT実行 full AOT 一部エラー

25 Build your own runtime mkbundle ランタイム、ライブラリ、アプリケーションの一 本化 mono linker
独自のランタイムを作成可能 ※.NET CF linker + mkbundle: minimal deployment mscorlib Hello.exe Console mscorlib Hello.exe

26 Mono 2.2 highlight: Mono.Simd
Mono.Simd.dll managed codeでSIMDの活用が可能 C#/IL上は単なるメソッド/演算子の呼び出し JIT最適化モジュールsimd Mono.Simdの利用を検知して、SIMD命令に変換 mono --optimize=[simd|-simd] -v -v -v -v test.exe

27 mcs: Mono C# Compiler C#で書かれたC#コンパイラ 当初は.NET上で開発
Mono.CSharp.dll: C# Evaluator C# compiler as a service (API) mcs net1_1.cs gmcs net_2_0_or_3_5.cs smcs net_2_1.cs (silverlight)

28 Demo: gsharp Mono.Attach 他のMonoプロセスをinjectして操作できるAPI
gsharp: C# shell with VM attach API

29 ここまでのまとめ monoランタイム: いろいろな可能性 Mono.Simd: カスタムJIT最適化の好例
C# Evaluatorはおもしろい。gsharpで試せる

30 Moonlight

31 Moonlight brief history
2007/5: MS, Mix '07でSilverlightの公表 これに参加したMiguelが短期間での実装を計画 2007/6: ReMix '07 Franceでデモ成功 2007/9: MS/Novell提携 test cases / media codec 2008/3: Moonlight at Mix '08 ( John Lam ) 2009/1: Moonlight 1.0公開

32 Moonlight technology layers
[1.0] User contents (HTML, JavaScript) silverlight.js media codec mozilla plugin (C++) libmoon (C++) User MS OS Mono

33 Moonlight technology layers
XAP package App DLLs SDK DLLs [2.0] User contents (HTML, JavaScript) silverlight.js CoreCLR DLR言語 media codec mozilla plugin (C++) Silverlight Controls (dll) DLR libmoon (C++) System.Windows .Browser.dll mscorlib.dll, System.dll, System.*.dll DO/DP System.Windows.dll mono runtime (VES) User MS OS Mono

34 Microsoft helps Moonlight
DLR (, IronPython, IronRuby): MS-PL Silverlight Controls: MS-PL testcases media codec その他メール等でのヘルプ

35 Try Moonlight 1.0 2009/1/20リリース Silverlight 1.0相当
数十件のSL 1.0サイトで確認 (see mono website) 数か月間のバグ修正

36 Moonlight 2.0 work (ongoing)
Silverlight managed codeが利用可能 Moonlightでも2.0から CoreCLRの実装 ランタイム: IL verifier, CoreCLRセキュリティ (monoランタイムで未実装だった) クラスライブラリ - linker, tunerで互換APIを実現 Mono.Cecil: CILを操作するライブラリ full CLRライブラリのDLLを加工 存在しないメンバをinternalにするなどして隠蔽 不要なコードは削除

37 Demo Moonlight 1.0 Moonlight 2.0

38 </Session> Mono resources: website: http://mono-project.com
blogs: Contact: search atsushieno mono meeting


Download ppt "<Session>."

Similar presentations


Ads by Google