mboost-dp1

Mono

Mono klar i version 2.6

- Via Miguel de Icaza's blog - , indsendt af arne_v

Open source-udgaven af Microsofts .NET, Mono, er nu udkommet i version 2.6, fra version 2.4, ligesom MonoDevelop er nået op i version 2.2 fra version 2.0.

I den nye udgave af Mono er der mange nyheder, bl.a. understøttelse af flere C# 4.0 API’er, som også findes i det kommende .NET 4.0. Der er også kommet en ny debugger kaldet Soft Debugger, som har integration direkte med MonoDevelop til Unix og OS X.

En anden nyhed er muligheden for at bruge Low Level Virtual Machine (LLVM) i stedet for en Just In Time (JIT) compiler, hvilket forbedrer ydelsen.

Med MonoDevelop 2.2 er der nu officiel understøttelse af Windows, hvorfor der nu også er kommet en Windows-installer, ligesom der også er kommet understøttelse for OS X.

Du kan læse meget mere om Mono 2.6 på denne side, hvor du finder mere info om MonoDevelop 2.2 på denne side.





Gå til bund
Gravatar #1 - David Munch
16. dec. 2009 14:30
Hvorfor hopper de i .2 inkrementer..? O_o
Gravatar #2 - OxxY
16. dec. 2009 14:34
Mono-project skrev:
Mono's Version Policy Explained

For an X.Y.Z tuple:
X is the major version mumber
Y is the minor version number
Z is a revision number

The major version number is used to indicate which ABI/API version Mono uses. When it changes, there is no gaurantee that existing code will continue to work (though the utmost effort will be made to maintain compatibility). The major version changes infrequently.

The Minor version number consists of two sets: even numbers (stable releases) and odd numbers (development releases). The only improvements that stable releases receive are bug fixes; all new feature work is done in development releases. Features may be backported from a development release to a stable release, if appropriate. Stable releases are API and ABI stable, and can be expected to have minimal changes.

Development releases may break ABI/API compatibility, especially if the stable release they lead up to will change the Major version number. In particular, development releases are likely to add new API, and the use of new API can change between development releases. When a development release is converted into a stable release, we will maintain the API/ABI, and the new stable release should be fully compatible with the previous stable series having the same major number.

Revision numbers signify the release of a Major/Minor pair. Within a stable series, ABI/API compatibility should not be broken when the revision changes.
Gravatar #3 - mgX
16. dec. 2009 15:27
hvis de klaphatte nu gad addresserer de essentielle problemer med mono, såsom manglende understøttelse af WCF (havde de ikke sidst jeg kiggede...) samt en GC der ikke suger kogler...

EDIT: "WCF client and server, the subset exposed by Silverlight 2.0."

så glem det med WCF...dog på høje tid de fik det...skidtet er fra .net 3 :(
Gravatar #4 - Windcape
16. dec. 2009 15:31
Jeg kan også anbefale at læse følgende: http://tirania.org/blog/archive/2009/Nov-23.html i relation til nyheden.

Specielt hvis man har interesse i Silverlight, eller GUI udvikling på Linux.

mgX (3) skrev:
hvis de klaphatte nu gad addresserer de essentielle problemer med mono
Der er desværre mangel på contributers, og med en ret fanatisk omverden, der mener Stallman er gud, og Mono/Novell er ondskaben selv, går det langtsom fremad.

Det hjælper jo heller ikke at en lang række tekniske kompetenter brugere på newz.dk, siger de fravælger Mono pga. mulige pantentproblemer som kun opstår når de tager deres sølvpapirshat på.
Gravatar #5 - mgX
16. dec. 2009 15:35
#4 men hvorfor spilder de tid på at understøtte egentligt ubrugelige ting, når der er helt basale ting fuldstændigt galt ??

Mono har ikke haft en GC der på nogen måde fungerede nogensinde...


Mono to be bought by google pretty please!
Gravatar #6 - Windcape
16. dec. 2009 15:40
#5

Garbage Collector? Mig bekendt bruger de Boehm, hvilket virker fint. Kan du specificere det lidt mere?
Gravatar #7 - decx
16. dec. 2009 15:49
Tror han taler om: http://www.mono-project.com/Compacting_GC

Som ikke er klar endnu, men Boehm virker fint ? Hvilke specifikke klager har du ?
Gravatar #8 - arne_v
16. dec. 2009 15:55
#GC

Nu har jeg ikke brugt mono ret meget.

Men der er faktisk enkelte steder hvor Mono bruges i production og jeg kan ikke forestille mig at det ville være muligt uden at GC virkede.

Gravatar #9 - illishar
16. dec. 2009 16:42
Jeg har faktisk for nyligt været med til at bygge et .NET GUI cross-platform program, med System.Windows.Forms...

... og det lykkedes! ^^

(Jeg har i de sidste "mange" år, løbende forsøgt. Og det er første gang at et rigtigt program har kunne porteres.)

Men det er nu stadigvæk ikke uden problemer. Og Localization ser ikke ud til at være synderligt implementeret endnu.


Personligt har jeg dog altid syntes, at Mono-folkene brude fokusere noget mere på at understøtte .NET 2.0 til fulde, fremfor at implementere 3.0, 3.5 og nu 4.0.

Lad os kaste nogle opløftende buzz ord efter dem:

STABILITEEEEEET
PERFORMAAAAANCE
KOMPATIBILITEEEEEEET
Gravatar #10 - webwarp
16. dec. 2009 16:45
#3 "klaphatte", hvis du er så utilfreds med deres arbejde, kunne du jo tage og bidrage til projektet i stedet for at brokke dig?
Gravatar #11 - webwarp
16. dec. 2009 16:47
#9 så vidt jeg har forstået, så er .net 3 åbnet op til brug for mono, hvor de med .net 2 stod lidt på egne ben..
Gravatar #12 - arne_v
16. dec. 2009 16:52
#9

Hvis jeg skulle lave en portabel GUI app i C# ville jeg nok kigge på GTK# først.
Gravatar #13 - Andos
16. dec. 2009 19:57
Hvis de virkeligt vil implementere hele Windows Forms så ser jeg intet problem i at lave sine GUI's i det.
Jeg skrev en klon af Disk Usage Analyzer (fra standard Ubuntu installationen) i C# med Windows Forms og en masse drawing stuff til at tegne de cirkulere charts. Det meste så ud til at virke bortset fra nogle enkelte detaljer som de nok måske allerede har rettet eller snart får rettet.
Gravatar #14 - jopsen
16. dec. 2009 21:16
#12 enig... Har selv brugt det en del... Det er godt nok meget besværligt en windows.forms... Men kan tilgængel også nogle andre ting... som er vildt fede...

Og efter at have brugt både Qt og Gtk, må jeg nok indrømme at jeg ikke har meget til overs for den måde man laver layouts i Windows.Forms... WinForms har heller ikke actions og ikoner... Og mange af deres widgets er ikke specielt rige... Label med markup findes f.eks. både i Qt og GTK og det er vildt fedt... ville godt nok nødigt leve uden...
Gravatar #15 - Windcape
16. dec. 2009 21:22
jopsen (14) skrev:
Og efter at have brugt både Qt og Gtk, må jeg nok indrømme at jeg ikke har meget til overs for den måde man laver layouts i Windows.Forms
Virkelig? Windows har da i det mindste support for layers, og en ordenlig docking model.

Prøv at lægge 2 knapper oven på hinanden i GTK, og så senere ændre på deres z-index. Det kan ikke lade sig gøre i GTK, men virker fint i Windows og WPF.

Jeg vil nødigt level uden docking modellen. En typisk grid layout som i GTK er utrolig fustrende at lave det mindste advancede layout med!
jopsen (14) skrev:
WinForms har heller ikke actions og ikoner
Jo? Derudover bruger man events i C#, hvilket også er implementeret nogenlunde (men dårligt) i GTK#.

jopsen (14) skrev:
Og mange af deres widgets er ikke specielt rige... Label med markup findes f.eks. både i Qt og GTK og det er vildt fedt... ville godt nok nødigt leve uden...
På Windows er de mere rige en hvad GTK tilbyder. Ved ikke præcist hvor meget de har implementeret under Mono.

Men tankegangen bag QT og GTK er god og dårlig. Windows Presentation Foundation, WPF, tager det bedste fra alle verdener, og giver et endnu bedre resultat.

Jeg håber meget på at Mono vil give sig i kast med opgaven, da GTK og QT udvikler sig utrolig langtsomt i forhold til WPF/WinForms.
Gravatar #16 - illishar
17. dec. 2009 08:58
#12 Ja, GTK har altid været fint understøttet under Mono. Men kun fordi at det var den lette løsning. At implementere .NET Framework'et uden System.Windows.Forms, svarer til at implementere Java uden swt, awt og swing. Eller VB6 uden ActiveX.

Og hvis man som virksomhed begynder at fedte rundt med GTK i .NET, så kan man næsten ligeså godt implementere projektet i Java. (Så slemt er Java heller ikke.) .NET Framework'et uden Windows.Forms er til gengæld et hobby-projekt.

Men som jeg nævnte tidligere, så er System.Windows.Forms ved at være på plads, brugbart og stabilt i Mono ;)
Gravatar #17 - illishar
17. dec. 2009 09:21
Et perfekt .NET Framework til *nix kunne være vildt fedt. Man ville ligeså stille kunne konvertere en hel *nix distribution til C# og på den måde reducere kode-mængden med, hvad 40-60%? (Og man vil stadigvæk have adgang til alle de eksisterende *nix-programmer.) Og hvis man ser bort fra macro'erne, så er ANSI C ret nemt at konvertere. Og der er rigtig meget ANSI C ;)
Damn, et godt overblik og indsigt man ville kunne få i en sådan distribution.
(Og nej, CosmOS og Singularity vil næppe nogensinde blive brugbare.)

... indtil da er jeg nødt til at forsætte med det her amatør Windows OS. Bah!
Gravatar #18 - arne_v
17. dec. 2009 14:54
#16

Alt har en pris. Man kan vælge GTK# funktionaliteten og ikke have problemer med portabiliteten. Eller man kan vælge Win Forms og konstant skulle teste om de features man bruger nu virker.

Mono projektet siger selv (http://go-mono.com/status/status.aspx?reference=3.5&profile=2.0&assembly=System.Windows.Forms) om System.Windows.Forms assembly:

33 missing members
158 members som smider NotImplementedException

så der er stadig muligheder for problemer.


Gravatar #19 - arne_v
17. dec. 2009 14:58
#17

Jeg går ud fra at det kun er alle libraries og utilities du vil konvertere - ikke kernen.

Men det er vel også 95% af koden.

Og det burde give en reduktion i kode størrelsen for samme funktionalitet på ca. 60%.

Jeg er dog ikke sikker på at det er en nem konvertering. For at kunne opnå en optimal kode som faktisk ville være de 60% mindre skal der nok redesignes grundigt - ikke bare omskrive fra C til C#, men også omskrive fra C style til C# style.

Gravatar #20 - Windcape
17. dec. 2009 15:16
Et endnu størrere problem er at få en række gamle C hackere til at forstå at events og callbacks er noget mere handy end SIGNALS.
Gravatar #21 - arne_v
17. dec. 2009 16:31
#20

????

Events og callback kan fint laves i C med function pointers.

Signals er mere en (underlig) form for exception håndtering.
Gravatar #22 - Windcape
17. dec. 2009 17:56
#21

Sig til det GTK og QT folket. De benytter SIGNALS til alle form for UI events.

GTK# bruger annotations til at mappe de forskellige signals til metoder, som så for tilknyttet event handlers senere.
Gravatar #23 - arne_v
17. dec. 2009 19:05
#22

Lyder mystisk.

Bruger de SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV eller SIGTERM?

Gravatar #24 - arne_v
17. dec. 2009 19:13
#23

Nå - nu googlede jeg lige GTK og signals.

Første begynder tutorial fik forklaret at:
- GTK signals ikke er C signals.
- GTK signals bruger callback og function pointers
- GTK signals er et observer pattern implementeret i et proceduralt sprog

Så jeg forstår slet ikke #20.

Gravatar #25 - Windcape
17. dec. 2009 21:15
arne_v (24) skrev:
GTK signals er et observer pattern implementeret i et proceduralt sprog
Ser ud til at der er navne dublikering.

Signals i GTK og QT forstand er en række strings med tilknyttet string callback. Pointen er mere at det ikke er strong typed, og ideen om at sende strings istedet for at udnytte events i C# er utrolig dumt.

GTK# er bedre end QT# på det punkt. Men generelt har GTK# en række problemer i forhold til mapping, som jeg gerne så løst.

(Arbejder pt. på patches og koncept eksempler på API forbedringer)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login