Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 22 reacties
Bron: Mono-project

Mono logo (75 pix) De ontwikkelaars van Mono hebben hebben maandag versie 2.4 uitgebracht. Mono is een opensource-implementatie van het .Net Framework. Door gebruik te maken van Mono kunnen ontwikkelaars crossplatformapplicaties schrijven die niet alleen onder Windows zullen werken, maar ook op bijvoorbeeld Mac OS X en Linux. De software bevat onder andere een C#-compiler, een .Net compatible runtime en twee sets api's. De eerstgenoemde verzorgt compatibiliteit met Microsofts .Net Framework inclusief ondersteuning voor asp.net, ado.net en een aantal andere componenten en de andere biedt allerlei Linux- en Unix-specifieke functies. Hieronder zijn de belangrijkste veranderingen sinds versie 2.2 samengevat:

Major Highlights
  • SIMD support in Mono
    SIMD constructors are now optimized. A few APIs have been renamed to better suit the Design Guidelines.
  • No more polling
    One of the most challenging components of Mono was supporting Thread.Interrupt in a way that worked across multiple operating systems. In previous versions of Mono, the only solution we found that was portable was to poll every 100ms for potential interruptions requested by another thread.
    Starting with Mono 2.4, that polling code is no longer present and instead a cross-platform solution to the problem is being used that provides both support for Thread.Interrupt() and does not consume CPU cycles.
Other Changes
  • The old JIT has been removed, and only the new linear IR based JIT is available.
  • The --enable-parallel-mark=yes argument to configure is now the default, this speeds up garbage collections on multi-core machines.
  • WaitHandle now supports SignalAndWait.
  • MarshalByRefObject supports MemberwiseClone
  • COM: support NULLs IDispatch and IUnknown.
Behavioral Changes
  • Our System.Diagnostics.Process implementation will now properly raise the termination event on OutputDataReceived and ErrorDataReceived. See bug 459450 (https://bugzilla.novell.com/show_bug.cgi?id=459450) for details.
Mono 2.0 (481 pix)
Versienummer:2.4
Releasestatus:Final
Besturingssystemen:Windows 2000, Linux, BSD, Windows XP, macOS, Solaris, Windows Server 2003, Windows Vista, Windows Server 2008
Website:Mono-project
Download:http://www.go-mono.com/mono-downloads
Licentietype:Voorwaarden (GNU/BSD/etc.)
Moderatie-faq Wijzig weergave

Reacties (22)

Even ter lering en vermaak. Moeten de applicaties echt geschreven worden met cross-platform functionaliteit in gedachten? Of werkt het zolang er maar alleen .net functies/routines worden aangeroepen.
En dien je dit in combinatie met wine te installeren? Of/en kan wine dit als .net aanbieden aan bv paint.net (om maar meteen iets extreem te noemen)

Thnx @hieronder

[Reactie gewijzigd door engibenchi op 1 april 2009 22:35]

Even ter lering en vermaak. Moeten de applicaties echt geschreven worden met cross-platform functionaliteit in gedachten? Of werkt het zolang er maar alleen .net functies/routines worden aangeroepen.
De standaard .NET api's zouden gewoon moeten werken. Mono heeft wel een aantal eigen API's (bijv. GTK#, en nu iets voor SIMD-instructies).
En dien je dit in combinatie met wine te installeren? Of/en kan wine dit als .net aanbieden aan bv paint.net (om maar meteen iets extreem te noemen)
Nee, Wine implementeert de Win32-API. Dat is een stuk moeilijker omdat het vaak heel slecht gedocumenteerd is en complexer in elkaar zit. Mono kan gewoon zonder Wine draaien, direct op Linux/BSD/Mac.

Maar als het .Net programma direct Windows-DLL's aanroept werkt het niet. Daarvoor kun je dan Microsoft's .Net (alleen Windows) of de Windows-versie van Mono onder Wine draaien. Dit kun je gebruiken voor bijvoorbeeld Paint.net (dat programma doet aanroepen naar Win32-functies, die worden dan door Wine afgehandeld)

Overigens is MonoDevelop 2.0 ook uitgebracht :)

[Reactie gewijzigd door JanDM op 31 maart 2009 22:31]

De intentie is wel dat je applicaties geschreven met gebruik van .NET overal kunt draaien. Echter, het volledige .NET api wordt (nog) niet ondersteund, maar wel het leeuwendeel. Er is een tool om te analyseren welk deel van je .NET applicatie niet op mono kan draaien: http://www.mono-project.com/MoMA
Dan heb je nog mono specifieke api's en ingebouwde functies, de eerste zullen wellicht op MS.NET kunnen draaien, de tweede niet. Overigens draait mono ook op windows.
Tenslotte zijn er allerhande details zoals dat bestanden op *nix case sensitive zijn en de directory seperator '/' is en niet ' \'.

Wine werkt geheel anders, daarop draai je windows binaries, en Mono maakt platform-specifieke binaries van cross-platform broncode. Mono wordt niet alleen gebruikt voor compatibiliteit met windows, zo zijn sommige bekende linux programma's voor mono geschreven puur omdat de auteurs dit een productieve technologie achten.
weet iemand of dit stabiele processen oplevert?
Hier is een lijst van bedrijven die Mono gebruiken. Daar zitten een aantal grote namen tussen, en Mono word gebruikt in redelijk populaire programma's als F-Spot en Banshee. Het zal dus best stabiel zijn :)

[Reactie gewijzigd door JanDM op 31 maart 2009 22:38]

In welk opzicht bedoel je dat?

In Mono (of elke taal, elk platform) kan je een brakke applicatie schrijven die 'iets' onderuit kan halen.

Of bedoel je meer: Is Mono productie geschikt? Als je de behoefte hebt om cross-platform tools te schrijven zou ik zeggen: Give it a go, maar als je je complete business erop wilt gaan baseren zou ik nog even de kat uit de boom kijken, of beter / gedegen onderzoek doen dan op de meuktracker een 1-regel comment te plaatsen.
Het idee achter Mono en eigenlijk .NET waar Mono een cross-platform afgeleide van is, is dat via de tussenlaag Mono/.NET systemcalls worden gedaan.
Door niet rechtstreeks met het OS te praten maar via die tussenlaag is het volgens Microsoft mogelijk stabielere applicaties te maken. Doordat er een garbage-collector meeloopt, worden niet meer gebruikte variabelen vrijgegeven aan het OS als vrij geheugen, waardoor Mono/.NET applicaties in principe niet geheugenintensieve applicaties hoeven te worden.
Sinds de samenwerking tussen Novell en Microsoft heeft Mono een enorme boost gekregen (van Microsoft) met het idee dat er daardoor meer C# programmeurs bij zullen komen.
Is Mono ook zo compatible met .net, dat je het in plaats van .net kunt installeren en als zodanig gebruiken? Of is dat te simpel gedacht.
In theorie wel, al weet ik niet hoeveel van alles al is geimplementeerd. Ik geloof dat sowiso alles tot .Net 2.0 is geimplementeerd, en als er weinig/geen veranderingen in WinForms zijn naar .Net 3.0/3.5 zit je daarmee ook behoorlijk veilig.
Ze zijn momenteel geloof ik bezig met betere winforms ondersteuning, op Linux en Windows, aangezien Mono programmas momenteel op beide platforms in w98 stijl rendert.
Het bovenstaande changelog is niet volledig het volgende stuk hoort er nog bij, het volledige verhaal is na te lezen op http://www.mono-project.com/Release_Notes_Mono_2.2
Mono.Posix

Support for Real Time Signals, it is now possible to fetch the list of real-time signals in a cross-platform way.
Performance

Optimized the XPath code which reduces memory consumption in our own tests by 15%.

DateTime.TryParse does no longer depend on internal try/catches.

Loading resources from a satellite assembly does not internally throw exceptions.


ASP.NET


Precompiled Web Sites

Mono's ASP.NET stack can now run precompiled ASP.NET web sites generated with Visual Studio or using the aspnet_compiler. This allows Mono to support ASP.NET applications written in languages other than C# or applications that take advantage of new VB.NET features not available on Mono's VB compiler.

Typically web sites are compiled like this from the command line:

c:\test\>aspnet_compiler -f -p c:\test\BlogEngine.Web -v /blog c:\test\output

Alternatively, this can be done with Visual Studio using the "Publish" feature.
Performance: Single Domain Support

If only one application is configured in mod_mono or Mono's XSP Mono will eliminate the intermediate multiplexor/demultiplexor for requests and instead send and receive the data straight from one domain to the kernel.

This eliminates a number of calls into Mono's Remoting stack that is required when multiple applications are running.
Winforms

Many improvements to the DataGridView control to better support DataBinding.

[Reactie gewijzigd door brainball op 31 maart 2009 21:55]

En dan hier de changelog van versie 2.4
Ja mono, leuk spul. Heb er ook ooit eens een app in geschreven. Ik vind het alleen jammer dat monodevelop (wat geschreven is voor gnome) zo brak draait in een niet-gnome omgeving. Dat is namelijk de enige fatsoenlijke ontwikkelingstool voor mono voor zover ik weet.
Monodevelop draait super onder KDE4 hoor! Niet beter of minder goed dan onder Gnome...
Bij mij crashte het anders om de haveklap. :-) Mischien dat het beter is geworden in monodevelop2. Die heb ik nog niet getest.
Dat was inderdaad zo met MD2 beta 1, maar dat is vrijwel helemaal verholpen met beta2. Hier draait MD2 op Kubuntu in ieder geval prima!
Kan ik hiermee een willekeurige .net 2.0 (of hoger) applicatie die onder windows is gecompileerd in visual studio op linux draaien?

Of zitten hier weer restricties aan?
logischerwijs kan je geen directe dll imports gebruiken die betrekking hebben op Windows dll files. Zoals shell functies.

Maar als je in de applicaties alleen standaard .Net functies gebruikt, moet het geen enkel probleem zijn.
Dan kan ik mij voorstellen als je de mono-windows versie onder wine draait dat het dus nog beter werkt?

[Reactie gewijzigd door Vincenz0 op 1 april 2009 09:41]

Lijkt mij dubbelop. En ik gok een grote kans van niet, aangezien zelfs #D niet draaid op Mono Windows op Windows, laat staan Wine.

[Reactie gewijzigd door Dykam op 10 april 2009 09:02]

Ja, zolang het programma geen rechtstreeks gebruik maakt van de windows api (dus geen directe aanroepen doet naar windows dlls) is dat geen probleem.
Hmm, waarom meld het nieuwsitem dat er een dotNet compitabele Api is en een Unix api 'die misschien deels op windows draait'. Feit is, is dat er zeg maar 3 grote delen zijn (de gui-FW niet meegerekend).

De dotNet namespaces; System, Microsoft.
De Unix namespace
En de Mono namespace, dit is een cross-platform deel, de meeste binaries hierin roepen geen platform-specifieke functies aan.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True