Developpez.com

Le Club des Développeurs et IT Pro

Microsoft publie en open source .NET CoreCLR avec son code source

Le moteur d'exécution de la déclinaison open source de .NET disponible sur GitHub

Le 2015-02-04 11:04:06, par Hinault Romaric, Responsable .NET
Dans le cadre de son initiative visant à mettre à la disposition des développeurs une version open source du Framework .NET, Microsoft vient de publier sur la plateforme de gestion des projets open source GitHub, le code source de .NET CoreCLR (Common Language Runtime).

.NET CoreCLR est le moteur d’exécution open source du Framework .NET dans Net Core. Il peut être comparé à la machine virtuelle Java par rapport au rôle qu’il joue. Lorsqu’une application .NET ASP.NET 5 est exécutée, par exemple, au-dessus de .NET Core, c’est CoreCLR qui est responsable de l’exécution du code de l’application, en plus des bibliothèques CoreFX/BCL.

Ce moteur d’exécution fournit des fonctionnalités comme le garbage collector (ramasse-miettes), le compilateur RyuJIT (nouveau compilateur JIT de Microsoft, permettant une amélioration de près de 30% des performances des applications lors du démarrage), native interop et de nombreux autres composants d’exécution pour .NET.

.NET CoreCLR comprend près de 2,6 millions de lignes de code écrites en utilisant une combinaison des langages C# et C++, dont 320 000 lignes de code pour le compilateur just-in-time et 55 000 lignes pour le garbage collector.


Le processus de build du code de CoreCLR est basé sur CMake (moteur de compilation multiplate-forme open source). Microsoft a opté pour CMake parce qu’il est disponible à la fois sur Linux, Windows et Mac.

Pour l’instant, CoreCLR fonctionne uniquement sous Windows. Microsoft prévoit de publier des versions pour Linux et Mac dans les prochains mois. La firme de Redmond veut permettre aux développeurs de profiter de son « voyage multiplateforme dès le départ. »

CoreCLR vient rejoindre Corefx qui avait été publié sur GitHub par Microsoft en fin novembre. Corefx contient les classes de base pour .NET Core. Il est construit entièrement en C#. Le programme contient actuellement environ 500 000 lignes de code, ce qui représente seulement 25% de sa taille finale.

Pour rappel, .NET Core représente le cœur du Framework .NET. La solution est disponible en open source et est en cours de développement par Microsoft en collaboration avec des développeurs externes, qui ont déjà contribué à environ 48% du projet.

Pour l’instant, .NET Core supporte uniquement deux types de projets : les projets ASP.NET 5.0 et les projets Windows Store. Le développement d’applications desktop avec WPF ou Windows Forms n’est pas supporté.

Source : Microsoft
  Discussion forum
197 commentaires
  • tomlev
    Rédacteur/Modérateur
    Envoyé par kilroyFR
    encore une nouvelle syntaxe barbare a la M$ !
    De quelle syntaxe parles-tu ? Cet article ne parle pas des langages, mais de la plateforme .NET

    Il y a toutes sortes de langages basés sur .NET, avec des syntaxes très différentes (C#, VB.NET, F#, C++/CLI, Nemerle...). Après, on peut aimer ou non la syntaxe de ces langages, mais C# par exemple a des qualités largement reconnues, et de nombreux langages récents s'en inspirent (Swift, ECMAScript...)

    Au passage, la syntaxe de ces langages ne sort pas de nulle part. Celle de C# est largement inspiré de Java et de C++, F# a une syntaxe presque identique à OCaml, etc. Donc je ne vois pas trop en quoi ils ont une syntaxe "a la M$" (sic).

    Bref, renseigne-toi un minimum avant de troller gratuitement
  • youtpout978
    Expert confirmé
    Envoyé par matthius
    Les entreprise privées sont faites pour couler, par le simple fait qu'elle veulent s'approprier ce qui ne leur appartient.
    Microsoft ne cherche qu'à survivre. En effet, les plus grosses entreprises montrent qu'elles veulent s'approprier la vie.
    Allo Houston je crois qu'on l'a perdu.
  • Bono_BX
    Membre confirmé
    Envoyé par kilroyFR
    encore une nouvelle syntaxe barbare a la M$ !
    Qui sera tellement barbare qu'elle sera reprise plus tard par les pro / sectaire de l'open source en arguant que c'est tout nouveau et que c'est eux qui ont tout inventé, comme d'habitude ... (voir HTML 5)
    Et sinon, tu peux argumenter STP ?
  • tomlev
    Rédacteur/Modérateur
    Envoyé par DonQuiche
    Après des années d'annonces nébuleuses d'ouverture débouchant sur un code introuvable sur un site indisponible la moitié du temps avec une licence à la noix, et quelques bouts de code minuscules sur github par ailleurs, il semble qu'enfin on y soit arrivé.

    https://github.com/dotnet/coreclr/tr...lib/src/System
    https://github.com/dotnet/coreclr/tr.../master/src/gc
    https://github.com/dotnet/coreclr/tr...master/src/jit

    Enfin complet, sous github et sous licence MIT. Ne reste plus qu'à ajouter d'autres biblios maintenant.
    Je comprends pas très bien ta réaction... Tu réagis comme si c'était le premier "gros" truc que MS rendait open-source... Pourtant depuis quelque temps ça n'arrête pas, et les "autres biblios" sont déjà là :



    Bref, je m'arrête là parce qu'il y en a trop... CoreCLR est juste un pas de plus dans la même direction.

    (EDIT: ajouté quelques frameworks importants que j'avais oubliés...)
  • tomlev
    Rédacteur/Modérateur
    Envoyé par DonQuiche
    tantôt que "core" voulait dire "system.xml"
    Au début le projet .NET Core ne contenait effectivement que ça et quelques autres trucs, mais c'est juste parce qu'ils n'avaient pas encore mis le reste. D'ailleurs il n'y a pas encore tout, ils en sont à environ 25% de ce qu'il y aura au final.

    Envoyé par DonQuiche
    Avant cela le "reference source" restait un machin sous licence restrictive visible uniquement depuis un site moisi et HS la moitié du temps qui faisait que je préférais encore décompiler.
    C'est clair que le premier site referencesource était assez pourri et ne servait pas à grand chose... Après ils ont mis un truc mieux (toujours accessible ici) qui permet une navigation facile dans le code.

    Envoyé par DonQuiche
    Sauf qu'apparemment le nouveau "reference source" n'inclue pas tout ce qu'il incluait avant. Bref... D'ailleurs en toute logique ça aurait déjà dû contenir mscorlib, donc pourquoi cette nouvelle annonce d'ouverture de "mscorlib" ?!
    Comment ça ? mscorlib est bien inclus dedans. Et de quelle nouvelle annonce parles-tu ? Celle d'aujourd'hui concerne CoreCLR, le runtime pour .NET Core.
    Sinon c'est vrai qu'il manque quelques trucs sur Github, notamment WPF qui est pourtant visible sur referencesource.microsoft.com. Je sais pas trop pourquoi il l'ont pas inclus.

    Envoyé par DonQuiche
    A part ça, oui, certaines biblios et outils annexes étaient dispos (Roslyn, Unity,etc), mais pas le framework en dépit de 387 annonces sur le modèle "nous aimons l'open source, nous mettrons tout en open source, regardez notre belle fondation, etc". Même Roslyn, longtemps annoncé comme étant open source, ne l'était pas vraiment (je ne me rappelle plus les détails, ça ne devait concerner qu'une vielle version ou la licence devait être restrictive) et ne l'est vraiment devenu (pour de vrai ?) qu'en janvier 2015.
    Pour Roslyn, ils en ont publié la plus grande partie il y a un bon moment déjà. Il manquait certaines parties au début, mais entre temps ils ont ajouté ce qu'il manquait. Maintenant n'importe qui peut cloner le repo et ajouter ses propres features expérimentales à C# ou VB.NET.

    Envoyé par DonQuiche
    Bref, des années de grosse communication MS incompréhensible qui m'ont mis en colère. Et je reste convaincu que la prochaine fois que j'aurais besoin d'un morceau du code du framework il y aura de grandes chances qu'il ne soit pas dispo.
    Ca devient pourtant de plus en plus difficile... la plupart des libs, frameworks, etc liés de près ou de loin à .NET sont maintenant dispo.

    Enfin bref, je te trouve un peu sévère quand même... en moins d'un an, ils ont rendu open-source des millions de lignes de code dont personne ne pensait voir la couleur un jour. Tu veux quoi de plus ? Le code de Windows, d'Office... ? Vu que c'est les plus grosses vaches à lait de MS, ça m'étonnerait que ça arrive un jour... il faut bien gagner de quoi vivre aussi

    Pour ce qui est de la communication, c'est vrai que ça a pas toujours été très clair, mais ils jouent de plus en plus sur la transparence. Par exemple les comptes-rendus des Language Design Meetings sont rendus publics aussitôt après, et ils se mettent même à diffuser des vidéos de réunions internes. On peut aussi venir discuter les features de la prochaine version de C# avec l'équipe sur Github. Bref, à condition d'essayer de suivre un peu ce qui se passe (pas évident parce qu'il se passe beaucoup de choses), la communication de Microsoft envers les développeurs n'a jamais été aussi bonne, à mon sens en tous cas...
  • tomlev
    Rédacteur/Modérateur
    Envoyé par Battant
    Tiens une bonne surprise, microsoft s'intéresse à l'open souce mais en fait, sous quel licence open source ce framework est-il publié ?
    Licence MIT
    https://github.com/dotnet/coreclr/bl...er/LICENSE.TXT

    Envoyé par Battant
    Peut-être qu'à terme, des programme qui ne tournait que sur windows, tourneront également sur mac et linux voir pc-bsd ou freebsd.

    Est-ce selon vous une hypothèse crédible ?
    Ce n'est pas une hypothèse, c'est un fait. Regarde sur la page d'accueil du repo Github :

  • Mat.M
    Expert éminent sénior
    Envoyé par DonQuiche
    Je ne leur demande pas de tout mettre en open-source. Je leur demande de faire moins de communication et de ne communiquer qu'une fois les choses accomplies car ils donnent une impression de brasser du vent et de promettre sans contenu derrière.
    faut toujours qu'il y ait des gens qui râlent et qui soient pas contents...pour une multinationale comme Microsoft décider de publier du code source ça ne se fait pas d'un claquement de doigts...là c'est accéder à de la propriété intellectuelle pour faire plaisir à tout le monde

    Envoyé par dfiad77pro
    par contre quand je vois des fichiers comme gc.cpp qui prennent 35400 lignes de code ( y'a des commentaires, mais bon...),
    je trouve que ce n'est pas normal pour un travail fait par des pros.

    Pourquoi n'ont-il pas pu/voulu le séparer plusieurs fichier
    +1
    c'est certain qu'on s'attendrait à mieux de la part de l'éditeur qui pourtant commercialise de très bons outils comme Visual Studio.
    Ou alors c'est qu'ils n'ont pas eu le temps de mettre le code source au propre..
  • Aeson
    Nouveau Candidat au Club
    Ils n'y vont pas a moitier quand ils changent chez Microsoft.

    Qui aurait pensé un jour voir Microsoft collaborer avec Google sur un projet OpenSource ?? (Angular 2).

    Voir une presentation d'un produit openSource faites par des dev de Microsoft et Google en meme temp

    Je suis impatient de faire tourner des app en .Net Core sur W2016 / Azure Stack....

    C'est pas demain que je changerais de technos en tous cas.
  • Lutarez
    Membre chevronné
    A noter également que le compilateur AOT (.Net Native) est lui aussi devenu un projet open-source depuis hier
    Source : Twitter
  • Bono_BX
    Membre confirmé
    Envoyé par Traroth2
    Est-ce qu'il est possible de bâtir un environnement de développement et un environnement de production complets avec seulement de l'open-source ?
    Ta question est un peu vague. Comme nous sommes sur un article .Net, je pars du postulat que tu parles d'environnements .Net.
    - Développement : oui, mais ça va être très limité car le seul IDE open source actuel avec .Net Core est Visual Studio Core. Comme son nom l'indique, tu as vraiment juste un ... Core. C'est un éditeur de code très avancé, mais on est bien loin de Visual Studio sous Windows. De plus, pour le moment .Net Core n'implémente pas l'intégralité du framework .Net, donc selon tes besoins, tu ne pourras pas y recourir ; mais c'est en cour de portage complet.
    - Production : encore une fois, le principale problème vient de tes besoins : si tu utilises des fonctionnalités non implémentées dans .Net Core, tu seras bloqué. Un autre souci est l'hébergement, car pour du Web, il n'y a que IIS pour le moment.

    Il ne faut pas oublier que le virage open source de .Net est récent (je mets à part Xamarin, qui n'est pas le sujet de l'article), et que les choses évoluent très vite. Donc pour te répondre je dirai que non, ce n'est pour l'instant pas possible, mais il est évident que cela va le devenir car Microsoft en a la volonté ... et les moyens, aussi bien en termes techniques qu'en termes de compétence.