Mono 3.2 est sorti le mois dernier (ndt : Juillet 2013), apportant plusieurs améliorations du GC, des améliorations côté développement et plus encore. D'autres éléments tels que l'intégration de PlayScript et CppSharp sont en cours de travail.
SGen GC a été encore amélioré avec Mono 3.2, en particulier sur les scénarios suivants :
- La charge de travail pour les objets populaires, où quelques objets épinglés au niveau "nursery" sont très populaires et en présence d'objets en vieille génération, induisant un nombre important de listes de références à maintenir ("remembered sets"). Pour éviter cela, les objets populaires sont rendus immortels jusqu'à la collecte majeure suivante.
- La charge de travail pour les piles de threads, où un grand nombre de threads ayant une pile de taille importante doivent être scannés. Ceci provoquait une pression importante sur l'étape d'épinglage en produisant des files d'attente très longues. Pour éviter cela, SGen utilise maintenant un filtrage à base de hash sur les files d'épinglage, ce qui réduit fortement leur taille en moyenne et épingle les blocks les plus importants plutôt que des objets individuellement.
En plus de cela, la collecte majeure peut à présent être désactivée à certains endroits, là où une faible latence est requise. SGen est maintenant le GC par défaut pour Mono.
Côté développement, il y a également des améliorations pour les développeurs mobile :
- Développement iOS plus efficace, avec builds incrémentaux et uploads incrémentaux
- Certaines fonctionnalités ont été désactivées pour réduire l'empreinte sur le mobile
La disponibilité de certains Frameworks sur Mono a évolué elle aussi. Depuis quelques temps, Mono a embarqué plusieurs Frameworks rendus open-source par Microsoft. Il supporte donc maintenant :
- Les Reactive Extensions
- F#
- Razor
- Entity Framework
- ASP.NET Web Stack
Ces Frameworks sont suportés aux côtés de :
- Cocos2D XNA (port de Cocos2D) (avec un jeu d'exemple à exécuter sur Mono)
- Xamarin.Auth
- Xamarin.Mobile
- Xamarin.Social
Miguel de Icaza a présenté quelques éléments de travail en cours lors de la conférence MonkeySpace, le mois dernier :
- PlayScript, créé par Zynga pour fournir des jeux à exécuter autant sur le mobile que sur le Web, sans avoir à faire un portage complet. Le compilateur PlayScript a été construit sur Mono. L'équipe Mono travaille actuellement à réintégrer ces changements.
- Avancées côté Interop C++, poussées par deux axes de travail : les évolutions de Cxxi et CppSharp.
Vous pouvez trouver plus de détails dans la présentation "Quoi de neuf dans Mono" et dans les Release Notes de Mono 3.2.