{ϊýpłԯ¹

Mono Directions

Miguel de Icaza
miguel@novell.com

(| : Atsushi Eno
atsushi@ximian.com)

2005N1117ɌJꂽMono 1.2[XO(?)̃[h}bv̂悤Ȃ́B͂B󒍂͂̐FŉtɂȂĂ܂B

͂傤Mono 1.1.10 [X΂ŁÂ͍Ƃ뎄̍őP̃[XłB ̃[XMono 1.2ɊւdvȖ@\́AWindows.Forms̎łB

̕ŁANovellMono`[̊J̕܂B MonoR~jeBɂ鑼MonoJ̑S̓IȌʂɂẮA܎܂Ƃ߂ĂƂłAJ\łB

܂ANovellɂMono̓pƂA.NET 2.0[XȂǊOIvȂǂ󂯂āÃ`[̗D揇ʂǂ̂悤ɈڂςĂ̂AƂ_܂B
ڎ

    * R[hJvZX
    * Windows.Forms
    * 2.0 T|[g
    * Mono Debugger
    * MonoDevelop IDE
    * Mono z}V: ڐA
    * Precise Garbage Collector
    * R[hэœK
    * C# RpC
    * Visual Basic RpC
    * R[hANZXZLeB
    * ASP.NET
    * APÏ萫
    * Gtk#
    * Google Summer of Code vWFNg̓
    * JScript RpC 

R[hJvZX

Mono 1.1.xxV[Y1.0.xxɑ݂鐔̏dvȏCĂƂA̓[U[EJ҂ƂɁAMono 1.1.xxV[YɈڍs邱Ƃ𐄏Ă܂B

ObV邽߂ɁA͐̂ƂsĂ܂:

    * ͑SẴeXg[XÕvZX`make distcheck'ɓAm̃oOc܂܂Łimɂ́Aʂ̂ƂĂeXgʂȂ܂܂Łj[XȂ悤ɂĂ܂B
    * NUniteXgʉ߂悤ɁA邢͊ŗL̂́iC^[lbgɃANZX̃zXgɐڑ肷悤Ȃ́jɂẮAWŖƂ悤ɂāAoOCĂ܂B
    * V@\͕ʂ̃u`ŊJAۂɂ̋@\C̃|WgɁu㗤v悤ȊJn߂܂B 

͂̕ʃu`JVƍt[[NAASP.NETiVjAVNXvbgtH[ WX^ AP[^ACairo 1.0ڍs̍ۂɓKpĂ܂BāAݓƂVM̍œKAmȃKx[WRN^AC# 2.0RpCɂčsĂ܂BiAȂ?j

̊{IȃACfBÁA1.1.xxV[Y[XƂAPȂJ[Xł͂ȂAiɃfvCł悤Ȃ̂Ƃ邽߂łB̓J[l2.6.xx[X̐_ɒʂ̂܂B

ʓIȃ[ƂĎ͐V@\܂ɃoO𒼂܂B

1.1.xxJ̃TCNōsĂƂ̏ڍׂɂẮAꂼ̃[X̃m[gQƂĂ: 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̕AMonoMono 1.2Ƀl[oȂvƂȂĂ܂B ɂ͂܂̋@\܂܂Ă܂B̌vł́AsĂ@\̏I܂łɊAꂩoOtBbNXƁAI[v\[XŃANZX\Windows.FormsAvP[VeXgiKɓ܂B _ŁA3x₷Ƃv悵Ă܂B

Mono 1.2ɂ鎄̖ڕẂA.NET 1.1APIWindows.Forms[X邱ƂłA2.0API͂Ɋ܂܂Ă͂܂B

ĂƂȂvȕs:

    * Multiple Document Interface (MDI).
    * MDI݂ꍇɂ郁j[̃}[W
    * RichTextBoxł͂̋@\܂: Ĩ}[WAӏACfgApublicȃ\bhуvpeB 

Windows.FormśA_OsGDI+ APIƁAzXgEBhEVXeƒʐMrIȃhCȍŎĂ܂B GDI+́AUnixłCairo_OGWƂĎgpĂ܂BEBhEVXẽhCoƂẮAӂ̊SȃhCoiUnix/X11Win32jƂЂƂ̊JhCoiOSXj܂B

̃}Ci[ȕs@\ƂĂ:

    * ftHgWindows.Formsc[LbgƂĂTango Project ̃A[g[N
    * MacOS XWindows.FormshCo̊
    * Rg[̓߂̃T|[g
    * _uobt@O: _uobt@Ô̓T|[gĂ܂AMicrosoft̎̃Rg[̐ݒƌ݊ێ邾̂߂ɁÃRg[ɂĖƂȂĂ܂B͂̐ݒύXă[U[̎gpP邱Ƃł傤B 

̃[Xł͖IɌ@\܂B͊OvȂ1.2ɂ͊܂܂ꂸAMono 2.0܂ő҂Ȃ΂ȂȂȂ邱Ƃł傤:

    * Pango. ݂̂ƂAWindows.Forms̓eLXgGDI+ APIŃ_OƂA]čۉeLXg╡XNvgipƃArA̍ȂǁjPangő@\gpă_O@\͑S܂B
    * Rg[GNOMẼbNAhtB[Ƀ}b`Gtk+e[}W[̍
    * GDI+ɂ̓xWGȐx[X̃[W̃T|[g܂܂Ă܂i`̂݃T|[gĂ܂jB
    * ̓\bhiȂǂ͈ؓ͂ł܂j
    *  

WinForms ̃y[WŐiڂĂ܂B
2.0 T|[g

2.0̊ՂƂȂƂ́A2003NɁAVύX_ECMAɒoĂ璼Ɏn܂܂B́AC# 2.0RpC̍ƂƁAWFlNXT|[g邽߂VM̕ύX̂߂ɁA\ȎԂ^Ă̂łB݂͂̂ƂĂ܂B

ILAZuILfBXAZu͂قڊĂAWFlNXx[X̃CuɃEhgbvł悤ɂȂ\łB

RÁAŐVłIronPython Nermerle삷邽߂ɏ\ȊxƂȂĂ܂B

JҒB́A2.0ŗp\ɂȂV@\gn߁A^CƃRpC̃oO o^悤ɂȂ܂B

݂̂ƂÃ|V[́ACuł1.1vt@CT|[gƂ̂łB2.0vt@ĆAJĂ͂̂́uꂿAƂŎxĎĂĂ傤vi󕶂A"if it breaks, you get to keep both pieces"jƂ̂łBRpCƃ^C2.0T|[gɊւoO͌pIɏCĂ܂B

.NET 2.0̃[XɔA͊J̎g݂2.0vt@C̍łdvȃGAɈړĂ܂B

Mono 1.2̃[X܂łɂ́Ãvt@C̍łdvȕ܂߂ƎvĂ܂A2.0 API̊xɂẮA񑩂łԂɂ͂܂BMono 1.2Windows.FormsɃ[X܂B

System.Xml 2 ͂قڊĂAmscorlibSystem2̃AZu͂܂̍ƂKvƂĂ܂B

ASP.NETɂẮAASP.NET ̃ZNVQƂĂB
Mono Debugger

MartinfobK̍ƂpĂ܂B݂̂ƂA1.xAvP[VfobO邱Ƃł܂i2.0Cecil̃WFlNXT|[gT|[gł傤jB

݂̃fobKeXgɂ́ASVNɂMonodebuggergpȂ΂Ȃ܂B͋}ɕύXĂ邽߂łB

͂܁AfobK̐ƃC^[tF[XɂāAtB[hobN󂯕tĂ܂B݂̂ƂAR}hCfobK݂̂삷悤ɂȂĂ܂BWebTCgɂfobK KChǂłB

fobK̖𔭌AoO|[go^ĂB
MonoDevelop IDE

LluiśAASP.NET 2.0̊JAMonoDevelop IDE̊JɈړĂ܂B

MonoDevelop̃S[ōłdvȂ̂́Aꂪ\Ƀ\bhȂ̂ƂȂāA񍐂ꂽSẴNbVNoO₷邱ƂłB

@\Iɂ́AMonoDevelop͍EclipseɗގvOC A[LeN`T|[gĂ܂: R|[lǵA_E[hāAAvP[VăRpCɃCXg[邱Ƃł܂i Q)

GUIfUCi̓͌ݐisłîƂGlade3łAp\ɂȂ莟SteticɒuƎvĂ܂jB

ŌɁAfobKC^[tF[X肵AMonoDevelop̃fobK C^[tF[XĂїLɂ邱Ƃv悵Ă܂B
Monỏz}V: ڐA

1NԂ̊ԁAMono JIT́AȑOɃT|[gĂvbgtH[ix86, PowerPC, SPARC, SPARC 64rbg, S390jɉāA3̐VA[LeN`ix86-64, Itanium, ArmvZbTjɈڐA܂B

_ŁANovell̃`[ɂ͐VڐǍv͂܂BAR~jeB̃o[ɂ́AS390xMIPS̃T|[gւ̊֐S\Ăl܂B
mȃKx[WRN^

ivłAprecise garbage collectorĂǂ󂹂΂̂j

Paolo͐VKx[WRN^ (GC) GW̍ƂɎ肩Ă܂B݂̂ƂAMonoGCC^[tF[X͂قƂǍւ\Ȃ̂łiʂGCɍւƂ͐Oɍs܂jBiƂĂʂBoehm GCς킯ł͂܂BȂƂmain treeł́j

VGCGW͐mŁAǗARpNgsRN^ƂȂ܂B܂AMonoGĆAsKvɂȂ莟Iy[eBOVXeɖ߂悤ɂȂ܂B

̃RN^vɏoׂ邽߂ɁA̃g[hIt܂BƂ΁AVGC̃X^bNێIɈƂŁA2̍p܂: Monogݍ݂ŎgplɂƂẮAVGCgp̂ȒPɂȂ܂A͐̃s߃IuWFNg(pinned objects)ɂătO𗧂Ă邱ƂɂȂł傤B

́AVGC̃R[hA2邢3ӂɃeXg\ɂȂĂ邱ƂՂł܂BR[h12ɂ͏㗤n߂邱Ƃł傤B
R[hƍœK

͐VR[hœK̂߂ɏȂ炸Ԃ₵Ă܂B̃R[h̓CMono|Wgɓłpӂo܂B㐔TԂ̂ɁA܂܂ȃpb`ê҂ĂĂB

݂̂ƂAR[h̃ptH[}XPȉ̕ɂāAƂi߂Ă܂

    * ftHgł苭͂ȍœKLɂiCCfastdcejBɂẮAǂȏdvȃObV邱Ƃ߂܂iꂽR[h̕iɂĂAJITԂɂĂjB
    * VœKt[[NiHSSAx[X̃vbgtH[jƁAɊÂœKiPREGVNPREjB
    * c[x[X̒ԕ\(IR)̉ƁACILR[h疽߃XgIR̒ڐB 

MassiŋߍsgpR[h폜 (Fast Dead Code Eliminationj̃R[h𓊍eA̐blog̓eɌfڂ܂B

MassiHSSAx[X̃t[[NƂɊÂsgpR[h폜̍ƂsĂ܂B̍œKɂĂ͍TɁi߂܂j[OXgɃr[pɓe\łB

񂱂2̍ƂIAMassiFastDCECopyPropƃCCMonõftHgœK̈ꕔƂƂɓ܂B͒ɖڂɌ錋ʂ炷Ƃł傤B

񂱂HSSǍv悪sꂽ:

    * Rs[`d(copy propagation)̎
    * Sȗ]폜 (full redundancy elimination) iI폜̓X|bg₷̂łjB
    * I]폜 (partial redundancy eliminationjiX|bĝ̂j 

R[h̕íA璷R[h폜ɂĐꎞϐ̒ǉɂāAe󂯂邱Ƃ蓾܂B̖邽߂ɁA̓WX^m (register allocation)tB[hobN@\KvƂ܂B݂͌܂݂Ȃ̂łB

L̖iт̖̑j邽߂ɁAZoltanc[x[XIRMono폜ƂJn܂B

̃Xe[W邱ƂŁAWX^mۂ̓x^[Ȏdł悤ɂȂ܂i݂̓WX^mۂc[m[hł͌܂jB񂱂ꂪpӂłA璷폜̍œKAۂɃWX^mۂƂ̃C^NVŐR[h̕iシ邩ǂA肷邱Ƃo܂B̐VIRZbgAbv̊J́Aʂ̃u`ōs\łB
C# RpC

C# RpCɂ2̃GfBV܂:

    * gmcs: ŐVECMAdli3ŁjSɃT|[gA2.0CuQƂoCi𐶐܂B
    * mcs: ŐVECMAdli3ŁjWFlNXgÔT|[g܂B1.0CuQƂoCi𐶐܂B 

2005N11_łgmcsRpC̃T|[gɂ́AЂƂȂ@\܂: WdlɂŏIiKłnullable types̕ύXłBȊÓARpC͋@\Iɂ͊ƂɂȂĂ܂B

C#RpC͎̍Ƃ̃RAƂȂĂ̂ŁA̓oOtBbNXɃtH[JXđ܂BŐVC# 3.0̋@\́Â͊ȒPłA܂҂Ȃ΂ȂȂł傤B
Visual Basic

͋NARVisual BasicRpCłB݃RpC̓x[^iKɂANovell̓RpCJւ̎ł؂܂B

Mono Brazil̐lXRpC̊JƃeiXp܂B

VB RpC͌ÂmcsforkɊÂ̂ŁAƂƂRafael Texeiraɂč܂B2.0̃WFlNXT|[g悤Ɍ݂̃RpCAbvO[hɂ́A'gmcs'̃tbVRs[n߂āAVBRpCɉꂽ܂܂ȕύX}[WKvƍlĂ܂B
R[hANZXZLeB

R[hANZXZLeB (CAS) ̓o[W1.1.4Monołp\ɂȂĂ܂B'mono'R}hCIvV --security tŎsƗLɂȂ܂B

CAS͔ɐiWiKɂAMono 1.2łp\ɂȂł傤BACAS͎MonõW[[X܂ł͊ۏ؂܂B܂R[h؂̋@\sĂ܂A2.0ł͐VCAS̋@\݂܂B

̃R[hǗĂSebastieńANXCuCASǉ֘AeXg쐬ƂőZłA݂CAS̏Ԃɂ܂Ƃ߂܂B

CAS̃p[~bVɐݒ肳邩AƂ_ɂẮAނɂ܂Ƃ߂܂B

SebastieńAFxCopɋ߂_ɊÂʓIȃoOc[쐬܂B͎̃CuœK؂CAS[ݒ肷邽߂ɎgpĂ܂BGendarmẽy[Wŏڍׂm邱Ƃo܂B
ASP.NET

́AMono 1.1.9ŁA{IɃAbvf[gđ啝ɍȃɂȂo[WASP.NET[X܂B̐Vł̓ptH[}XP邽߂̂܂܂ȃgbNgpĂ܂B̕ӂ͍uO邱ƂɂȂł傤B

Mono 1.1.10ŁAGonzalo͐VRtBO[VIvVApacheW[ɒǉ܂Bł́Amod_monoZbgAbvƁȂ̌ꃂW[ƓlɐU镑ƂɂȂ܂BƂ΁A[U[Ǘ҂.asmx, .ashx, aspxt@CJfBNg폜ĂAMonoASP.NETAASP.NETRtBO[VύX邱ƂȂ舵܂B

ASP.NET2.0T|[gɂẮAVRtBO[VAPIɈˑȂ܂܂ȃRg[ɎĂ܂ij[Ac[A}X^[y[WAObhr[т炪v́jB

Chris Toshok LluisASP.NET 2.0̊JpŁAASP.NET̋@\Qivt@CA|[^p[cAт̈ˑ֌Wj̊ՂƂȂAVSystem.Configurationl[Xy[XقڏI܂B

Chris͂܂Atlas̃I[v\[X̍Ƃs܂B
APÏ萫

APÏ萫ɂ: System.*ɂĂ͈肵ĂA"corcompare"c[gpāǍ݊؂Ă܂B.NET 1.1.xAPÍiMono 1.0 ̋@\ɋLqƂɁjĂ܂B

AMono.* l[Xy[X͂܂IȂ̂łB

Mono.CairoAZúẢɂCairo 1.0CuɂύXz܂B͈ȑOAPI̐݌vɂ̖ƐɑΏāA܂܂ȕύXs܂B

Mono.Posix AZúAVl[Xy[Xɓ܂: Mono.Unix́AUnixɃANZX邽߂́A_ȃoCfBOƃnCx.NETۂAPI񋟂܂B͂Ȃ܂Unix ANZX݂̂܂łMono.PosixƂ͑ΏƓIȂ̂łB
Gtk#

Gtk#̃o[W2.4[X܂B̃[X̐V@\͂ɂ܂Ƃ߂Ă܂B́A_ōłʓIɗp\Gtk 2.4ɃoChĂ܂B

́AGtk# 1Gtk# 2ɈڍsJ҂̂߂ɁAAbvO[hKCh쐬܂B

Gtk#̊JƂʂł́AVo[WeXgłƂėp\łBGtk+ 2.8APIɃoChÄꕔƂȂV\bhCairõvpeBɃANZXł̂łB

f[^oCfBOGtk#ŃT|[gƂ́Â݂ƂWindows.Forms܂ňꎞ~Ă܂B́AMono 1.2oׂĂAf[^oEhłGtk#̍Ƃɖ߂邱Ƃ\肵Ă܂B
Google Summer of Code vWFNg̓

GoogleSummer of CodevÔŊJꂽvWFNĝA͓Ă܂B

    * Mario SopenaɂMonodoĉiR{[VAMozillaACSSj
    * xbuild: msbuild̎c[̒Ɋ܂܂Ă܂AftHgł̓RpC܂BMarek Sieradzki
    * DataGridView, Pedro Martinez
    * xaml RpCƃwp[NXBIain McCoy
    * Javascript^C̉PBFlorian Gross 

Michael HutchinsonBlagovest DachevɂASP.NETGfB^̓v悵Ă܂B
ADO.NET 2

T SenganalADO.NET̃eiXpAADO.NET 2̋@\gpĂJ҂ƂƂɁÃvoC_Monoœ삷悤ɂƂn߂܂B
JScript

CesarJScriptMozillȃSĂJavaScripteXgʉ߂鐡O܂łĂ܂B

JScriptRpCƃ^C̐iǐՂ̂ł΁AMono webTCgɂJScript ̃y[W ĂB
܂

Ō܂ŒH蒅܂ˁB߂łƂ! 
