Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La troisième version majeure de Mono est disponible

Le , par LittleWhite

0PARTAGES

10  0 
L'implémentation Open Source du framework .NET est disponible dans sa troisième version majeure et améliore le support du framework de Microsoft pour les machines UNIX, Windows, MacOS et autres.

Compilateur C#

Mono possède maintenant un support complet de C# 5.0 et de la programmation asynchrone.

Le compilateur a finalisé sa migration du générateur de code afin de pleinement utiliser l'API IKVM.Reflection. Cette fonctionnalité avait été commencée dans Mono 2.10 et est maintenant disponible par défaut. Avec cette fonctionnalité, les développeurs vont pouvoir utiliser mscorlib comme ils le souhaitent sans devoir recompiler un compilateur personnalisé. De plus, les exécutables multiples pour le compilateur ont été éliminés et l'unification dans un même compilateur diminue les temps de compilation.

Evaluation peut maintenant compiler des types

L'API Evaluator.Eval() n'est plus limité aux expressions et appels de fonctions : vous pouvez passer des namespaces, classes, interfaces et définitions de structures en tant que chaine de caractères et avoir un résultat compilé.
Code : Sélectionner tout
1
2
3
4
5
6
 
csharp> class X { public int a; } 
csharp> var t = new X () { a = 1 }; 
csharp> print (t.a); 
1 
csharp>
API Interface

Le compilateur exposé par la bibliothèque Mono.CSharp n'est plus limité à être un compilateur global. Maintenant vous pouvez instancier plusieurs blocs ayant chacun ses variables globales et types.
L'exemple suivant assigne une chaîne de caractères dans un contexte et un entier dans un second :
Code C# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  
using System; 
using Mono.CSharp; 
  
class MyWorld { 
       public Evaluator Evaluator; 
  
       public MyWorld (string [] args) 
       { 
               var r = new Report (new ConsoleReportPrinter ()); 
               var cmd = new CommandLineParser (r); 
  
               var settings = cmd.ParseArguments (args); 
               if (settings == null || r.Errors > 0) 
                       Environment.Exit (1); 
  
               Evaluator = new Evaluator (settings, r); 
       } 
} 
  
class X { 
       static int Main (string [] args) 
       { 
               var first = new MyWorld (args); 
               var second = new MyWorld (args); 
  
               first.Evaluator.Run ("var Demo = \"hello, world\";"); 
               second.Evaluator.Run ("var Demo = 1;"); 
               first.Evaluator.Run ("print (Demo);"); 
               second.Evaluator.Run ("print (Demo);"); 
               return 0; 
       } 
}

Shell C# Interactif

Une nouvelle fonction d'affichage peut être utilisée à la place de Console.WriteLine(). De plus, le shell interactif utilise maintenant une syntaxe succincte qui ne nécessite plus de ';' à la fin des expressions :
Code : Sélectionner tout
1
2
3
4
 
csharp> 1 + 2 
3 
csharp>
Profil 4.5

Le profil 4.5 est un sous ensemble strict du profil 4.0 et est maintenant celui par défaut.
Comme le profil 4.5 est un sous ensemble du 4.0, ils partagent le même numéro d'assembly donc la bibliothèque 4.5 est actuellement installée dans le GAC. Les changements de ce nouveau profil incluent :
  • des nouvelles méthodes asynchrones ;
  • une API de compatibilité WinRT ;
  • de nouvelles assemblies (System.Net.Http, System.Threading.Tasks.Dataflow)


Optimisations à l'exécution

De multiples optimisations à l'exécution ont été rajoutées :
  • une nouvelle implémentation rapide de ThreadLocal
  • optimisations de List
  • support de nouveaux attributs pour forcer inlining
  • support d'une table complète de caractères de substitution Unicode
  • nouveau profiler pouvant être utilisé avec VTune Amplifier Profiler d'Intel
  • support des événements System.Net.NetworkInformation.NetworkChanged pour Linux


Installation de Mono 3

Des paquets précompilés pour de multiples systèmes (Linux, Solaris, MacOS X et Windows) et les sources peuvent être trouvés dans la section des téléchargements du projet.

L'installation à partir des sources est simple :

Pour la compilation de libgdiplus pour le support de System.Drawing :
Code : Sélectionner tout
1
2
3
4
5
6
 
$ tar xzf libgdiplus-3.0.tar.gz 
$ cd libgdiplus-3.0 
$ ./configure 
$ make 
$ make install
et pour compiler Mono :
Code : Sélectionner tout
1
2
3
4
5
6
 
$ tar xzf mono-3.0.tar.gz 
$ cd mono-3.0 
$ ./configure 
$ make 
$ make install

Votre opinion sur Mono 3 :
Avez-vous mis à jour votre système ? Si non, allez-vous le faire prochainement ?
Pensez-vous que le projet possède du retard sur l'implémentation de Microsoft ?

Source :

http://www.mono-project.com/Release_Notes_Mono_3.0

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 23/10/2012 à 21:48
Chapeau à l'équipe Mono qui fait un boulot assez exceptionnel

Ils arrivent toujours à suivre de très près les sorties de C# et .NET, et dans le cas de C# 5 ça n'a pas dû être facile (le support du code asynchrone avec async/await implique des réécritures de code assez complexes, pour extraire le code qui suit await en tant que continuation de l'appel asynchrone).

Pour ma part je n'utiliserai probablement pas Mono 3 vu que je ne développe que sous Windows, mais c'est cool de savoir que je pourrai retrouver un environnement familier si j'ai besoin de développer sur une autre plateforme.
0  0 
Avatar de Squeak
Membre actif https://www.developpez.com
Le 23/10/2012 à 22:05
Ce projet a le vent en poupe et il peut se montrer une solution très intéressante dans le cadre d'un développement multi-plateformes.
0  0 
Avatar de Nathanael Marchand
Rédacteur https://www.developpez.com
Le 24/10/2012 à 0:23
Il est à noter, qu'avec l'ouverture de ASP.NET en Open Source, ils ont pu reprendre pas mal de choses pour proposer du MVC4 et Entity Framework notamment !
0  0 
Avatar de acesyde
Membre éclairé https://www.developpez.com
Le 24/10/2012 à 8:00
C# 5.0 juste avant EF5, nous pouvons dire que les développeurs voulant se tourner vers mono pour être multiplateforme sont gâtés en cette fin d'année.

Merci à l'équipe de Mono
0  0 
Avatar de eka808
Nouveau membre du Club https://www.developpez.com
Le 24/10/2012 à 12:38
La question que je me pose désormais est : est-ce que mono+apache ou autre devient une alternative intéressante à .NET/IIS ?

En clair, est-ce que l'on pourra, dans un futur proche faire tourner des applications MVC/EntityFramework dans un environnement LAMP ?
Avec des performances équivalentes ?
Sans s'arracher les cheveux ?
0  0 
Avatar de Nathanael Marchand
Rédacteur https://www.developpez.com
Le 24/10/2012 à 13:27
Citation Envoyé par eka808 Voir le message
La question que je me pose désormais est : est-ce que mono+apache ou autre devient une alternative intéressante à .NET/IIS ?

En clair, est-ce que l'on pourra, dans un futur proche faire tourner des applications MVC/EntityFramework dans un environnement LAMP ?
Avec des performances équivalentes ?
Sans s'arracher les cheveux ?
MVC tu peux déjà (la version 4) pour ce qui est de EF, bien que ca soit dispo, je suis pas sur que les connecteurs ADO.Net compatibles existent (ou peut être pas vers SQL Server).
0  0 
Avatar de Rachel
Inactif https://www.developpez.com
Le 26/10/2012 à 12:23
et où télécharge-t-on la dernière version de la lib gdi+ ?
Edit : j'ai tenté maintes fois d'empaqueter mono, sans succès
0  0