ܸѴΎÎ¢ȾюŤ⎡Ԏގ

Mono Directions

Miguel de Icaza
miguel@novell.com

( : Atsushi Eno
atsushi@ximian.com)

2005ǯ1117˸줿Mono 1.2꡼ľ(?)ΥɥޥåפΤ褦ʤΡʸϤ顣ϤοǲդˤʤäƤޤ

䤿Ϥ礦Mono 1.1.10 ꡼ФǡϺΤȤ䤿κΥ꡼Ǥ Υ꡼Mono 1.2˴ؤפ̤ǽϡWindows.FormsμǤ

ʸǡNovellMonoγȯ򼨤ޤ Monoߥ˥ƥˤ¾MonoȯŪʸ̤ˤĤƤϡ޻䤬ޤȤƤȤǤꡢͽǤ

ޤNovellˤMonoѤȤ.NET 2.0꡼ʤɳŪװʤɤơΥ̤ͥɤΤ褦˰ܤѤäƤΤȤޤ
ܼ

    * ɳȯץ
    * Windows.Forms
    * 2.0 ݡ
    * Mono Debugger
    * MonoDevelop IDE
    * Mono ۥޥ: ܿ
    * Precise Garbage Collector
    * ӺŬ
    * C# ѥ
    * Visual Basic ѥ
    * ɥƥ
    * ASP.NET
    * APIΰ
    * Gtk#
    * Google Summer of Code ץȤ
    * JScript ѥ 

ɳȯץ

Mono 1.1.xx꡼1.0.xx¸ߤ¿νפʽäƤȤ顢䤿ϥ桼ȯԤȤˡMono 1.1.xx꡼˰ܹԤ뤳Ȥ侩Ƥޤ

ꥰå򤹤뤿ˡ䤿Ͽ¿ΤȤԤäƤޤ:

    * 䤿ƤΥƥȤ꡼Υץ`make distcheck'礷ΤΥХĤޤޤǡΤˤϡ̤ΤȤƤƥȤ̤ʤޤޤǡ˥꡼ʤ褦ˤƤޤ
    * 䤿NUnitƥȤ̲᤹褦ˡ뤤ϴĶͭΤΡʥ󥿡ͥåȤ˥ΥۥȤ³ꤹ褦ʤΡˤˤĤƤϡɸ̵Ȥ褦ˤơХƤޤ
    * ǽ̤Υ֥ǳȯݤˤεǽᥤΥݥȥˡ־Φפ褦ʳȯϤޤ 

䤿Ϥ̥֥ȯ򿷤ʸȹե졼ASP.NETʿġˡץåȥե 쥸 Cairo 1.0ܹԤκݤŬѤƤޤơƱȤVMκŬΤʥ١쥯C# 2.0ѥˤĤƹԤäƤޤʤʤ?

δŪʥǥϡ1.1.xx꡼꡼Ȥñʤ볫ȯ꡼ǤϤʤʾ˥ǥץǤ褦ʤΤȤ뤿Ǥϥͥ2.6.xx꡼̤Τޤ

Ūʥ롼Ȥƻ䤿Ͽǽޤ˥Хľޤ

1.1.xxȯΥǹԤƤȤξܺ٤ˤĤƤϡ줾Υ꡼ΥΡȤ򻲾ȤƤ: 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.1.9, 1.1.10.
Windows.Forms

Windows.Formsʬ䤿MonoMono 1.2˥͡ʤװȤʤäƤޤ ˤϤޤĤεǽޤޤƤޤ󡣻䤿ηײǤϡ­Ƥ뵡ǽ򺣷νޤǤ˴줫Хեåȡ䤿ץ󥽡ǥǽWindows.FormsץꥱƥȤʳޤ ǡ3䤹Ȥײ褷Ƥޤ

Mono 1.2ˤ䤿ɸϡ.NET 1.1APIWindows.Forms꡼뤳ȤǤꡢ2.0APIϤ˴ޤޤƤϤޤ

ƤȤʤפ­ʬ:

    * Multiple Document Interface (MDI).
    * MDI¸ߤˤ˥塼Υޡ
    * RichTextBoxǤϤĤεǽޤ: Υޡ󡢲վ񤭡ǥȡĤpublicʥ᥽åɤӥץѥƥ 

䤿Windows.Formsϡ󥰤ԤGDI+ APIȡۥȥɥƥ̿Ūʥɥ饤ФξǼƤޤ 䤿GDI+ϡUnixǤCairo󥰥󥸥ȤƻѤƤޤɥƥΥɥ饤ФȤƤϡդĤδʥɥ饤СUnix/X11Win32ˤȤҤȤĤγȯɥ饤СOSXˤޤ

ĤΥޥʡ­ǽȤƤ:

    * ǥեȤWindows.Formsġ륭åȤȤƤTango Project Υȥ
    * MacOS XWindows.Formsɥ饤Фδ
    * ȥƩΥݡ
    * ֥Хåե: ֥Хåե󥰼ΤϥݡȤƤޤMicrosoftμΥȥȸߴݻΤˡ¿Υȥˤ̵ȤʤäƤޤ䤿Ϥѹƥ桼λѴ뤳ȤǤ礦 

Υ꡼ǤŪ˸뵡ǽĤޤϳ׸ʤ¤1.2ˤϴޤޤ줺Mono 2.0ޤԤʤФʤʤʤ뤳ȤǤ礦:

    * Pango. ߤΤȤWindows.FormsϥƥȤGDI+ APIǥ󥰤Ȥ¤ꡢäƹݲƥȤʣ祹ץȡʱѸȥӥκʤɡˤPangoεǽѤƥ󥰤뵡ǽޤ
    * ȥGNOMEΥåɥե˥ޥåGtk+ơޥ⥸塼κ
    * GDI+ˤϥ٥١Υ꡼ΥݡȤޤޤƤޤʶΤߥݡȤƤޤˡ
    * ϥ᥽åɡʴʤɤϰϤǤޤ
    *  

WinForms ΥڡǿĽܤƤޤ
2.0 ݡ

2.0δפȤʤȤϡ2003ǯ溢ˡѹECMAФƤľ˻ϤޤޤϡC# 2.0ѥκȤȡͥꥯ򥵥ݡȤ뤿VMѹΤˡʬʻ֤ͿƤΤǤߤϤⴰΤȤƤޤ

IL֥ILǥ֥ϤܴۤƤꡢͥꥯ١Υ饤֥⤹˥饦ɥȥåפǤ褦ˤʤͽǤ

ʬϡǿǤIronPython Nermerleư뤿˽ʬʴ٤ȤʤäƤޤ

ȯãϡ2.0ѲǽˤʤäǽȤϤᡢ󥿥ȥѥΥХ Ͽ褦ˤʤޤ

ߤΤȤ䤿Υݥꥷϡ饤֥Ǥ1.1ץե򥵥ݡȤȤΤǤ2.0ץեϡȯƤϤΤΡ֤⤷ä顢ξȤǻ٤ƻäƤƤ礦סʲʸʸ"if it breaks, you get to keep both pieces"ˤȤΤǤѥȥ󥿥2.0ݡȤ˴ؤХϷ³Ū˽Ƥޤ

.NET 2.0Υ꡼ȼ䤿ϳȯμȤߤ2.0ץեκǤפʥꥢ˰ưƤޤ

Mono 1.2Υ꡼ޤǤˤϡΥץեκǤפʬޤ᤿ȻפäƤޤ2.0 APIδ٤ˤĤƤϡ«Ǥ֤ˤϤޤMono 1.2Windows.Forms˥꡼ޤ

System.Xml 2 ϤܴۤƤꡢmscorlibSystem2ĤΥ֥Ϥޤ¿κȤɬפȤƤޤ

ASP.NETˤĤƤϡASP.NET Υ򻲾ȤƤ
Mono Debugger

MartinǥХåκȤ³ƤޤߤΤȤ1.xץꥱǥХå뤳ȤǤޤ2.0CecilΥͥꥯݡȤ襵ݡȤǤ礦ˡ

ߤΥǥХåƥȤˤϡSVNˤMonodebuggerѤʤФʤޤ󡣤ϵ®ѹƤ뤿Ǥ

䤿ϤޡǥХå¤ȥ󥿡եˤĤơեɥХåդƤޤߤΤȤޥɥ饤ǥХåΤߤư褦ˤʤäƤޤ䤿WebȾˤǥХå ɤɤǤ

⤷ǥХåȯ顢ХݡȤϿƤ
MonoDevelop IDE

LluisϡASP.NET 2.0γȯ顢MonoDevelop IDEγȯ˰ưƤޤ

䤿MonoDevelopΥǺǤפʤΤϡ줬ʬ˥åɤʤΤȤʤäơ𤵤줿ƤΥå򵯤Х䤹뤳ȤǤ

ǽŪˤϡMonoDevelopϺEclipseץ饰 ƥ򥵥ݡȤƤޤ: ݡͥȤϡɤơץꥱƥѥ뤻˥󥹥ȡ뤹뤳ȤǤޤ 򻲾)

GUIǥʤϸ߿ʹǤʺΤȤGlade3ǤѲǽˤʤ꼡Stetic֤ȻפäƤޤˡ

ǸˡǥХå󥿡եꤷ衢MonoDevelopΥǥХå 󥿡եƤͭˤ뤳Ȥײ褷Ƥޤ
Monoβۥޥ: ܿ

1ǯ֤δ֡Mono JITϡ˥ݡȤƤץåȥեx86, PowerPC, SPARC, SPARC 64ӥå, S390ˤ˲äơ3Ĥοƥx86-64, Itanium, Armץåˤ˰ܿޤ

ǡNovellΥˤϿܿηײϤޤ󡣤ߥ˥ƥΥСˤϡS390xMIPSΥݡȤؤδؿɽƤͤ⤤ޤ
Τʥ١쥯

ʤĤפǤprecise garbage collectoräƤɤФΤ

PaoloϿ١쥯 (GC) 󥸥κȤ˼꤫äƤޤߤΤȤMonoGC󥿡եϤۤȤɺؤǽʤΤǤ̤GC˺ؤȤϿ˹ԤޤˡʤȤäƤ̤Boehm GCѤä櫓ǤϤޤ󡣾ʤȤmain treeǤϡ

GC󥸥ΤǡꡢѥȲԤ쥯ȤʤޤĤޤꡢMonoGCϡ꤬ɬפˤʤ꼡襪ڥ졼ƥ󥰥ƥ᤻褦ˤʤޤ

Υ쥯®˽в٤뤿ˡĤΥȥ졼ɥդȼޤȤСGCΥåݼŪ˰Ȥǡ2ĤκѤޤ: MonoȤ߹ߤǻѤͤˤȤäƤϡGCѤΤñˤʤޤϿ¿Υԥαᥪ֥(pinned objects)ˤĤƥե饰ΩƤ뤳ȤˤʤǤ礦

䤿ϡGCΥɤ2뤤3դ˥ƥȲǽˤʤäƤ뤳ȤפǤޤɤ12ˤϾΦϤ뤳ȤǤ礦
ȺŬ

䤿ϿɺŬΤ˾ʤ餺֤䤷ƤޤΥɤϥᥤMonoݥȥ겼ǤѰդĤĤޤ֤ΤˡޤޤʥѥåƤΤԤäƤƤ

ߤΤȤɤΥѥեޥ󥹤ʲʬˤĤơȤʤƤޤ

    * ǥեȤǤ궯ϤʺŬͭˤʥ饤fastdceˡˤĤƤϡɤʽפʥꥰå򤹤뤳Ȥޤ줿ɤʼˤĤƤ⡢JIT֤ˤĤƤˡ
    * Ŭե졼HSSA١Υץåȥեˤȡ˴ŤŬPREGVNPREˡ
    * ĥ꡼١ɽ(IR)βäȡCILɤ̿ꥹIRľ 

MassiǶ®Իѥɺ (Fast Dead Code EliminationˤΥɤƤblogƤ˷Ǻܤޤ

MassiHSSA١Υե졼Ȥ˴ŤԻѥɺκȤԤäƤޤκŬˤĤƤϺˡʤ⤦᤮ޤ˥᡼󥰥ꥹȤ˥ӥ塼ѤƤͽǤ

ä󤳤2ĤκȤ򽪤顢MassiFastDCECopyPropȥ饤MonoΥǥեȺŬΰȤȤޤľܤ˸̤⤿餹ȤǤ礦

ä󤳤HSSAηײ褬¹Ԥ줿:

    * ԡ(copy propagation)μ
    * ; (full redundancy elimination) ʬŪϥݥåȤ䤹ΤǤˡ
    * ʬŪ; (partial redundancy eliminationˡʥݥåȤΤⰷΤ񤷤 

ɤʼϡĹɺˤäѿɲäˤäơƶ뤳Ȥޤ褹뤿ˡ䤿ϥ쥸 (register allocation)եɥХå뵡ɬפȤޤϸߤޤ¸ߤʤΤǤ

嵭ʤӤ¾ˤ褹뤿ˡZoltanĥ꡼١IRMonoȤ򳫻Ϥޤ

Υơä뤳Ȥǡ쥸ݤϥ٥ʻŻǤ褦ˤʤޤʸߤϥ쥸ݤĥ꡼ΡǤϸޤˡä󤳤줬ѰդǤ顢ĹκŬºݤ˥쥸ݤȤΥ󥿥饯ɤʼ夹뤫ɤ򡢷ꤹ뤳ȤޤοIRåȥåפγȯϡ̤Υ֥ǹԤͽǤ
C# ѥ

C# ѥˤ2ĤΥǥ󤬤ޤ:

    * gmcs: ǿECMA͡3ǡˤ˥ݡȤ2.0饤֥򻲾ȤХʥޤ
    * mcs: ǿECMA͡3ǡˤ饸ͥꥯĥΤ򥵥ݡȤޤ1.0饤֥򻲾ȤХʥޤ 

2005ǯ11ǤgmcsѥΥݡȤˤϡҤȤ­ʤǽޤ: ɸͤˤǽʳǤnullable typesѹǤʳϡѥϵǽŪˤϴȤˤʤäƤޤ

C#ѥϻ䤿κȤΥȤʤäƤΤǡ䤿ϥХեå˥ե򤢤³ޤǿC# 3.0εǽϡΤϴñǤޤԤʤФʤʤǤ礦
Visual Basic

䤿ϵǯͳVisual BasicѥĤǤߥѥϥ١ʳˤꡢNovellϥѥ鳫ȯؤλǤڤޤ

Mono Brazilο͡ѥγȯȥƥʥ󥹤Ѥޤ

VB ѥϸŤmcsfork˴ŤΤǡȤȤRafael Texeiraˤäƺޤ2.0Υͥꥯ򥵥ݡȤ褦˸ߤΥѥ򥢥åץ졼ɤˤϡ'gmcs'Υեå女ԡϤơVBѥ˲ä줿ޤޤѹޡɬפȹͤƤޤ
ɥƥ

ɥƥ (CAS) ϥС1.1.4MonoǤѲǽˤʤäƤޤ'mono'򥳥ޥɥ饤󥪥ץ --security դǼ¹Ԥͭˤʤޤ

CAS˿ŸʳˤꡢMono 1.2ǤѲǽˤʤǤ礦CASϼMonoΥ᥸㡼꡼ޤǤϴݾڤޤ󡣤ޤɸڤεǽ­Ƥޤ2.0ǤϿ̤CASεǽ¸ߤޤ

ΥɤƤSebastienϡ饹饤֥CAS°ɲäϢƥȤȤ¿˻ǤߤCASξ֤򤳤ˤޤȤޤ

CASΥѡߥå󤬤ꤵ뤫ȤˤĤƤϡबˤޤȤޤ

SebastienϡFxCop˶ᤤ˴ŤŪʥХȯġޤϻ䤿Υ饤֥ŬڤCAS롼ꤹ뤿˻ѤƤޤGendarmeΥڡǾܺ٤Τ뤳Ȥޤ
ASP.NET

䤿ϡMono 1.1.9ǡŪ˥åץǡȤ˹®ʥˤʤäСASP.NET꡼ޤ䤿οǤϥѥեޥ󥹤뤿ΤޤޤʥȥåѤƤޤդϺ֥뤳ȤˤʤǤ礦

Mono 1.1.10ǡGonzaloϿưե졼󥪥ץApache⥸塼ɲäޤǤϡmod_mono򥻥åȥåפȡ¾θ⥸塼Ʊͤ˿񤦤ȤˤʤޤȤС桼Ԥ.asmx, .ashx, aspxեǥ쥯ȥ꤫Ƥ⡢MonoASP.NETASP.NETե졼ѹ뤳Ȥʤ갷ޤ

ASP.NET2.0ݡȤˤĤƤϡե졼API˰¸ʤޤޤʥȥ뤬˼Ƥޤʥ˥塼ĥ꡼ޥڡåɥӥ塼Ӥ餬׵᤹Ρˡ

Chris Toshok LluisASP.NET 2.0γȯѤǡASP.NETεǽʥץե롢ݡѡġӤΰ¸طˤδפȤʤ롢System.Configuration͡ॹڡۤܽλޤ

ChrisϤޤAtlasΥץ󥽡κȤ¿Ԥޤ
APIΰ

APIΰˤĤ: System.*ˤĤƤϰꤷƤꡢ䤿"corcompare"ġѤơθߴ򸡾ڤƤޤ.NET 1.1.xAPIϡMono 1.0 εǽ˵ҤȤˡ˼Ƥޤ

Mono.* ͡ॹڡϤޤήưŪʤΤǤ

Mono.Cairo֥ϡβˤCairo 1.0饤֥ˤѹۼޤ䤿ϰAPI߷פˤäн褷ơޤޤѹԤޤ

Mono.Posix ֥ϡ͡ॹڡ礵ޤ: Mono.UnixϡUnix˥뤿ΡʥХǥ󥰤ȥϥ٥.NETäݤAPI󶡤ޤϤʤޤUnix ΤߤޤǤMono.PosixȤоŪʤΤǤ
Gtk#

Gtk#ΥС2.4꡼ޤΥ꡼οǽϤˤޤȤƤޤϡǺǤŪѲǽGtk 2.4˥ХɤƤޤ

䤿ϡGtk# 1Gtk# 2˰ܹԤ볫ȯԤΤˡåץ졼ɥɤޤ

Gtk#γȯȤ¦̤ǤϡС󤬥ƥǤȤѲǽǤGtk+ 2.8API˥ХɤΰȤʤ뿷᥽åɤCairoΥץѥƥ˥ǤΤǤ

ǡХǥ󥰤Gtk#ǥݡȤȤϡߤΤȤWindows.FormsޤǰߤƤޤ䤿ϡMono 1.2в٤Ƥ顢ǡХɤǤGtk#κȤ뤳ȤͽꤷƤޤ
Google Summer of Code ץȤ

GoogleSummer of CodeץΤǳȯ줿ץȤΤĤ礷Ƥޤ

    * Mario SopenaˤMonodocΤʥܥ졼Mozilla硢CSS
    * xbuild: msbuildμĥ꡼˴ޤޤƤޤǥեȤǤϥѥ뤵ޤMarek Sieradzki
    * DataGridView, Pedro Martinez
    * xaml ѥȥإѡ饹Iain McCoy
    * Javascript󥿥βFlorian Gross 

䤿Michael HutchinsonBlagovest DachevˤASP.NETǥײ褷Ƥޤ
ADO.NET 2

T SenganalADO.NETΥƥʥ󥹤ѤADO.NET 2εǽѤƤ볫ȯԤȤȤˡΥץХMonoư褦ˤȤϤޤ
JScript

CesarJScriptMozillaƤJavaScriptƥȤ̲ᤵޤǤäƤޤ

⤷JScriptѥȥ󥿥οĽפΤǤСMono webȤˤJScript Υڡ 򸫤Ƥ
ޤ

Ǹޤé夭ޤ͡ǤȤ! 
