
tour d’horizon
Google a rendu un certain nombre de bibliothèques utilisées en interne pour différents projets open source. Dénommée « Google Abseil », il s’agit d’une collection d’outils C++ et Python. Un dépôt GitHub est déjà disponible pour le code C++ publié sous licence Apache. Les inconditionnels de Python devront patienter encore un peu.
Il y a en effet de quoi mettre de l’eau à la bouche de ces derniers. Les outils Abseil représentent dix années d’expérience engrangée par la firme de Mountain View sur différents projets open source. De plus, il s’agit de code utilisé en production et qui sera maintenu sur les cinq années à venir. En l’état actuel, la collection de bibliothèques est (d’après Google) compatible avec la plupart des plateformes (systèmes d’exploitation, compilateurs, matériel), sans que des configurations ardues ne soient nécessaires. Il sera question de maintenir ce cap et, pour les outils C++, assurer un passage doux de C++11 comme spécification du langage à C++17 d’ici à 2019.
D’après ce que Google rapporte, Abseil s’appuie sur des abstractions du langage C++ développées en respectant le standard C++11 et compatibles de façon totale ou partielle avec les spécifications C++14, C++17 et au-delà. Adopter Abseil c’est donc bénéficier de la possibilité d’avoir accès à certaines fonctionnalités du C++ qui n’existent pas encore dans les standards, avec la promesse que Google les adaptera une fois qu’elles sont adoptées.
Le type std ::string_view du standard C++17 aurait été adopté sur la base du retour d’expérience de Google avec le type StringPiece de la bibliothèque Abseil. Le type StringPiece est désormais renommé en absl ::string_view au sein de la bibliothèque Abseil. Le préprocesseur du fichier d’entête lié permet de s’assurer que le type Abseil intègre un programme comme un alias du type standard dans le cas où ce dernier est disponible sur le système. Sinon, c’est la version compatible aux spécifications C++11 et C++14 (absl ::string_view) qui est insérée.
En programmation, la gestion des instants et des durées demeure l'un des sujets les plus épineux. La bibliothèque standard du C++ offre std ::chrono ::duration et std::chrono::time_point, des modèles de classe pour cette catégorie de problèmes. Avec Abseil, Google propose les types absl :

Abseil contient les bibliothèques suivantes :
- base : routines d’initialisation et dépendances pour les autres bibliothèques ;
- algorithm : extension à la bibliothèque C++ standard du même nom ;
- container : conteneurs de style STL additionnels ;
- debugging : routines pour effectuer des tests de mémoire ;
- memory : versions compatibles C++11 de std ::make_unique() ainsi que des gestionnaires de mémoire ;
- meta : versions compatibles C++11 des tests de types disponibles sous les versions C++14 et C++17 de la bibliothèque type_traits ;
- numeric : contient des entiers 128 bits compatibles C++11 ;
- strings : routines de gestion des chaînes de caractères et des utilitaires au rang desquels on compte une version compatible C++11 du type C++17 std ::string_view ;
- synchronization : contient des primitives pour les accès concurrents et des abstractions de synchronisation ;
- time : abstractions pour manipuler les instants, les durées et les fuseaux horaires.
Source : Google Blog
Et vous ?


Vous avez lu gratuitement 6 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.