[Mono] MonoDevelop 2.4, un grand coup de polish.
Le MonoDevelop nouveau est arrivé, cette nouvelle version nous apportera principalement une interface beaucoup mieux finie, plein de petites idées de fonctionnalités (certaines inspirées de Visual Studio) qui vont nous rendre la vie plus agréable...
- Plusieurs degrés d'expansions d'interfaces (pour avoir une interface plutôt respirante ou plutôt concentrée) qui vont influencer entre autres les marges entre les boutons.
- La vue des erreurs et warning est désormais en repliement automatique par défaut, rangé dans la barre de statut. De plus les erreurs gagnent en visibilités avec les messages s'insérants en fin de ligne.

- Le menu de navigation permet de se déplacer sur classe, fichier, fonctions,... l'algorithme de recherche capable de gérer les acronymes a été amélioré. Ajouter ':XX' permettra de placer directement le curseur a la ligne XX en question.
- Possibilité d'ouvrir une assemblie (.dll, .exe) directement comme un projet (en tirant parti des fichiers de debug genre .pdb s'ils sont présent).
- Gestion des objets à la racine de la solution, représenté comme un dossier dans l'arborescence (pour les README, AUTHORS...).
- Nouveau Menu de recherche à la Chrome.
- La fenêtre de complétion peux désormais grouper les membres en fonction de quel parent ou de quelle interface ils descendent.
- La complétion appelée avec ctrl+alt+espace liste tous les objets référencés et ajoute les usings si nécéssaires à la validation.
- L'interface tests unitaires est améliorée.
- Complétion du C# imbriqué dans les pages ASPX
- Ajout d'un éditeur hexadécimal.
- Possibilité d'ajouter des Web Références (WCF ou .NET 2.0)
- Plugin monotouch a évolué pour un support de l'Ipad et des SDK 3.2 et 4.0 de l'IphoneOS
Bref une flopée de nouveauté dont je passe une partie...
Donc au-delà de ça, quelle direction pour MonoDevelop?
La prochaine version devrai avoir une bonne gestion graphique de Git, une gestion des projets pour Adroid, des modèles ASP.NET MVC 2.0.
Pour lire la version intégrale et illustrée que j'ai résumée ici: http://monodevelop.com/Download/What%27s_new_in_MonoDevelop_2.4
Bref, en dehors des outils de développement eux-mêmes, on voit tous les jours de nouveaux logiciels qui se basent dessus, j'ai par exemple découvert aujourd'hui pdfmod, en GTK# qui permet de modifier simplement nos documents PDF...
[Mono] Après MonoTouch, MonoMac.
Certaines personnes savent utiliser leurs Weekends. Forts de leur expérience avec MonoTouch, Miguel et Geoff Norton se sont occupés de refaire une bibliothèque d'interfaçage COCOA. CocoaSharp (de Geoff) était délaissé depuis longtemps et n'avais pas de successeur. La nouvelle bibliothèque MonoMac est entièrement libre, permet d'utiliser le framework mono, des libs objectiveC, d'hériter de classes objectiveC...
Cette sourcouche de Cocoa est un travail en cour mais qui a bien avancé:
- CoreFoundation (Les parties considérées comme nécessaire)
- CoreText (fait)
- CoreGraphics (fait)
- Foundation (Les parties considérées comme nécessaire)
- AppKit (presque 70% fait)
MonoDevelop a encore besoin d'un plugin adapté pour pouvoir exporter en .app les applications si possible en intégrant un "mono sur mesure" dans le paquet. Le plugin MonoTouch aurais déjà une bonne partie du code nécessaire et pourrait être mis à jour pour pouvoir générer des applications MacOSX.
Bref, au final un nouveau projet naissant qui vas étendre l'aspect multiplateforme de mono et potentiellement sa communauté.
Annonce Officielle
[Mono] [MonoDevelop] Un mini entity framwork compatible MonoTouch
Je suis assez impressionné par ce petit projet que je viens de découvrir, Entify.
Compatible monotouch, .NET, mono...

Ce projet à l'air d'être prometteur, ça faisait parti des rares fonctionnalités de dotnet qui manquait vraiment. vivement que le project gère plusieur type de bases!
[Mono] Ce ne sont plus les annonces mais les actions.
Et bien oui, je ne suis pas toujours des plus assidus sur mon blog mais me revoilà... que c'est il passé depuis la sortie de mono 2.6?
MonoDevelop 2.4 devrait faire parler de lui le mois prochain, car il devrait sortir en version 2.4 avec entre autre une intégration pour WCF, meilleur support des formats de projets microsoft, une fonction éditeur hexadécimal...
Moonlight avance tranquillement, il m'arrive de tester la compatibilité silverlight pour un développeur soucieux de l'aspect multiplateforme de ses petits jeux silverlight qu'il fait marcher sur un site PHP. On voit doucement moonlight de plus en plus stable, de moins en moins gourmand... Mais sans vouloir être médisant, c'était parti d'assez bas et il y a encore beaucoup de boulot. Des personnes ont réussi à le faire marcher sur chrome mais c'est encore de la bidouille.
MonoTouch a bien avancé mais la nouvelle licence du SDK de l'IphoneOS 4.0 semble être un véritable danger pour le projet. La licence stipule que tous les logiciels doivent être développés initialements en C/C++/JavaScript/Objective C.
Mono pour Android semble vivant, bien qu'ayant une très petite communauté, le développeur avait interfacé en trois nuits tout le SDK android, apparemment, il a travaillé à ce que ça s'interface automatiquement grâce à de la réflexion/de l'introspection... on peut donc en déduire que les nouveaux sdk auront sans trop de difficultés leurs DLL d'interface.
Mono pour Meego, OS en développement, fusion de Maemo (OS Nokia pour mobile haut de gamme) et Moblin (OS Intel pour netbooks et embaqué) a déjà une intégration avec monodevelop :
Note: c'est Miguel de Icaza en personne qui pose les questions durant la video.
Le Garbage Collector (ramasse miette) de mono 2.8, qui défragmente les données pour réduire dynamiquement la plage mémoire utilisée a sacrément bien avancé, C#4 est complètement géré. L'avancement est tel que mono 2.8 pourrait être annulé pour laisser directement place à mono 3.0 pour marquer le coup. Peut être aussi car de nouvelles bases peuvent sous entendre des versions un peu moins stables.
Aux gens que ça interesse, Ubuntu 10.04 (lucid lynx) proposera mono 2.4 (vieux) et monodevelop 2.2 (à jour).
D'ici la fin du mois on saura quelles contributions seront apportées à mono cet été par le google summer of code.
[Mono] L'heure des annonces *UPDATED*
Et bien ça ne chôme toujours pas, quelques annonces rapides:
- Compilateur C# 4 complet: billet de l'annonce
- Variables dynamiques
- Paramètres optionnels
- Paramètres nommés
- Covariance et contravariance
- Mono Touch 1.4 est sorti: Release Note
- Durée démérage pouvant être réduite jusqu'à moitié
- Taille de binaire réduite de 30%
- Débogage sur Ipod/Iphone plus complet et déteriorant moins les performances
- Nouveaux controlles COCOA liés (AudioToolbox)
- Nombreuses corections de bogues (y compris pour monodevelop)
- etc...
- Mono 2.4.3 est sorti: Release Note
- Meilleur support de MSbuild (SLN...)
- Amélioration de la gestion de la mémoire.
- Amélioration du débogueur, apache mode mono, ASP.NET, Windows Form, ADO.NET...
- De nombreuses corrections de bogues.
- Mono 2.6 qui était anoncé pour le mois dernier devrait sortir d'ici peu... Pour rappel...
*Update*
[Mono] 2.6 revet son plus beau costume, il sort ce mois ci.
Cette version aura pris son temps pour sortir. Elle devrait arriver d'ici la fin de ce mois s'il n'y a pas de contre-temps. Elle embarquera des nouveautés intéressante, mais assez peu par rapport à ce qu'ont pu apporter précédentes versions qui avaient pourtant un cycle de développement plus court. La raison est simple, les employés de Novell qui développent Mono ont eu beaucoup à faire avec Mono-Touch, les outils d'intégration Visual Studio, MonoDevelop... Bref je soupçonne l'équipe d'avoir utilisé pas mal de leur temps sur des produits commerciaux dérivés qui espérons donnera une meilleure visibilité de Mono et lui garantiront un avenir plus sain.
Rassurez vous, il y a tout de même des nouveautés intéressantes à se mettre sous la dent, en voilà une liste non exhaustive.
Linq 2 SQL
C'est un premier pas de Linq vers base de données pour Mono... Mais il reste encore du travail, le but étant d'avoir la même API que System.Data.Linq.dll, mais pour un choix assez large de base de données à savoir:
- Microsoft SQL Server
- SQLite
- Oracle
- MySQL
- PostgreSQL
- Firebird
- Ingres
Pour des raisons de compatibilité le connecteur par défaut de la chaine de connexion est SQL server. Un exemple simple pour utiliser sqlite:
var conn = new SqliteConnection (
"DbLinqProvider=Sqlite;" +
"Data Source=Northwind.db3"
);
var db = new DataContext (conn);
Il manque encore la prise en charge des requêtes compilées, d'appel de certaines méthodes en milieu de requêtes SELECT et globalement des lacunes au niveau de la compatibilité avec le LINQ to SQL de Microsoft.
.NET 4 (ParallelFx, DLR)
Mono 2.6 commence à implémenter C# 4.0 et .NET 4.0, peut être amené à changer significativement si Microsoft en fait de même d'ici leur version finale de .NET 4.0.
Grâce à Jérémie Laval et ses deux saisons de Google Summer of Code, nous avons de ParallelFX le Parallel Linq, Task Parallel Library, Data Structures For Coordination.
Pour l'instant il faut explicitement activer le mode .NET4.0 dans mono. Que ce soit pour faire des compilations de C#4 ou l'exécution en profitant des modifications pour les variables dynamiques.
LLVM
LLVM est un interpréteur poussé par Apple, d'autres boites dont google s'intéressent de prêt à ce projet. Au lieu d'une Machine virtuelle standard, il est plus comme un "Processeur virtuel" qui a un assembleur propre. LLVM une fois que le code dans son assembleur lui est transmis fait des optimisations et génère éventuellement du code Natif.
Citation de Macpuissancedix ( cas du langage C/Objective-C ) http://www.macpuissancedix.com/Sir_06_09.php
Clang/LLVM apportent deux attributs importants que vous êtes en droit d'attendre d'un nouveau compilateur au goût du jour : des délais de compilation plus courts et des exécutables plus rapides. Selon les tests d'Apple avec ses propres applications (ex: iCal, Address Book ou même XCode) et des applications tierces (ex: Adium ou Growl)... Clang compile à peu près trois fois plus vite que GCC 4.2. Quant à la vitesse du produit fini, LLVM en arrière plan, [...] les exécutables sont 5% à 25% plus rapides que ceux créés par GCC 4.2.
Mono peut compiler du langage intermédiaire vers de l'assembleur LLVM. Ça permet au cout d'une première compilation plus longue et plus gourmande et d'un temps de démarrage supérieur d'augmenter significativement les performances de votre solution. Pour les parties de Code que LLVM ne compile pas encore, l'application, à l'exécution saura automatiquement appeler le JIT de mono.

C# Shell
La complétion est arrivée dans le C# shell! C'est vrai qu'on s'habitue vite à ces outils... C'était vraiment le détail qui en faisait un outil plus élitiste que purement pratique.
Xbuild
Xbuild est la réimplémentation de la méthode standard de compilation de Visual Studio.
Des avancées ont été menées autour de Xbuild, l'implémentation de MSBuild. les valeurs ajoutées:
-
Prise en charge des projets ASP.NET à la fois WebApplication et WebSite projects.
-
Des possibilités d'extentions de Xbuild ont été ajoutées.
-
Les assemblies locales sont mieux détectées.
-
Les évènements Pre/PostBuildEvents du projet sont désormais gérés.
-
Et de nombreux bugs de compatibilités qui restaient...
SIMD
Le Namespace SIMD a été revu pour avoir des noms répondant mieux aux conventions de nommage de Mono, quelques instructions SSE ont été ajoutées, et enfin, l'API a été implémentée pour les systèmes installés en 64 bits.
Mono.Tasklet.Continuation
C'est une nouvelle classe qui elle n'est pas portable .NET car requiert des modifications du Runtime, permet de gérer des états, faire des "Rollback" pour revenir à un lieu d'exécution pré-établi...
Autre :
- Possibilité de débogage distant (Utilisé par Mono-Tools for VisualStudio et MonoTouch)
- De nombreuses corrections de bugs notamment dans l'api winform comme à chaque release.
-
Une bien meilleure prise en charge des classes génériques en AOT (compilation complète).
-
System.IO.Packaging qui c'est popularisé dans les projets .NET est passé de la branche Olive de mono à sa distribution principale. C'est un fait rare, la branche Olive est la branche ou le projet mono fait avancer à petite vitesse les librairies compatibles MS qui n'intéresse pas grand monde directement... On trouve encore dans cette branche de délaissés WCF, WPF, les Workflow.
Remarque
Il ne serait pas étonnant que Mono 3.0 qui succèdera à Mono 2.6 et 2.8 se coordonne avec Gnome 3.0 qui lui a une date de sortie fixée en septembre 2010. Le rythme des sorties de mono ayant ralenti, on peut s'attendre à un rythme comparable avec une sortie tous les 6 mois qui est la façon de faire de gnome et Ubuntu. Trêve de spéculations, l'avenir nous en dira bien assez.
[Mono] s'offre un nouveau site
Et oui, Novell a compris le marché potentiel autour de mono et compte bien mettre en avant ses applications commerciales, pour se faire: un nouveau site plus clair, plus professionnel, avec une boutique en ce mois où vas bientôt sortir Mono 2.6.
Sur leur boutique en ligne sont proposés:
- Leur set d'outils d'intégration pour Visual Studio (100 $ pour un développeur indépendant, 249$ pour un développeur en entreprise)
- Mono Touch pour développement Iphone (399$ pour un développeur indépendant, 999$ pour un développeur en entreprise)
- Support pour applications Mono sur serveurs Suse Linux Enterprise Server (200$ / ans)
Pour les simples curieux de la communauté, toutes ces applications sont accessibles en versions d'évalutation d'un mois
J'ai pu découvrir cette page claire sur la compatibilité entre Mono et .NET: http://www.mono-project.com/Compatibility
Vous remarquerez que derière mon tite accrocheur c'est pricipalement un changement de skin et de page d'acceuil...
Voici les deux pages d'accueils côte à côte. Original trois occurrences du mot "Buy" sur un site de projet libre?
Cet investissement de Novell sur des usages Commerciaux de mono garantissent au projet un développement financé plus sereinement et donc certainement une évolution plus pérenne.
[Mono] MonoDevelop 2.2, une grande évolution... Dès à présent et en perspective!
Mono est un projet de Novell. Ce dernier commence à y trouver des moyens de rentrer dans ses frais... Les produits commerciaux de Novell autour de Mono étaient pour l'instant limités au support professionnel des applications Mono sur Suse Linux Enterprise Server.
Désormais, une nouvelle application commerciale leur est venue à l'esprit: MonoTouch. Cette application permet de coder en C# avec Mono une Application pour IPhone. Pour respecter les règles de l'apple-store
le code se compile entièrement (plus d'interpréteur) ce qui ne permet
pas encore d'utiliser toutes les possibilités du langage. MonoTouch est donc un ToolKit commercial qui permet cela.
Pour
Novell c'est une occasion en or pour mettre en avant MonoDevelop qui
est l'EDI C# du projet Mono. Il sera très bientôt multiplateforme.
MacOSX, Windows et Linux officiellement supportés... La version MacOSX
aura une extension pour le développement IPhone. Pour pouvoir créer des applications IPhone avec il faudra certainement se procurer l'outil commercial auprès de Novell.
Maintenant
que cet EDI est un enjeu de promotion important pour le produit
commercial MonoTouch de Novell, on va voir les améliorations qui ont
déjà étés apportés pour la mouture bêta de MonoDevelop 2.2.
- Car il n'est jamais agréable d'avoir un EDI très lourd (Eclipse), il a été fait de nombreuses optimisations de performance...
- Possibilité sous Windows d'utiliser directement les outils .NET de micrsoft y compris le deboguer avec les outils du framework .NET .
- Choix du framework cible (version de .NET ou de Mono) par options de projet, mais aussi "Run With" pour tester directement la rétro compatibilité.
- Formatage et comportement de l'EDI réglable fonction du MIME.
- Possibilité d'ajouter et de gérer des dossier où il ira chercher des assemblies.
- Possibilité lors de la suppression d'un projet de supprimer tout ou parti des fichiers qu'il contient du disque.
- Début de prise en charge de .NET et C# 4.0.
- Sauvegarde Automatique, si vous avez une coupure de courant, à la réouverture de MonoDevelop, il vous proposera de restaurer la version que vous avez éditée ou de garder la version du disque.
- La gestion des Snipets a été revue entièrement pour être comparable à celle de Visual Studio (possibilité de lier des champs de textes et autre dans l'extrait automatique).
- Règles de formatage de code plus avancées et réglable
directement au niveau du projet (pour rester homogène dans le travail
d'équipe) et la possibilité de lancer la mise en forme automatique d'une source ne
respectant pas nos règles.
- Complétion sensible aux acronymes, par exmple BREH pourra proposer dans sa liste de complétion ButtonReleaseEventHandler.
- Mode Vim plus complet.
- Possibilité de compléter à partir des mots du ficher à la manière de Emacs ou Vim.
- Amélioration de la génération de code contextuelle.
- Ajout automatisé de using quand c'est nécessaire, avec proposition du quel importer en cas de classes de mêmes noms.
- Retrait automatisé de using lorsqu'ils ne sont pas utilisés.
- Tri des directives using par ordre Alphabétique.
- Possibilité pour l'EDI de scinder automatiquement un fichier contenant plusieurs classes.
- Raccourci lorsque l'on est sur une expression pour créer une variable locale qui en contiendra le retour.
- Possibilité
d'extraire un bout de code sélectionné dans une méthode, les variables
en arguments et autre seront automatiquement choisi fonction des
besoins de la sélection.
- Intégration du shell C# lors du débogue, pour débogage d'applications multitâche,
cela permet de lancer les méthodes que l'on veut, d'injecter du code
pendant une pause à la ligne que l'on débogue, et de voir les valeurs
de valeurs de ce que l'on veut.
- Débuts du support du débogage de l'ASP.NET
- Extentions T4, MVC et Moonlight.
- Une extension de Monodevelop pour coder en Python avec auto-complétion, recommandations en cas de code non conventionnel...
- Génération de Makefiles
- Améliorations de la complétion en Vala, C/C++, C#.
Et encore cette liste n'est pas exhaustive!
Note détaillée de version officielle
Téléchargements
[Mono] Une première entorse au C#?
Comme tout sur terre est perfectible, y compris les technologies de développement Microsoft, quand une communauté de plusieurs personnes l'utilisent, des suggestions naissent...
Les expressions lambda sont un bon outil, mais parfois, notamment quand on veut indiquer une fonction sans argument... le gain de lisibilité est limité...
Voici la proposition:
// mono/.NET C#
button.Clicked += (o, a) => Console.WriteLine ("ouch!");
Func myFunc = () => "blarg";
// mono C# (nécessite un patch, bientôt dans la branche principale ?)
button.Clicked +=> Console.WriteLine ("ouch!");
Func myFunc => "blarg";
Ainsi, en contexte d'attribution, "=>" peut créer et attribuer une expression lambda et "+=>" permet d'abonner un évènnement à une expression lambda. Rien de bien nouveau en soit, les méthodes anonymes du C#2.0 avec le mot clef delegate permettait aussi de faire sans parenthèses...
Bref un petit opérateur sans prétention risque donc d'enrichir notre compilateur et notre shell C#...
(Je vous l'avais promis et c'est vrai que j'ai tardé, mais le shell C# étant facile à installer sous ubuntu Karmic Koala, j'espère très bientôt pouvoir vous le présenter!)
Microsoft ouvre son standart.
Suite à une annonce faite par Peter Galli de chez Microsoft les normes ECMA du C# et du CLI passent sous les termes de "Microsoft Community Promise"
Les gens trouvant que microsoft était un véritable danger potentiel pour les gens qui développaient en C# pour Linux dans la mesure où ils pouvaient potentiellement faire valoir leurs brevets pour plomber Mono, La partie sur le C# et la CLI s'est éclaircie...
Mono implémentant plus que ces spécifications (ADO.NET, WinForm...) deux versions de mono seront proposés, évidemment une version sans litige avec des brevets Microsoftet une version complète qui a une plus grande compatibilité avec les applications .NET.