Blog Mono de Christophe Narbonne

Blog d'un passioné pour les passionés. Knowledge is Power

RecentComments

Comment RSS

[Mono] public preview 2.8 est là.

Voilà que les vacances d'été se sont écoulées, entre les google summer of code et autre, vous vous doutez que le projet mono n'est pas tombé.

Les versions s'espacent de plus en plus à cause de la stabilisation liée à la maturité de l'api de mono, alors que les versions s'enchainaient, ça fait depuis décembre qu'il n'y a pas eu de version majeure.

Pour la version 2.6 de mono, Novell vendait un support commercial, la version 2.8 n'aura pas ce statut de support long terme, la prochaine version majeure de mono (3.0) parcontre devrait en bénéficier.

Donc la nouvelle version est bien sur le point d'arriver, cette version apporte beaucoup de nouveautées, et je vais vous faire un résumé francophone des améliorations en perspective.

L'organisation de l'équipe et des sources, déjà une nouveauté.

Très attachée à Gnome, l'équipe de mono a suivi ce projet dans le choix du gestionnaire de version. L'équipe de mono utilise désormais git pour gérer ses sources. Choix plus étonnant, ils ont laissé à github la tache de les héberger. Github est un site d'hébergement de source (voir sourceforge, google code...) qui est concus pour git. Là où ce choix étonne les puristes, c'est que github est un prestataire de service qui n'ouvre pas les sources de sa machinerie avec pour business model, faire payer les gens qui utilisent github en voulant garder leurs sources privées.

Ainsi, on peut voir l'activité de l'équipe mono et le set d'outil mono à cette adresse:
http://github.com/mono

Et pour ceux que ça interesserait, l'activité de la personalité emblématique de mono que je ne présente plus par peur de passer pour un fanboy:
http://github.com/migueldeicaza

Git et l'interet de la décentralisation.

Git était conçus à la base par Linus Torvalds pour gérer les source du kernel linux. L'utilisation de cet outil change entièrement la manière de travailler par rapport à ce qu'il y avait avant, c'est à dire SVN. L'organisation d'équipe n'est pas du tout pareille, mais je vais éviter de trop m'attarder sur ce sujet.

Comment s'ogranise un workflow git?
Les bases de git sur le site du zero.

Conséquences de ce changement.

Évidement, je n'en parlerais pas si c'était purement anecotique, voici quelques conséquences: Le code est plus testé, il est plus facile pour un contributeur externe de faire quelquechose et de le soumettre, il sera plus simple pour les gens qui veulent une version modifiée pour leur besoins de mono de la maintenir à jour, et du coup ça encourage les forks.

Du coup, mono aura à la fois un écosystème plus ouvert et plus de controle.

Notes de version de mono 2.8

Bon après ce petit aparté sur git qui j'espère vous encourragera à vous renseigner et/ou à contribuer voici les principales amélioration mono 2.8.

Garbage Collector

Le nouveau ramasse miette (Garbage Collector) semble dépasser les espérances de tout le monde, on peut donc désormais dire que l'écrat de performance entre mono et .NET c'est réduit au négligable (du moins sur les benchmarks que j'ai pu voir).

benchmark avec graphdb qui compare les performances entre mono et mono avec le nouveau garbage collector activé.
benchmark comparable comparant mono avec le nouveau garbage collector avec .NET.
benchmark de sites servis en asp.NET sous mono avec chaque GC.

Pour tirer parti de cette nouveauté qui est embarqué mais pas encore utilisée par défaut, il faudra ajouter l'option: --with-gc=sgen

Contributions de Microsoft

Microsoft offre de plus en plus de ses nouvelles biliothèques en MSPL, et quand c'est le cas, plus besoin de double développement, mono peut les intégrer telquelles:

.NET 4

Implémenté depuis des mois dans la version de dévelopement de mono, beaucoup de fonctionnalités de .NET4 sont là.

C#4 est intégralement implémenté.

ASP.NET 4.0 partiellement implémenté:

MultiThread

Plinq et Parallelfx font désormais parti de la distribution officielle.

Nomreux fixs qui permettent notemment de gagner en performance en multithread.

System.Collection.Concurrent a des objets qui passent lockless, plus rapides, mons gourmand en mémoire...

Le comportement de ThreadPool qui était resté similaire au fonctionnement dans .NET 1.1 a été mis à jour pour que les erreurs non gérées dans des threads ne soient plus silencieuses. Cette modification avait trainé car elle peut casser le comportement de pas mal d'applications mono. pour retrouver l'ancien comportement, il suffit de mofifier le .config associé au binaire.

LLVM

Une version patchée de LLVM permet de gérer 99% des méthodes de mscorlib:
http://github.com/mono/llvm

Néanmoins, une version standart de LLVM suffit pour pouvoir l'utiliser en complement du jit engine de mono.

Léger surcout de mémoire et de temps de démarage mais net gain de performances.

Désormais l'exécution avec llvm accéssible avec la simple option '--llvm' (alors qu'il fallait recompiler mono anterieurement).

Vous retrouverez mon descriptif de llvm dans cet article:
http://blogs.dotnet-france.com/christophen/post/2009/11/13/Mono-26-revet-son-plus-beau-costume-il-sort-ce-mois-ci.aspx

Autre ajouts

Ajout d'une bibliothèque destiné au calcul scientifique System.Numerics avec BigInteger et nombres complexes.
Linq2SQL arrive en standart.

Amélioration de la gestion du cache dans ASP.NET et une classe qui permet d'utiliser cet outil de cache dans d'autre contextes: System.Runtime.Caching .
Nombreuses améliorations de Xbuild (notemment le support des projets silverlight).
Pour faciliter les ajouts d'options (comme pour utiliser llv

m ou sgen), une variable d'environnement propose de gérer ça à votre place exemple:

export MONO_ENV_OPTIONS="--gc=sgen --llvm"

Meilleur support des binaires offusqués.
La compilation complète est désormais disponible aussi pour x86 en plus de PowerPC et ARM.

Éviter trop d'embonpoint

Avec tout ça, Mono prend un peu d'embonpoint. Néanmoins, il y a un peu de ménage et quelques bibliothèques et commandes passent l'arme à gauche.

.NET 1.1 n'est plus supporté, les applications qui étaient compilées en .NET 1.1 seront éxécutés en 2.0 avec un warning.

Des bibliothèques d'accès à des bases de données non maintenues, non utilisées ou redondantes sont suprimées ( ByteFX.Data, Mono.Data, FirebirdSql.Data.Firebird, Mono.Data.TdsClient, Mono.Data.SybaseClient, Mono.Data.SqliteClient)

Le moteur javascript de mono ayant peu de succès, n'étant pas assez complet et face à 3 moteurs javascript meilleurs est aussi retiré. (Mirosoft.JScript, Microsoft.Vsa + la commande mjs)

Mais pour gagner en légèreté il y a d'autre solution, suprimer des dépendences. Ainsi, mono a son implémentation minimaliste de glib (eglib) qui permet de porter plus facilement pour des architectures de precesseurs tierces et d'alléger la bibliothèque pour les systèmes n'ayant pas besoin de glib.

Conclusion

Cet article est très inspiré d'un document anglais plus complet que vous trouvrez à cette adresse:

http://www.mono-project.com/Release_Notes_Mono_2.8

Bref, ce document n'est évidemment pas exhaustif, et montre les raisons de l'entousiasme autour du prochain mono 2.8. Si vous n'êtes pas patient mais que vous ne voulez pas compiler votre mono, vous trouverez de quoi patienter ici.

http://mono.ximian.com/monobuild/preview/download-preview/

Posted: sept. 11 2010, 09:46 by Crovax31 | Commentaires (6) RSS comment feed |
  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News | Présentation

Commentaires

Anonyme said:

Des nouvelles à propos du support complet du langage F# (notamment en ce qui concerne l'implémentation de la tail call optimization) ?

# septembre 11 2010, 14:25

Christophen said:

Oui, il est plutot bien supporté et même officiellement et de manière complète f#, depuis un bon moment.

je l'avais essayé il y a quelques mois, j'ai pas eu de soucis mais j'ai pas été en profondeur....

Après, c'est plus la communauté f# que la comunauté mono qui s'occupe de ça...

blogs.msdn.com/.../...-free-tools-for-net-4-0.aspx

Tu peux voir que mono est officiellement supporté par l'outil, après les problèmes de performance là dessus... c'est une bonne mais je t'avouerai que je je ne me suis pas penché dessus.

# septembre 11 2010, 15:06

Anonyme said:

En fait je faisais référence à ce post (http://tirania.org/blog/archive/2010/Feb-17.html) de Miguel de Icaza indiquant qu'ils amélioreraient le support de F# avec la version 2.8 de Mono et comme je ne voyais rien sur la release note, je m'interrogeais...

# septembre 12 2010, 11:28

one piece vostfr streaming said:

très intéressant post ici, bon article.. merci

# octobre 05 2010, 06:52

tagazok said:

Dites, je commence tout juste à m'intéresser à mono.
Je vois que dans les nouveautés, il y a System.XAML.
Qu'est ce que cela apporte-t-il concrètement?

Merci Smile

# octobre 07 2010, 11:06

Crovax31 said:

@tagazok:
www.go-mono.com/.../status.aspx
c'est la réimplémentation par mono du namespace System.Xaml de Microsoft.
le lien cidessu te permettra de savoir ce qui a été implémenté et testé et ce qui ne l'a pas été.

Mono ne s'interesse pas au WPF mais au silverlight qui utilise aussi du XAML,

http://www.go-mono.com/moonlight/

# octobre 07 2010, 14:34

Ajouter un commentaire




biuquote
  • Commentaire
  • Aperçu immédiat
Loading

captcha

*