Nouveautés du langage C dans sa prochaine version C23

118
16
jan.
2023
C et C++

Le C est un langage de programmation développé depuis 1972 par Kenneth Thompson, Brian Kernighan et Dennis Ritchie. Il est, au départ, étroitement lié au développement du système UNIX, mais il a par la suite trouvé de nombreuses autres utilisations.

Il a influencé le développement de plusieurs autres langages dont C++, Objective-C, Java, D et C#.

La version C23, qui sera vraisemblablement finalisée en 2023, apporte son lot de nouveautés.

Après un bref historique de la normalisation du langage, cet article parcourt les principaux changements présents dans cette nouvelle version.

Sortie de uchardet 0.0.8 pour la détection de codages de caractères

Posté par  (site web personnel, Mastodon) . Édité par Julien Jorge et Benoît Sibaud. Modéré par Benoît Sibaud. Licence CC By‑SA.
63
21
déc.
2022
C et C++

uchardet est une bibliothèque C/C++ de détection de codage de caractère (par exemple UTF-8 ou ISO-8859-15 sont ce qu’on appelle des « codages de caractères » ou « jeux de caractères ») basée sur des caractéristiques statistiques des langages naturels et membre du projet Freedesktop. Elle peut détecter quelques dizaines de codages de caractères.

Le projet fournit également un outil en ligne de commande pour tester très simplement le codage de vos fichiers ou de flux de texte.

uchardet version 0.0.8 est sortie ce 8 décembre 2022.

VulkanSceneGraph - Un graphe de scène en C++

Posté par  (site web personnel) . Édité par Julien Jorge. Modéré par bobble bubble. Licence CC By‑SA.
Étiquettes :
26
5
déc.
2022
C et C++

Ayant parlé rendu 3D et graphes de scène, nous pouvons nous attaquer à la troisième et dernière partie de cette série et évoquer enfin cette première sortie stable de VulkanSceneGraph.

VulkanSceneGraph (VSG) est donc une bibliothèque fournissant un graphe de scène basé sur Vulkan, écrite par Robert Osfield, qui est aussi le créateur d'OpenSceneGraph (OSG), l'ancêtre de VSG. Avec VSG, c'est une bibliothquèque plus moderne et plus modulaire qui nait. Parmi les utilisateurs d'OSG, on peut citer le simulateur de vol libre Flightgear, mais également beaucoup de simulations et de rendu de villes et de terrains, ce qui se ressent à l'usage avec des fonctionnalités très complètes de chargement à la volée de textures et de données d'élévation.

Les graphes de scène

Posté par  (site web personnel) . Édité par Julien Jorge. Modéré par devnewton 🍺. Licence CC By‑SA.
Étiquettes :
45
24
nov.
2022
C et C++

Deuxième partie de mon triptyque qui prend pour prétexte la sortie du graphe de scène VulkanSceneGraph pour parler un peu 3D. Dans le volet précédent, nous avons évoqué les bonds technologiques qui ont permis le rendu 3D raster, tel que nous le connaissons aujourd'hui, basé sur OpenGL et Vulkan. Aujourd'hui, parlons de graphes de scènes.

Considérant qu'une scène, c'est la définition graphique d'un monde à représenter à l'écran, un graphe de scène, c'est une structure qui hiérarchise les différents éléments de la scène au sein d'un graphe, car cette représentation est particulièrement pertinente.

Le rendu 3D, rétrospective

Posté par  (site web personnel) . Édité par Benoît Sibaud et Julien Jorge. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
86
21
nov.
2022
C et C++

Le 13 novembre 2022 est sorti Vulkan Scene Graph 1.0.0 (VSG). C'est la première version stable de cette bibliothèque en C++ qui fournit un graphe de scène basé sur l'API graphique Vulkan. Son concepteur, Robert Osfield, avait créé et maintenu OpenSceneGraph (OSG), basé sur OpenGL. Vulkan étant devenu la référence, il était temps de mettre à jour OSG en utilisant les toutes dernières fonctionnalités du C++. Comme c'est un sujet touffu, je vous propose dans cette première dépêche de revenir sur l'histoire des graphismes 3D. Dans une deuxième dépêche, nous verrons ce qu'est un graphe de scènes, et dans une troisième, nous nous pencherons plus spécifiquement sur OpenSceneGraph et VulkanSceneGraph.

Nous avons lu pour vous : Embracing Modern C++ Safely

Posté par  (site web personnel) . Édité par small_duck, Lawless, alkino, pulkomandy, serge_sans_paille et Ysabeau 🧶 🧦. Modéré par Ysabeau 🧶 🧦. Licence CC By‑SA.
Étiquettes :
27
9
sept.
2022
C et C++

Embracing Modern C++ Safely par John Lakos, Vittorio Romeo, Rostislav Khlebnikov, et Alisdair Meredith, est un livre couvrant les nouveautés apportées au langage C++ dans ses versions 11 et 14. Les auteurs sont tous employés de Bloomberg et présentent chaque addition au langage sous couvert de l’expérience qu’ils en ont eu au quotidien dans leur métier.

QGestpass logiciel de gestion de mots de passe et de sites web

18
30
mai
2022
C et C++

Ce logiciel de gestion de mots de passe a été développé au départ pour une utilisation personnelle et aussi dans un but didactique pour mieux appréhender les fonctions de cryptographie.
Compte tenu du nombre de mots de passe à gérer sur les différents sites Internet et pour avoir un mot de passe par site il était nécessaire d’utiliser un gestionnaire de mots de passe tout ayant accès aux mots de passe sur différents ordinateurs et navigateurs. Toutefois la solution de stockage des mots de passe sur le cloud et les logiciels commerciaux ne nous (NdM: l'équipe de QGestpass) convenant pas, il a été décidé de développer une solution spécifique dédiée à la création et la gestion d’identifiants et de mots de passe pour les sites web.
Ce n’est pas une application destinée à protéger des données sensibles, mais uniquement à gérer la connexion à des sites Internet.

Histoire de l'Objective-C et décès de son créateur

Posté par  . Édité par Ysabeau 🧶 🧦 et Benoît Sibaud. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
31
27
jan.
2021
C et C++

Brad Cox, créateur de l’Objective-C, est mort aux premiers jours de 2021. Il avait commencé ce langage en 1981 dans le labo de Tom Love en permettant grosso-modo de convertir une syntaxe Smalltalk en C. Par la suite, Tom Love et lui ont lancé la société Stepstone pour développer l’Objective-C. Steve Jobs s’est beaucoup intéressé à eux et a fini par débaucher l’un des ingénieurs du langage, Steve Naroff, pour travailler chez NeXT à étendre GCC. On notera incidemment la similarité des noms Stepstone et NextSTEP. En 1994, NeXT a racheté tous les droits sur l’Objective-C, plus tard revendus à Apple.

Logo Objective-C

L’an dernier Brad Cox et Steve Naroff ont publié dans Proceedings of the ACM on Programming Languages (une revue en OpenAccess) un excellent, et long, article décrivant en détail l’histoire de l’Objective-C. Cet article, « The origins of Objective-C at PPI/Stepstone and its evolution at NeXT » est sous licence Creative Commons By SA 4.0. Des volontaires pour traduire ?

L’environnement de développement KDevelop est sorti en version 5.5

Posté par  (site web personnel) . Édité par Davy Defaud et Xavier Teyssier. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
21
5
fév.
2020
C et C++

KDevelop est un environnement de développement intégré pour KDE, sous licence GPL v2. La version 5.5 est une version de peaufinage, sans nouveauté. Mais même les petites améliorations demandent du temps ! On retiendra diverses améliorations dans la prise en charge du C++ et du PHP, le greffon Git qui gère rebase et beaucoup de travail sur les performances et la stabilité.

Moi, expert C++, j’abandonne le C++

Posté par  (site web personnel) . Édité par Ysabeau 🧶 🧦, Davy Defaud, ZeroHeure, palm123, Pierre Jarillon, Nicolas Casanova et Benoît Sibaud. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
54
6
juin
2019
C et C++

Ma carrière professionnelle de développeur C a débuté en 1994 et j’ai naturellement adopté avec enthousiasme le C++ en 1999. J’étais un développeur C++ heureux et j’avais considéré la nouvelle version du standard C++11 juste comme une évolution tant attendue. En 2015, je réalise enfin à quel point, il a révolutionné l’écosystème C++ et ses bouleversements dans l’état d’esprit de la communauté. Je me passionne alors pour C++11, C++14, puis C++17, je m’implique beaucoup, je deviens un référent pour mes collègues, je donne des conférences sur ce langage, j’organise des meet‐ups à Paris, je publie de nombreux articles C++ sur LinuxFr.org

En 2018, une expérience change radicalement ma façon d’appréhender le développement logiciel.

Sortie de LLVM, Clang, lld, lldb 8.0.0

Posté par  (site web personnel) . Édité par Ontologia, Benoît Sibaud, Sylvestre Ledru, bubar🦥, Davy Defaud, palm123 et Bruno Michel. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
35
21
mar.
2019
C et C++

Après cinq versions candidates, l’étiquette finale a été apposée sur la branche 8.0.0 de la famille LLVM.

Cette dépêche reprend les points importants des notes de sortie associées. C’est une sélection totalement biaisée, libre à vous de lire les journaux des modifications respectifs pour avoir tous les détails !

Quelques cadriciels Web C++ (2/2)

Posté par  (site web personnel) . Édité par Davy Defaud, Benoît Sibaud, ZeroHeure, bubar🦥, claudex et palm123. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
38
12
déc.
2018
C et C++

Actuellement, il existe de nombreux langages et cadriciels intéressants pour le développement Web back‐end. Dans ce domaine, le C++ n’est pas le langage le plus à la mode, mais il possède cependant des atouts intéressants. En effet, le C++ possède de nombreuses bibliothèques (dont des cadriciels Web), il est réputé pour ses performances et, enfin, ses dernières normes le rendent plus agréable à utiliser.

L’objectif de cet article est de donner un aperçu des outils C++ disponibles pour le développement Web back‐end, à partir d’un exemple d’application. Les codes sources présentés ici sont disponibles sur ce dépôt Git. Les différents cadriciels utilisés sont résumés en annexe (partie 2). Enfin, une liste de bibliothèques C++ est disponible sur Awesome C++.

Partie 2 : les cadriciels Web.

Quelques cadriciels Web C++ (1/2)

Posté par  (site web personnel) . Édité par Davy Defaud, ZeroHeure, Julien Jorge, palm123, Benoît Sibaud, bubar🦥 et claudex. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
34
9
déc.
2018
C et C++

Actuellement, il existe de nombreux langages et cadriciels (frameworks) intéressants pour le développement Web côté serveur. Dans ce domaine, le C++ n’est pas le langage le plus à la mode, mais il possède cependant des atouts intéressants. En effet, le C++ dispose de nombreuses bibliothèques (dont des cadriciels Web), il est réputé pour ses performances, enfin ses dernières normes le rendent plus agréable à utiliser.

L’objectif de cet article est de donner un aperçu des outils C++ disponibles pour le développement Web back‐end, à partir d’un exemple d’application. Les codes sources présentés ici sont disponibles sur ce dépôt Git. Les différents cadriciels utilisés sont résumés en annexe (partie 2). Enfin, une liste de bibliothèques C++ est disponible sur Awesome C++.

Partie 1 : exemple d’application, génération de HTML et accès à une base de données.

E.T. téléphone Meson

Posté par  . Édité par Julien Jorge, Davy Defaud, bubar🦥, Benoît Sibaud, ZeroHeure et Bruno Michel. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
75
7
oct.
2018
C et C++

Meson est une technologie récente de la catégorie des systèmes de configuration et de gestion de la compilation de projets, à l’instar d’Autotools et de CMake. Nous proposons dans cette dépêche un tour de Meson, avec une explication des technologies en jeu, puis des comparaisons et quelques tests de rapidité et performance. En aucun cas nous ne tomberons dans le cassage des autres technologies et nous essaierons de comparer de manière la plus neutre possible.

Meson a été initié par Jussi Pakkanen en 2013. Frustré par Autotools, insatisfait par CMake, il a décidé de s’attaquer au problème et défini les buts à atteindre. Meson est le fruit de son travail, aidé de la communauté de contributeurs qui s’est formée.

Bien entendu, nous ne sommes pas omniscients et attendons des commentaires pertinents des lecteurs de LinuxFr.org pour corriger toute erreur, dans la joie et la bonne humeur.

Profileurs mémoire MALT et NUMAPROF

Posté par  (site web personnel) . Édité par Pierre Jarillon, Davy Defaud, palm123 et claudex. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
48
2
sept.
2018
C et C++

Outils de profilage

En calcul à haute performance — HPC (High Performance Computing) —, les problèmes liés à la mémoire deviennent de plus en plus critiques, qu’il s’agisse du contrôle de la consommation mémoire des applications, de la limitation des interactions avec le système d’exploitation (trop nombreuses allocations, trop petites allocations…) et de choix de placement (NUMA) ; et relativement peu d’outils libres permettent de profiler les applications sur ce terrain. Deux outils récemment mis en ligne apportent une part de réponse à ces questions.

La suite de l’article présentera MALT et NUMAPROF plus en détails…

Faut‐il continuer à apprendre le C++ ?

58
27
juil.
2018
C et C++

Le C++ est un langage qui a vu ses spécifications s’amonceler et se stratifier au cours des années. Il est encore très utilisé. Mais face à des concurrents comme Rust ou Go, quelle est sa place dans un environnement qui évolue ?

Cette dépêche qui a nécessité beaucoup de discussions, aura, vous le verrez, une forme un peu particulière.

vcpkg, un gestionnaire de bibliothèque pour C++

Posté par  (Mastodon) . Édité par Davy Defaud, Nÿco et Benoît Sibaud. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
20
25
avr.
2018
C et C++

Depuis 2016, Microsoft développe vcpkg, un outil bien sympathique qui permet de télécharger et compiler un ensemble de bibliothèques et leurs dépendances. Jusqu’à présent, cet outil était disponible uniquement pour la plate‐forme Windows. Depuis le 24 avril 2018, cet outil prend également en charge les plates‐formes GNU/Linux et macOS. vcpkg est publié sous licence MIT.

Une limite cependant est que la compilation des bibliothèques sur GNU/Linux est uniquement statique. La raison invoquée est qu’il est plus compliqué d’utiliser des bibliothèques sur GNU/Linux (LD_LIBRARY_PATH, rpath, etc.) que sous Windows, où l’on peut tout mettre dans un seul répertoire.

Quoi qu’il en soit, c’est une bonne nouvelle. Même si les paquets des distributions resteront une source privilégiée pour obtenir les fichiers de développement d’une bibliothèque, vcpkg offre une alternative intéressante pour ceux qui voudraient tout construire en statique de manière à fournir un seul binaire pour toutes les variantes de GNU/Linux.

C++17 libère size(), data() et empty()

Posté par  (site web personnel) . Édité par David Marec, Benoît Sibaud, Oliver, Davy Defaud, palm123, gbdivers, whity, claudex, audionuma et kp. Modéré par Davy Defaud. Licence CC By‑SA.
Étiquettes :
36
17
mar.
2018
C et C++

Cette évolution est dans la continuité de la libération de begin() et end() en C++11. Ces trois nouvelles fonctions, size(), data() et empty(), avaient été oubliées lors des deux dernières évolutions. Le C++17 corrige le tir.

Tout d’abord, nous allons revenir sur les raisons de cette évolution. Puis, nous détaillerons ce qu’apporte chacune de ces trois fonctions. Et, pour conclure, nous verrons comment on va pouvoir les utiliser.

Les fonctions empty(), data() et size() sortent de la prison « class » et rejoignent les fonctions begin() et end() qui les accueillent. Ces deux dernières fonctions accueillent également string_view. Derrières les barreaux de la prison des spécifications techniques, Unified-Call-Syntax va devoir y rester trois ans pour tenter de sortir avec C++20

Sortie de gfast-copy et de fast-copy sur www.open-source-projects.net

11
28
oct.
2017
C et C++

Icône de gfast-copy

Copier un unique (gros) fichier d’une source vers une destination donnée n’est pas une tâche pour laquelle les systèmes sont toujours optimisés.

Selon la philosophie UNIX, un programme doit accomplir une unique tâche précise et l’accomplir du mieux possible. C’est ce qui a donné naissance à gfast-copy et à fast-copy. Ces programmes font une chose banale mais le font bien.

Sortie d'it-edit version 3.0

18
3
juin
2017
C et C++

La version 3.0 de l'éditeur it-edit (Integrated Terminals Editor) est disponible.

La principale amélioration de cette nouvelle version est l'intégration optionnelle de la correction orthographique à l'aide de la bibliothèque de Sébastien Wilmet (mainteneur de gtk-sourceview3 - sur laquelle se base it-edit - et auteur de Texilla entre autres) gspell-1.

Mais c'est loin d'être le seul changement dans le code d'it-edit, et pas le seul ajout non plus.

Capture d'écran

Il s'agit de la 4e version majeure d'it-edit, et vous pouvez en voir une description plus détaillée dans l'annonce de la version 1.0.1.

Outils utiles pour développeur

59
3
mar.
2017
C et C++

Le but de cette dépêche est de recenser quelques outils utiles pour les développeurs (pas uniquement C et C++) et de donner accès à des ressources intéressantes pour leur prise en main.

Tout d’abord comment définit‐on un « outil utile » ? Ce sont des logiciels (libres, c’est mieux) qu’il n’est pas obligatoire d’utiliser mais qui permettent de gagner en productivité (ou de moins se prendre la tête avec un bogue). Ces outils sont utilisables indépendamment, mais utilisés ensemble peuvent former un tout qui donne les fonctionnalités d’un environnement de développement intégré.

Il est fort probable que pour certains cette dépêche vienne enfoncer des portes ouvertes. Mais pensez aux nouveaux pour qui elle sera, peut‐être, profitable.

C++17 garantit le court-circuit de copie (suite de la précédente dépêche)

Posté par  . Édité par Oliver, Davy Defaud, David Marec, Snark, Benoît Sibaud et lmg HS. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
28
13
déc.
2016
C et C++

Le calendrier de l’Avent du C++ continue son bonhome de chemin. Chaque jour, ou presque, une nouvelle surprise est offerte aux lecteurs de LinuxFr.org. La dépêche sur l’élision de la copie nous a mis l’eau à la bouche :

Comment résoudre le dilemme entre cette optimisation et le fait de ne pas pouvoir en bénéficier dans un code portable ?

Alors, entrons dans les entrailles de la spécification technique P0135 guidés par cette dépêche pédagogique, et découvrons comment le C++ s’améliore de version en version.

Une fille nerd s’électrocute en touchant la nouvelle tour C++17 de sa voisine avec garantie de court-circuit de copie

C++ se court-circuite le constructeur de copie

Posté par  . Édité par Oliver, Davy Defaud, lmg HS, gbdivers, gipoisson, Benoît Sibaud, palm123 et Storm. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
38
11
déc.
2016
C et C++

Le calendrier de l’Avent du C++ continue. Après quelques trous dans le calendrier, aujourd’hui une nouvelle surprise : le court-circuit du constructeur de copie.

Cette fonctionnalité est présente dans le C++ depuis la nuit des temps et pourtant peu connue, alors que ses effets de bords peuvent être redoutables. Cette dépêche très pédagogique explique tous les détails d’une optimisation ultime.

Une nerd s’électrocute en touchant la vieille tour C++ de sa voisine à cause des effets de bords du court-circuit du constructeur de copie (C++98 copy elision)

C++17 exprime la virgule flottante en hexadécimal et offre des cadeaux aux lecteurs de LinuxFr.org

Posté par  . Édité par Davy Defaud, Oliver, ZeroHeure et Storm. Modéré par Benoît Sibaud. Licence CC By‑SA.
Étiquettes :
30
7
déc.
2016
C et C++

Chaque jour (ouvré) de décembre a droit à sa surprise. Après le if constexpr, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0245 concernant le littéral pour exprimer la virgule flottante en hexadécimal.

Les Nerdettes s’entraînent pour le concours des littéraux hexadécimaux sur LinuxFr.org