tag:linuxfr.org,2005:/users/patrick_g/newsLinuxFr.org : les dépêches de patrick_g2018-06-07T08:00:48+02:00/favicon.pngtag:linuxfr.org,2005:News/383052018-05-18T11:29:25+02:002018-05-19T14:13:56+02:00Sortie de GCC 8.1Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La sortie de la nouvelle version majeure du <a href="http://gcc.gnu.org/">compilateur GCC</a> du projet GNU a été annoncée le 2 mai 2018. Écrit à l’origine par <a href="https://stallman.org/">Richard Stallman</a>, le logiciel GCC (<em>GNU Compiler Collection</em>) est le <a href="http://fr.wikipedia.org/wiki/Compilateur">compilateur</a> de référence du monde du logiciel libre. Il accepte des codes sources écrits en <a href="https://fr.wikipedia.org/wiki/C_(langage)">C</a>, <a href="https://fr.wikipedia.org/wiki/C%2B%2B">C++</a>, <a href="https://fr.wikipedia.org/wiki/Objective-C">Objective-C</a>, <a href="https://fr.wikipedia.org/wiki/Fortran">Fortran</a>, <a href="https://fr.wikipedia.org/wiki/Go_(langage)">Go</a> et <a href="https://fr.wikipedia.org/wiki/Ada_(langage)">Ada</a>. De plus, il fonctionne sur <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures">une multitude d’architectures</a>.</p>
<p>La suite de la dépêche vous propose une revue de certaines améliorations et nouvelles fonctionnalités de cette nouvelle version.</p></div><ul><li>lien nᵒ 1 : <a title="https://gcc.gnu.org/gcc-8/changes.html" hreflang="en" href="https://linuxfr.org/redirect/101021">Liste officielle des changements de GCC 8.1</a></li><li>lien nᵒ 2 : <a title="https://www.phoronix.com/scan.php?page=news_item&px=GCC-8-Compiler-Features-List" hreflang="en" href="https://linuxfr.org/redirect/101022">La liste de Phoronix</a></li><li>lien nᵒ 3 : <a title="https://developers.redhat.com/blog/2018/03/15/gcc-8-usability-improvements/" hreflang="en" href="https://linuxfr.org/redirect/101613">Usability improvements in GCC 8</a></li><li>lien nᵒ 4 : <a title="https://developers.redhat.com/blog/2018/03/26/gnu-toolchain-update-2018/" hreflang="en" href="https://linuxfr.org/redirect/101694">GNU Toolchain Update — Spring 2018</a></li><li>lien nᵒ 5 : <a title="https://gcc.gnu.org/ml/gcc/2018-05/msg00017.html" hreflang="en" href="https://linuxfr.org/redirect/101920">Annonce de la sortie de GCC 8.1</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#g%C3%A9n%C3%A9ral">Général</a><ul>
<li><a href="#nouveaux-diagnostics">Nouveaux diagnostics</a></li>
<li><a href="#s%C3%A9curit%C3%A9">Sécurité</a></li>
<li><a href="#pgo">PGO</a></li>
<li><a href="#divers">Divers</a></li>
</ul>
</li>
<li>
<a href="#langages-de-programmation">Langages de programmation</a><ul>
<li><a href="#fortran">Fortran</a></li>
<li><a href="#golang">Golang</a></li>
<li><a href="#cc">C/C++</a></li>
</ul>
</li>
<li>
<a href="#cibles-mat%C3%A9rielles">Cibles matérielles</a><ul>
<li><a href="#x86-64">x86-64</a></li>
<li><a href="#arm-et-aarch64">ARM et AArch64</a></li>
</ul>
</li>
</ul><h2 id="général">Général</h2>
<h3 id="nouveaux-diagnostics">Nouveaux diagnostics</h3>
<p>GCC 8.1 propose de nombreuses améliorations dans les diagnostics qui sont émis en cas de problème à la compilation. L’emplacement des erreurs de syntaxe est mieux indiqué et dans la plupart des cas GCC suggérera même ce qu’il faut insérer pour corriger l’erreur. Les en‐têtes (<code>#include</code>) manquants sont également indiqués par des messages plus explicites et des suggestions sont faites pour corriger la plupart des cas. Le développeur David Malcolm <a href="https://developers.redhat.com/blog/2018/03/15/gcc-8-usability-improvements/">a écrit un excellent article</a> qui détaille toutes ces améliorations des diagnostics de GCC 8.1.</p>
<h3 id="sécurité">Sécurité</h3>
<p>La nouvelle option <code>-fstack-clash-protection</code> génère automatiquement du code pour empêcher les attaques de type <a href="https://blog.qualys.com/securitylabs/2017/06/19/the-stack-clash"><em>stack clash</em></a>, de façon à allouer une seule page de la pile à la fois et à y accéder immédiatement après l’allocation.</p>
<p>Les futurs processeurs Intel seront dotés d’une nouvelle technologie de sécurité nommée <em>Control‐flow Enforcement Technology</em> (<a href="https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf">CET</a>). En gros, cela consiste à stopper les attaques de type <a href="https://fr.wikipedia.org/wiki/Return-oriented_programming">Return‐oriented Programming</a> en ayant une pile fantôme (<em>shadow stack</em>) qui va gérer les adresses de retour et générer une erreur en cas de problème. La gestion de CET est déjà présente dans GCC 8.1 via les options <code>-mcet</code>, <code>-mibt</code>, <code>-mshstk</code> et <code>-fcf-protection</code>.</p>
<h3 id="pgo">PGO</h3>
<p>L’infrastructure PGO (<em>Profile Guided Optimization</em>) a été largement améliorée dans cette version de GCC. PGO consiste à compiler une première fois le code avec l’option <code>-fprofile-generate</code> afin de l’instrumenter. On fait ensuite tourner le code en conditions réelles pour mesurer les performances et générer un profil précis de l’application. Puis, on réalise une seconde passe de compilation, cette fois‐ci avec l’option <code>-fprofile-use</code>, pour générer un code optimisé.<br>
Dans GCC 8.1, les profils générés sont plus précis et plus fiables. L’option <code>-freorder-blocks-and-partition</code> qui sépare les fonctions dans des régions dites <em>hot</em> et <em>cold</em> est maintenant activée dès le niveau de compilation <code>-O2</code>. Cela permet à GCC d’optimiser plus agressivement les portions de code qui sont les plus sensibles aux performances.</p>
<h3 id="divers">Divers</h3>
<p>Deux nouvelles passes optimisant la transformation des boucles dans le code (<em><a href="https://en.wikipedia.org/wiki/Loop_nest_optimization">loop nest optimization</a></em>) ont été ajoutées dans cette version de GCC. On trouve donc <code>-floop-unroll-and-jam</code> qui se charge du déroulage et de la fusion de boucles et <code>-floop-interchange</code> qui s’occupe d’améliorer la localisation spatiale des données. Ces deux passes sont activées par défaut à partir du niveau d’optimisation <code>-O3</code>.</p>
<p>Une nouvelle directive <em>pragma</em> <code>GCC unroll</code> a été implémentée pour les langages de la famille C, ainsi que pour Fortran et Ada. Cela offre à l’utilisateur un contrôle plus fin des optimisations de déroulage de boucles.</p>
<p>Les fonctionnalités d’optimisation inter‐procédurales sont revues avec une amélioration de la précision des métriques qui estiment la pertinence de l’« <em>inlining</em> » et du « <em>cloning</em> ».</p>
<p>La fonction LTO (<em>Link‐time optimization</em>) préserve mieux les informations de débogage dans les exécutables ELF. Cela permet, par exemple, à la fonction <em>pretty-printers</em> de la bibliothèque C++ libstdc++ de fonctionner même dans le cas d’un exécutable optimisé via LTO.</p>
<h2 id="langages-de-programmation">Langages de programmation</h2>
<h3 id="fortran">Fortran</h3>
<p>La version principale de <em>libfortran</em> a été changée pour la version 5.<br>
GCC 8.1 apporte la prise en charge des <em>Parameterized derived types</em> (une fonction présente dans la norme Fortran 2003) et améliore également la prise en charge de la norme Fortran 2008.</p>
<h3 id="golang">Golang</h3>
<p>GCC 8.1 fournit une implémentation complète des paquets utilisateur de Go 1.10.1.<br>
Le ramasse‐miettes est maintenant complètement concurrent et la fonctionnalité d’<em>escape analysis</em> est implémentée, ce qui réduit le nombre d’allocations dans le <a href="https://fr.wikipedia.org/wiki/Tas_(informatique)">tas</a> en allouant à la place les valeurs dans la <a href="https://fr.wikipedia.org/wiki/Pile_(informatique)">pile</a>.</p>
<h3 id="cc">C/C++</h3>
<p>Plusieurs nouvelles options font leur apparition pour la compilation de code C et C++ afin d’avertir l’utilisateur sur d’éventuels problèmes (ces options sont bien évidemment incluses dans <code>-Wall</code> ou <code>-Wextra</code>). On retrouve donc :</p>
<ul>
<li>
<code>-Wmultistatement-macros</code>, qui avertit au sujet des macros qui ont des multiples déclarations utilisant collectivement plusieurs instructions comme <code>if</code>, <code>else</code>, <code>while</code>, <code>switch</code>, ou bien <code>for</code> ;</li>
<li>
<code>-Wstringop-truncation</code>, qui avertit lors d’appels non sûrs à des fonctions de manipulation de chaînes de caractères ;</li>
<li>
<code>-Wif-not-aligned</code>, qui s’occupe des utilisations invalides d’objets ayant l’attribut <code>warn_if_not_aligned</code> ;</li>
<li>
<code>-Wmissing-attributes</code>, qui émet un warning quand il manque un ou plusieurs attributs dans une déclaration de fonction ;</li>
<li>
<code>-Wpacked-not-aligned</code>, qui avertit quand un <code>struct</code> ou un <code>union</code> est déclaré avec l’attribut <code>packed</code> de façon incorrecte ;</li>
<li>
<code>-Wcast-function-type</code>, qui avertit quand un pointeur de fonction est « casté » de façon incompatible ;</li>
<li>
<code>-Wsizeof-pointer-div</code>, qui émet une alerte (<em>warning</em>) en cas de division de la taille d’un pointeur par la taille des éléments qu’il pointe ;</li>
<li>
<code>-Wcast-align=strict</code>, qui alerte l’utilisateur quand un pointeur est « casté » et que cela implique une augmentation des contraintes d’alignement.</li>
</ul><h2 id="cibles-matérielles">Cibles matérielles</h2>
<h3 id="x86-64">x86-64</h3>
<p>En ce qui concerne les processeurs Intel, cette nouvelle version de GCC apporte la prise en charge de la famille <em>Cannon Lake</em> (gravure en 10 nm) qui va être déployée au cours de l’année 2018. Il suffit d’utiliser l’option <code>-march=cannonlake</code> pour profiter des optimisations spécifiques (et cela active les extensions AVX512VBMI, AVX512IFMA et SHA).</p>
<p>Le successeur de <em>Cannon Lake</em>, qui se nomme <em>Ice Lake</em> et qui sortira normalement en 2019, est également présent dans cette version de GCC. En passant l’option <code>-march=icelake</code> on active automatiquement les extensions AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID et AVX512VPOPCNTDQ.</p>
<h3 id="arm-et-aarch64">ARM et AArch64</h3>
<p>La prise en charge de la version 64 bits de l’architecture ARM a bien évolué dans GCC 8.1.<br>
C’est tout d’abord la variante <a href="https://community.arm.com/processors/b/blog/posts/introducing-2017s-extensions-to-the-arm-architecture">Armv8.4-A</a> qui fait son entrée (option <code>-march=armv8.4-a</code>) et qui apporte un EL2 sécurisé, l’accélération matérielle des algorithmes de hachage SHA2-512, SHA-3, SM3, et SM4 ainsi que l’amélioration des fonctions de virtualisation et de partitionnement mémoire (<em>Memory Partitioning and Monitoring</em>, soit MPAM).</p>
<p>On retrouve également dans cette version de GCC la prise en charge des processeurs Cortex-A75 et Cortex-A55, ainsi que la variante <a href="https://en.wikipedia.org/wiki/ARM_big.LITTLE#Successor">DynamIQ</a> <a href="https://fr.wikipedia.org/wiki/big.LITTLE" title="Définition Wikipédia">big.LITTLE</a>, qui associe ces deux processeurs.</p>
<p>Les options de prise en charge d’architecture de type <code>-march</code> et <code>-mcpu</code> acceptent maintenant des extensions optionnelles, comme par exemple la prise en charge du calcul en virgule flottante ou les extensions vectorielles. Cela apporte beaucoup de flexibilité puisqu’il suffira, par exemple, de spécifier <code>-mcpu=cortex-a53+nofp</code> pour générer du code adapté au processeur Cortex-A53 mais sans gestion du calcul sur les flottants. Voir la <a href="https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/ARM-Options.html#ARM-Options">documentation</a> à ce sujet.</p>
<p>L’extension vectorielle <a href="https://community.arm.com/processors/b/blog/posts/technology-update-the-scalable-vector-extension-sve-for-the-armv8-a-architecture"><em>Scalable Vector Extension</em></a> (SVE) est maintenant prise en charge en tant qu’option à partir de la variante ARMv8.2-A (et supérieur).<br>
À la différence de l’AVX d’Intel, cette extension SVE ne nécessite plus de modifier le code quand la largeur des registres vectoriels augmente d’une génération de processeur à l’autre (d’où le <em>Scalable</em> dans le nom). Avec un code source tirant parti du modèle de programmation <em>vector‐length agnostic</em> il suffira d’utiliser l’option <code>-march=armv8.2-a+sve</code>et GCC pourra générer du code vectorisé qui sera automatiquement adapté à l’architecture sous‐jacente de 128 bits jusqu’à 2 048 bits.</p></div><div><a href="https://linuxfr.org/news/sortie-de-gcc-8-1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/113154/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-gcc-8-1#comments">ouvrir dans le navigateur</a>
</p>
patrick_gZeroHeureDavy DefaudgusterhackRyDroidpalm123jcr83_seb_Bruno Michelhttps://linuxfr.org/nodes/113154/comments.atomtag:linuxfr.org,2005:News/384072018-01-23T11:17:57+01:002018-01-23T17:03:43+01:00Meltdown et Spectre, comment savoir si votre noyau est vulnérable ou pasLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Avec toute l’agitation et la parution rapide des correctifs au sujet des failles Meltdown et Spectre, il peut être difficile de savoir si son processeur est affecté et quel est le niveau exact de protection de sa machine.<br>
Afin d’aider les utilisateurs à trouver l’information, le développeur Thomas Gleixner <a href="http://lkml.iu.edu/hypermail/linux/kernel/1801.1/00145.html">a introduit un nouveau mécanisme</a> qui permet d’avoir une vue unifiée de l’état actuel de son noyau.</p></div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/users/patrick_g/journaux/noyau-vulnerable-ou-pas" hreflang="fr" href="https://linuxfr.org/redirect/101298">Journal à l’origine de la dépêche</a></li><li>lien nᵒ 2 : <a title="http://lkml.iu.edu/hypermail/linux/kernel/1801.1/00145.html" hreflang="en" href="https://linuxfr.org/redirect/101299">[tip:x86/pti] sysfs/cpu: Add vulnerability folder</a></li><li>lien nᵒ 3 : <a title="http://kroah.com/log/blog/2018/01/19/meltdown-status-2/" hreflang="en" href="https://linuxfr.org/redirect/101300">Connaître le statut de son noyau concernant Meltdown et Spectre</a></li></ul><div><p>Greg Kroah‐Hartman a posté <a href="http://kroah.com/log/blog/2018/01/19/meltdown-status-2/">un petit article à ce sujet</a> pour expliquer la commande à lancer :</p>
<p><code>grep . /sys/devices/system/cpu/vulnerabilities/*</code></p>
<p>Cela retourne le statut pour chaque vulnérabilité (Meltdown, Spectre v1 et Spectre v2) :</p>
<p><code>/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI</code><br><code>/sys/devices/system/cpu/vulnerabilities/spectre_v1:Vulnerable</code><br><code>/sys/devices/system/cpu/vulnerabilities/spectre_v2:Vulnerable: Minimal generic ASM retpoline</code></p>
<p>On voit que, sur le noyau de Greg, la faille Meltdown est comblée (par la fonction de <em>Page Table Isolation</em>). Que la faille Spectre v1 est encore grande ouverte, tandis que la faille Spectre v2 n’est que partiellement corrigée par le mécanisme Retpoline.</p>
<p>Bien entendu, cette commande ne fonctionne que sur les toutes dernières versions du noyau (4.14.14 et rétroportage sur les versions <a href="https://fr.wikipedia.org/wiki/LTS" title="Définition Wikipédia">LTS</a> à support étendu). Comme le dit Greg :</p>
<blockquote>
<p>« <em>If your kernel does not have that sysfs directory or files, then obviously there is a problem and you need to upgrade your kernel!</em> »</p>
</blockquote>
<p>Pour info, avec la dernière mise à jour du noyau effectuée aujourd’hui, voici le résultat de la commande sur mon portable sous Arch Linux :</p>
<pre><code>[patrick@laptop]: ~>$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/meltdown:Mitigation: PTI
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Full generic retpoline
</code></pre>
<h4 id="résumé-des-discussions-préexistantes-sur-le-journal-concerné">Résumé des discussions préexistantes sur le journal concerné</h4>
<p>Sur le risque de la faille pour l’utilisateur lambda : les failles sont connues/publiques, des démonstrations existent (voir les <a href="https://meltdownattack.com">vidéos</a>), y compris des attaques via le navigateur et JavaScript (il faut donc aussi avoir un navigateur à jour (en plus du noyau et/ou du microcode pour processeur), et se demander si un greffon bloquant tout ou partie du JavaScript est nécessaire ou pas pour sa propre utilisation). Le débit de fuite de données peut atteindre 500 Ko/s.</p>
<p>Sur le fait que la fonctionnalité soit accessible à tous les utilisateurs de la machine (plutôt qu’uniquement au super‐utilisateur <em>root</em>) : il n’y a plus besoin de tester la faille ou de vérifier la version du noyau pour connaître les vulnérabilités présentes sur la machine. Néanmoins, la version du noyau ou la ligne de commande de lancement du noyau sont disponibles de multiples façons et permettent déjà de savoir si le noyau est vulnérable. Il reste possible d’empêcher ou restreindre l’accès à cette nouvelle fonctionnalité via <a href="https://fr.wikipedia.org/wiki/SELinux" title="Définition Wikipédia">SELinux</a> par exemple.</p>
<p>On peut aussi noter que les vulnérabilités sont mentionnées par leurs noms de baptême et non leurs <a href="https://fr.wikipedia.org/wiki/Common_Vulnerabilities_and_Exposures">numéros standards d’identification des vulnérabilités en informatique</a> (en l’occurrence CVE-2017-5753, CVE-2017-5754 et CVE-2017-5715).</p>
<p>Le journal contient aussi des discussions sur d’autres sujets annexes, comme les préfixes binaires (Go <em>vs</em> Gio), les <a href="https://stackoverflow.com/questions/48089426/what-is-a-retpoline-and-how-does-it-work">Retpolines</a> ou la bonne/mauvaise utilisation de <code>grep</code>.</p>
<p><em>Merci à ceux qui ont participé à ces discussions, par leurs questions ou leurs réponses.</em></p></div><div><a href="https://linuxfr.org/news/meltdown-et-spectre-comment-savoir-si-votre-noyau-est-vulnerable-ou-pas.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/113578/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/meltdown-et-spectre-comment-savoir-si-votre-noyau-est-vulnerable-ou-pas#comments">ouvrir dans le navigateur</a>
</p>
patrick_gBenoît SibaudFlorent ZaraDavy Defaudhttps://linuxfr.org/nodes/113578/comments.atomtag:linuxfr.org,2005:News/379202017-06-24T21:33:33+02:002017-07-10T14:43:56+02:00Sortie de GCC 7.1Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La sortie de la nouvelle version majeure du <a href="http://gcc.gnu.org/">compilateur GCC</a> du projet GNU <a href="https://lists.gnu.org/archive/html/info-gnu/2017-05/msg00002.html">a été annoncée le 2 mai 2017</a>. Écrit à l’origine par Richard Stallman, le logiciel GCC (<em>GNU Compiler Collection</em>) est le <a href="http://fr.wikipedia.org/wiki/Compilateur">compilateur</a> de référence du monde du logiciel libre. Il accepte des codes sources écrits en C, C++, Objective-C, Fortran, Java, Go et Ada et fonctionne sur <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures">une multitude d’architectures</a>.</p>
<p>La suite de la dépêche vous propose une revue de certaines améliorations et nouvelles fonctionnalités de cette nouvelle version.</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f6763632e676e752e6f72672f696d672f6763636567672d36352e706e67/gccegg-65.png" alt="GCC" title="Source : https://gcc.gnu.org/img/gccegg-65.png"></p></div><ul><li>lien nᵒ 1 : <a title="https://gcc.gnu.org/gcc-7/changes.html" hreflang="en" href="https://linuxfr.org/redirect/99613">Liste des changements de GCC 7</a></li><li>lien nᵒ 2 : <a title="https://lwn.net/Articles/718910/" hreflang="en" href="https://linuxfr.org/redirect/99614">Un article introductif sur le site LWN</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/news/sortie-de-gcc-6" hreflang="fr" href="https://linuxfr.org/redirect/99615">La précédente dépêche pour la version 6.1</a></li><li>lien nᵒ 4 : <a title="https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/" hreflang="en" href="https://linuxfr.org/redirect/99616">Un article sur le blog Red Hat au sujet de la nouvelle alerte warning -Wimplicit-fallthrough</a></li><li>lien nᵒ 5 : <a title="https://gcc.gnu.org/gcc-7/porting_to.html" hreflang="en" href="https://linuxfr.org/redirect/99770">Guide de migration vers GCC 7</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#mais-que-veut-dire-gcc">Mais que veut dire GCC ?</a></li>
<li><a href="#collection-de-langages-de-programmation">Collection de langages de programmation</a></li>
<li><a href="#sch%C3%A9ma-de-version">Schéma de version</a></li>
<li>
<a href="#nouveaut%C3%A9s-sp%C3%A9cifiques-%C3%A0-un-ou-des-langages">Nouveautés spécifiques à un ou des langages</a><ul>
<li><a href="#ada">Ada</a></li>
<li><a href="#brig-hsail">BRIG (HSAIL)</a></li>
<li>
<a href="#famille-cc">Famille C/C++</a><ul>
<li><a href="#am%C3%A9liorations-sp%C3%A9cifiques-au-langagec">Améliorations spécifiques au langage C</a></li>
<li><a href="#am%C3%A9liorations-sp%C3%A9cifiques-au-langage-c">Améliorations spécifiques au langage C++</a></li>
</ul>
</li>
<li><a href="#fortran">Fortran</a></li>
<li><a href="#go">Go</a></li>
<li><a href="#java">Java</a></li>
</ul>
</li>
<li><a href="#diagnostics">Diagnostics</a></li>
<li><a href="#d%C3%A9lestage">Délestage</a></li>
<li><a href="#divers">Divers</a></li>
</ul><h2 id="mais-que-veut-dire-gcc">Mais que veut dire GCC ?</h2>
<p>En août 1987, <strong>GCC</strong> signifiait <strong>GNU C Compiler</strong> <em>(compilateur C de GNU)</em> car il ne prenait en charge que le <a href="https://fr.wikipedia.org/wiki/C_(langage)">langage de programmation <strong>C</strong></a>. Mais dès décembre 1987, la prise en charge expérimentale du <a href="https://fr.wikipedia.org/wiki/C%2B%2B"><strong>C++</strong></a> a été intégrée (stabilisée avec GCC 2 publié en 1992). Six autres langages de programmation seront pris en charge progressivement (Objective-C, Objective-C++, Fortran, Java, Ada, et Go).</p>
<p>Le divergence (<em>fork</em>) <strong>EGCS</strong> a commencé à avoir du succès. Après une longue période de négociation, les deux projets se sont finalement réunifiés en avril 1999 pour donner un nouveau nom : <strong>GNU Compiler Collection</strong>, en conservant le même acronyme que le projet original. La première version du nouveau projet fut GCC 2.95.</p>
<p>Donc, depuis 1999, <strong>GCC</strong> signifie <strong>GNU Compiler Collection</strong> et prend en charge neuf langages de programmation (et bien d’autres expérimentalement ou avec des extensions).</p>
<h2 id="collection-de-langages-de-programmation">Collection de langages de programmation</h2>
<ol>
<li>C, avec <code>gcc</code> ;</li>
<li>C++, avec <code>g++</code> ;</li>
<li>Objective-C ;</li>
<li>Objective-C++ ;</li>
<li>
<a href="https://fr.wikipedia.org/wiki/Fortran">Fortran</a>, avec <code>gfortran</code> ;</li>
<li>Java, avec <code>gcj</code> (<a href="http://tromey.com/blog/?p=911">qui est mort</a>) ;</li>
<li>
<a href="https://fr.wikipedia.org/wiki/Ada_(langage)">Ada</a>, avec <a href="https://fr.wikipedia.org/wiki/GNAT">GNAT</a> ;</li>
<li>Go, avec <code>gccgo</code> ;</li>
<li>OpenMP (c’est un langage qui étend d’autres langages de programmation) ;</li>
<li>Cilk Plus ;</li>
<li>OpenACC ;</li>
<li>Unified Parallel C avec le <em>GCC UPC compiler</em> (expérimental).</li>
</ol><p>Des logiciels tiers (<em>third parties</em>) permettent la prise en charge d’autres langages :</p>
<ol>
<li>Pascal, avec <code>gpc</code> ;</li>
<li>Modula (2 et 3) ;</li>
<li>PL/I ;</li>
<li>D, avec <code>gdc</code> ;</li>
<li>VHDL, avec <code>ghdl</code>.</li>
</ol><h2 id="schéma-de-version">Schéma de version</h2>
<p>Le projet GCC a modifié son <a href="https://gcc.gnu.org/develop.html">schéma de version</a> en août 2014 pour faire coïncider l’année 201<code>5</code> à la version GCC <strong><code>5</code></strong> et ainsi de suite pour donner : 201<code>6</code> → GCC <strong><code>6</code></strong>, puis 201<code>7</code> → GCC <strong><code>7</code></strong>. Attention, nous devrions donc avoir GCC <strong><code>10</code></strong> en 20<code>20</code>.</p>
<p>Détail des versions avec le nouveau schéma :</p>
<pre><code>Branche de
développement (2014-04-11)
de GCC 4.10
|
|
GCC 4.10 renommée (2014-08-13)
GCC 5.0
|
|
Branche de
développement
de GCC 5
|
+-------- Branche de livraison
| GCC 5.x (2015-04-12)
| |
| v
| GCC 5.1 (2015-04-22)
| |
| v
Branche GCC 5.2 (2015-07-16)
de dév. |
GCC 6 v
| GCC 5.3 (2015-12-04)
| |
| v
| GCC 5.4 (2016-06-03)
|\
| \
| `----- Branche de livraison
| GCC 6.x (2016-04-15)
| |
| v
| GCC 6.1 (2016-04-27)
| |
Branche v
de dév. GCC 6.2 (2016-08-22)
GCC 7 |
| v
| GCC 6.3 (2016-12-21)
|\
| \
| `----- Branche de livraison
| GCC 7.1 (2017-05-02)
| |
v |
Branche v
de dév. Branche de correction
GCC 8 de bogues sur GCC 7
</code></pre>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f667065727261642f67726170682d76657273696f6e732f67682d70616765732f676363342e706e67/gcc4.png" alt="timeline" title="Source : https://raw.githubusercontent.com/fperrad/graph-versions/gh-pages/gcc4.png"></p>
<h2 id="nouveautés-spécifiques-à-un-ou-des-langages">Nouveautés spécifiques à un ou des langages</h2>
<h3 id="ada">Ada</h3>
<p>Sur les plates‐formes les plus courantes, les programmes Ada n’ont plus besoin que la pile soit exécutable pour fonctionner correctement.</p>
<h3 id="brig-hsail">BRIG (HSAIL)</h3>
<p>Prise en charge de BRIG 1.0. BRIG est un format binaire pour HSAIL (<em>Heterogeneous System Architecture Intermediate Language</em>).</p>
<h3 id="famille-cc">Famille C/C++</h3>
<p>Les langages C et C++ partagent les améliorations suivantes :</p>
<ul>
<li>en cas d’erreur (de frappe) sur le nom d’une variable membre, GCC 6 pouvait déjà suggérer un nom correct. GCC 7 va encore plus loin et détectant des noms mal orthographiés de fonctions, macros, types, énumérations, etc. ;</li>
<li>le préprocesseur suggère aussi une correction si une directive est mal écrite ;</li>
<li>ajout des contrôles de débordement pour les opérations arithmétiques, <code>__builtin_add_overflow_p</code>,<code>__builtin_sub_overflow_p</code> et <code>__builtin_mul_overflow_p</code> ; contrairement à leurs équivalents sans le <code>_p</code> final, ceux‐ci ne demandent pas d’argument pour ranger le résultat de l’opération.</li>
</ul><h4 id="améliorations-spécifiques-au-langagec">Améliorations spécifiques au langage C</h4>
<ul>
<li>
<code>-fopenmp</code> comprend le mot‐clef <code>_Atomic</code> de C11 ;</li>
<li>ajouts des types <strong>flottants étendu</strong>, <code>FloatN</code> et <code>FloatNx</code> ; la disponibilité de ces types dépend de l’architecture utilisée.</li>
</ul><h4 id="améliorations-spécifiques-au-langage-c">Améliorations spécifiques au langage C++</h4>
<ul>
<li>prise en charge expérimentale de <strong>C++17</strong> (<code>-std=c++1z</code>) ;</li>
<li>
<a href="//linuxfr.org/news/cpp17-fixe-l-ordre-d-evaluation-des-expressions">l’ordre d’évaluation des expressions</a> peut être activé hors C++17 (<code>-fstrong-eval-order</code>) ou désactivé pour ce dernier (<code>-fno-strong-eval-order</code>) ;</li>
<li>implémentation des fonctionnalités <strong>C++17</strong> au sein de la <em>libstdc++</em>.</li>
</ul><h3 id="fortran">Fortran</h3>
<p>La version 4.5 de la <a href="http://www.openmp.org/specifications/">spécification OpenMP</a> est maintenant partiellement gérée par le compilateur Fortran.</p>
<h3 id="go">Go</h3>
<ul>
<li>il y a une implémentation complète des paquets utilisateurs de Go 1.8.1 ;</li>
<li>par rapport à la chaîne de compilation de Go 1.8.1, le ramasse‐miettes est plus conservateur et moins concurrent ;</li>
<li>
<code>-fgo-optimize-allocs</code> et <code>-fgo-debug-escape</code>
</li>
</ul><h3 id="java">Java</h3>
<p>Java (GCJ) n’existe plus (mais le code est toujours disponible via le gestionnaire de versions).</p>
<h2 id="diagnostics">Diagnostics</h2>
<p>Pour aider à la correction de bogues, GCC 7 apporte ces directives intéressantes :</p>
<ul>
<li>
<code>-fdiagnostics-parseable-fixit</code> : les suggestions de correction sont diffusées sous un format plus lisible et capable d’être mieux digéré par les <a href="https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement" title="Environnement de développement intégré">EDI</a> ;</li>
<li>
<code>fdiagnostics-generate-patch</code> : produit un fichier correctif dans le format <em>unifié</em> (<code>patch -u</code>) à la fin du diagnostic.</li>
</ul><h2 id="délestage">Délestage</h2>
<p>Depuis la version 5, deux implémentations sont proposées pour <a href="https://gcc.gnu.org/wiki/Offloading">délester</a>, complètement ou partiellement, l’exécution de code par un processeur externe (c.‐à‐d. un ou plusieurs processeurs graphiques) : <a href="https://gcc.gnu.org/wiki/OpenACC">OpenACC</a> et <a href="https://gcc.gnu.org/wiki/openmp">OpenMP</a>.</p>
<p>Cette version améliore la prise en charge des spécifications <strong>OpenACC 2.0A</strong> et autorise le délestage de <em>régions openMP</em> par les processeurs graphiques NVIDIA (PTX).</p>
<p>Ces deux interfaces sont accessibles via la bibliothèque <a href="https://gcc.gnu.org/onlinedocs/libgomp/"><em>libgomp</em></a>.</p>
<h2 id="divers">Divers</h2>
<ul>
<li>les extensions <a href="https://en.wikipedia.org/wiki/Cilk">Cilk+</a> pour C et C++ sont considérées obsolètes ;</li>
<li>pour les nouvelles cibles, <a href="https://gcc.gnu.org/wiki/LRAIsDefault">un nouveau LRA (<em>Local Register Allocator</em>) est utilisé par défaut</a>.</li>
</ul></div><div><a href="https://linuxfr.org/news/sortie-de-gcc-7-1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111630/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-gcc-7-1#comments">ouvrir dans le navigateur</a>
</p>
patrick_gDavid MarecOliverDavy DefaudRyDroidBenoît SibaudclaudexNÿcoFrançois Perradhttps://linuxfr.org/nodes/111630/comments.atomtag:linuxfr.org,2005:News/379692017-05-03T13:22:29+02:002017-05-03T16:13:41+02:00Expiration des brevets du Fraunhofer Institute sur le format MP3Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Le <a href="https://www.fraunhofer.de/en.html">Fraunhofer Institute</a> est à l’origine de la création du format de compression audio <a href="https://fr.wikipedia.org/wiki/MPEG-1/2_Audio_Layer_III#Histoire">MP3</a>. Il détient les brevets majeurs sur cette technologie et <a href="https://en.wikipedia.org/wiki/MP3#Licensing.2C_ownership_and_legislation">en a tiré profit</a> pendant de longues années :</p>
<blockquote>
<p>« <em>MP3 license revenues from Technicolor’s administration generated about €100 million for the Fraunhofer Society in 2005.</em> »</p>
</blockquote>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f7468756d622f652f65612f4d70332e7376672f33323070782d4d70332e7376672e706e67/320px-Mp3.svg.png" alt="Logo MP3" title="Source : https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Mp3.svg/320px-Mp3.svg.png"></p>
<p>Mais, ça, c’était avant. Un <a href="https://www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html">communiqué laconique</a> sur le site du Fraunhofer Institute nous apprend que le dernier brevet vient d’expirer officiellement :</p>
<blockquote>
<p>« <em>On April 23<sup>rd</sup>, 2017, Technicolor’s mp3 licensing program for certain mp3 related patents and software of Technicolor and Fraunhofer IIS has been terminated.<br>
We thank all of our licensees for their great support in making mp3 the defacto audio codec in the world, during the past two decades.</em> »</p>
</blockquote>
<p>Le format MP3 est maintenant complètement libéré des risques juridiques qu’entraînaient son utilisation dans des pays reconnaissant les brevets logiciels. On va donc sans doute voir enfin arriver des encodeurs MP3 dans Fedora, par exemple.</p>
<p>Pour avoir plus de détails sur les derniers brevets arrivés à expiration en 2017, voir la partie brevets de la <a href="https://en.wikipedia.org/wiki/MP3#Licensing.2C_ownership_and_legislation">page Wikipédia sur le MP3</a>.</p></div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/users/patrick_g/journaux/expiration-des-brevets-du-fraunhofer-institute-sur-le-format-mp3" hreflang="fr" href="https://linuxfr.org/redirect/99766">Journal à l’origine de la dépêche</a></li><li>lien nᵒ 2 : <a title="https://www.iis.fraunhofer.de/en/ff/amm/prod/audiocodec/audiocodecs/mp3.html" hreflang="en" href="https://linuxfr.org/redirect/99767">Communiqué du Fraunhofer Institute sur l’expiration du brevet</a></li><li>lien nᵒ 3 : <a title="https://www.fraunhofer.de/en.html" hreflang="en" href="https://linuxfr.org/redirect/99768">Site Web du Fraunhofer Institute</a></li></ul><div></div><div><a href="https://linuxfr.org/news/expiration-des-brevets-du-fraunhofer-institute-sur-le-format-mp3.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111809/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/expiration-des-brevets-du-fraunhofer-institute-sur-le-format-mp3#comments">ouvrir dans le navigateur</a>
</p>
patrick_gDavy DefaudFlorent ZaraBenoît Sibaudhttps://linuxfr.org/nodes/111809/comments.atomtag:linuxfr.org,2005:News/359872015-05-15T20:10:56+02:002015-05-15T21:58:21+02:00Le compilateur GCC 5.1 : harder, better, faster, strongerLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La sortie de la nouvelle version majeure du <a href="http://gcc.gnu.org/">compilateur GCC</a> du projet GNU <a href="https://gcc.gnu.org/ml/gcc-announce/2015/msg00000.html">a été annoncée</a> le 22 avril dernier. Écrit à l’origine par Richard Stallman, le logiciel GCC (<em>GNU Compiler Collection</em>) est le <a href="http://fr.wikipedia.org/wiki/Compilateur">compilateur</a> de référence du monde du logiciel libre. Il accepte des codes source écrits en C, C++, Objective-C, Fortran, Java, Go et Ada et fonctionne sur une <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures">multitude d’architectures</a>.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6763632e676e752e6f72672f696d672f6763636567672d36352e706e67/gccegg-65.png" alt="logo GCC" title="Source : http://gcc.gnu.org/img/gccegg-65.png"></p>
<p>Dans la suite de la dépêche, vous pourrez découvrir les nouveautés et les optimisations mises en œuvre dans cette version 5.1 de GCC.</p></div><ul><li>lien nᵒ 1 : <a title="https://gcc.gnu.org/gcc-5/changes.html" hreflang="en" href="https://linuxfr.org/redirect/92645">Liste des nouveautés de GCC 5.1</a></li><li>lien nᵒ 2 : <a title="https://gcc.gnu.org/wiki/cauldron2014" hreflang="en" href="https://linuxfr.org/redirect/92886">Cauldron 2014</a></li><li>lien nᵒ 3 : <a title="http://www.phoronix.com/scan.php?page=news_item&px=MTgzNjk" hreflang="en" href="https://linuxfr.org/redirect/92887">Phoronix : Just-In-Time (JIT) Compilation Support Merged For GCC 5</a></li><li>lien nᵒ 4 : <a title="http://www.phoronix.com/scan.php?page=news_item&px=MTgzNzk" hreflang="en" href="https://linuxfr.org/redirect/92888">Phoronix : OpenMP 4.0 Offloading For Intel MIC Lands In GCC 5</a></li><li>lien nᵒ 5 : <a title="https://software.intel.com/en-us/blogs/2014/11/24/what-is-new-for-x86-in-upcoming-gcc-50" hreflang="en" href="https://linuxfr.org/redirect/92889">Intel : New optimizations for X86 in upcoming GCC 5.0</a></li><li>lien nᵒ 6 : <a title="http://www.phoronix.com/scan.php?page=news_item&px=MTgxOTg" hreflang="en" href="https://linuxfr.org/redirect/92890">Phoronix : Automatic Feedback Directed Optimizer Merged Into GCC</a></li><li>lien nᵒ 7 : <a title="http://www.phoronix.com/scan.php?page=news_item&px=MTc4NDY" hreflang="en" href="https://linuxfr.org/redirect/92891">Phoronix : GCC 5 Will Have Full Support For Intel's Cilk Plus</a></li><li>lien nᵒ 8 : <a title="http://www.phoronix.com/scan.php?page=news_item&px=MTc3ODU" hreflang="en" href="https://linuxfr.org/redirect/92892">Phoronix : GCC 5.0 Adds DragonFlyBSD Support</a></li><li>lien nᵒ 9 : <a title="http://www.phoronix.com/scan.php?page=news_item&px=GCC-5-OpenACC-Stage-3-Closing" hreflang="en" href="https://linuxfr.org/redirect/92893">Phoronix : OpenACC Changes Merged Today For GCC 5</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#nouvelle-num%C3%A9rotation">Nouvelle numérotation</a></li>
<li>
<a href="#int%C3%A9gration-dans-les-distributions">Intégration dans les distributions</a><ul>
<li><a href="#lapproche-pragmatique">L'approche pragmatique</a></li>
<li><a href="#la-migration-totale">La migration totale</a></li>
</ul>
</li>
<li><a href="#prise-en-charge-de-dragonfly-bsd">Prise en charge de DragonFly BSD</a></li>
<li>
<a href="#nouvelles-optimisations">Nouvelles optimisations</a><ul>
<li><ul>
<li><a href="#optimisation-%C3%A0-l%C3%A9dition-des-liens-link-time-optimization">Optimisation à l'édition des liens (link-time optimization)</a></li>
<li><a href="#optimisation-par-profilage-automatique">Optimisation par profilage automatique</a></li>
<li><a href="#allocation-des-registres">Allocation des registres</a></li>
<li><a href="#vectorisation">Vectorisation</a></li>
<li><a href="#assainissement-du-code">Assainissement du code</a></li>
</ul></li>
</ul>
</li>
<li>
<a href="#nouveaut%C3%A9s-concernant-les-langages">Nouveautés concernant les langages</a><ul>
<li><ul>
<li><a href="#langages-c-et-c">Langages C et C++</a></li>
<li><a href="#go">Go</a></li>
<li><a href="#fortran">Fortran</a></li>
</ul></li>
</ul>
</li>
<li>
<a href="#principales-nouveaut%C3%A9s-concernant-les-architectures-mat%C3%A9rielles-cibles">Principales nouveautés concernant les architectures matérielles cibles</a><ul>
<li><ul>
<li><a href="#arm-et-arm-64-bits-aarch64">ARM et ARM 64 bits (AArch64)</a></li>
<li><a href="#avr"> AVR</a></li>
<li><a href="#x86-et-amd64">x86 et amd64</a></li>
<li><a href="#mips">MIPS</a></li>
</ul></li>
</ul>
</li>
<li><a href="#rapports-de-bugs">Rapports de bugs</a></li>
<li><a href="#appel-%C3%A0-contribution-pour-la-traduction-fran%C3%A7aise-de-gcc">Appel à contribution pour la traduction française de GCC</a></li>
<li><a href="#articles-de-nick-clifton">Articles de Nick Clifton</a></li>
</ul><h2 id="nouvelle-numérotation">Nouvelle numérotation</h2>
<p>On peut noter que le schéma de numérotation des versions de GCC a changé puisqu’on passe directement de la version 4.9 à la 5.1. Dorénavant toutes les versions majeures seront de la forme x.1 et les versions mineures (corrections de bug) incrémenteront le dernier chiffre.</p>
<p>Ainsi les prochaines versions mineures seront les 5.2 puis 5.3 tandis que la prochaine version majeure, d’ici un an environ, sera la 6.1.</p>
<h2 id="intégration-dans-les-distributions">Intégration dans les distributions</h2>
<p>Pour se mettre en conformité avec <code>C++11</code>, cette nouvelle version de GCC contient une mise à jour de l’ABI (Application Binary Interface) pour les objets <code>std::string</code> et <code>std::list</code> de la bibliothèque standard C++ qui impose une re-compilation des logiciels codés en C++ ainsi que de toutes leurs dépendances en C++.</p>
<p>Deux voies se dessinent pour l’intégration de cette version dans les distributions.</p>
<h3 id="lapproche-pragmatique">L'approche pragmatique</h3>
<p>Certaines distributions ont prévu d'assurer un passage en douceur (voir <a href="http://fedoramagazine.org/gcc-5-in-fedora-whats-an-abi-and-what-happens-when-we-change-it/">le plan pour Fedora 22</a>). Le compilateur fournira les dernières avancées du langage tout en générant du code utilisant la vieille ABI. Les logiciels utilisant les bibliothèques pre-C++11 ne devraient donc pas poser de problème.</p>
<p>Notons que les deux versions de l’ABI sont prises en compte par libstdc++ grâce au <a href="http://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi">versionage des symboles</a>, ce qui veut dire qu’il est possible de développer en utilisant la nouvelle version. Il suffit de définir une macro spéciale <code>_GLIBCXX_USE_CXX11_ABI</code> et le programme utilisera la convention <code>C++11</code>. Utiliser cette macro implique que les bibliothèques dépendantes utilisent aussi la nouvelle convention.</p>
<p>Afin de simplifier la migration vers la nouvelle ABI, les bibliothèques C++ les plus utilisées comme <code>boost</code> devraient être compilées avec les deux versions, comme la libstdc++. L’effort de maintenance des paquetages serait alors plus important et il n’est pas dit que tous les mainteneurs fassent cet effort.</p>
<p>Comme dans le cas de Fedora 23, il est souvent prévu de migrer vers la nouvelle version de l’ABI à terme. La transition se réaliserait alors sur plusieurs versions de la distribution.</p>
<h3 id="la-migration-totale">La migration totale</h3>
<p>D'autres distributions ont décidé de ne gérer qu’une seule ABI (voir le plan pour <a href="http://www.reddit.com/r/archlinux/comments/2vgxrj/how_will_arch_deal_with_gcc_5">Arch Linux</a> et <a href="https://wiki.gentoo.org/wiki/Upgrading_GCC#ABI_Changes">Gentoo</a>). La migration risque d’être plus douloureuse pour tout logiciel non fourni par la distribution. On pensera aux logiciels privateurs, mais aussi aux binaires que l’on cherche parfois à ne pas recompiler.</p>
<p>Toutefois cette approche a l’avantage de très largement simplifier la maintenance de libstdc++. Les symboles disponibles ne sont alors que ceux définis dans le standard, sans gestion de version.</p>
<p>Afin de réduire le risque, la gestion des symboles ABI C++98 pourrait être conservée dans la libstdc++, mais <em>quid</em> des bibliothèques ? Les empaqueteurs feront-ils l’effort de prendre en compte l’ancienne ABI ?</p>
<h2 id="prise-en-charge-de-dragonfly-bsd">Prise en charge de DragonFly BSD</h2>
<p>GCC est inclus depuis longtemps dans le système de base de DragonFly. Cependant, John Marino, le développeur DragonFly qui s’occupe notamment de la maintenance des deux compilateurs inclus dans base, devait maintenir un ensemble de patches pour le bon fonctionnement de GCC. Il a fini par <a href="https://gcc.gnu.org/ml/gcc-patches/2014-04/msg01128.html">les soumettre</a> en amont et ces derniers ont été acceptés. DragonFly est donc depuis pris en charge par GCC de manière officielle.</p>
<p>Depuis le 10 février dernier, le futur GCC 5.1 est <a href="http://lists.dragonflybsd.org/pipermail/commits/2015-February/417828.html">inclus</a> dans la version en développement de DragonFly. Il remplace GCC 4.4 qui était jusqu'alors inclus aux côtés de GCC 4.7.</p>
<p>Le 22 avril, soit le jour de la sortie de la version stable du compilateur, GCC 5.1 <a href="http://lists.dragonflybsd.org/pipermail/commits/2015-April/418427.html">remplace</a> GCC 4.7 en tant que compilateur par défaut, ce dernier devenant le compilateur alternatif.</p>
<h2 id="nouvelles-optimisations">Nouvelles optimisations</h2>
<h4 id="optimisation-à-lédition-des-liens-link-time-optimization">Optimisation à l'édition des liens (link-time optimization)</h4>
<p>Une passe de fusion des types C++ a été implémentée, qui permet une meilleure dévirtualisation des méthodes virtuelles utilisées par les mécanismes d’héritage. </p>
<p>Il est maintenant possible de spécifier l’optimisation (Ofast, O2…) au niveau des fonctions et non plus au niveau du programme global. </p>
<p>Les performances (utilisation mémoire et temps de calcul) de cette phase d’optimisation ont été améliorées, dans la continuité des progrès effectués depuis la première version de GCC (4.6) à proposer l’optimisation à l’édition des liens.</p>
<p>Selon <a href="http://hubicka.blogspot.cz/2015/04/GCC5-IPA-LTO-news.html">l'excellent post d'Honza Hubička</a> qui cite des chiffres d'Andi Kleen lors d'un build du noyau Linux, on passe d'un ralentissement de 108% de la phase de build avec GCC 4.8 à seulement 2-15% avec GCC 5.1.</p>
<p>Toujours dans le même article d'Honza (courrez le lire… on vous dit qu'il est excellent !) on apprend que la fonction LTO améliorée permet une réduction de 17% du code de LibreOffice (36% si on active en plus le profilage automatique).</p>
<h4 id="optimisation-par-profilage-automatique">Optimisation par profilage automatique</h4>
<p>Donner un profil d’utilisation de l’application, au niveau code, est utile pour le compilateur. Il peut s’agir de la détection des boucles les plus fréquentes, des cas les plus probables de branches difficiles à déterminer, etc. Par exemple, s’il sait qu’un <code>if</code> / <code>then</code> / <code>else</code> tombe dans le <code>else</code> dans 80 % des cas, le compilateur pourra placer le code du <code>else</code> directement à la suite du <code>if</code> (inversant ainsi le <code>then</code> et le <code>else</code>) pour réduire les sauts de code et la pression sur le cache d’instructions.</p>
<p>Une infrastructure d’instrumentation du code basée sur <a href="http://fr.wikipedia.org/wiki/Gprof">gprof</a> a toujours existé dans GCC (<code>fprofile-generate</code>, <code>fprofile-use</code>). Google en a proposé une nouvelle, basée sur l’outil de profilage <a href="http://en.wikipedia.org/wiki/Perf_%28Linux%29">perf</a> proposé par Linux. Selon les notes de version, le benchmark SPEC2006 sur architecture x86-64 voit son score amélioré de 4.7% avec le nouveau auto-FDO de Google alors que l'amélioration était de 7.3% avec la fonction classique FDO (feedback directed optimization).</p>
<p>Si les optimisations sont de moins bonne qualité que l’infrastructure classique de GCC, le temps d’exécution du programme instrumenté (et donc le temps de récupération du profil) est très largement amélioré. </p>
<p>D’autres améliorations concernent la robustesse du profilage aux modifications du code source après coup. Cette activité étant chronophage, on ne veut pas avoir à la répéter trop souvent.</p>
<h4 id="allocation-des-registres">Allocation des registres</h4>
<p>De manière similaire à ce qui se passe sur carte graphique, il peut être profitable de recalculer une valeur plutôt que d’aller la rechercher en mémoire. Une nouvelle passe (nommée "control-flow sensitive global register rematerialization") réalise ce travail au niveau de l’allocation des registres.<br>
Cette nouvelle passe d'optimisation permet un gain de 1% (ARM) et 0.5% (x86-64) sur le benchmark SPEC2000.</p>
<h4 id="vectorisation">Vectorisation</h4>
<p>GCC 5.1 apporte une nouvelle optimisation dans le cas des séquences consécutives de loads/stores. Selon la description qu'en donne <a href="https://software.intel.com/en-us/blogs/2014/11/24/what-is-new-for-x86-in-upcoming-gcc-50">le développeur Intel Evgeny Stupachenko</a>, ces séquences sont maintenant vectorisées automatiquement par GCC 5.1 ce qui entraine un gros gain de performance (multiplication par 6,5 par rapport à GCC 4.9 sur architecture Silvermont et par 3 sur architecture Haswell).</p>
<h4 id="assainissement-du-code">Assainissement du code</h4>
<p>De nouvelles instrumentations (développées initialement pour LLVM) permettent de détecter des bugs à l’exécution. La version 4.9 de GCC proposait un mécanisme de détection d’accès mémoire interdits ou de certains comportements indéfinis par la spécification du langage. Dans GCC 5.1, il s’agit de détecter des opérations particulières sur les flottants (comme diviser par zéro), des accès à des tableaux en dehors des bornes, d’autres formes d’accès mémoire illégaux…</p>
<h2 id="nouveautés-concernant-les-langages">Nouveautés concernant les langages</h2>
<p>Prise en charge des interfaces de programmation destinées à la parallélisation OpenMP version 4.0 (sur CPU classique et Xeon Phi) et OpenACC 2.0 (destinées aux cartes graphiques).</p>
<h4 id="langages-c-et-c">Langages C et C++</h4>
<p>Gestion des extensions Intel CilkPlus (parallélisation de code). Par rapport à OpenMP qui est à l'origine plutôt orienté "parallélisation de boucles", CilkPlus est plutôt orienté "parallélisation de tâches" : par un simple mot-clef ajouté, un appel de fonction est lancé dans un <em>thread</em> indépendant. </p>
<p>Ajout de fonctions intégrées pour la récupération de débordement en arithmétique entière. Cette information n’est pas accessible simplement en C/C++ alors qu’elle est toujours remontée par le processeur. Ces fonctions ont été implémentées pour la compatibilité avec Clang. Rappelons que de nombreuses fonctions intégrées permettent d’utiliser directement une instruction assembleur précise, comme les instructions SSE. </p>
<p>De nombreuses fonctionnalités de C++ 2014 sont maintenant prises en charge tant par le compilateur que par la bibliothèque standard.</p>
<h4 id="go">Go</h4>
<p>GCC prend complètement en charge Go 1.4.2. Il fournit également les deux outils <a href="http://golang.org/cmd/go/">go</a> et <a href="http://golang.org/cmd/gofmt/">gofmt</a>.</p>
<h4 id="fortran">Fortran</h4>
<p>La <a href="https://gcc.gnu.org/wiki/Fortran2003Status">couverture des fonctionnalités de Fortran 2003</a> est presque complète avec l’ajout de trois modules d’arithmétiques IEEE (IEEE_FEATURES, IEEE_EXCEPTIONS and IEEE_ARITHMETIC). Il reste encore deux modules en cours d’implémentation (types dérivés paramétrables, entrée/sortie pour les types dérivés) et six modules dont l’implémentation est partielle sur un total de cinquante-sept.</p>
<p><a href="https://gcc.gnu.org/wiki/Fortran2008Status">Pour Fortran 2008</a>, GCC propose une implémentation complète mais expérimentale des <code>coarrays</code> avec l’option <code>-fcoarray=lib</code>. C’est un bond en avant depuis une première prise en compte partielle en 2010. Il s'appuie sur le projet <a href="http://www.opencoarrays.org/">OpenCoarrays</a> pour l'implémentation multi-image, qui utilise en sous main les bibliothèques MPI et <a href="http://gasnet.lbl.gov/">GASnet</a> (Global-Address Space Networking) pour les communications inter-nœuds.</p>
<p>Pour Fortran 2015, GCC prend en charge <code>IMPLICIT NONE</code> (external, type) et étend l'instruction <code>ERROR STOP</code> aux procédures pures.</p>
<p>Les développeurs Fortran bénéficient d’autres petites améliorations comme :</p>
<ul>
<li>la coloration (partielle) de la sortie du compilateur avec l’option <code>-fdiagnostics-color</code> ;</li>
<li>l’option <code>-Wtabs</code>, modifiée pour avertir par défaut des tabulations qui empoisonnent le code () ;</li>
<li>l’option <code>-Werror=line-truncation</code>, activée par défaut pour prévenir de la troncature automatique des lignes ;</li>
<li>l’option <code>-Wuse-without-only</code> qui prévient de l’importation complète, et potentiellement erronée, de tous éléments publics d’un module ;</li>
<li>une correction importante des fonctions <code>READ</code> / <code>WRITE</code> pour les programmes localisés ;</li>
<li>des extensions pour le calcul parallèle (TS18508).</li>
</ul><h2 id="principales-nouveautés-concernant-les-architectures-matérielles-cibles">Principales nouveautés concernant les architectures matérielles cibles</h2>
<h4 id="arm-et-arm-64-bits-aarch64">ARM et ARM 64 bits (AArch64)</h4>
<p>Adaptation de la génération du code pour certains modèles, adaptations à diverses variantes, support de nouveaux processeurs.</p>
<h4 id="avr"> AVR</h4>
<p>Cette architecture utilisée par bon nombre de microcontrôleurs est gérée de manière différente par GCC 5. La grande variabilité des fonctionnalités nécessite maintenant d'utiliser un fichier spécifique pour l'appareil ciblé. </p>
<h4 id="x86-et-amd64">x86 et amd64</h4>
<p>Support des futures instructions AVX vectorielles sur 512 bits des futurs processeurs Intel (et sans doute AMD). Actuellement, les dernières générations gèrent des registres allant jusqu'à 256 bits (AVX et AVX2). Ces instructions sont notamment utilisées par le compilateur lors de la vectorisation des boucles. </p>
<p>Support des futures instructions de protection mémoire <a href="https://fr.wikipedia.org/wiki/en:Intel%20MPX" title="Définition Wikipédia">Intel MPX</a> qui aideront à détecter des erreurs mémoire de type <a href="https://fr.wikipedia.org/wiki/buffer%20overflow" title="Définition Wikipédia">buffer overflow</a> dont profitent typiquement les codes malveillants. Voir <a href="https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler">cette page dédiée sur le wiki GCC</a> qui décrit en détail cette amélioration substantielle de la sécurité du code.</p>
<p>Nouvelles options pour le profiling de code, l'alignement, et la gestion du registre RAX: quand les instructions SSE ne sont pas utilisées (typiquement dans le noyau Linux qui les désactive automatiquement), il arrive qu'il ne soit pas nécessaire de mettre ce registre à jour. Le registre RAX sert en effet à déterminer, selon la convention d'appel, comment sauver les registres lors d'un appel de fonction. </p>
<h4 id="mips">MIPS</h4>
<p>Prise en charge de nouveaux processeurs et nouvelles ABI. </p>
<h2 id="rapports-de-bugs">Rapports de bugs</h2>
<p>Une nouvelle option a été ajoutée à GCC: quand une erreur interne de compilateur apparaît (ICE, toujours liée à un bug de GCC suite à une mauvaise gestion d'un bon ou mauvais code), il est maintenant possible de générer un rapport de bug utile aux développeurs de GCC. Ceci est valable pour la compilation de programmes C ou C++.</p>
<h2 id="appel-à-contribution-pour-la-traduction-française-de-gcc">Appel à contribution pour la traduction française de GCC</h2>
<p>Malgré le statut de compilateur par défaut des plates-formes libres de GCC, sa localisation n’a pas reçu toute l’attention qu’elle méritait depuis la version 3.4.3 (en 2008). Certainement parce qu’entre temps le nombre de chaînes a traduire a considérablement augmenté, passant de 4 700 à plus de 11 000.</p>
<p>L’équipe française du <a href="http://translationproject.org/team/fr.html">Translation Project</a> a récemment recommencé à travailler sur la <a href="http://translationproject.org/domain/gcc.html">localisation de GCC</a>. Mais vu l’ampleur du travail, toute contribution sera la bienvenue. Alors si vous appréciez un environnement parlant la langue de Molière n'hésitez pas à proposer votre aide sur la <a href="http://listes.traduc.org/mailman/listinfo/traduc">liste de diffusion de Traduc.org</a>.</p>
<h2 id="articles-de-nick-clifton">Articles de Nick Clifton</h2>
<p>Si vous voulez suivre le développement de GCC, sans nécessairement vous plonger dans le détail des <em>commits</em> ou des annonces sur les listes de diffusion, un bon moyen est de suivre le <a href="http://nickclifton.livejournal.com">blog de Nick Clifton</a>. Ce développeur GCC propose presque chaque mois une synthèse des nouveautés.</p>
<p>Lire rétrospectivement les articles concernant GCC 5.1 permet de mieux mesurer les avancées de cette version :</p>
<ul>
<li><a href="http://nickclifton.livejournal.com/16188.html"><em>May 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/16414.html"><em>June 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/16681.html"><em>July 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/17060.html"><em>August 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/17282.html"><em>September 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/17556.html"><em>October 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/17770.html"><em>November 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/17948.html"><em>December 2014 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/18217.html"><em>January 2015 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/18447.html"><em>February 2015 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/18769.html"><em>March 2015 GNU Toolchain Update</em></a></li>
<li><a href="http://nickclifton.livejournal.com/19126.html"><em>April 2015 GNU Toolchain Update</em></a></li>
</ul></div><div><a href="https://linuxfr.org/news/le-compilateur-gcc-5-1-harder-better-faster-stronger.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/104337/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/le-compilateur-gcc-5-1-harder-better-faster-stronger#comments">ouvrir dans le navigateur</a>
</p>
patrick_gStéphane AuleryBAudkhivapiaNils RatusznikRolinhAnonymeYves BourguignonMartin Perespalm123Benoît SibaudClément DavidSytoka ModonesdeemOntologiarpnpifXavier TeyssierNicolas BoulayrogoSpyhawkhttps://linuxfr.org/nodes/104337/comments.atomtag:linuxfr.org,2005:News/355002014-06-23T22:37:04+02:002014-06-23T22:37:04+02:00Le Top 500 de juin 2014Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Le quarante-troisième Top 500 des supercalculateurs mondiaux est sorti aujourd’hui à l’occasion de la <a href="http://www.isc-events.com/isc14/">conférence International Supercomputing</a> de Leipzig en Allemagne.</p>
<p>Rappelons que le Top 500 se base sur une soumission volontaire (de nombreuses machines puissantes mais classifiées ne participent pas à la course) et sur un comparateur de performances spécifique extrêmement parallélisable (le code <a href="http://fr.wikipedia.org/wiki/LINPACK">LINPACK</a>, qui concerne la résolution de systèmes d’équations linéaires).</p>
<p>L’analyse dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.top500.org/list/2014/06/" hreflang="en" href="https://linuxfr.org/redirect/90923">La liste du Top 500</a></li><li>lien nᵒ 2 : <a title="http://www.top500.org/lists/2014/06/highlights/" hreflang="en" href="https://linuxfr.org/redirect/90924">Les principales nouveautés</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/news/le-top-500-de-novembre-2013" hreflang="fr" href="https://linuxfr.org/redirect/90925">La news LinuxFr.org sur le classement de novembre 2013</a></li></ul><div><h2 id="boring">Boring ?</h2>
<p>Le développeur Linux bien connu Arnd Bergmann <a href="https://plus.google.com/+ArndBergmann/posts/Vq5TDaXWjZi">a qualifié</a> ce classement de <em>"Most boring #top500 list ever"</em> et il faut bien reconnaitre qu'on trouve assez peu de surprises dans ce top 500 de juin 2014.<br>
Pour la troisième fois d'affilée, le supercalculateur Tianhe-2 est en tête de liste avec un score (inchangé) de 33,86 pétaFLOPS. Les neuf premiers de la liste sont d'ailleurs exactement les mêmes qu'en novembre dernier et il faut attendre la dixième place pour avoir une petite nouveauté à se mettre sous la dent. Il s'agit d'un Cray XC30 mesuré à 3,14 pétaFLOPS et installé dans un centre de recherche américain non dévoilé.</p>
<p>Comme le souligne Arnd, la diversité technique se réduit encore un peu plus puisque la dernière machine vectorielle (l'Earth Simulator 2) a été éjectée du classement. Tout ce qui subsiste ce sont des clusters de processeurs scalaires (en majorité des x86-64 mais aussi plusieurs POWER).<br>
Même si nous sommes assez loin d'une architecture révolutionnaire et exotique, espérons toutefois que la future montée en puissance dans les datacenters des coeurs de calcul ARM64 entrainera un certain renouvellement au sein du Top 500.</p>
<h2 id="lévolution-par-pays">L’évolution par pays</h2>
<p>Les USA voient leur total de machines baisser de 265 à 233 dans cette nouvelle liste de juin 2014, tandis que la Chine reprend sa marche en avant et passe de 63 à 76 supercalculateurs.<br>
Ce nombre s'approche du total <em>combiné</em> des trois plus grandes nations européennes (Grande-Bretagne avec 30 machines, France avec 27 machines et Allemagne avec 23) ce qui souligne le dynamisme effréné de la Chine dans cette course mondiale.<br>
La première machine française reste le calculateur Pangea de la firme Total. Son score de 2 098 TFLOPS le classe en seizième position (deux places de moins par rapport à la liste précédente).</p>
<h2 id="statistiques-sur-la-liste">Statistiques sur la liste</h2>
<p>Le ticket d’entrée pour accéder à cette liste Top 500 de juin 2014 est de 133,7 TFLOPS. Il était de seulement 117,8 TFLOPS il y a six mois.<br>
Si l’on s’intéresse à la puissance cumulée des 500 machines, on arrive à un total de 274 pétaFLOPS. Là encore, l’évolution est notable, puisque le score cumulé était de 250 pétaFLOPS en novembre dernier, et de 223 pétaFLOPS il y a un an.<br>
On trouve maintenant trente‐sept supercalculateurs à plus d’un pétaFLOPS dans la liste, alors qu’ils n’étaient que trente-et-un il y a six mois.<br>
Le nombre moyen de cœur de calcul des machines de cette nouvelle liste Top500 est de 43 301 cœurs par système. Il était de 41 434 il y a six mois et de 38 700 il y a un an.</p>
<p>Enfin le dernier de la liste était encore en position 384 il y a six mois dans le classement de novembre dernier. Cette chute dans le classement est la plus faible enregistrée depuis deux décennies et elle constitue un nouvel indice pour caractériser cette édition comme étant un mauvais cru.</p>
<h2 id="les-systèmes-dexploitation">Les systèmes d’exploitation</h2>
<p>Encore une micro-progression pour l'OS au manchot puisque les machines tournant sous Linux sont désormais 485 au lieu de 482 il y a six mois. Cela représente 97% du total des machines et même 98,2 % en terme de capacité de calcul.</p></div><div><a href="https://linuxfr.org/news/le-top-500-de-juin-2014.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/102593/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/le-top-500-de-juin-2014#comments">ouvrir dans le navigateur</a>
</p>
patrick_gXavier Teyssierbubar🦥https://linuxfr.org/nodes/102593/comments.atomtag:linuxfr.org,2005:News/350132014-04-24T10:38:52+02:002014-05-11T19:26:40+02:00Sortie de la version 4.9 du compilateur GCCLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>La nouvelle version majeure du <a href="http://gcc.gnu.org/">compilateur GCC</a> du projet GNU vient de sortir. Écrit à l’origine par Richard Stallman, le logiciel GCC (<em>GNU Compiler Collection</em>) est le <a href="http://fr.wikipedia.org/wiki/Compilateur">compilateur</a> de référence du monde du logiciel libre. Il accepte des codes source écrits en C, C++, Objective-C, Fortran, Java, Go et Ada, et fonctionne sur une <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures">multitude d’architectures</a>.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f6763632e676e752e6f72672f696d672f6763636567672d36352e706e67/gccegg-65.png" alt="logo GCC" title="Source : http://gcc.gnu.org/img/gccegg-65.png"></p>
<p>Dans la suite de la dépêche, vous pourrez découvrir les nouveautés et les optimisations mises en œuvre dans cette version 4.9 de GCC.</p></div><ul><li>lien nᵒ 1 : <a title="http://gcc.gnu.org/ml/gcc/2014-04/msg00195.html" hreflang="en" href="https://linuxfr.org/redirect/89199">L’annonce de la sortie par Jakub Jelinek</a></li><li>lien nᵒ 2 : <a title="http://gcc.gnu.org/gcc-4.9/changes.html" hreflang="en" href="https://linuxfr.org/redirect/89200">La liste des nouveautés </a></li><li>lien nᵒ 3 : <a title="http://gcc.gnu.org/" hreflang="en" href="https://linuxfr.org/redirect/90189">Le site du projet GCC</a></li><li>lien nᵒ 4 : <a title="http://linuxfr.org/news/la-version-4-8-du-compilateur-gcc-est-disponible" hreflang="fr" href="https://linuxfr.org/redirect/90190">La dépêche LinuxFr.org sur GCC 4.8</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#optimisations-g%C3%A9n%C3%A9rales">Optimisations générales</a><ul>
<li><a href="#ubsan">Ubsan</a></li>
<li><a href="#protection-de-la-pile">Protection de la pile</a></li>
<li><a href="#am%C3%A9liorations-lto">Améliorations LTO</a></li>
</ul>
</li>
<li>
<a href="#langages">Langages</a><ul>
<li><a href="#iso-c11">ISO C11</a></li>
<li><a href="#c1y">C++1y</a></li>
<li><a href="#openmp">OpenMP</a></li>
</ul>
</li>
<li>
<a href="#architectures">Architectures</a><ul>
<li><a href="#aarch64">AArch64</a></li>
<li><a href="#power8">POWER8</a></li>
<li><a href="#extension-avx512">Extension AVX512</a></li>
</ul>
</li>
<li><a href="#en-bref">En bref</a></li>
<li><a href="#suivre-le-d%C3%A9veloppement-de-gcc">Suivre le développement de GCC</a></li>
</ul><h2 id="optimisations-générales">Optimisations générales</h2>
<h3 id="ubsan">Ubsan</h3>
<p><code>UndefinedBehaviorSanitizer</code> est un projet initialement développé pour LLVM et qui fait son apparition dans GCC. Il rejoint ainsi <code>ThreadSanitizer</code> et <code>AddressSanitizer</code> qui sont entrés dans GCC 4.8.<br>
Contrairement à <a href="http://fr.wikipedia.org/wiki/valgrind" title="Définition Wikipédia">valgrind</a> qui lance le programme dans une machine virtuelle, il s’agit comme pour tous les <em>Sanitizers</em> d’instrumenter le code binaire généré. <code>UndefinedBehaviorSanitizer</code> détecte les erreurs qui donnent lieu à un comportement indéfini à l’exécution. <br>
Il s’agit, par exemple, des divisions par zéro, des erreurs de <em>cast</em> de type non aligné, de valeurs en dehors des bornes représentables par le type (énumérations ou flottants).</p>
<p>Cette option s'active avec <code>-fsanitize=undefined</code> et elle est disponible pour les langages C et C++.</p>
<h3 id="protection-de-la-pile">Protection de la pile</h3>
<p>Les problèmes de débordement de pile sont un problème récurrent dans les programmes, en particulier avec le langage <em>C</em> qui alloue dans le même espace mémoire les variables locales à une fonction, la sauvegarde des registres et la <a href="http://fr.wikipedia.org/wiki/Pile_d%27ex%C3%A9cution">pile d’exécution</a> contenant toutes les adresses de retour.</p>
<p>Une personne mal intentionnée (ou un chercheur en sécurité) peut parfois fournir plus de données que le programme n’est prévu pour en traiter, et cela entraîne un écrasement des autres données. En visant soigneusement, on s’arrange alors pour écraser l’adresse de retour avec une valeur soigneusement calculée pour exécuter des commandes non prévues. Le processeur, à la fin de la fonction, pensant revenir à la fonction appelante, va exécuter du code écrit par l’attaquant, qui n’a rien à voir avec le programme d’origine.</p>
<p>L’idée de base pour se protéger de ce genre de chose est de déposer une valeur secrète juste avant l’adresse de retour, cette valeur est appelée « <a href="http://fr.wikipedia.org/wiki/Technique_du_canari">canari</a> » à l’image des oiseaux utilisés par les mineurs pour détecter les nappes de gaz. Lorsque la fonction se termine, cette valeur est contrôlée. S’il y a eu débordement, la valeur du « canari » est écrasée, elle ne correspond plus et le programme est arrêté avant d’utiliser l’adresse de retour corrompue.</p>
<p>GCC dispose déjà de deux fonctions permettant de mettre un tel mécanisme en place. </p>
<p>L’option <code>-fstack-protector-all</code>, comme son suffixe l’indique, provoque l’ajout d’un canari pour tous les appels de fonction. Cet ajout est coûteux, car il y a plus d’instructions à exécuter, le code est plus long et va diminuer l’efficacité des différents caches.</p>
<p>L’option <code>-fstack-protector</code> provoque l’ajout d’un canari sur toutes les fonctions qui contiennent une variable locale de type chaîne de caractères prévue pour 8 octets ou plus (valeur paramétrable avec l’option <code>--param=ssp-buffer-size=n</code>). Cette option est nettement moins coûteuse, mais laisse pas mal de trous.</p>
<p>Les ingénieurs de Google ont donc développé une troisième alternative appelée <code>-fstack-protector-strong</code> pour améliorer la couverture des canaris sans avoir à l’ajouter à toutes les fonctions d’un programme. Elle est déjà utilisée avec succès dans <em>Chrome OS</em> depuis au moins 10 mois. Par rapport à <code>-fstack-protector</code>, cette option protège également plusieurs autres situations à risque :</p>
<ul>
<li>toutes les fonctions qui utilisent des variables locales contenant des tableaux (En <em>C</em>, tous les tableaux sont susceptibles de déborder par rapport à la taille allouée, les chaînes de caractères n’en sont qu’un cas particulier), y compris si le tableau est dans une structure ou une union ;</li>
<li>toutes les fonctions qui utilisent un pointeur vers une autre variable (l’adresse d’une autre variable) ;</li>
<li>et toutes les fonctions qui stockent des variables dans les registres.</li>
</ul><p>La version 3.14 du noyau Linux a été également modifiée pour permettre de le compiler avec les différentes options (il n’y a pas d’option pour <code>-fstack-protector-all</code>) :</p>
<ul>
<li>
<code>CONFIG_CC_STACKPROTECTOR_NONE</code> n’utilise pas de canaris ;</li>
<li>
<code>CONFIG_CC_STACKPROTECTOR_REGULAR</code> (anciennement <code>CONFIG_CC_STACKPROTECTOR</code>) pour <code>-fstack-protector</code> ;</li>
<li>
<code>CONFIG_CC_STACKPROTECTOR_STRONG</code> pour <code>-fstack-protector-strong</code>.</li>
</ul><p>Ingo Molnar a mesuré quelques valeurs par rapport à l’usage de ces options (ces valeurs ne sont pas absolues et dépendent bien évidemment de la configuration générale du noyau) :</p>
<ul>
<li>
<code>-fstack-protector</code> augmente la taille du noyau de 0,33 % et protège 2,81 % des fonctions ;</li>
<li>
<code>-fstack-protector-strong</code> augmente la taille du noyau de 2,4 %, mais protège 20,5 % des fonctions.</li>
</ul><p>Bien que cette méthode ne soit pas parfaite, elle bloque un nombre significatif de problèmes de sécurité dans les applications. Comme toutes ces méthodes, elle a le double désavantage de faire payer à tous les utilisateurs les éventuels bogues de sécurité des applications et de ne pas inciter à la correction de ces problèmes. On peut s’attendre à ce que dans le futur, un certain nombre de distributions soient compilées avec cette option.</p>
<p>Pour aller plus loin :</p>
<ul>
<li>
<a href="http://www.outflux.net/blog/archives/2014/01/27/fstack-protector-strong/">l’article de Kees Cook</a> ;</li>
<li>
<a href="https://lwn.net/Articles/584225/">l’explication de LWN</a>.</li>
</ul><h3 id="améliorations-lto">Améliorations LTO</h3>
<p>La technique LTO (pour <em><strong>L</strong>ink <strong>T</strong>ime <strong>O</strong>ptimization</em>) qui a été <a href="//linuxfr.org/news/sortie-de-gcc-45#lto">introduite dans GCC 4.5</a> reçoit encore une fois son lot d’améliorations incrémentales.<br>
Cette fonction LTO permet des passes d’optimisations supplémentaires lors de l’édition des liens, au prix d’un temps de compilation et d’une empreinte mémoire largement augmentés.</p>
<p>La version 4.9 de GCC vise à réduire ces coûts afin de permettre une utilisation plus aisée par les distributions. On note en particulier une réécriture de l’algorithme de « _type merging_ », un travail sur les méthodes virtuelles afin de les éliminer le plus tôt possible, un chargement du corps des fonctions à la demande et un déchargement le plus tôt possible.<br>
Tout ces correctifs (et les nombreux autres non cités) constituent une importante amélioration globale de LTO et suppriment des goulets d’étranglements qui existaient dans les versions précédentes de GCC.</p>
<p>Selon les notes de version, l’occupation mémoire d’une compilation LTO de Firefox (avec les symboles de débogage) passe ainsi de 15 Gio à seulement 3,5 Gio. Le temps passé à faire l’édition des liens dégringole, quant à lui, de 1 700 secondes à 350 secondes.</p>
<p>Point important à noter, plusieurs correctifs ont été proposés à Linus afin d’intégrer la possibilité de compiler le noyau en mode LTO. Ces correctifs sont écrits par Andi Kleen et Michal Marek et <a href="http://lkml.iu.edu/hypermail/linux/kernel/1404.0/03450.html">ont été proposées pour le futur noyau 3.15</a>.<br>
Linus a jugé que ces correctifs étaient encore trop expérimentaux et a demandé des tests prouvant qu’une compilation LTO du noyau apportait vraiment des bénéfices :</p>
<blockquote>
<p><em>So I think I’ll let this wait a bit longer, unless people start talking about the upsides.</em><br><em>How much smaller is the end result? How much faster is it? How much more beautiful is it? Does it make new cool things possible? Are those cool things really close on the horizon and really want this merged even though it’s not really quite ready yet?</em><br><em>So please: convince me.</em></p>
</blockquote>
<p>Après divers échanges sur la LKML il s’avère que, pour l’instant, la fonction LTO de GCC n’apporte que peu de bénéfices en termes de performances sur un projet déjà extrêmement optimisé comme l’est le noyau. En revanche, on observe une réduction de la taille finale du noyau, ce qui intéresse les gens travaillant dans l’embarqué.<br>
Andi Kleen ajoute également que les bancs d’essai utilisés sont peu sensibles aux performances du compilateur et qu’on sous‐estime généralement le gain apporté par LTO.</p>
<h2 id="langages">Langages</h2>
<h3 id="iso-c11">ISO C11</h3>
<p>La prise en charge de la <a href="http://en.wikipedia.org/wiki/C11_%28C_standard_revision%29">norme C11</a> s’améliore encore dans cette version 4.9 de GCC. On note en particulier l’arrivée des types <code>_Atomic</code>, <code>_Generic</code> ainsi que de <code>_Thread_local</code>.<br>
Cette norme C11 est maintenant considérée comme aussi bien prise en charge que l’ancienne C99.</p>
<h3 id="c1y">C++1y</h3>
<p>On retrouve dans cette nouvelle mouture de GCC plusieurs nouveautés concernant la prise en charge de la future version de C++ (connue sous le nom de C++14).<br>
Le récapitulatif est disponible sur <a href="http://gcc.gnu.org/projects/cxx1y.html"><em>cette page</em></a>, mais on peut citer les <em>polymorphic lambdas</em> (<a href="http://isocpp.org/files/papers/N3649.html">N3649</a>) ou encore la déduction automatique du type de retour d’une fonction (<a href="http://isocpp.org/files/papers/N3638.html">N3638</a>).</p>
<p>Plus anecdotique, on peut maintenant séparer de longs nombres par un guillemet droit simple afin d’améliorer la lisibilité. On aura ainsi :</p>
<pre><code class="C"><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">1</span><span class="err">'</span><span class="mo">04</span><span class="mi">8</span><span class="err">'</span><span class="mi">576</span><span class="err">'</span><span class="mi">752</span><span class="err">'</span><span class="mi">870</span><span class="p">;</span></code></pre>
<p>au lieu de :</p>
<pre><code class="c"><span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="mi">1048576752870</span><span class="p">;</span></code></pre>
<h3 id="openmp">OpenMP</h3>
<p>GCC 4.9 apporte la prise en charge de la version 4.0 de l’interface de programmation OpenMP.<br><a href="http://openmp.org/wp/2013/07/openmp-40/">OpenMP 4.0</a> est sorti en fin d’année 2013 avec beaucoup de nouveautés, notamment en termes de prise en charge des accélérateurs ou des directives SIMD. La branche <em>GOMP 4.0</em> de GCC, qui suivait l’évolution de la norme, a permis son inclusion rapide dans la branche principale de GCC.</p>
<p>Une nouvelle option <code>-fopenmp-simd</code> permet d’activer la prise en charge des directives SIMD d’OpenMP sans avoir à suivre les autres directives. Il est également possible de régler plus finement le modèle utilisé pour évaluer le coût de vectorisation des boucles de code. Il suffit de passer l’option <code>-fsimd-cost-model=</code> avec l’une des trois valeurs suivantes : <code>unlimited</code>, <code>dynamic</code> et <code>cheap</code>.</p>
<p>Rappelons que la prise en charge d’OpenMP est une des grandes différences qui distinguent encore GCC et LLVM/Clang, puisque LLVM ne propose aucune prise en charge d’OpenMP dans sa branche principale.</p>
<h2 id="architectures">Architectures</h2>
<h3 id="aarch64">AArch64</h3>
<p>Avant la déferlante attendue des processeurs ARM 64 bits, on note que GCC 4.9 améliore encore sa couverture du jeu d’instructions ARMv8, avec la prise en charge des <a href="http://fr.wikipedia.org/wiki/Fonction_intrins%C3%A8que">fonctions intrinsèques</a> <code>crypto</code> et <code>CRC</code>, mais aussi l’amélioration des performances des intrinsèques de vectorisation SIMD.</p>
<p>La prise en charge de l’architecture AArch64 profite également de l’activation de la passe d’optimisation REE (<em>Redundant Extension Elimination</em>) ainsi que de du LRA (<em>local register allocator</em>).<br>
Le réglage fin de la génération du code émis par GCC est amélioré pour les cœurs de processeur Cortex-A53 et Cortex-A57. Il est également possible d’indiquer au compilateur que l’on vise une architecture de type <em>big.LITTLE</em> via l’option <code>-mcpu=cortex-a57.cortex-a53</code>.</p>
<h3 id="power8">POWER8</h3>
<p>Le titanesque et surpuissant <a href="http://en.wikipedia.org/wiki/POWER8">POWER8</a> d’IBM est maintenant pris en charge par GCC 4.9, via l’option <code>-mcpu=power8</code>.<br>
GCC a également été modifié afin de prendre en charge le module HTM (<em>Hardware Transactional Memory</em>) de ces nouveaux processeurs POWER8. C’est dans la <a href="http://gcc.gnu.org/wiki/TransactionalMemory">bibliothèque <em>libitm</em></a> qu’a été ajouté un raccourci (<em>fast path</em>) qui profite à fond des circuits spécialisés présents dans le processeur.</p>
<h3 id="extension-avx512">Extension AVX512</h3>
<p>Les futurs processeurs Intel <em>Xeon Phi</em> <a href="http://en.wikipedia.org/wiki/Knights_Landing_%28microarchitecture%29#Knights_Landing"><em>Knights Landing</em></a> et les Intel <em>Core</em> de la génération <em>Skylake</em> ont beau n’être prévus que pour 2015 ou 2016, cette version 4.9 de GCC prend déjà en charge l’extension <a href="http://en.wikipedia.org/wiki/AVX512">AVX-512</a> qui sera incluse dans leurs cœurs de calcul.<br>
AVX-512 est une extension complexe puisqu’elle propose un cœur obligatoire (<em>AVX-512 Foundation</em>) et plusieurs options <em>Conflict Detection Instructions</em>, <em>Exponential and Reciprocal Instructions</em>, <em>Prefetch Instructions</em>) qui seront activées ou pas selon la gamme de processeur.</p>
<p>GCC 4.9 prend en charge toutes ces extensions (le code assembleur, les intrinsèques, l’autovectorisation) qui s’activent via différentes options (par exemple, <code>-mavx512f</code> pour AVX-512 Foundation).</p>
<h2 id="en-bref">En bref</h2>
<ul>
<li><p>La colorisation automatique des diagnostics émis par le compilateur <a href="http://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html#index-fdiagnostics-color-239">est maintenant disponible</a>. L’option <code>-fdiagnostics-color=auto</code> permet ainsi de visualiser plus facilement les alertes (<em>warnings</em>) ou les erreurs, ainsi que l’emplacement exact du problème.</p></li>
<li><p>GCC 4.9 prend maintenant en charge la version 1.2.1 du langage Go (il s’agit de la toute dernière version sortie le 3 mars 2014).</p></li>
<li><p>On trouve également dans GCC 4.9 la prise en charge de <a href="https://en.wikipedia.org/wiki/Cilk_Plus">Cilk Plus</a>, l’extension de <em>C</em> et <em>C++</em> créée par Intel afin de faciliter l’écriture de code parallèle. L’utilisation se fait via l’option <code>-fcilkplus</code> et suit la version 1.2 de l’<a href="http://fr.wikipedia.org/wiki/Application_binary_interface">ABI</a> <em>Cilk Plus</em>.</p></li>
<li><p>La bibliothèque d’exécution (<em>runtime library</em>) pour le langage <em>C++</em> se nomme <em>libstdc++</em>. Elle a reçu diverses améliorations dans cette nouvelle version de GCC. Outre les nombreux changements liés à la prise en charge du futur <em>C++14</em> (par exemple, <code>std::exchange()</code>, <code>std::make_unique</code> ou encore <code>std::shared_lock</code>), l’ajout le plus notable est la prise en charge de <code><regex></code> qui fait partie des nouveautés introduites par <em>C++11</em>.</p></li>
<li><p>De nouvelles options font leur apparition afin d’optimiser le code pour des processeurs récents ou à venir.<br>
On trouve ainsi <code>-march=silvermont</code> pour le <a href="https://en.wikipedia.org/wiki/Silvermont">nouveau cœur <em>Atom</em></a> avec exécution dans le désordre, <code>-march=broadwell</code> pour la <a href="https://en.wikipedia.org/wiki/Broadwell_%28microarchitecture%29">déclinaison 14 nm de l’architecture <em>Haswell</em></a>, ou encore <code>-march=bdver4</code> pour les futurs cœurs <a href="https://en.wikipedia.org/wiki/Excavator_%28microarchitecture%29"><em>Excavator</em></a> d’AMD.</p></li>
</ul><h2 id="suivre-le-développement-de-gcc">Suivre le développement de GCC</h2>
<p>Si vous voulez suivre le développement de GCC, sans nécessairement vous plonger dans le détail des <em>commits</em> ou des annonces sur les listes de diffusion, un bon moyen est de suivre le <em>blog</em> de Nick Clifton. Ce développeur GCC propose presque chaque mois une synthèse des nouveautés de la chaîne de compilation GNU.<br>
Lire rétrospectivement les articles concernant GCC 4.9 permet de mieux mesurer tout le travail et les ajouts qui sont incorporés dans cette version :</p>
<ul>
<li>
<a href="http://nickclifton.livejournal.com/13264.html"><em>April 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/13551.html"><em>May 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/13602.html"><em>June 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/13891.html"><em>July 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/14247.html"><em>August 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/14424.html"><em>September 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/14813.html"><em>October 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/15001.html"><em>November 2013 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/15132.html"><em>January 2014 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/15412.html"><em>February 2014 GNU Toolchain Update</em></a> ;</li>
<li>
<a href="http://nickclifton.livejournal.com/15809.html"><em>March 2014 GNU Toolchain Update</em></a>.</li>
</ul></div><div><a href="https://linuxfr.org/news/sortie-de-la-version-4-9-du-compilateur-gcc.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/101101/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-la-version-4-9-du-compilateur-gcc#comments">ouvrir dans le navigateur</a>
</p>
patrick_gDavy DefaudBAudSébastien KoechlinbarmickhivapiaNÿcoStormSylvestre LedruFlorent Zarapalm123Xavier Teyssierhttps://linuxfr.org/nodes/101101/comments.atomtag:linuxfr.org,2005:News/350192014-02-03T12:26:44+01:002014-03-02T19:26:48+01:00LibreOffice 4.2.0 est disponibleLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><a href="http://fr.wikipedia.org/wiki/LibreOffice" title="Définition Wikipédia">LibreOffice</a> <a href="//linuxfr.org/redirect/89251">4.2.0</a> vient d’être publié (le 30 janvier 2014). Cette <a href="//linuxfr.org/redirect/89251">nouvelle version</a> est destinée aux utilisateurs expérimentés – les autres, comme les entreprises et les administrations sont invitées à utiliser LibreOffice <a href="https://wiki.documentfoundation.org/ReleaseNotes/4.1/fr">4.1</a>.4 (<a href="http://fr.libreoffice.org/telecharger/notes-de-version/#4.1.x">publié le 18 décembre 2013</a>).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f77696b692e646f63756d656e74666f756e646174696f6e2e6f72672f696d616765732f372f37372f4c696272654f66666963655f65787465726e616c5f6c6f676f5f33303070782e706e67/LibreOffice_external_logo_300px.png" alt="Logo LibreOffice" title="Source : https://wiki.documentfoundation.org/images/7/77/LibreOffice_external_logo_300px.png"></p>
<p><a href="https://en.wikipedia.org/wiki/Michael_Meeks_%28software_developer%29">Michael Meeks</a> est un <em>hacker</em> qui travaille sur la suite bureautique LibreOffice pour l’éditeur <a href="https://en.wikipedia.org/wiki/Collabora">Collabora</a>.</p>
<p>Il vient de publier <a href="https://people.gnome.org/%7Emichael/blog/2014-01-30-under-the-hood.html">sur son blog</a> une longue description du travail de refactorisation et de nettoyage qui a eu lieu lors du cycle menant à la version 4.2 de LibreOffice. Comme ce texte est fort intéressant et qu’il est placé dans le domaine public (et sous licence CC0, quand la législation locale interdit à un auteur d’opter pour le domaine public), il m’a semblé pertinent de traduire son billet.</p>
<p>Vous trouverez donc dans la suite de la dépêche une traduction du texte de Michael. Merci à tous les contributeurs de cette dépêche qui ont participé à cette traduction et à la relecture.</p></div><ul><li>lien nᵒ 1 : <a title="https://people.gnome.org/~michael/blog/2014-01-30-under-the-hood.html" hreflang="en" href="https://linuxfr.org/redirect/89224">L’article de Michael Meeks</a></li><li>lien nᵒ 2 : <a title="https://www.youtube.com/watch?v=oqo2MIA5eQk" hreflang="en" href="https://linuxfr.org/redirect/89225">Vidéo de quelques nouveautés</a></li><li>lien nᵒ 3 : <a title="https://wiki.documentfoundation.org/ReleaseNotes/4.2/fr" hreflang="fr" href="https://linuxfr.org/redirect/89251">Nouveautés de LibreOffice 4.2 (notes de version)</a></li><li>lien nᵒ 4 : <a title="http://fr.libreoffice.org/" hreflang="fr" href="https://linuxfr.org/redirect/89252">LibreOffice</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#interface-utilisateur-et-bo%C3%AEtes-de-dialogue">Interface utilisateur et boîtes de dialogue</a><ul>
<li><a href="#progression-de-la-migration-des-mod%C3%A8les-dinterface-utilisateur">Progression de la migration des modèles d’interface utilisateur</a></li>
</ul>
</li>
<li>
<a href="#am%C3%A9liorations-de-la-cha%C3%AEne-de-compilation">Améliorations de la chaîne de compilation</a><ul>
<li><a href="#une-cha%C3%AEne-de-compilation-et-dex%C3%A9cution-drastiquement-am%C3%A9lior%C3%A9e">Une chaîne de compilation et d’exécution drastiquement améliorée</a></li>
<li><a href="#compilation-individuelle-des-fichiers-de-localisation">Compilation individuelle des fichiers de localisation</a></li>
<li><a href="#autodoc-est-mort-vive-doxygen">Autodoc est mort, vive Doxygen !</a></li>
</ul>
</li>
<li>
<a href="#travail-sur-la-qualit%C3%A9-du-code">Travail sur la qualité du code</a><ul>
<li><a href="#analyse-statique-de-code-via-coverity-scan">Analyse statique de code via Coverity Scan</a></li>
<li><a href="#tests-dimportation-et-dexportation">Tests d’importation et d’exportation</a></li>
<li><a href="#ma%C3%AEtrise-des-fuites-via-valgrind">Maîtrise des fuites via Valgrind</a></li>
<li><a href="#tests-unitaires">Tests unitaires</a></li>
<li><a href="#nombre-de-tests-unitaires-et-de-v%C3%A9rifications">Nombre de tests unitaires et de vérifications</a></li>
<li><a href="#assurance-qualit%C3%A9">Assurance qualité</a></li>
</ul>
</li>
<li>
<a href="#nettoyage-du-code">Nettoyage du code</a><ul>
<li><a href="#la-mort-d%C3%A9finitive-dunistring">La mort définitive d’UniString</a></li>
<li><a href="#une-api-de-gestion-des-fichiers-temporaires-en-moins">Une API de gestion des fichiers temporaires en moins</a></li>
<li><a href="#traduction-des-commentaires-allemands">Traduction des commentaires allemands</a></li>
<li><a href="#commentaires-allemands-restant-%C3%A0-traduire">Commentaires allemands restant à traduire</a></li>
<li><a href="#suppression-du-code-mort-gr%C3%A2ce-aux-avertissements-du-compilateur">Suppression du code mort grâce aux avertissements du compilateur</a></li>
</ul>
</li>
<li><a href="#compilation-sous-windows-et-symboles-de-d%C3%A9boguage">Compilation sous Windows et symboles de déboguage</a></li>
<li><a href="#refonte-du-c%C5%93ur-de-calc">Refonte du cœur de Calc</a></li>
<li>
<a href="#simpliquer-dans-libreoffice">S’impliquer dans LibreOffice</a><ul>
<li><a href="#d%C3%A9veloppeurs-actifs-par-mois-par-affiliation">Développeurs actifs par mois par affiliation</a></li>
<li><a href="#commits-mensuels-par-affiliation"><em>Commits</em> mensuels par affiliation</a></li>
<li><a href="#progr%C3%A8s-concernant-la-r%C3%A9solution-des-easyhacks">Progrès concernant la résolution des <em>« easy hacks »</em></a></li>
</ul>
</li>
<li><a href="#conclusion">Conclusion</a></li>
</ul><p>Nous publions aujourd’hui même LibreOffice 4.2.0, truffé de nouvelles fonctionnalités ! Vous pouvez bien sûr lire et profiter de toutes les fonctionnalités visibles pour les utilisateurs, fournies par nos nombreux contributeurs héroïques, mais il y a également des contributions dont l’effet se ressent principalement en coulisses, à des endroits pas forcément faciles à apprécier, et qui sont vitales pour le projet. Comme il peut être assez malaisé d’extraire celles-ci au milieu des 12 000 modifs depuis la séparation de la branche LibreOffice 4.1, laissez‐moi vous les détailler : </p>
<h2 id="interface-utilisateur-et-boîtes-de-dialogue">Interface utilisateur et boîtes de dialogue</h2>
<p>La migration de l’interface utilisateur vers des fichiers XML au format <a href="http://fr.wikipedia.org/wiki/Glade" title="Définition Wikipédia">Glade</a> se poursuit activement avec des contributions multiples. Nous sommes parvenus à convertir 280 dialogues dans cette version, portant notre avancée globale à environ 70 %. Un grand merci à Caolán McNamara (Red Hat), Manal Alhassoun (KACST), Olivier Hallot (EDX), Faisal M. Al‐Otaibi (KACST), Laurent Balland‐Poirier, Efe Gürkan Yalaman, Krisztian Pinter, Jan Holesovsky (Collabora), Andras Timar (Collabora), Cao Cuong Ngo, Gergo Mocsi, Katarina Behrens, Abdulmajeed Ahmed (KACST) et Alia Almusaireae (KACST). Merci aussi à nos traducteurs qui ont aidé à la migration des chaînes de caractères.</p>
<h3 id="progression-de-la-migration-des-modèles-dinterface-utilisateur">Progression de la migration des modèles d’interface utilisateur</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f70656f706c652e676e6f6d652e6f72672f7e6d69636861656c2f696d616765732f323031342d30312d32392d75692d6c61796f75742e706e67/2014-01-29-ui-layout.png" alt="DLFP" title="Source : http://people.gnome.org/~michael/images/2014-01-29-ui-layout.png"></p>
<p>Si vous souhaitez vous impliquer pour porter cet effort jusqu’à 100 %, reportez‐vous aux <a href="http://caolanm.blogspot.ch/2014/01/622-conversions-70-complete.html">mises à jour</a> et aux <em><a href="http://caolanm.blogspot.ie/2013/01/converting-libreoffice-dialogs-to.html">Howto</a></em> de Caolán.</p>
<h2 id="améliorations-de-la-chaîne-de-compilation">Améliorations de la chaîne de compilation</h2>
<p>Dans cette version, nous avons beaucoup progressé en termes de facilité pour compiler le code source, et rendre le tout plus compréhensible — un point toujours important pour les nouveaux contributeurs.</p>
<h3 id="une-chaîne-de-compilation-et-dexécution-drastiquement-améliorée">Une chaîne de compilation et d’exécution drastiquement améliorée</h3>
<p>Il y a 6 mois, nous avions annoncé la très bonne nouvelle d’une compilation <a href="https://people.gnome.org/%7Emichael/blog/2013-06-13-under-the-hood.html#config-make">entièrement fondée sur GNU make</a>, plus rapide et plus agréable. Pour accentuer encore les bienfaits en 4.2, nous avons travaillé dur pour nous assurer que vous pouvez compiler et immédiatement exécuter LibreOffice sans — longue — phase intermédiaire d’installation. Nous compilons en direct un binaire exécutable dans <code>instdir/</code>, ainsi :</p>
<pre><code class="sh">./autogen.sh
make
<span class="nb">cd </span>instdir/program
./soffice -writer</code></pre>
<p>suffit pour avoir une suite pleinement fonctionnelle sous Windows, Mac OS X ou GNU/Linux. Ceci nous évite une tonne de Perl, nettoie une grande partie de <code>scp2/</code> et permet de supprimer des étapes de configuration à l’installation. Merci à Michael Stahl (Red Hat), David Tardon (Red Hat), Matus Kukan (Collabora) et Marcos Paulo de Souza. C’est toujours amusant de voir des contributeurs et partenaires s’échanger des exécutables Windows au format <code>instdir.zip</code>.</p>
<p>Cerise sur le gâteau : nous avons également fait le ménage un peu partout des vieux sous‐répertoires spécifiques à la configuration de l’installation comme <code>unxlngi6.pro</code> ; si les gens ciblent plusieurs plates‐formes à partir du même source, il leur suffit de lancer <code>./configure</code> depuis des répertoires différents. Merci à Michael Stahl (Red Hat), et Tor Lillqvist (Collabora).</p>
<h3 id="compilation-individuelle-des-fichiers-de-localisation">Compilation individuelle des fichiers de localisation</h3>
<p>Compiler le grand nombre de fichiers de localisation de LibreOffice crée une importante demande en temps de compilation (nous supportons plus de 100 langues nativement). Grâce à Bjoern Michaelsen (Canonical) nous pouvons à présent <a href="https://gerrit.libreoffice.org/#/c/6660/">compiler séparément</a> du paquet principal les fichiers de localisation. Cela aide les empaqueteurs des distributions GNU/Linux de nombreuses façons. Cette séparation diminue les besoins en espace disque sur la machine de compilation, besoins qui peuvent dépasser les 25 Gio pour chaque compilation publiable, ce qui est utile pour porter sur des architectures aux ressources plus limitées. Les compilations et les <em>respins</em> sont plus rapides. Avec les binaires de LibreOffice exécutables sur place dans <code>instdir</code>, nous pouvons également éviter d’utiliser les macros moisies <code>scp2/</code> interprétées par Perl pour les empaqueter directement. Ce changement rend aussi plus simples les mises à jour liées aux correctifs de sécurité, sans avoir à recompiler des centaines de fichiers de localisation non modifiés. Nous nous réjouissons d’avance de voir les distributions GNU/Linux profiter de cela pour faciliter leur travail d’empaquetage et de maintenance.</p>
<h3 id="autodoc-est-mort-vive-doxygen">Autodoc est mort, vive Doxygen !</h3>
<p>Depuis de nombreuses années, une horrible version hackée de (…) mais maintenant, grâce à l’<a href="http://cgit.freedesktop.org/libreoffice/core/commit/?id=7a5a19218707ab580d58a3fbadec1148368661f1">excellent travail</a> de Michael Stahl (Red Hat) Doxygen a appris le UNO IDL de LibreOffice, et nous nous sommes débarrassés de <code>cosv</code>, <code>udm</code> et des modules haut niveau d’<code>autodoc</code>, bon débarras de 57 000 lignes de code. Merci aussi à ceux qui ont aidé à améliorer, nettoyer et « doxygéner » les commentaires du code, à savoir : Julien Nabet, Miklos Vajna (Collabora), Christian Lohmaier (TDF), Thorsten Behrens (SUSE), Stephan Bergmann (Red Hat) et Zolnai Tamas (Collabora). Vous pouvez lire la documentation générée pour l’<a href="http://api.libreoffice.org/docs/idl/ref/namespaces.html">API publique</a> et l’<a href="http://docs.libreoffice.org/">API interne</a>.</p>
<h2 id="travail-sur-la-qualité-du-code">Travail sur la qualité du code</h2>
<p>Un travail important a été fourni quant à la qualité du code, l’amélioration de sa maintenabilité et sa lisibilité : une autre salve de 80 modifs pour corriger des erreurs relevées par <a href="http://cppcheck.sourceforge.net/"><em>cppcheck</em></a> a été envoyée par Julien Nabet, ainsi que le brouhaha quotidien pour compiler sans aucun avertissement de compilation avec les drapeaux de compilation <code>-Werror -Wall -Wextra</code>, et ce, sur toutes les plates‐formes, principalement grâce au travail de Tor Lillqvist (Collabora) et de Caolán McNamara (Red Hat).</p>
<h3 id="analyse-statique-de-code-via-coverity-scan">Analyse statique de code via Coverity Scan</h3>
<p>Nous avons beaucoup œuvré sur l’énorme quantité de résultats donnés par l’analyse faite par Coverity Scan. Selon les résultats du rapport sur LibreOffice, dans cette version seulement, il y eut 210 corrections (et bien plus encore de tickets clos). Merci à Caolán McNamara (Red Hat), Eike Rathke (Red Hat), Julien Nabet, Norbert Thiebaud, Andrzej Hunt (Collabora), Markus Mohrhard (Collabora) et Gergo Mocsi.</p>
<h3 id="tests-dimportation-et-dexportation">Tests d’importation et d’exportation</h3>
<p>Grâce au travail de Markus Mohrhard nous disposons d’un outil permettant de tester l’importation de fichiers corrompus afin de provoquer des crashs. Il teste maintenant plus de 45 000 documents problématiques issus des remontées de bogues sur tous les projets sur lesquels on peut mettre la main. Nous les testons un par un avec un binaire suractivé en assertions et informations de débogage en tout genre. Depuis peu, nous avons également commencé à exporter ces documents dans plusieurs formats de sortie, de manière à identifier des problèmes, en exécutant également toute une batterie d’outils de validation. Dans la durée, tout ceci impacte positivement la qualité. La sortie est consignée par <a href="http://dev-builds.libreoffice.org/crashtest/"><em>git hash</em></a>.</p>
<h3 id="maîtrise-des-fuites-via-valgrind">Maîtrise des fuites via Valgrind</h3>
<p>Valgrind demeure un outil merveilleux pour dénicher et isoler les fuites [NdT : de mémoire] et les comportements erratiques de diverses sections du code. Merci à Mark Wielaard d’avoir colmaté nombre de fuites et résolu divers problèmes relatifs, de même que de nombreux autres problèmes récurrents.</p>
<h3 id="tests-unitaires">Tests unitaires</h3>
<p>Nous avons également complété et exécuté plus de tests avec LibreOffice 4.2 pour éviter des régressions en changeant le code. Ces ajouts sont assez difficiles à évaluer dans la mesure ou les gens aiment bien empiler les nouveaux tests au sein de modules de tests existants. Une estimation naïve est de rechercher la macro <code>CPPUNIT_TEST()</code>, qui montre que nous avons ajouté 216 de ceux‐ci depuis la 4.1, mais nous avons également ajouté plus de <code>CPPUNIT_ASSERT</code> par test, soit plus de 2 160. L’idéal serait que chaque bogue corrigé donne lieu à un test unitaire associé pour l’empêcher de revenir à jamais. Avec plus de 80 contributeurs à ces tests pour la 4.2, c’est assez difficile de citer tout le monde ici, mais je dois dire que c’est formidable d’avoir une culture de tests systématique et bien ancrée, liée aux corrections de bogues.</p>
<h3 id="nombre-de-tests-unitaires-et-de-vérifications">Nombre de tests unitaires et de vérifications</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f70656f706c652e676e6f6d652e6f72672f7e6d69636861656c2f696d616765732f323031342d30312d32392d756e69742d746573742e706e67/2014-01-29-unit-test.png" alt="DLFP" title="Source : http://people.gnome.org/~michael/images/2014-01-29-unit-test.png"></p>
<h3 id="assurance-qualité">Assurance qualité</h3>
<p>Pour cette version, l’équipe d’assurance qualité s’est agrandie et a accompli un travail remarquable pour tirer et clore les bogues. Merci à Bjoern Michaelsen (Canonical), Robinson Tryon et Joel Madero d’avoir effectué un bon travail ici, et aussi particulièrement à nos meilleurs correcteurs de bogues. Il y a une longue liste de personnes qui <a href="http://wiki.documentfoundation.org/Releases/4.2.0/RC3#Thanks_to_all_who_took_part_in_handling_the_issues">répondent aux bogues</a>.</p>
<p>Une métrique que nous suivons est de regarder qui est dans le top 10 du <a href="https://bugs.freedesktop.org/page.cgi?id=weekly-bug-summary.html">résumé hebdomadaire des bogues</a> centralisé sur <em>freedesktop.org.</em> Il contient une liste des 20 personnes qui apparaissent le plus souvent au palmarès des correcteurs de bogues. Merci à eux : <em>tommy27</em>, Caolán McNamara (Red Hat), <em>Maxim</em>, Jean‐Baptiste Faure, Eike Rathke (Red Hat), <em>ign_christian</em>, <em>Foss</em>, <em>Urmas</em>, Joel Madero, Cor Nouws, Julien Nabet, Michael Stahl (Red Hat), Maxim Monastirsky, Jorendc, Andras Timar (Collabora), Lionel Élie Mamane, Kohei Yoshida (Collabora), <em>mariosv</em>, <em>bfoman</em>, Thomas Arnhold, Adolfo Jayme (<em>fitoschido</em>), Sophie (TDF), Samuel M., Markus Mohrhard (Collabora) et Rob Snelders.</p>
<p>Pour en savoir plus sur les <a href="http://skyfromme.wordpress.com/2014/01/22/numbers/">bogues et leurs statistiques</a>, vous pouvez consulter le blog de Bjoern (avec des chats). Pour résumer, on peut dire que des milliers de bogues ont été traités.</p>
<ul>
<li>L’équipe de l’assurance qualité trie les nouveaux bogues, teste et confirme que les bogues sont reproductibles, en fournissant les infos nécessaires. Elle s’efforce de maintenir le flot de bogues non triés aussi bas que possible. Il est très simple de participer et d’aider à cela <a href="https://wiki.documentfoundation.org/QA/BugTriage/fr"><em>ici</em></a>.</li>
<li>À chaque cycle de version, elle trouve et étiquette environ un millier de bogues en doublon.</li>
<li>À chaque cycle de version, elle clôt et invalide environ un millier de bogues (pour diverses raisons, comme l’absence de réponse du demandeur pendant des mois).</li>
<li>À chaque cycle de version (environ 6 mois), les développeurs corrigent environ un millier de bogues.</li>
<li>À chaque cycle, le nombre de nouveaux bogues croît un peu, mais cette croissance diminue. En ce moment, nous avons environ 25 000 bogues, dont 6 500 sont nouveaux et 800 non confirmés. Par ailleurs, environ 25 % des bogues sont des demandes de nouvelles fonctionnalités, ce à quoi il n’y a vraisemblablement pas de fin.</li>
<li>Concernant les bogues les plus fâcheux [NdT : crashs et dysfonctionnements majeurs] et les régressions, la tendance est plate, tandis que le nombre de corrections sur ces deux points croît rapidement.</li>
</ul><h2 id="nettoyage-du-code">Nettoyage du code</h2>
<p>Le code crade doit être éradiqué et, sur ce chapitre, nous n’avons pas chômé.</p>
<h3 id="la-mort-définitive-dunistring">La mort définitive d’UniString</h3>
<p>Le plus gros changement dans la 4.2, en gestation depuis les tout débuts du projet LibreOffice, consiste à supprimer nos différents types de chaînes de caractères, obsolètes, nous laissant ainsi avec seulement <em>2</em> types de chaînes, l’une pour toutes les chaînes à 8 bits d’encodage, et l’autre pour toutes les chaînes en UTF-16. Le dernier <a href="http://cgit.freedesktop.org/libreoffice/core/commit/?id=b37e2dd071c83454b3b06c0959a76b6012f53abb"><em>commit</em></a> a détruit ce monstre une bonne fois pour toutes. Bien sûr, de très nombreuses personnes ont contribué à cette tâche et au nettoyage afférent depuis maintenant plusieurs années ; dans cette version, 30 personnes environ y ont participé. Merci en particulier à Noël Grandin d’avoir mené l’offensive, mais aussi à tous les autres : Matteo Casalin, Caolán McNamara (Red Hat), Stephan Bergmann (Red Hat), Ivan Timofeev, Michael Stahl (Red Hat), Thomas Arnhold, Kohei Yoshida (Collabora), Eike Rathke (Red Hat), Tor Lillqvist (Collabora), Palenik Mihály, Markus Mohrhard (Collabora), Luboš Luňák (SUSE), Máté Gergely, Andrzej J.R. Hunt (Collabora), Christina Rossmanith, Laurent Balland‐Poirier, Julien Nabet, Sean Young, Neil Moore, Jelle van der Waa, Donizete Waterkemper et Arnaud Versini.</p>
<p>Enfin, nous aurons pour la version 4.3 les premiers bénéfices visibles de ce travail, qui permettra d’écrire des paragraphes plus longs que 65 000 caractères. Allez voir notre page Wiki en construction des <a href="http://wiki.documentfoundation.org/ReleaseNotes/4.3/fr#Writer">fonctionnalités de la 4.3</a> et l’<a href="http://caolanm.blogspot.cz/2014/01/long-writer-paragraphs.html">article de blog</a> associé. Par ailleurs, en corrigeant récemment un bogue, j’ai trouvé assez intéressant le <a href="http://www.codeproject.com/Articles/4829/Guide-to-BSTR-and-C-String-Conversions">bourbier des types de chaînes de caractères sur la plate‐forme Windows</a>.</p>
<h3 id="une-api-de-gestion-des-fichiers-temporaires-en-moins">Une API de gestion des fichiers temporaires en moins</h3>
<p>Nous avons un nombre certain d’API hétérogènes pour gérer les fichiers temporaires, de la plus vieille à la plus emberlificotée… <code>tools/tempfile.hxx</code> fut gentiment codé par Palenik Mihály. Dans l’idéal, il y aurait un seul endroit sécurisé dans le répertoire <code>sal/</code> où les fichiers temporaires seraient gérés.</p>
<h3 id="traduction-des-commentaires-allemands">Traduction des commentaires allemands</h3>
<p>Nous avons continué à progresser du côté de la traduction des derniers commentaires restant encore en allemand, pour les remplacer par des commentaires techniques en anglais précis. Remerciements à Philipp Weissenbacher, Philipp Riemer, Laurent Balland‐Poirier, Rolf Hemmerling, Chris Hoppe, Rodolfo Ribeiro Gomes, Matthias Freund et Henning Diedler. Je suspecte que l’effet de traînée dans les chiffres est en partie dû à des faux positifs, conséquence de notre outil de type <code>find</code> qui devine la langue des commentaires.</p>
<h3 id="commentaires-allemands-restant-à-traduire">Commentaires allemands restant à traduire</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f70656f706c652e676e6f6d652e6f72672f7e6d69636861656c2f696d616765732f323031342d30312d32392d6765726d616e2d636f6d6d656e74732e706e67/2014-01-29-german-comments.png" alt="DLFP" title="Source : http://people.gnome.org/~michael/images/2014-01-29-german-comments.png"></p>
<h3 id="suppression-du-code-mort-grâce-aux-avertissements-du-compilateur">Suppression du code mort grâce aux avertissements du compilateur</h3>
<p>Beaucoup de code mort a été identifié et supprimé grâce à de récentes améliorations dans les avertissements de compilation Clang / GCC (<code>-Wunsued-function, -Wunused-variable, -Wunused-private-field</code>, etc.) et via l’utilisation de <code>SAL_WARN_UNUSED</code>. (Caolán McNamara (Red Hat), Luboš Luňák (SUSE), Stephan Bergmann (Red Hat), Tor Lillqvist (Collabora)).</p>
<h2 id="compilation-sous-windows-et-symboles-de-déboguage">Compilation sous Windows et symboles de déboguage</h2>
<p>Le temps de compilation sous Windows a été réduit de <a href="http://cgit.freedesktop.org/libreoffice/core/commit/?id=66a0713dc9c676182fcd7aa1e21f8dc25c05be5e">10 minutes</a>, soit 10 % environ, grâce au travail de Bjoern Michaelsen (Canonical), pour ensuite immédiatement augmenter à nouveau, du fait de l’ajout d’optimisations au moment de l’édition de liens à destination des nouveaux compilateurs Microsoft.</p>
<p>Une autre fonctionnalité souvent demandée, qui permet aux utilisateurs de fournir des traces de qualité lors des crashs et gels de l’application, et permet ainsi de corriger les bogues plus rapidement, est l’utilisation du serveur de symboles Windows de Cloph. Renseignez‐vous sur la méthode pour <a href="https://wiki.documentfoundation.org/How_to_get_a_backtrace_with_WinDbg">générer une <em>backtrace</em></a> , c’est un excellent moyen pour les utilisateurs d’améliorer la qualité des bogues remontés sur cette plate‐forme. Merci à Fridrich Štrba (SUSE), Luboš Luňák (SUSE), et Christian Lohmaier (TDF).</p>
<h2 id="refonte-du-cœur-de-calc">Refonte du cœur de Calc</h2>
<p>Il y a beaucoup à dire sur ce point. Le détail des changements sera exposé prochainement lors du FOSDEM. Qu’il suffise de dire que le moteur de Calc a été refondu massivement, améliorant l’utilisation de la mémoire, les performances dans de nombreux cas, permettant l’usage d’OpenCL pour calculer certaines formules via le processeur graphique, et plus encore. Mille mercis à Kohei Yoshida (Collabora), Markus Mohrhard (Collabora), et à l’équipe de MultiCoreWare : I‐Jui (Ray) Sung, Hao Chen, Shiming Zhang, Yiming Ju, Yang Zhang, Hongu Zhong, Ming Li, Min Wang, De Chuang, Feng Zheng, <em>mulei</em>, Xin Jiang, Zhenyu Yuan et les autres.</p>
<h2 id="simpliquer-dans-libreoffice">S’impliquer dans LibreOffice</h2>
<p>J’espère que vous comprendrez que de plus en plus de développeurs trouvent une nouvelle maison à LibreOffice et travaillent de concert pour accomplir un tâche significative à la fois sous le capot et en surface. Si vous voulez vous impliquer, il y a beaucoup de gens formidables à connaître et avec qui travailler. Comme vous pouvez le constater, les individus peuvent avoir un impact considérable parmi la diversité des contributeurs à LibreOffice (la légende colorée à droite doit être lue de gauche à droite, de haut en bas, et correspond aux couleurs de haut en bas sur le schéma). <em>NdT : le schéma est peu clair, mais je pense que la grosse zone rouge apparue à la naissance de LibreOffice correspond aux individus sans affiliation connue.</em></p>
<h3 id="développeurs-actifs-par-mois-par-affiliation">Développeurs actifs par mois par affiliation</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f70656f706c652e676e6f6d652e6f72672f7e6d69636861656c2f696d616765732f323031342d30312d32392d636f6d6d6974746572732e706e67/2014-01-29-committers.png" alt="DLFP" title="Source : http://people.gnome.org/~michael/images/2014-01-29-committers.png"></p>
<p>De même, si l’on regarde la diversité des contributeurs du code, c’est très plaisant de voir autant de contributions de volontaires non affiliés [NdT : à une compagnie], même si clairement cette composante varie selon les saisons, les cycles de versions et notre temps de mentorat disponible :</p>
<h3 id="commits-mensuels-par-affiliation">
<em>Commits</em> mensuels par affiliation</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f70656f706c652e676e6f6d652e6f72672f7e6d69636861656c2f696d616765732f323031342d30312d32392d636f6d6d6974732e706e67/2014-01-29-commits.png" alt="DLFP" title="Source : http://people.gnome.org/~michael/images/2014-01-29-commits.png"></p>
<p>Bien sûr, nous maintenons une liste de bogues et de tâches réputées faciles, dont vous pouvez vous saisir pour commencer à contribuer. Notre page « <a href="https://wiki.documentfoundation.org/Development/Easy_Hacks"><em>Easy hacks</em></a> » est là pour ça, avec des <a href="http://www.libreoffice.org/developers/">instructions simples pour compiler</a> et configurer le code. Nous avons maintenant un environnement plus propre et plus sain pour travailler à l’amélioration du code. À titre d’illustration, <a href="http://www.youtube.com/watch?v=2gIqOOajdYQ&hd=1">cette vidéo</a> montre à quel point il est simple de se lancer dans le développement de LibreOffice aujourd’hui. Il est aussi encourageant de voir comment les <em>« easy hacks »</em> progressent. Arriverez‐vous à clore le 400<sup>e</sup> ?</p>
<p><em>NdT : les _« <a href="https://wiki.documentfoundation.org/Development/Easy_Hacks/lists/by_Required_Skill">easy hacks</a> » sont des tâches simples offertes aux nouveaux contributeurs pour les aider à mettre le pied à l’étrier dans le code de LibreOffice, et même certaines tâches ne requièrent pas de savoir coder. Ça libère du temps pour les développeurs confirmés et c’est indispensable pour la clarification et le nettoyage du code. Par exemple : supprimer du code mort, traduire les commentaires en allemand, réécrire des <a href="http://cgit.freedesktop.org/libreoffice/core/commit/?id=22b928d7d7e03e0a8506263ae556a0e3d15b0d86">bouts de code</a>, des <a href="http://cgit.freedesktop.org/libreoffice/core/commit/?id=6fd75d6a34e1a696a766776326f589b471b84d82">types</a>, des méthodes obsolètes, <a href="http://cgit.freedesktop.org/libreoffice/core/commit/?id=30ac3942b44b8f903180488f87e1df4e02ff88e8">virer des vieilles macros inutiles</a>.</em></p>
<h3 id="progrès-concernant-la-résolution-des-easyhacks">Progrès concernant la résolution des <em>« easy hacks »</em>
</h3>
<p><img src="//img.linuxfr.org/img/687474703a2f2f70656f706c652e676e6f6d652e6f72672f7e6d69636861656c2f696d616765732f323031342d30312d32392d656173792d6861636b732e706e67/2014-01-29-easy-hacks.png" alt="DLFP" title="Source : http://people.gnome.org/~michael/images/2014-01-29-easy-hacks.png"></p>
<p>Une autre chose aide réellement : faire tourner les <a href="http://www.libreoffice.org/download/pre-releases/">pré‐versions</a> et signaler les bogues. Il suffit de récupérer et d’installer une pré-version et vous êtes prêt à contribuer avec le reste de l’équipe de développement.</p>
<h2 id="conclusion">Conclusion</h2>
<p>LibreOffice 4.2 est la suite d’une série de versions qui améliorent non seulement les fonctionnalités, mais aussi les fondations de la suite bureautique libre. Bien sûr, c’est seulement le premier d’une longue série de parutions 4.2.x mensuelles qui vont apporter une série de corrections de bogues et d’améliorations de la qualité durant les prochains mois.</p>
<p>J’espère que vous aimez LibreOffice 4.2.0, merci pour la lecture et merci de supporter LibreOffice.</p></div><div><a href="https://linuxfr.org/news/libreoffice-4-2-0-est-disponible.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/101122/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/libreoffice-4-2-0-est-disponible#comments">ouvrir dans le navigateur</a>
</p>
patrick_gesdeemXavier VerneDavy DefaudwoprandicoidNeoXjolivierwebFlorent ZaraNonolapéroThomas Debesserpnpifpamputthttps://linuxfr.org/nodes/101122/comments.atomtag:linuxfr.org,2005:News/349682014-01-13T17:12:55+01:002014-02-03T17:56:07+01:00Gtk to Qt - A strange journeyLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Dirk Hohndel est <em>"Chief Linux and Open Source Technologist"</em> chez Intel… mais il est surtout le pote de plongée régulier de Linus Torvalds. C'est à ce titre qu'il a travaillé sur le logiciel Subsurface, créé par Linus et qui vise à enregistrer toutes les données d'une série de plongées sous-marines et à visualiser ces données dans une interface plaisante.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f737562737572666163652e686f686e64656c2e6f72672f77702d636f6e74656e742f75706c6f6164732f323031332f31322f636f70792d537562737572666163653442616e6e65722e706e67/copy-Subsurface4Banner.png" alt="Subsurface bannière" title="Source : http://subsurface.hohndel.org/wp-content/uploads/2013/12/copy-Subsurface4Banner.png"></p>
<p>Alors que Subsurface utilisait depuis le début le toolkit Gtk, une transition vers Qt a eu lieu en 2013. Mais le plus intéressant est <a href="http://linux.conf.au/schedule/30140/view_talk?day=thursday">l'excellente conférence</a> qu'il a tenu lors du <a href="http://linux.conf.au/">Linux.conf.au</a> 2014. Cette conférence porte sur les raisons de ce choix et sur les diverses leçons qui ont été tirées lors de la transition.</p>
<p><abbr title="Note des modérateurs">NdM</abbr> : <em>merci à patrick_g pour son journal.</em></p></div><ul><li>lien nᵒ 1 : <a title="http://linuxfr.org/users/patrick_g/journaux/gtk-to-qt-a-strange-journey" hreflang="fr" href="https://linuxfr.org/redirect/89034">Journal à l'origine de la dépêche</a></li><li>lien nᵒ 2 : <a title="http://mirror.linux.org.au/linux.conf.au/2014/Thursday/83-Gtk_to_Qt_-_a_strange_journey_-_Dirk_Hohndel.mp4" hreflang="en" href="https://linuxfr.org/redirect/89035">La vidéo de la conférence (Format MP4 - 125 Mo - 46'05")</a></li><li>lien nᵒ 3 : <a title="http://linuxfr.org/news/wireshark-passe-a-qt" hreflang="fr" href="https://linuxfr.org/redirect/89036">LinuxFr.org : Wireshark passe à Qt</a></li><li>lien nᵒ 4 : <a title="http://linuxfr.org/users/kekun/journaux/lxde-razor-qt-et-qt-et-gtk" hreflang="fr" href="https://linuxfr.org/redirect/89037">LXDE, Razor-qt et Qt (et GTK+)</a></li><li>lien nᵒ 5 : <a title="https://plus.google.com/+DirkHohndel/posts/MwiTc3cHKgi" hreflang="en" href="https://linuxfr.org/redirect/89038">L'annonce du projet de changement de toolkit sur G+</a></li></ul><div><p>Je recommande chaudement le visionnage de cette conf qui est bien menée et très informative. C'est parfois aussi fort drôle (cf. Linus critiquant l’inefficacité de certains algorithmes et harcelant Dirk pour gratter encore 200 cycles processeur).</p>
<p>Les aficionados de GTK et GNOME doivent toutefois prévoir un gilet pare-balles car ça dénonce grave ! Entre l'attitude détestable des devs Gtk/GNOME, l'absence de documentation, le support pourri des autres plates-formes que Linux et les diverses limitations techniques… à écouter Dirk on se demande qui peut encore opter pour ce toolkit.</p></div><div><a href="https://linuxfr.org/news/gtk-to-qt-a-strange-journey.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/100926/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/gtk-to-qt-a-strange-journey#comments">ouvrir dans le navigateur</a>
</p>
patrick_gFlorent ZaraBenoît SibaudDavy Defaudhttps://linuxfr.org/nodes/100926/comments.atomtag:linuxfr.org,2005:News/348582013-11-28T14:55:05+01:002013-11-29T09:22:13+01:00Comment les idées du mouvement Open-source peuvent aider à étudier les exoplanètesLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p><a href="http://www.astro.utoronto.ca/%7Erein/">Hanno Rein</a> est un spécialiste des exoplanètes qui occupe un poste de professeur assistant en astrophysique à l'université de Toronto. Entre 2010 et 2013 il a effectué son post-doctorat à <em>l'Institute for Advanced Study</em> de Princeton et, à cette occasion, il a écrit plusieurs petits articles de vulgarisation sur les exoplanètes.</p>
<p>L'un de ces articles publié par l'IAS s'intitule <em>"How Open-Source Ideas Can Help Us Study Exoplanets"</em> et il m'a semblé qu'il justifiait une traduction pour les lecteurs de LinuxFr.org.</p>
<p>Hanno, après avoir été contacté par courriel, a eu la gentillesse de m'autoriser à publier son article sur le site en le plaçant sous licence CC-BY-SA. Merci à lui.</p>
<p>Plus de détails dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.ias.edu/about/publications/ias-letter/articles/2013-summer/rein-exoplanet-catalogue" hreflang="en" href="https://linuxfr.org/redirect/88633">L'article en version originale</a></li><li>lien nᵒ 2 : <a title="http://www.astro.utoronto.ca/~rein/" hreflang="en" href="https://linuxfr.org/redirect/88634">Le site d'Hanno Rein</a></li><li>lien nᵒ 3 : <a title="http://www.openexoplanetcatalogue.com/" hreflang="en" href="https://linuxfr.org/redirect/88635">Open Exoplanet Catalog </a></li><li>lien nᵒ 4 : <a title="http://tomhands.com/exovis/" hreflang="en" href="https://linuxfr.org/redirect/88636">ExoVis </a></li><li>lien nᵒ 5 : <a title="http://stacks.math.columbia.edu/" hreflang="en" href="https://linuxfr.org/redirect/88637">Stacks project </a></li><li>lien nᵒ 6 : <a title="http://homotopytypetheory.org/book/" hreflang="en" href="https://linuxfr.org/redirect/88638">Projet HoTT</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#traduction-de-larticle">Traduction de l'article</a></li>
<li><a href="#commentaire">Commentaire</a></li>
</ul><h2 id="traduction-de-larticle">Traduction de l'article</h2>
<p>Pluton, la neuvième planète du système solaire (1), a été découverte en 1930, l'année de la fondation de l'Institut. Mais bien que l'Institut ait accueilli plus de cinq mille membres dans les soixante-cinq années suivantes, pas une seule nouvelle planète n'a été découverte durant ce laps de temps.</p>
<p>Finalement, en 1995, les astronomes repérèrent un objet qu'ils nommèrent <em>51 Pegasus b</em>. C'était la première découverte de planète depuis plus d'un demi-siècle. Pas seulement ça, c'était également la première planète découverte autour d'une étoile en dehors de notre système solaire. Nous appelons maintenant ces objets des « planètes extrasolaires », ou, pour faire court, des exoplanètes.</p>
<p>Il s'avère que <em>51 Pegasus b</em> est un objet vraiment curieux. Il est presque aussi massif que Jupiter mais il effectue une orbite complète autour de son étoile en seulement quatre jours. En guise de comparaison, Jupiter a besoin de douze ans pour accomplir une révolution complète autour du Soleil. Comme <em>51 Pegasus b</em> est si près de son étoile, sa température d'équilibre thermique est très élevée. Ce type d'exoplanètes est nommé « Jupiters chauds ».</p>
<p>Depuis que la première exoplanète a été découverte, la technologie s'est améliorée de façon incroyable, et l'effort mondial des astronomes a permis de détecter chaque année de nouvelles planètes. En 2011 ce sont 189 exoplanètes nouvelles qui ont été découvertes, à peu près le même nombre que celui des visiteurs de l'Institut chaque année. En 2012, 130 nouvelles planètes sont venues s'ajouter à la liste. À la date du 20 mai de cette année, le nombre total d'exoplanètes confirmées était de 892 appartenant à 691 systèmes planétaires différents.</p>
<p>À titre personnel je suis très intéressé par la formation de ces systèmes. Nous avons tellement d'informations sur chacune des planètes de notre propre système solaire, mais si peu de connaissances au sujet de ces 892 exoplanètes. Explorer notre base de données limitée et essayer de trouver comment les exoplanètes se retrouvent sur leur orbite est vraiment excitant. De nombreuses questions surgissent après un simple regard sur <em>51 Pegasus b</em>. Pourquoi est-elle des centaines de fois plus proche de son étoile que ne l'est Jupiter ? Est-ce qu'elle s'est formée plus loin ? Est-ce qu'elle était identique à Jupiter dans le passé ?</p>
<p>Pour <em>51 Pegasus b</em> nous pensons connaitre la réponse. Nous croyons qu'elle s'est formée à grand distance de son étoile, là où les conditions, comme la température, étaient plus favorables à la formation des planètes. Ce n'est que plus tard qu'elle s'est rapprochée de l'étoile au cours d'un phénomène nommé « migration planétaire ». Pour de nombreuses autres planètes au sein de la liste des 892, l'histoire est plus compliquée, en particulier quand plusieurs planètes sont impliquées en même temps.</p>
<p>La diversité des systèmes planétaires que nous avons découverts est stupéfiante. Nous n'avons pas vu un seul système qui ressemble, même superficiellement, à notre propre système solaire. C'est ça qui rend l'étude des exoplanètes si excitante !</p>
<p>Pour faire ce genre de recherche nous avons besoin de catalogues contenant toutes les données sur les exoplanètes. De telles base de données existent mais elles partagent toutes la même faiblesse fondamentale : elles ne sont pas « ouvertes ».</p>
<p>Ces base de données sont soit maintenues par une seule personne soit par un petit groupe de scientifiques. Il est impossible d'ajouter des données dans la base si vous ne faites pas partie de ce petit cercle. Cela me préoccupe parce que ce n'est pas la manière la plus efficace de travailler et parce que cela n'encourage pas la collaboration entre les scientifiques. J'ai donc démarré un nouveau projet pendant le temps que j'ai passé à l'Institut. Ce projet se nomme « <a href="http://www.openexoplanetcatalogue.com/">Open Exoplanet Catalogue</a> » et, comme son nom le suggère, cette base de données est « ouverte » si on la compare aux autres. Tout le monde est le bienvenu pour contribuer, faire des corrections ou ajouter de nouvelles données. Pensez à ça comme la version Wikipédia d'une base de données astronomiques.</p>
<p>Cette même idée d'ouverture a été extrêmement fructueuse dans le monde du logiciel. Avec une licence open-source, les programmeurs offrent à chacun le droit d'étudier, de modifier et de distribuer le logiciel qu'ils ont écrit gratuitement. L'avantage évident c'est la facilité d'accès et la transparence. Mais, encore plus important, la pérennité, la flexibilité et l'interopérabilité sont largement améliorées quand le code source d'un logiciel est ainsi disponible publiquement.</p>
<p>Le succès du mouvement open-source est phénoménal. Chaque fois que vous allumez un ordinateur, lancez un navigateur Web ou envoyez un courriel, vous utilisez des programmes open-source, souvent en arrière plan. La <em>success-story</em> du mouvement open-source est largement basée sur l'adoption de systèmes distribués de gestion de versions (2). Ces outils permettent à des milliers de personnes de travailler et de collaborer ensemble sur un seul projet. Chaque changement effectué sur chaque fichier peut être tracé à rebours vers chaque individu. Cela crée un réseau de confiance basé sur les relations humaines entre les individus.</p>
<p>Au début le fait d'avoir des milliers de gens qui travaillent sur le même projet peut apparaitre comme une idée risquée, chaotique ou seulement impossible. Toutefois les études montrent que ce genre de collaboration à grande échelle produit des logiciels qui sont meilleurs (3) et plus sécurisés que ceux utilisant une approche plus traditionnelle.</p>
<p>L'astrophysique est en retard sur cette révolution. Bien qu'il existe des logiciels spécialisés qui sont open-source (et largement utilisés), l'idée d'appliquer les mêmes principes aux ensembles de données et aux catalogues est nouvelle. Les planètes extrasolaires représentent un cas de test idéal parce que les données sont produites par différents groupes d'observateurs à travers le monde. Les observations et les découvertes évoluent si vite qu'un catalogue statique n'est même plus une option.</p>
<p>Pour susciter l'intérêt des gens à propos de l'idée et de la philosophie derrière l'Open Exoplanet Catalogue, j'ai initié une compétition nommée « Exoplanet Visualization Contest ». Le but est de libérer sa créativité pour créer de nouvelles façons de visualiser les données sur les exoplanètes. Il n'y a aucune restriction sur les projets soumis. La seule exigence est que chaque projet doit utiliser de vraies données en provenance de l'Open Exoplanet Catalogue.</p>
<p>Cela a conduit à des propositions très diverses. Par exemple nous avons reçu des articles dignes d'une publication scientifique, des dessins artistiques sur de potentielles exo-lunes habitables, des sites Web interactifs. Un des participants est allé jusqu'à concevoir une pièce d'habillement, une veste, contenant des microcontrôleurs et affichant des données sur les exoplanètes. Grâce à un don généreux de la Société Royale d'Astronomie, à Londres, nous avons pu remettre des prix pour les meilleures soumissions. Avec l'aide de Scott Tremaine (qui occupe la chaire Richard Black de l'Institut), Dave Spiegle (membre de l'Institut) et Dan Fabrycky (professeur assistant à l'université de Chicago), deux gagnants ont été choisis.</p>
<p>Le second prix a été remporté par Jorge Zuluaga (Antioquia, Colombie). Il a conçu une nouvelle manière de présenter les données brutes sur les exoplanètes, comme par exemple leur taille ou leur température d'équilibre. Ces données sont d'un intérêt particulier quand il s'agit de déterminer si ces planètes sont potentiellement habitables ou pas. Sa proposition, le « <a href="http://urania.udea.edu.co/sitios/facom/research/CERC.php?#">Comprehensive Exoplanetary Radial Chart</a> », montre le rayon des exoplanètes et utilise des couleurs pour représenter leur température d'équilibre approximative. Ce graphique affiche également des informations sur les propriétés de l'orbite planétaire, la taille de l'étoile hôte et, potentiellement, d'autres variables pouvant présenter un intérêt.</p>
<p>Le gagnant du concours est Tom Hands, un étudiant en doctorat de l'université de Leicester. Il a écrit un site interactif, <a href="http://tomhands.com/exovis/">ExoVis</a>, qui permet de visualiser toutes les découvertes de systèmes planétaires. Le projet utilise HTML5, Javascript, jQuery et PHP. On peut chercher une planète particulière, étudier ses paramètres orbitaux et les comparer à ceux des autres systèmes, tout ça via un simple navigateur Web.</p>
<p>Le projet « Open Exoplanet Catalogue » est encore jeune et il vise à attirer un nombre important de contributeurs réguliers. De cette façon la qualité des données deviendra meilleure que celle de ses compétiteurs « fermés », de la même manière que Wikipédia est maintenant bien plus utilisée que l'Encyclopaedia Britannica.<br>
Je suis optimiste pour le futur.</p>
<p>Notes :</p>
<ol>
<li>Pluton était à l'origine classée comme étant la neuvième planète du Système Solaire. En 2005 l'Union Astronomique Internationale a décidé de la classer dans la catégorie des planètes naines.</li>
<li>Le plus populaire de ces outils est Git, utilisé par les gens qui écrivent le noyau Linux et de nombreux autres projets open-source majeurs.</li>
<li>Dans le monde du logiciel, « meilleur » se mesure en nombre de bugs par ligne de code.</li>
</ol><h2 id="commentaire">Commentaire</h2>
<p>Le projet « Open Exoplanet Catalogue », aussi intéressant soit-il, n'est qu'un des nombreux exemples de collaboration scientifique s'inspirant des méthodes de développement du monde du logiciel libre. Ces méthodes sont les suivantes :</p>
<ul>
<li>l'utilisation de gestionnaire de versions (décentralisés ou pas) ;</li>
<li>l'accès universel aux données via une licence permissive ;</li>
<li>la collaboration massive des contributeurs dispersés géographiquement.</li>
</ul><p>Ce changement de perspective et cette nouvelle manière de travailler permettent de générer de nouveaux « produits » scientifiques qui n'auraient pas pu voir le jour autrement.</p>
<p>On peut citer par exemple le « <a href="http://stacks.math.columbia.edu/">Stacks project</a> » initié par le mathématicien <a href="http://www.math.columbia.edu/%7Edejong/">Aise Johan de Jong</a> de l'université de Columbia. Le but est de produire un texte de référence sous licence libre et exposant la théorie complète des <a href="http://en.wikipedia.org/wiki/Algebraic_stack">champs algébriques</a>.</p>
<p>Comme toutes les contraintes d'un livre physique en papier disparaissent, le projet a pu explorer de nouvelles voies. Un site GitHub est en place et tout le workflow se base sur des commits Git. On peut naviguer dans le livre via des tags ou des hyperliens, faire des commentaires sur chaque lemme et définition. Des graphes de dépendances entre chaque chapitre <a href="http://stacks.math.columbia.edu/tag/02I6/graph/collapsible">sont visualisables</a> avec des algorithmes de dessin basé sur les forces (Force-based layout). À la date de rédaction de ce commentaire le « Stacks project » contient 4 043 pages, 12 150 tags et 384 825 lignes de code.</p>
<p>Autre exemple, <a href="http://homotopytypetheory.org/book/">le projet HoTT</a> qui vise à écrire un livre de référence pour repenser les fondations des mathématiques (en se basant sur la théorie de l'<a href="http://fr.wikipedia.org/wiki/Homotopie">homotopie</a>). Le projet est sous licence CC.By.SA et possède lui aussi <a href="https://github.com/HoTT/book">une page GitHub</a> pour gérer les contributions (voir <a href="http://vimeo.com/68761218">cette vidéo</a> de l'activité du projet). Ce sont plusieurs dizaines de mathématiciens et de logiciens qui ont travaillé ensemble avec la méthodologie du logiciel libre afin de produire un traité hautement technique de plus de 600 pages qui expose la théorie.</p>
<p>On voit bien que les idées et les méthodes du monde du libre se diffusent dans d'autres secteurs que ceux du logiciel. Les sciences « dures » en particulier semblent adopter ces méthodes avec enthousiasme et accepter une mutation de leur façon de travailler et de produire de la science. À la suite du projet <a href="http://michaelnielsen.org/polymath1/index.php?title=Main_Page">PolyMath</a> on trouve même des propositions visant à soumettre des article scientifiques directement sur GitHub (ou équivalent) afin de permettre une collaboration massive et une amélioration des résultats.</p>
<p>Comme l'indique <a href="http://www.ias.edu/about/publications/ias-letter/articles/2013-summer/bauer-hott-book">cet article</a> analysant les aspect socio-techniques de la création du livre HoTT :</p>
<blockquote>
<p><em>Does it sound crazy? Of course it does. Open source also sounded crazy when Richard Stallman announced his manifesto.</em></p>
</blockquote></div><div><a href="https://linuxfr.org/news/comment-les-idees-du-mouvement-open-source-peuvent-aider-a-etudier-les-exoplanetes.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/100503/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/comment-les-idees-du-mouvement-open-source-peuvent-aider-a-etudier-les-exoplanetes#comments">ouvrir dans le navigateur</a>
</p>
patrick_gBenoît SibaudZeroHeureNils RatusznikXavier Teyssierpalm123https://linuxfr.org/nodes/100503/comments.atomtag:linuxfr.org,2005:News/348282013-11-18T21:29:22+01:002013-11-24T20:54:31+01:00Le Top 500 de novembre 2013Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Le quarante‐deuxième <em>Top 500</em> des supercalculateurs mondiaux est sorti aujourd’hui à l’occasion de la conférence <a href="http://sc13.supercomputing.org/"><em>Supercomputing SC13</em></a> de Denver (Colorado).</p>
<p>Rappelons que le <em>Top 500</em> se base sur une soumission volontaire (de nombreuses machines puissantes mais classifiées ne participent pas à la course) et sur un comparateur de performances spécifique extrêmement parallélisable (le code <a href="http://fr.wikipedia.org/wiki/LINPACK" title="Définition Wikipédia">LINPACK</a>, qui concerne la résolution de systèmes d’équations linéaires).</p>
<p>L’analyse dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.top500.org/list/2013/11/" hreflang="en" href="https://linuxfr.org/redirect/88519">La liste du Top 500 </a></li><li>lien nᵒ 2 : <a title="http://www.top500.org/lists/2013/11/highlights/" hreflang="en" href="https://linuxfr.org/redirect/88520">Les principales nouveautés </a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/news/sortie-du-top-500-de-juin-2013" hreflang="fr" href="https://linuxfr.org/redirect/88521">La news LinuxFr.org sur le classement de juin 2013</a></li></ul><div><h3 id="stabilité-ou-stagnation">Stabilité ou stagnation ?</h3>
<p>Cette liste de novembre 2013 est placée sous le signe de la stabilité en tête du classement, puisque les cinq premiers ne changent pas et que leurs scores respectifs restent identiques.<br>
La machine chinoise <a href="http://www.top500.org/system/177999">Tianhe-2</a> reste en tête avec un score de 33,86 pétaFLOPS. Cette puissance de calcul est obtenue à l’aide de 16 000 nœuds de calcul. Chacun de ces nœuds est constitué de deux processeurs Intel Xeon à douze cœurs cadencés à 2,2 GHz, ainsi que de trois cartes accélératrices Intel Xeon Phi ayant chacune 57 cœurs de calcul à 1,2 GHz.<br>
En seconde position, on retrouve le supercalculateur Titan du laboratoire d’Oak Ridge. Le score obtenu est de 17,59 pétaFLOPS, avec une excellente efficacité énergétique (consommation de 8,21 MW, ce qui équivaut à 2,1 GFLOPS/W).<br>
Enfin, la médaille de bronze reste la propriété du laboratoire Lawrence Livermore, avec le calculateur Sequoia (un modèle IBM BlueGene/Q). Son score ne bouge pas avec 17,17 pétaFLOPS et 1 572 864 cœurs de calcul PowerPC cadencés à 1,6 GHz.</p>
<p>Viennent ensuite le K Computer japonais et ses processeurs Fujitsu SPARC64 VIIIfx (10,5 pétaFLOPS), suivi par le calculateur Mira, encore un BlueGene/Q, à 8,5 pétaFLOPS.</p>
<p>Il est à noter que le monde du calcul haute performance semble prendre du retard par rapport à la feuille de route qui avait été fixée il y a quelques années. Alors qu’il était question de franchir la barrière symbolique de l’exaFLOPS en 2018, c’est maintenant l’année 2020 qui est évoquée.<br>
La clé sera l’efficacité énergétique des machines qui va devoir progresser de façon importante (voir <a href="http://www.hpcmagazine.fr/en-couverture/efficacite-energetique-le-saint-graal-du-calcul-intensif/">ce dossier de <em>HPC magazine</em></a>).</p>
<h3 id="les-autres-machines">Les autres machines</h3>
<p>Il faut attendre la sixième place pour trouver une nouveauté, le calculateur suisse <a href="http://www.top500.org/system/177824">Piz Daint</a> installé au CSCS (<em>Centro Svizzero di Calcolo Scientifico</em>) de Lugano.<br>
Il s’agit d’un Cray XC30 ayant obtenu 6,27 pétaFLOPS lors de son test LINPACK. Cette machine possède une architecture hybride, puisque les 5 272 Intel Xeon E5-2670 à 8 cœurs sont renforcés par 73 808 cartes NVIDIA K20x.<br>
La machine Piz Daint fixe un nouveau record d’efficacité énergétique, puisqu’elle ne consomme que 2,33 MW au total, soit 2,7 GFLOPS/W. Elle devient également la plus puissante machine d’Europe.<br>
Le vieux continent ne s’en tire pas trop mal, puisqu’il place encore deux machines dans le top 10 : les calculateurs allemands JUQEEN et SuperMUC sont respectivement huitième et dixième, avec 4,29 et 2,9 pétaFLOPS.</p>
<h3 id="statistiques-sur-la-liste">Statistiques sur la liste</h3>
<p>Le ticket d’entrée pour accéder à cette liste <em>Top 500</em> de novembre 2013 est de 117,8 TFLOPS. Il était de seulement 96,6 TFLOPS il y a six mois.<br>
Si l’on s’intéresse à la puissance cumulée des 500 machines, on arrive à un total de 250 pétaFLOPS. Là encore, l’évolution est notable, puisque le score cumulé était de 230 pétaFLOPS en juin dernier, et de 162 pétaFLOPS il y a un an.<br>
On trouve maintenant trente‐et‐un supercalculateurs à plus d’un pétaFLOPS dans la liste, alors qu’ils n’étaient que vingt‐six il y à six mois.</p>
<h3 id="lévolution-par-pays">L’évolution par pays</h3>
<p>Les trois machines européennes dans le top 10 masquent en partie un déclin du vieux continent, qui passe de 112 machines il y a six mois, à seulement 102 dans le nouveau classement. Ce sont les États‐Unis qui renforcent leur position en passant de 264 machines (52,8 %) à 277 (55,4 %).<br>
Il semble que l’Asie (et en particulier la Chine) ait atteint un plateau aux alentours de 120 calculateurs. On ne retrouve plus la croissance effrénée qui avait caractérisé ces dernières années.<br>
La première machine française est toujours le calculateur <a href="http://www.top500.org/system/178071">Pangea</a>, propriété de la firme Total, avec un score de 2 098 TFLOPS. Il passe de la onzième à la quatorzième place dans ce nouveau classement.<br>
Au sein de l’Union européenne, la France (22 machines) se classe entre la Grande‐Bretagne (23 machines) et l’Allemagne (20 machines).</p>
<h3 id="les-systèmes-dexploitation-un-oneosshow">Les systèmes d’exploitation : un <em>one OS show</em> !</h3>
<p>Pour finir, penchons nous maintenant sur la répartition par système d’exploitation, afin de voir si la domination écrasante de GNU/Linux se maintient dans ce nouveau classement.<br>
Et la réponse est… oui ! Elle s’accentue même, puisque les calculateurs du <em>Top 500</em> fonctionnant sous GNU/Linux sont maintenant au nombre de 482 (soit 96,4 % du classement), alors qu’ils n’étaient que 476 (soit 95,2 %) il y a six mois.<br>
Il semble évident que le monde des supercalculateurs est devenu depuis plusieurs années la chasse gardée exclusive de GNU/Linux, et que les autres systèmes d’exploitation n’ont qu’une importance réduite et résiduelle dans ce domaine.</p></div><div><a href="https://linuxfr.org/news/le-top-500-de-novembre-2013.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/100390/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/le-top-500-de-novembre-2013#comments">ouvrir dans le navigateur</a>
</p>
patrick_gDavy Defaudpalm123https://linuxfr.org/nodes/100390/comments.atomtag:linuxfr.org,2005:News/346842013-10-11T15:35:59+02:002013-10-11T15:35:59+02:00Le programme de Google pour améliorer la sécurité des logiciels libresLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Le 9 octobre dernier Google <a href="http://googleonlinesecurity.blogspot.fr/2013/10/going-beyond-vulnerability-rewards.html">a annoncé</a> un nouveau programme visant à améliorer la sécurité de plusieurs projets de logiciel libre.</p>
<p>Depuis plusieurs années la firme de Mountain View maintient un "<a href="https://www.google.com/about/appsecurity/reward-program/">Vulnerability Reward Program</a>" qui a pour objet de payer les programmeurs trouvant des bugs de sécurité dans les applications Google. La dernière annonce étend ce programme à plusieurs projets libres qui forment le soubassement technique d'internet (<em>key third-party software critical to the health of the entire Internet</em>).</p>
<p>Plus de détails dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="http://googleonlinesecurity.blogspot.fr/2013/10/going-beyond-vulnerability-rewards.html" hreflang="en" href="https://linuxfr.org/redirect/88000">L'annonce du programme "Patch Rewards"</a></li><li>lien nᵒ 2 : <a title="https://www.google.com/about/appsecurity/patch-rewards/" hreflang="en" href="https://linuxfr.org/redirect/88001">Les conditions et la FAQ</a></li><li>lien nᵒ 3 : <a title="http://0b4af6cdc2f0c5998459-c0245c5c937c5dedcca3f1764ecc9b2f.r43.cf2.rackcdn.com/12309-sec13-paper_finifter.pdf" hreflang="en" href="https://linuxfr.org/redirect/88002">An Empirical Study of Vulnerability Rewards Programs</a></li></ul><div><p>Les programmes visant à payer une personne ayant découvert un bug de sécurité (Bug Bounty) sont un grand succès depuis plusieurs années. Un article, issu du symposium USENIX sur la sécurité, et intitulé "<a href="http://0b4af6cdc2f0c5998459-c0245c5c937c5dedcca3f1764ecc9b2f.r43.cf2.rackcdn.com/12309-sec13-paper_finifter.pdf">An Empirical Study of Vulnerability Rewards Programs</a>", permet de faire le point sur ce sujet. Les auteurs ont étudié en détail le programme de Google pour sécuriser Chrome et le programme Mozilla pour sécuriser Firefox.<br>
La lecture de ce papier passionant, bourré de détails, est très éclairante sur les sommes mises en jeu ainsi que les bénéfices retirés par les projets :</p>
<blockquote>
<p><em>Chrome VRP has cost approximately $580,000 over 3 years and has resulted in 501 bounties paid for the identification of security vulnerabilities. The Firefox VRP has cost approximately $570,000 over the last 3 years and has yielded 190 bounties.</em></p>
</blockquote>
<p>Google, dans son annonce du 9 octobre souhaite maintenant aller plus loin que Chrome et la société est prête à payer pour améliorer la sécurité d'autres projets que les siens. Ici ce ne sont pas à proprement parler les bugs qui sont recherchés. Google veut récompenser les patchs qui améliorent <em>structurellement</em> la sécurité d'un projet :</p>
<blockquote>
<p><em>We decided to try something new: provide financial incentives for down-to-earth, proactive improvements that go beyond merely fixing a known security bug. Whether you want to switch to a more secure allocator, to add privilege separation, to clean up a bunch of sketchy calls to strcat(), or even just to enable ASLR - we want to help !</em></p>
</blockquote>
<p>La liste des projets visés par ce bounty program est la suivante :</p>
<ul>
<li>Réseau : OpenSSH, BIND, ISC DHCP</li>
<li>Parseurs images : libjpeg, libjpeg-turbo, libpng, giflib</li>
<li>Fondations de Chrome : Chromium, Blink</li>
<li>Bibliothèques sensibles : OpenSSL, zlib</li>
<li>Noyau Linux</li>
</ul><p>Dans <a href="http://googleonlinesecurity.blogspot.fr/2013/10/going-beyond-vulnerability-rewards.html">l'annonce sur le blog du projet</a> il est également indiqué que le programme va par la suite être étendu aux projets suivants :</p>
<ul>
<li>Serveurs Web : Apache httpd, lighttpd, nginx</li>
<li>Serveurs SMTP : Sendmail, Postfix, Exim</li>
<li>Chaîne de compilation : GCC, binutils, llvm</li>
<li>Réseau : OpenVPN</li>
</ul><p>Les récompenses prévues vont de 500 dollars à 3 133,7 dollars et leur attribution est du ressort de l'équipe de sécurité Google. Un point important qui mérite d'être souligné est le fait que Google ne veut pas court-circuiter les projets amonts. En effet un patch de sécurité, pour être admissible au programme "Patch rewards", doit avoir été soumis et accepté par les mainteneurs du projet amont (upstream). Non seulement ça, mais le patch doit avoir été déployé dans une version distribuée par le projet :</p>
<blockquote>
<p><em>In order to qualify, your patch must first be submitted directly to the maintainers of the project, and you must work with them to have it accepted into the repository and incorporated into a shipping version of the program.</em></p>
</blockquote>
<p>On ne peut que se féliciter de cette annonce du programme "Patch rewards" par Google. L'entreprise a bien compris que la qualité de ses services, et donc en définitive sa santé financière, dépendait du bon fonctionnement de tout un écosystème de logiciels libres. L'incitation à renforcer la sécurité de cet écosystème bénéficiera à tout le monde.</p></div><div><a href="https://linuxfr.org/news/le-programme-de-google-pour-ameliorer-la-securite-des-logiciels-libres.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99936/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/le-programme-de-google-pour-ameliorer-la-securite-des-logiciels-libres#comments">ouvrir dans le navigateur</a>
</p>
patrick_gZeroHeurerootixNeoXhttps://linuxfr.org/nodes/99936/comments.atomtag:linuxfr.org,2005:News/344942013-08-13T11:54:11+02:002013-08-13T16:04:29+02:00Tails en version 0.20Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>La distribution Tails (The Amnesic Incognito Live System) est un live-CD/live-USB visant à protéger votre anonymat et votre vie privée quand vous vous connectez à Internet.<br>
La sortie de la version 0.20 a été annoncée le 9 août dernier par l'équipe de développement.</p>
<p>Plus de détails dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="https://tails.boum.org/index.fr.html" hreflang="fr" href="https://linuxfr.org/redirect/87343">Le projet Tails</a></li><li>lien nᵒ 2 : <a title="https://tails.boum.org/news/version_0.20/index.fr.html" hreflang="fr" href="https://linuxfr.org/redirect/87344">Annonce de la sortie de Tails 0.20</a></li><li>lien nᵒ 3 : <a title="https://tails.boum.org/download/index.fr.html" hreflang="fr" href="https://linuxfr.org/redirect/87345">Télécharger Tails</a></li><li>lien nᵒ 4 : <a title="https://tails.boum.org/doc/index.fr.html" hreflang="fr" href="https://linuxfr.org/redirect/87346">Documentation en français</a></li></ul><div><p>Depuis <a href="//linuxfr.org/news/tails-en-version-010">la dernière dépêche LinuxFR</a> il y a un an et demi, la distribution Tails a largement progressé pour devenir une sorte de référence en matière de protection de l'anonymat et de la vie privée. Inutile de rappeler à quel point cette problématique a pris de l'importance depuis quelques semaines…<br>
Parmi <a href="https://git-tails.immerda.ch/tails/plain/debian/changelog?id=0.20">les nouveautés notables ayant été intégrées depuis la dernière revue</a>, on peut citer une phase de démarrage moins spartiate puisque l'utilisateur est maintenant accueilli par une fenêtre (Tails Greeter) permettant de configurer un mot de passe root optionnel ou bien d'activer le camouflage Windows XP :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73312e6a7067/tails1.jpg" alt="boot" title="Source : http://patrickguignot.free.fr/linuxfr/tails1.jpg"></p>
<p>Photographie de l'écran avec mon téléphone portable. Désolé pour la qualité.</p>
<p>Le navigateur présent dans cette version Tails 0.20 est Iceweasel 17.0.8 ESR avec les patches additionels de Torbrowser. Plusieurs extensions améliorant la sécurité sont également préinstallées et préconfigurées :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73322e706e67/tails2.png" alt="extensions" title="Source : http://patrickguignot.free.fr/linuxfr/tails2.png"></p>
<p>Un autre progrès notable par rapport à la version 0.10 est la gestion de la persistance sur la clé USB. Bien entendu la sécurité maximum n'est possible que lors de l'utilisation d'un live-DVD puisque dans ce cas l'écriture sur le volume, et donc la compromission définitive, n'est plus possible. Néanmoins une clé live-USB est souvent plus pratique à transporter et elle peut être réutilisée lors des mises à jour. Pour améliorer encore la facilité d'utilisation, une partie de l'espace sur la clé peut être réservé au stockage des données afin de conserver les réglages entre deux démarrages successifs. C'est cette notion de « persistance » sur la clé qui est offerte par Tails (avec <a href="https://tails.boum.org/doc/first_steps/persistence/warnings/index.fr.html">une page de mise en garde</a> qui explique les inconvénients).</p>
<p>La procédure est simple puisqu'il suffit d'installer Tails une première fois sur un volume et de démarrer dessus. On utilise ensuite l'application dédiée pour cloner le volume sur une autre clé avec création simultanée d'un volume chiffré sur l'espace restant. Tout ça se fait en un simple clic :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73332e706e67/tails3.png" alt="clone" title="Source : http://patrickguignot.free.fr/linuxfr/tails3.png"></p>
<p>On saisit le mot de passe permettant de chiffrer le volume :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73342e706e67/tails4.png" alt="pass" title="Source : http://patrickguignot.free.fr/linuxfr/tails4.png"></p>
<p>Et hop c'est parti pour la création :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73352e706e67/tails5.png" alt="creation" title="Source : http://patrickguignot.free.fr/linuxfr/tails5.png"></p>
<p>Ce volume persistant permet de stocker des fichiers personnels et de sauvegarder les clés SSH ou OpenPGP. Tout se paramètre très facilement et la configuration des différents logiciels peut également être sauvegardée grâce à ce volume chiffré (connexions réseaux, marque-pages du navigateur, comptes mails, etc):</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73362e706e67/tails6.png" alt="config" title="Source : http://patrickguignot.free.fr/linuxfr/tails6.png"></p>
<p>L'interface de Tails est un bureau Gnome2 ultra classique :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73372e706e67/tails7.png" alt="interface" title="Source : http://patrickguignot.free.fr/linuxfr/tails7.png"></p>
<p>Mais bien entendu le mode Windows XP est disponible pour les paranoïaques voulant passer inaperçu :</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7061747269636b677569676e6f742e667265652e66722f6c696e757866722f7461696c73382e706e67/tails8.png" alt="winxp" title="Source : http://patrickguignot.free.fr/linuxfr/tails8.png"></p>
<p>Tout est fait pour faciliter la vie de l'utilisateur et pour sécuriser l'utilisation de façon transparente et automatique. Qu'il s'agisse du gestionnaire de mots de passe KeePassX ou encore du nettoyage automatique de la RAM à l'extinction pour éviter <a href="https://fr.wikipedia.org/wiki/Attaque_par_d%C3%A9marrage_%C3%A0_froid">les attaques cold-boot</a>.<br>
Tous les logiciels <a href="https://tails.boum.org/contribute/design/Tor_enforcement/">sont configurés</a> afin de se connecter à Internet par l'intermédiaire de Tor (avec isolation mutuelle via SocksPorts).</p>
<p>La <a href="https://tails.boum.org/doc/index.fr.html">documentation</a> est également de très grande qualité avec de nombreux <a href="https://tails.boum.org/doc/about/warning/index.fr.html">avertissements</a> sur les limites de la protection qui est offerte. Les rapports de bugs sont effectués via <a href="https://tails.boum.org/doc/first_steps/bug_reporting/#index3h1">WhisperBack</a>, une application écrite spécialement pour pouvoir envoyer des informations de manière anonyme.</p>
<p>Tails est vraiment LA référence pour les utilisateurs voulant protéger leur anonymat sur le net et la plus grande publicité devrait être faite autour de cette distribution Linux pour en encourager l'utilisation.</p></div><div><a href="https://linuxfr.org/news/tails-en-version-0-20.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99342/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/tails-en-version-0-20#comments">ouvrir dans le navigateur</a>
</p>
patrick_gpalm123Benoît SibaudZeroHeurePierre JarillonXavier Teyssierhttps://linuxfr.org/nodes/99342/comments.atomtag:linuxfr.org,2005:News/344452013-07-24T15:28:10+02:002013-07-25T12:48:58+02:00Ubuntu Edge, premier smartphone Canonical : convergent, haut de gamme, financement participatifLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Canonical vient de révéler ce qui se cachait derrière les <em>teasers</em> publiés depuis des semaines sur le site. En résumé, il sagit d’un <em>smartphone</em> très haut de gamme, le « Ubuntu Edge », qui fait l’objet d’une campagne de financement participatif (<em>crowdfunding</em>) sur la plate‐forme <a href="http://www.indiegogo.com/projects/ubuntu-edge">Indiegogo</a>.</p>
<p><abbr title="Note des modérateurs">NdM</abbr> : <em>merci à patrick_g pour son journal.</em></p></div><ul><li>lien nᵒ 1 : <a title="http://linuxfr.org/users/patrick_g/journaux/ubuntu-edge-revolution-ou-bide-annonce" hreflang="fr" href="https://linuxfr.org/redirect/87173">Journal à l’origine de la dépêche</a></li></ul><div><h3 id="les-éléments-différenciants">Les éléments différenciants</h3>
<h4 id="superphone">Superphone</h4>
<p>Les caractéristiques techniques sont alléchantes puisqu’on relève, sur le <a href="http://www.jonobacon.org/2013/07/22/announcing-the-ubuntu-edge/">blog de Jono Bacon</a>, les détails suivants :</p>
<ul>
<li>écran 4,5 pouces avec glace en saphir ;</li>
<li>résolution de 1280 × 720 pixels ;</li>
<li>4 Gio de mémoire vive ;</li>
<li>128 Gio de stockage Flash ;</li>
<li>appareil photo 8 Mpx à l’arrière et 2 Mpx à l’avant ;</li>
<li>4G-LTE ;</li>
<li>batterie à <a href="https://en.wikipedia.org/wiki/Silicon_battery">anode de silicium</a>.</li>
</ul><h4 id="convergence">Convergence</h4>
<p>Ce qui est encore plus intéressant, c’est que ce <em>smartphone</em> est qualifié de <em>« fully converged Ubuntu devic »</em>. Cela signifie que vous pouvez le brancher sur un moniteur et il vous offrira une interface Ubuntu classique, comme si c’était un bureau traditionnel. Plus besoin d’unité centrale fixe, tout est sous la main et on le branche où l’on veut.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f696e7369676874732e7562756e74752e636f6d2f77702d636f6e74656e742f75706c6f6164732f75692d342e6a7067/ui-4.jpg" alt="desktop" title="Source : http://insights.ubuntu.com/wp-content/uploads/ui-4.jpg"></p>
<h4 id="financement-participatif">Financement participatif</h4>
<p>L’objectif est gigantesque, puisqu’il s’élève à 32 millions de dollars.</p>
<h3 id="après-le-marketing-les-questions-qui-fâchent"> Après le marketing, les questions qui fâchent</h3>
<h4 id="matériel">Matériel</h4>
<p>Il est évident que les processeurs ARM d’un <em>smartphone</em> ne sont pas au niveau de ce qu’offre un processeur Intel ou AMD pour ordinateur de bureau. L’annonce de l’Ubuntu Edge indique seulement qu’il contiendra <em>« the fastest multi‐core CPU »</em>, ce qui n’est pas d’une précision renversante. [NdM : on n’en est qu’au stade de projet.] Quel sera l’écart par rapport à un ordinateur classique ? Est‐ce que les performances seront « suffisantes » ?</p>
<h4 id="logiciel">Logiciel</h4>
<p>Une autre inconnue est la pile logicielle Ubuntu du Edge. Il est annoncé que l’appareil sera pleinement compatible Android, afin de profiter de la gigantesque logithèque déjà existante. En gros, cela revient à faire tourner un Android et à lancer l’interface Ubuntu par dessus, comme si c’était une application <em>root</em>.</p>
<p>Par la suite (mais pas au lancement, apparemment), on pourra ne lancer que la pile logicielle Ubuntu, sans faire appel à Android. Les mises à jour sont garanties sur au moins trois ans.</p>
<h4 id="financement-participatif-record">Financement participatif record</h4>
<p>Une autre question concerne la campagne Indiegogo. Pourquoi lancer une telle campagne, surtout avec un objectif à atteindre aussi énorme (32 millions de dollars !) ? Est‐ce que Canonical n’a pas assez d’argent pour produire seule le Edge ? Est‐ce pour rassembler et fidéliser les <em>aficionados </em>?</p>
<p>On peut noter que les premiers souscripteurs (ceux qui feront leur promesse de don le 23 juillet) auront un Edge à 600 $, alors que les donateurs plus tardifs devront payer 810 $.</p>
<h3 id="avis-personnel">Avis personnel</h3>
<p>TL;DR : ça ne marchera jamais !</p>
<p>Avec la concurrence démente entre iOS et Android, il n’y a que très peu de place sur le marché des <em>smartphones</em>. Il me semble que Mozilla a bien joué son coup en visant un segment de marché plus bas et en optant pour des applications tout en HTML 5. Ce sont des facteurs qui peuvent jouer pour parvenir à se construire une niche commerciale.</p>
<p>En revanche, le Ubuntu Edge ne me semble pas apporter quoi que ce soit lui permettant de se différencier vraiment. Jouer la haute technologie, c’est déjà la stratégie d’Apple ou de Samsung.</p>
<p>Je ne sais pas quel sera le résultat de la campagne Indiegogo (3 419 861 $ au moment où j’écris), mais la cible paraît difficile à atteindre. D’ailleurs, la FAQ évoque ce point et annonce que si les 32 millions ne sont pas atteints, il n’y aura pas de Edge et Canonical se contentera de passer des accords avec des fabricants pour déployer Ubuntu sur des <em>smartphones</em> déjà disponibles.</p></div><div><a href="https://linuxfr.org/news/ubuntu-edge-premier-smartphone-canonical-convergent-haut-de-gamme-financement-participatif.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99172/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/ubuntu-edge-premier-smartphone-canonical-convergent-haut-de-gamme-financement-participatif#comments">ouvrir dans le navigateur</a>
</p>
patrick_gDavy DefaudNÿcoBenoîtFlorent ZarafravashyoAlbertFRhttps://linuxfr.org/nodes/99172/comments.atomtag:linuxfr.org,2005:News/343222013-06-17T13:32:25+02:002013-06-18T18:36:29+02:00Sortie du Top 500 de juin 2013Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Le quarante‐et‐unième <em>Top 500</em> des super‐calculateurs mondiaux est sorti aujourd’hui à l’occasion de l’<a href="http://www.isc-events.com/isc13/"><em>International Supercomputing Conference</em></a> qui a lieu à Hambourg en Allemagne.</p>
<p>Rappelons que le <em>Top 500</em> se base sur une soumission volontaire (de nombreuses machines puissantes mais classifiées ne participent pas à la course) et sur un comparateur de performances spécifique extrêmement parallélisable (le code <a href="http://fr.wikipedia.org/wiki/Linpack" title="Définition Wikipédia">Linpack</a> qui concerne la résolution de systèmes d’équations linéaires).</p>
<p>L’analyse dans la suite de la dépêche.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.top500.org/lists/2013/06/" hreflang="en" href="https://linuxfr.org/redirect/86737">Le classement Top 500 de juin 2013</a></li><li>lien nᵒ 2 : <a title="http://www.top500.org/lists/2013/06/highlights/" hreflang="en" href="https://linuxfr.org/redirect/86738">Les grandes nouveautés de ce classement</a></li><li>lien nᵒ 3 : <a title="http://www.hpcwire.com/hpcwire/2013-06-02/full_details_uncovered_on_chinese_top_supercomputer.html?layout=print" hreflang="en" href="https://linuxfr.org/redirect/86739">La description de Tianhe-2</a></li><li>lien nᵒ 4 : <a title="http://linuxfr.org/tags/top500/public" hreflang="fr" href="https://linuxfr.org/redirect/86740">Les dépêches sur LinuxFr.org en lien avec le Top 500</a></li></ul><div><h2 id="sommaire">Sommaire</h2>
<ul><li>
<a href="#toc_0">Voie Lactée 2</a>
</li>
<li>
<a href="#toc_1">Les autres machines</a>
</li>
<li>
<a href="#toc_2">Statistiques sur la liste</a>
</li>
<li>
<a href="#toc_3">L’évolution par pays</a>
</li>
<li>
<a href="#toc_4">Les systèmes d’exploitation</a>
</li>
</ul><h3 id="toc_0">Voie Lactée 2</h3>
<p>
<img src="//img.linuxfr.org/img/687474703a2f2f7777772e746f703530302e6f72672f7374617469632f6d656469612f75706c6f6164732f626c6f672f2e7468756d626e61696c732f7469616e68652d322d6a61636b2d646f6e67617272612d7064662d36303078302e6a7067/tianhe-2-jack-dongarra-pdf-600x0.jpg" alt="Tianhe-2" title="Source : http://www.top500.org/static/media/uploads/blog/.thumbnails/tianhe-2-jack-dongarra-pdf-600x0.jpg" />
</p>
<p>Le numéro un de ce nouveau <em>Top 500</em> de juin 2013 est la machine <a href="http://www.top500.org/system/177999">Tianhe-2</a>, qui souffle ainsi la première place au Titan de Cray qui était le champion en titre.<br />
Il est à noter que les administrateurs de Titan au laboratoire national d’Oak Ridge aux États‐Unis ont décidé de <em>ne pas</em> faire tourner à nouveau le test Linpack depuis leur dernière passe de novembre 2012. Dans la liste <em>Top 500</em>, la machine reste donc bloquée à 17,59 pétaFLOPS, alors qu’elle aurait sans doute pu grapiller un ou deux pétaFLOPS de plus du fait des optimisations. <a href="http://www.hpcwire.com/hpcwire/2013-06-13/titan_didnt_redo_linpack_for_june_top_500_list.html">Il a été estimé</a> que l’arrivée de Tianhe rendait ce nouveau test Linpack inutile :</p>
<blockquote>
<p><em>To be honest, we decided at this point not to waste any more time. We know that the Chinese machine is going to blow us out of the water.</em></p>
</blockquote>
<p>Cette décision a sans doute été judicieuse, car le supercalculateur Tianhe-2 a effectivement pulvérisé toute la concurrence lors de cette édition du <em>Top 500</em>. Le score Linpack obtenu est de 33,86 pétaFLOPS mesurés, pour un maximum théorique de 54,90 pétaFLOPS. Bien entendu, la consommation atteint, elle aussi, des sommets avec 24 MW au total.</p>
<p>Le supercalculateur a été décrit en détails dans <a href="http://www.netlib.org/utk/people/JackDongarra/PAPERS/tianhe-2-dongarra-report.pdf">un rapport</a> écrit par le Dr Jack Dongarra du laboratoire national américain d’Oak Ridge, qui est l’un des fondateurs du classement <em>Top 500</em>. C’est à la suite d’une conférence en Chine, pour participer au <em>Forum international HPC</em>, que ses collègues chinois lui ont organisé une visite guidée de la machine.</p>
<p>Tianhe-2 (ce qui signifie « Voie Lactée 2 ») est une machine hybride installée au <em>Centre national de supercalculateurs de Guangzhou</em> — <a href="http://www.nscc-tj.gov.cn/en/"><em>National Supercomputing Center in Tianjin</em></a>. Quand sa construction sera terminée, à la fin de l’année, elle contiendra 16 000 nœuds de calcul. Chacun de ces nœuds est constitué de deux processeurs Intel Xeon à douze cœurs cadencés à 2,2 GHz, ainsi que de trois cartes accélératrices Intel Xeon Phi ayant chacune 57 cœurs de calcul à 1,2 GHz.<br />
Si l’on fait le calcul de la puissance théorique en double précision, cela donne ceci :</p>
<ul><li>Xeon classiques : 2 × 12 cœurs × 8 FLOPS/cycle × 2,2 GHz = 422,4 GFLOPS ;</li>
<li>cartes Phi : 3 × 57 cœurs × 16 FLOPS/cycle × 1,1 GHz = 3 009 GFLOPS.</li>
</ul><p>La puissance théorique combinée d’un seul nœud de calcul est donc de 422,4 + 3 009 = 3 431 GFLOPS. Il suffit ensuite d’assembler 16 000 nœuds de ce genre pour avoir Tianhe-2, c’est à dire un monstre d’une puissance crête théorique de 54,9 PFLOPS.<br />
La mémoire est de 88 Gio par nœud, pour un total de 1 404 Tio sur la machine complète. Il faut également ajouter les 12,4 Pio du système de stockage. La consommation totale des nœuds (processeurs, mémoire, interconnexions) est de 17,8 MW, mais, si l’on ajoute le refroidissement, on arrive à 24 MW.</p>
<p>Une autre caractéristique assez remarquable de Tianhe-2 est le fait qu’en plus des nœuds de calcul basés sur des processeurs Intel, il existe aussi un frontal constitué de 256 processeurs FT-1500. Ces processeurs sont une production locale à 16 cœurs utilisant l’architecture <a href="http://fr.wikipedia.org/wiki/SPARC" title="Définition Wikipédia">SPARC</a> et cadencés à 1,8 GHz. Bien entendu, ces 4 096 cœurs de calcul sont bien loin de pouvoir égaler les processeurs occidentaux de la machine principale, mais ils sont la preuve que la Chine travaille à son indépendance technologique.</p>
<p>Une seconde preuve est le fait que les interconnexions de Thianhe-2 ne doivent rien à Intel. Il s’agit d’une création de la <a href="https://en.wikipedia.org/wiki/National_University_of_Defense_Technology"><em>National University of Defense Technology</em></a> (NUDT) qui porte le nom de « TH Express-2 ». Les puces optoélectroniques sont gravées en 90 nm et ont un débit de 2,56 Tbps.</p>
<p>Au niveau des logiciels, on retrouve du très classique avec un noyau Linux (une variante locale nommée <a href="https://en.wikipedia.org/wiki/Kylin_%28operating_system%29#Kylin_Linux">Kylin Linux</a>), une gestion des ressources basée sur <a href="https://fr.wikipedia.org/wiki/SLURM">SLURM</a> et des piles logicielles OpenMP et MPI 3.0.</p>
<h3 id="toc_1">Les autres machines</h3>
<p>La seconde position du classement revient donc à la machine Titan, avec ses 17,59 pétaFLOPS. On peut noter que l’efficacité du supercalculateur est très bonne puisqu’il ne consomme que 8,21 MW, ce qui conduit à un ratio de 2 143 MFLOPS/W. En comparaison, le Tianhe-2 obtient un ratio de 1 901 MFLOPS/W (si on ne considère que les 17,8 MW de la consommation des nœuds).</p>
<p>En troisième position se trouve la machine Sequoia, un supercalculateur IBM BlueGene/Q de 17,17 pétaFLOPS. Ce score est un peu plus élevé que les 16,32 pétaFLOPS du précédent classement, alors que matériellement la machine est identique (toujours 1 572 864 cœurs de calcul cadencés à 1,6 GHz). C’est donc le résultat d’une optimisation logicielle.</p>
<p>La première machine européenne est le supercalculateur <a href="http://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JUQUEEN/JUQUEEN_node.html">JUQUEEN</a> du centre de recherche allemand de Jülich. Son score Linpack est de 5 pétaFLOPS, et il arrive en septième position dans ce <em>Top 500</em>.</p>
<h3 id="toc_2">Statistiques sur la liste</h3>
<p>Le ticket d’entrée pour accéder à cette liste <em>Top 500</em> de juin 2013 est de 96,6 TFLOPS. Il était de seulement 76,5 TFLOPS il y a six mois.<br />
Si l’on s’intéresse à la puissance cumulée des 500 machines, on arrive à un total de 223 PFLOPS. Là encore l’évolution est notable, puisque le score cumulé était de 162 PFLOPS en novembre dernier et de 123 PFLOPS il y a un an. C’est donc presque un doublement des performances en 12 mois !</p>
<p>La domination d’Intel se fait de plus en plus forte, puisque 80 % des machines sont équipées par des processeurs de ce constructeur (403 supercalculateurs exactement). Le score d’Intel était de 76 % il y a six mois. On note toutefois qu’IBM reste la firme ayant le pourcentage le plus élevé de puissance installée (33 %). Cela s’explique par le fait que les machines BlueGene d’IBM, bien que beaucoup moins nombreuses que les calculateurs Intel, sont souvent aux premières places du classement.</p>
<h3 id="toc_3">L’évolution par pays</h3>
<p>En termes de répartition géographique, les États‐Unis conservent leur prééminence (252 machines sur 500) et l’Europe remonte un petit peu (112 machines, alors qu’il n’y en avait que 105 la dernière fois). Cette petite remontée de l’Europe ne lui permet pas de ravir la seconde place à l’Asie qui, avec 119 machines dans le <em>Top 500</em>, stabilise sa progression.<br />
Au sein de l’UE, c’est le Royaume‐Uni qui est en tête avec 29 machines, mais la France (23 machines) et l’Allemagne (19 machines) ne sont pas très loin.</p>
<p>Petite curiosité, le premier supercalculateur français est une machine privée utilisée par la firme pétrolière Total. Le calculateur <a href="http://www.top500.org/system/178071">Pangea</a> obtient un score Linpack de 2 098 TFLOPS et se situe en onzième position du classement. Comme l’indique le très politiquement correct <a href="http://www.total.com/fr/groupe/actualites/actualites-820005.html&idActu=2944">communiqué de presse</a>, cette machine sera mise à disposition du :</p>
<blockquote>
<p><em>services d’Imagerie et d’Interprétation sismique du Centre de recherche pétrolière de Total. Il sera utilisé comme un outil d’aide à la décision pour l’exploration de zones géologiques complexes et pour accroître l’efficacité de la production d’hydrocarbures dans le respect de la sécurité et de l’environnement</em>.</p>
</blockquote>
<h3 id="toc_4">Les systèmes d’exploitation</h3>
<p>Enfin, comme il est de tradition, penchons nous maintenant sur la répartition par système d’exploitation. Cette nouvelle liste de juin 2013 nous indique que les machines fonctionnant sous Linux sont maintenant au nombre de 476 (soit 95,2 % du classement), alors qu’elles étaient 469 (93,8 %) il y a six mois et 462 (92,4 %) il y a un an.<br />
Comme les 24 machines qui ne sont pas sous Linux sont plutôt en bas de la liste, le score en termes de puissance cumulée est encore plus flatteur pour le système d’exploitation au manchot. Sur les 223 PFLOPS générés par les 500 machines de la liste, il y en a 217,9 (soit 97,4 %) qui viennent de supercalculateurs basés sur Linux. Difficile de faire mieux !</p></div><div><a href="https://linuxfr.org/news/sortie-du-top-500-de-juin-2013.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/98694/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-du-top-500-de-juin-2013#comments">ouvrir dans le navigateur</a>
</p>
patrick_gDavy DefaudclaudexNÿcohttps://linuxfr.org/nodes/98694/comments.atom