Réunion du 5 septembre 2018

Contents

JIs 2018

Les Journées Informatiques de l’IN2P3 et de l’IRFU se dérouleront à Port-Bail (près de Cherbourg) du 1er au 4 octobre.
De nouveaux trains sont apparus sur le site SIMBAD (départ St.-Lazare) ainsi que de nouvelles navettes sont apparues, et Christian a proposé un covoiturage. Cela rend la venue aisée.
Julien rappelle que pour utiliser son véhicule personnel, il faut une attestation de son assureur indiquant qu’on peut l’utiliser

évolutions du C++

C++ est un langage qui évolue régulièrement depuis 2011. Ces évolutions sont plus ou moins suivies selon les développeurs et leurs besoins.
Guy utilise plutôt C++98, mais la norme C++11 est assez utilisable sous GNU/Linux. C++14 ne semble, lui, pas encore totalement utilisable avec les compilateurs GNU/Linux.
Christian se demande quelle proportion des développeurs C++ utilisent les nouvelles normes C++11, 14, etc.
Il soulève aussi le souci de la viralité de Boost, souvent utilisée en C++, mais Hadrien souligne que l’usage massif d’un grand nombre de bibliothèques Boost est aussi dû à un manque de documentation de ces bibliothèques concernant les dépendances et les fonctionnalités utilisées, les développeurs intègrent donc plus que nécessaire pour se simplifier la tâche. Le système de compilation Boost est aussi complexe.

Pour rappel, l’intérêt du C++ 11 est…

  • davantage de fonctionnalités intégrées (smart pointers, alignement mémoire, type traits, hashmaps, expression rationnelles, threads…), donc un besoin moindre de bibliothèques tierces et peu standardisées ;
  • nouvelles syntaxes (initialisation par liste, inférence de type et boucle range-based) qui simplifient l’utilisation des types complexes de la bibliothèque standard STL (ex: itérateurs) ;
  • introduction du paradigme fonctionnel avec les lambdas (plus élégants pour certaines tâches comme la parallélisation, la récurrence et les requêtes sur un jeu de données) ;
  • la définition correcte des classes avec facilitée avec des outils comme =default, =delete, final et override
  • une nouvelle notion avec les objets déplaçables mais non copiables (utile pour modéliser des ressources ou l’opérateur de copie n’a pas de sens: handles de fichiers, connexion à des serveurs…)
  • Template variadiques: permet d’avoir des templates avec un nombre variable de paramètres de type (applications: tuples, printf…)
  • il est plus facile qu’avant de garantir que certains calculs seront effectués à la compilation (constexprs) ;

Une formation à C++ est proposée par David  avec la DR, les places sont comptées

  • C++ nouvelles pratiques ;
  • C++ templates (très utile pour le calcul entre autres) ;
  • C++ parallèle (lambda, threads standards, démo de MPI, OpenACC…).

Julien indique qu’en Python, certains commencent à éviter les lambda qu’ils considèrent moins lisibles et moins performants. Il se demande donc l’intérêt de les intégrer dans C++.
David pense que les développeurs python ne sont pas la cible la plus adaptée pour les lambda, vu qu’il s’agit de scientifiques sans forcément la formation informatique nécessaire pour les manier.

Sous windows, la gestion mémoire est plus stricte (?) et Visual/MSVC permet donc une détection de mémoire sans avoir à utiliser une bibliothèque comme Valgrind sous GNU/Linux.
Une version GNU/Linux existe de l’Interface de développement Visual.
Sous GEANT4, les batteries de tests lancées sur les mêmes programmes sous GNU/Linux détectent moins d’erreurs que sous Windows : est-ce dû à une détection plus efficace sous Windows ou à une gestion système et mémoire plus efficace sous GNU/Linux ? 

  • une version d’histogramme devrait être intégrée à ROOT7 (espace de nom « experimental »), écrite en C++14, mais elle ne fonctionne pas encore sur toutes les architectures ;
  • C++ a connu une évolution majeure avec C++11, puis des évolutions plus mineures avec C++14 et C++17. Le comité de standardisation a retenu la leçon: C++11 était si différent qu’il a fallu un temps très long aux compilateurs pour le supporter. Ils privilégient maintenant un modèle de développement plus itératif ;
  • le problème ressemble aux problèmes rencontrés par les architectures 64bits qui ont dû choisir entre la performance et la compatibilité avec les anciens programmes 32 bits. Le problème est aussi apparu pour le support SSL/TLS sur les serveurs web : il y a des vieux standard qui ont des failles cryptographiques connues, et des vieux clients qui ne sont pas compatibles avec les nouveaux standards. Il faut évaluer le nombre de clients qu’on embête pour décider quand on peut éteindre le vieux standard 

Conversion de SVN vers gestion de version décentralisé

GEANT4 souhaite passer sa gestion de sources de svn à Git. La raison n’est pas claire, mais un Gitlab CERN semble une des raisons.
Le dépôt de développement semble au moins partiellement nécessiter de rester interne.
L’existence d’outils tels que la gestion de méthode de travail (workflow) comme gitflow/hgflow semblent avoir son importance.
Des outils de migration existent, la communauté TANGO en a utilisé pour migrer de sourceforge (svn) à Gitlab (git).
Le choix d’abandonner svn semble cohérent, vers quoi est une autre question.
Un travail d’intégration de Mercurial dans Gitlab a été proposé récemment.
Un des inconvénients des gestionnaires de source décentralisés est la gestion des binaires. Cependant, des modules existent pour ceux-ci. 
Antoine a essayé Git LFS cet été, avec succès.

  • pour une intégration dans gitlab.in2p3.fr, il faut aller dans settings/general/permissions et activer Repository/Git Large File System
  • installer le client git lfs
  • « git lfs init » pour configurer un dépôt avec LFS
  • une icône LFS apparaît à côté des fichiers LFS

Avenir d’OpenGL

La conférence Apple a indiqué cet été que le support OpenGL est abandonné. Metal (bibli propriétaire) le remplace. D3D12 est l’alternative MS
Vulcan se veut le successeur d’OpenGL, mais Apple ne suit pas ce standard.
Ça pose un souci à la communauté GEANT4 car un grand nombre de Mac sont utilisés et ça a un impact sur iOS et MacOS

Docker

Antoine a essayé un analyseur statique de dockerfile : HaDoLint,développé en haskell. Il utilise un fichier de configuration intégrant les bonnes pratiques de la communauté (37 règles actuellement). 

Déplacement de la date de réunion

Un sondage est créé pour trouver une date quinzomadaire DevLal.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *