Blog Mono de Christophe Narbonne

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

RecentComments

Comment RSS

[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*
Posted: déc. 10 2009, 10:27 by christophen | Commentaires (3) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

[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.

Posted: nov. 13 2009, 16:05 by christophen | Commentaires (3) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News | Présentation

[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. 
Posted: nov. 10 2009, 11:58 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

[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

Posted: sept. 10 2009, 19:41 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

[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!)

Posted: juil. 24 2009, 20:34 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

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.

 
Posted: juil. 07 2009, 09:50 by christophen | Commentaires (0) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

[Mono] Un pas en avant vers les développeurs sous windows

Vous aimez bien économiser sur votre hébergement en prenant des serveur linux mais vous voulez faire un site en ASP.NET? Vous aimeriez être sûr que votre application avec mono pourrait tourner sous mac OSX? Vous codez avec Visual Studio et ne comptez pas changer d'IDE?

Le projet mono ne vous oublie pas, vous pouvez simplement depuis Visual Studio en quelque clics lancer l'application .NET sur votre framework mono, sur un Mono distant, débugger dans une instance Mono distante ou même faire un contrôle du support des classes appelées grâce à MoMA... Mono n'est pas une pâle copie mais une ré-implémentation de la norme avec des librairies en plus et d'autre en moins, c'est pourquoi il faut rester conscient de la necessité de tests avant de passer sur mono une application qui paraissait fonctionelles sur .NET...

 

 

Si vous voulez faire du GTK#, que vous êtes sur Windows et que votre objectif est une application .NET multiplateforme, peut être qu'une des fonctionnalités de MonoDevelop vous a tapé dans l'oeil, rassurez vous, une version Windows de MonoDevelop est aussi en développement et déjà téléchargeable, cette version tourne avec la plateforme .NET de Microsoft et des bibliothèques Mono complémentaires. Le travail de portage pour utiliser le débugger de .NET et enlever les dépendances de gnome (pour recentrer vers du GTK)

 

 

 

Au final, l'équipe de Mono travaille à vous amener son travail pour vous aider à faire des applications multiplateforme.

MonoDevelop pour Windows
Plugin VisualStudio

Posted: juin 13 2009, 18:44 by christophen | Commentaires (1) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

Google Summer Of code: De bonnes perspectives pour Mono

Neuf personnes se sont engagées à contribuer au projet Mono auprès d'un mentor de l'équipe Mono et de Google. Leurs contributions seront financées par le projet Google Summer Of Code.


Ils sont tous venus avec des projets prédéfinis qui seront probablement intégrés à Mono en 2.6 ou 2.8 en fonction de la qualité du rendu. Voici les points pour lesquel les utilisateurs du projet Mono pourront remercier Google très bien tôt: 
  • Une amélioration et mise à jour de Mono ParallelFX. Éventuellement le développement d'un outil d'annalyse d'applications multi-tâches tel que Chess (utilisé pour répérer les éventuels problèmes de partages de mémoire entre les tâches).
  • Un outil d'optimisation du langage intermédiaire (CIL) c'est à dire du .exe ou .dll semi-compilé qui contrairement au compilateur temps réel (JIT) peut affiner ses optimisations quitte à prendre plus de temps.
  • Création d'une librairie GIT. GIT est un gestionnaire de versions créé par Linus Torvalds. Git est à SVN ce que bittorent est au Warez.
  • Un portage de Mono.SIMD pour processeurs 64 bits. Pour l'instant Mono.SIMD est pour systèmes x86.
  • Import de fonctionnalités du Visual Basic 9 dans le compilateur VB du projet Mono
  • Un moyen de créer des procédures Postgre en CIL pour permettre d'abstraire encore les développeurs du SQL y compris pour faire des procédures stockées.

 

Mais pour ceux qui aiment les outils de développement poussés et multi-plateforme, MonoDevelop n'est pas oublié:

  • Un générateur de classe Graphique, je suppose UML. L'exécutant du projet commencera par créer un Widget Canevas inter-opérable qui cherchera à rester suffisamment générique pour être intégré à GTK# à l'avenir. Ce contrôle pourait être fait en collaboration avec le projet suivant.
  • Un afficheur/éditeur graphique de base de données. remarque: MonoDevelop intègre déjà de quoi se connecter graphiquement à des bases de données et afficher dans des tables des retours de requêtes, mais là il s'agit d'une représentation de structure avec les liens entre les tables et autre.
  • Pour les utilisateurs de Mylyn sur eclipse, un plugin MonoDevelop permettra une intégration similaire avec des outils de gestion de projets en ligne ou hors ligne (Bugzilla/Trac).

Remarque: Ubuntu 9.04 jaunty jackalope est sorti: http://releases.ubuntu.com/9.04/

Posted: avr. 23 2009, 14:43 by christophen | Commentaires (3) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News

[Mono] ASP.NET MVC est bien là grâce à sa licence MS-PL.

Et oui, l'équipe Mono n'as pas eu à re-faire l'intégralité de ce set d'outils facilitant la mise en place de projets respectant l'architecture de programmation MVC: Modèle Vue Contrôleur.

Ce set d'outils embarque un plug-in Visual-Studio, un Template Visual Studio (projet vide), et la bibliothèque contenant des classes .NET (assemblie), les fichiers javascript et autre.

Comment mettre en place un site ASP.NET MVC avec Linux grâce à Mono:

Il faut au moins mono 2.4 et les références aux assemblies suivantes:

  • System.Web.Abstractions
  • System.Web.Extensions
  • System.Web.Routing (Pour ces trois premières références, il faut le paquet mono-extras sous OpenSuse.)
  • System.Web.Mvc (Si vous utilisez MonoDevelop, cette assemblies est dans le plugin MVC, mais elle sera intégrée dans Mono 2.4.1 et Mono 2.6)

  Vous pouvez ajouter le plug-in MVC dans MonoDevelop grâce au gestionnaire de greffons du menu "Outils":

 

 

Ceci vous installe le template, l'assemblie et ajoute quelques fonctions contextuelles à MonoDevelop.

Nous pouvons créer un site en faisant une Nouvelle solution MVC:

 

 

Nous avons donc un projet complet qui respecte l'architecture MVC grâce au Template.

Nous pouvons graphiquement ajouter des vues partiellement générées à la demande.

 



Bref si le fonctionnement vous intéresse, vous pouvez suivre la suite d'articles de Bertrand Vergnault à ce sujet dont voici le premier: ASPNET-MVC-Partie-1-Presentation-de-MVC

Pour ma part, j'espère que cette petite présentation vous aura intéressé.

 

Posted: avr. 04 2009, 20:37 by christophen | Commentaires (10) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News | Présentation

[Mono] Mono 2.4 de sortie.

Et oui, Mono 2.4 est sorti aujourd'hui officiellement accompagné de MonoDevelop 2.0.

La liste de changements de Mono a déjà été évoquée, néanmoins, certains changements inatendu comme la refonte du site de MonoDevelop grâce au CMS ASPX/Mono de la société MindTouch : Deki Open Source Edition.

Pour ceux qui veulent pouvoir utiliser toutes les applications et tous les outils Mono dès maintenant et facilement, l'Appliance (qui est une image disque préinstallée pour faire des machines virtuelles) est aussi disponible au téléchargement.


Cette image intègre quelque des plus fameux logiciel gratuits/libres Mono.
Ces logiciels vont du lecteur de musique au jeu d'entrainement cérébral en passant par le client Torrent, le logiciel de prise de notes et le lanceur d'application.
Mais outre les logiciels traditionnels, cette image intègre aussi des sites APSX dans un dossier prévu à cet effet, la plupart sont des CMS compatibles .NET.
Pour finir le set, l'image intègre le set d'outil classique du projet Mono : MonoDevelop 2.0, l'interpréteur C#, le désassembleur...

 

Le changelog de MonoDevelop 2.0 (en)
Le changelog de Mono 2.4 (en)
Téléchargements

Posted: mars 30 2009, 22:21 by christophen | Commentaires (3) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: Général | Mono | News