C++17 indique la disponibilité des en‐têtes (header)

Posté par  . Édité par Davy Defaud, Benoît Sibaud, claudex, ZeroHeure, Bruno Michel et Nils Ratusznik. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
38
2
déc.
2016
C et C++

Chaque jour de décembre a droit à sa surprise. Après l'ordre d'évaluation, aujourd'hui, le calendrier de l’Avent du C++ présente la Spécification Technique P0061 concernant une macro magique : #define __has_include.

Une personne déprime de ne plus rien comprendre au C++ et son collègue le rassure que LinuxFr.org publie le calendrier de l'Avent du C++ avec des explications pédagogiques

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)

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.

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

Rencontre des Développeurs LLVM 2012

Posté par  (Mastodon) . Édité par baud123, claudex, Benoît Sibaud et Pierre Jarillon. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
35
25
nov.
2012
C et C++

Les 7 et 8 novembre derniers a eu lieu la Rencontre des Développeurs LLVM 2012 (2012 LLVM Developers' Meeting) à San José en Californie. C'est la sixième rencontre du genre et les participants sont toujours de plus en plus nombreux. Dans son introduction, Chris Lattner, le père de LLVM, a fait un rapide bilan de l'année écoulée.

LLVM (anciennement appelé Low Level Virtual Machine en français : « machine virtuelle de bas niveau ») est une infrastructure de compilateur conçue pour optimiser la compilation, l'édition de liens, l'exécution d'un programme écrit dans un langage quelconque.

En plus des nouvelles fonctionnalités (notament C++11) et des nouvelles architectures prises en charge (Hexagon et MIPS64), Chris a fait état d'une communauté des développeurs LLVM et Clang très dynamique. En ce qui concerne LLVM, 78 nouveaux committers (personnes qui ont du code qui a été incorporé) sont arrivés cette année pour porter le total à 167 committers différents. Les chiffres sont quasiment identiques pour Clang (le frontend C/C++/Objective-C de LLVM) : 72 nouveaux committers pour un total de 132. Le code source de LLVM a grossi de 131 KLoc pour un total de 1,4 MLoc tandis que le code de Clang a grossi de 260 KLoc pour un total de 1,0 MLoc.

La conséquence est l'apparition de nouveaux problèmes : certains patchs ont du mal à être revus, l'infrastructure de build et de test de performance commence à montrer ses limites, la gestion des sorties de nouvelles versions se complique. Chris a donc fait un appel à la communauté pour demander de l'aide dans l'analyse des problèmes de performance, dans l'infrastructure de test, dans la documentation, etc.

Il a également demandé aux contributeurs les plus impliqués de devenir «propriétaire de code» (au sens responsable dudit code). Concrètement, il s'agit de prendre en charge une sous-partie de LLVM dont le propriétaire s'engage à assurer la bonne maintenance et évolution, notamment en passant en revue les patchs concernant cette sous-partie. Immédiatement, de nombreux volontaires se sont fait connaître ou ont été proposés.

La suite de la dépêche propose un résumé de quelques présentations qui ont eu lieu lors de cette rencontre.

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++ (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.

Publication d'evQueue sous licence libre

Posté par  . Édité par ZeroHeure. Modéré par bubar🦥. Licence CC By‑SA.
33
18
mar.
2015
C et C++

EvQueue est un ordonnanceur de tâches et un moteur de queueing libre. Il permet la planification de tâches simples mais aussi la gestion de workflows, enchaînements de briques logicielles de base dans un but plus avancé. La description des enchaînements de tâches est basée sur XML et XPath, reprenant ainsi des briques très standardisées pour la structure des workflows.

Le moteur d'evQueue est écrit en C++ en mode événementiel, il se démarque ainsi de certains ordonnanceurs par sa légèreté et sa rapidité. L'interface de pilotage Web est quant à elle développée en PHP. Elle permet le suivi des tâches et workflows en cours, la création de workflow notamment en mode graphique, et la planification de tâches.

En plus de l'interface de pilotage Web, evQueue propose une API réseau permettant son contrôle à distance (lancement de tâches, suivi des tâches en exécution…). L'exécution de traitements lourds est en effet une problématique récurrente des systèmes Web où les clients sont en mode asynchrone. L'utilisation d'evQueue résout cette problématique, assurant un suivi simple à mettre en place en AJAX côté utilisateur et une excellente visibilité pour les administrateurs systèmes.

Une documentation sur l'installation et l'utilisation d'evQueue, ainsi que des exemples de workflows sont disponibles sur le site d'evQueue.

EvQueue est développé et maintenu par l'équipe informatique de l'UFC-Que Choisir. Il est publié sous licence libre depuis mars 2015 (GPL 3). Il est utilisé pour les besoins informatiques de l'association depuis presque trois ans ; à ce jour, plus de quatre millions de workflows ont été lancés.

IT-Edit 2.0, un éditeur de texte avec terminaux intégrés

31
15
mar.
2016
C et C++

IT-Edit (Integrated Terminals Editor) est disponible en version 2.0. Cette nouvelle version apporte de nombreuses améliorations par rapport à la 1.0.1. Il s'agit d'un éditeur de texte doté de multiples fonctionnalités. Il est écrit en C et utilise GTK+3, gtksourceview3.0, ainsi que libvte-2.90.

logo du logiciel IT-Edit

IT-Edit gère la coloration syntaxique de nombreux langages de programmation. Il intègre des terminaux bien placés, de façon à ne pas perdre de vue la ligne de commande pendant l'écriture de code.

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 ?

C : Science et éducation : EZ-Draw 1.2 est sorti

Posté par  . Édité par Davy Defaud, Nÿco et ZeroHeure. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
30
19
avr.
2014
C et C++

Pour qui veut apprendre à réaliser une interface graphique, il y a un très grand choix de langages et de bibliothèques graphiques. Dans le cas particulier du langage C (ou C++), les bibliothèques graphiques communément utilisées (GTK+, Qt, etc.) sont très complètes, mais nécessitent un important effort d’apprentissage ; pour tout dire, elles ne sont clairement pas adaptées pour le débutant ou l’autodidacte. C’est pour cette raison que je développe EZ-Draw depuis maintenant six ans, et j’ai le plaisir de vous annoncer la sortie de la nouvelle version 1.2.

EZ-Draw (Easy Draw) est une petite boîte à outil graphique pour le langage C, fonctionnant à la fois sous GNU/Linux, Mac OS X et Windows (toutes versions).

EZ-Draw est conçu pour l’apprentissage de la programmation événementielle et des interfaces graphiques. Il permet de créer de façon très simple des fenêtres, y dessiner, réagir à la souris et au clavier, faire des animations.

Au menu des nouveautés :

  • lecture et affichage des images aux formats PNG, JPEG, GIF et BMP ;
  • nouvelle documentation récrite avec Sphinx ;
  • traduction de tout le projet en anglais, et documentation bilingue ;
  • nouveaux jeux : Doodle in London, 2048 / 2584, Bubblet.

Le logiciel est sous licence LGPL ; il est utilisé en particulier dans la Licence d’informatique de l’Université d’Aix‐Marseille, dans des projets d’algorithmique ou des projets de jeux en 2D (souvent inspirés des jeux sur smartphones).

Coder efficacement, bonnes pratiques et erreurs à éviter

Posté par  . Édité par BAud, Nÿco, Thom, Benoît Sibaud et olivierweb. Modéré par Ontologia. Licence CC By‑SA.
30
14
avr.
2014
C et C++

Développer une application peut rapidement devenir un enfer si vous n'avez pas anticipé certaines difficultés et fait les bons choix au moment de sa conception. Ce livre vous aidera à vous poser les bonnes questions et à tirer le meilleur parti de la programmation objet, en particulier en C++, sans tomber dans les pièges les plus fréquents. Il clarifie certains concepts délicats et passe en revue un ensemble de bonnes pratiques, qui rendront vos projets plus évolutifs et plus faciles à maintenir.

Titre de l'image

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

Science et éducation : EZ-Draw 1.0 est sorti

Posté par  . Modéré par patrick_g. Licence CC By‑SA.
28
22
juin
2011
C et C++

EZ-Draw (Easy Draw) est un module en langage C qui facilite l’écriture de programmes graphiques, avec une gestion simplifiée des évènements. Il permet de créer des fenêtres, y dessiner, réagir à la souris et au clavier, faire des animations, etc..

EZ-Draw fonctionne à la fois sous X11 (Linux, Mac OS X, et autres Unix) et Windows (Seven, Vista, XP, etc.) ; en interne, il est basé respectivement sur la bibliothèque Xlib et sur l’API Win32, et il masque tous leurs aspects techniques.

Subsurface 3

Posté par  . Édité par Xavier Teyssier et baud123. Modéré par baud123. Licence CC By‑SA.
Étiquettes :
28
5
mar.
2013
C et C++

Subsurface est sorti en version 3.0 le 21 février 2013 et depuis, deux petites mises à jour ont suivi (3.0.1 et 3.0.2).
Subsurface est un journal de plongée libre (GPL v2) pour Linux, Mac et Windows écrit en C.

Il gère les plongées avec un ou plusieurs blocs en air, nitrox ou trimix. Il enregistre aussi les poids et la combinaison utilisée, le chef de palanquée ainsi que votre binôme et vous permet de noter la plongée et d’y joindre vos notes personnelles.

Subsurface vous permet aussi d’enregistrer vos lieux de plongées, notamment par leurs coordonnées GPS (que vous pouvez choisir sur une carte). Subsurface calcule aussi différentes statistiques pour vous, telles que votre taux de consommation d’air, la pression partielle en Oxygène, Azote ou Helium, la décompression calculée et bien d’autres.

Subsurface

C++11 : sur le fil

Posté par  . Édité par Florent Zara et Xavier Teyssier. Modéré par claudex. Licence CC By‑SA.
Étiquettes :
28
7
juin
2013
C et C++

Dans la course effrénée que se livrent les compilateurs, GCC vient de gagner une manche en étant le premier à fournir une implémentation complète du langage C++11. Les développeurs ont profité de la sortie de la version de maintenance 4.8.1 pour implanter les deux fonctionnalités manquantes :

  • les rvalue-references pour le pointeur this
  • l'utilisation de decltype sur des expressions de type incomplet

NdM : merci à nazcafan pour son journal.

C++17 branche à la compilation (`if constexpr`)

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

Chaque jour de décembre a droit à sa surprise. Après la fixation de l’ordre d’évaluation des expressions, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0292 concernant les conditions à la compilation, grâce à if constexpr.

Logo C++FRUG représenté par un gros "C++" au centre du cercle de la Francophonie

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

codeurs, traducteurs, cppreference a besoin de vous

Posté par  . Édité par baud123 et Benoît Sibaud. Modéré par Benoît Sibaud. Licence CC By‑SA.
Étiquettes :
27
14
nov.
2012
C et C++

cppreference est un wiki dont le but est de fournir une documentation exhaustive des bibliothèques standard C (89, 99, 11) et C++ (03 et 11). Le contenu est disponible sous licences libres CC-BY-SA et GFDL.

Depuis quelques mois, le site anglophone a changé de peau pour utiliser mediawiki, lui assurant une meilleure lisibilité, la possibilité d'utiliser des templates… Les contenus ont depuis régulièrement progressé en qualité, même si certaines choses restent à faire.

La dernière initiative a été de générer les contenus français, mandarin, italien, espagnol, portugais et russe depuis le contenu anglais en utilisant l'outil google translate. Évidemment, si certaines phrases sont correctement traduites, d'autres sont à peine compréhensibles et un effort important reste à fournir pour arriver à une documentation francophone de qualité, mais une base est déjà présente sur laquelle s'appuyer.

Envie de découvrir toutes les nouveautés de la bibliothèque standard C++11 (multithreading, regexp…) tout en rendant service à la communauté francophone ? Ne perdez pas cette opportunité ! Faites chauffer gcc clang++ et rendez-vous sur fr.cppreference.com

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.

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.

PCC 1.0 est sorti… depuis le 1er avril !

Posté par  . Modéré par patrick_g.
Étiquettes :
24
16
juin
2011
C et C++

Comment cette information majeure a‐t‐elle pu échapper aux journaux de LinuxFr ? À l’avenir, il faudra garder l’œil ouvert, car le futur est aussi prometteur

Pour plus d’infos, la dépêche précédente était déjà bien complète !

Avec un compilateur C simple, portable, et sous licence compatible, les *BSD pourraient se libérer de la dépendance à GCC qui pose problème (infrastructure compliquée… comme de la licence GPLv3 ?!). Comme rappelé dans les questions aux développeurs OpenBSD, les espoirs se tournent également du côté de LLVM / Clang, qui progresse vite.

Un autre petit compilateur léger, rapide et pratique, quand on ne veut pas déployer toute l’armada GCC pour jouer sur un poste : TCC !

Plus aucune raison pour ne pas contribuer à des projets en C (sous BSD) ?!

LibLogicalAccess : bibliothèque C++ pour la RFID

Posté par  . Édité par Florent Zara et Nils Ratusznik. Modéré par Nils Ratusznik. Licence CC By‑SA.
Étiquettes :
24
16
juil.
2013
C et C++

LibLogicalAccess, une nouvelle bibliothèque logicielle destinée à la lecture / écriture sur les puces RFID, est disponible depuis quelques semaines aux intéressés de l’identification par radio fréquence. Sous licence LGPL, elle se positionne comme une alternative C++ libre pour Linux et Windows à l'utilisation de puces RFID avec des lecteurs dépourvus de contrôleur NFC (n'entrant donc pas sous le giron de la libnfc), majorité des lecteurs déployés dans le monde aujourd'hui.