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.

Journal C, un âge remarquable

Posté par  . Licence CC By‑SA.
74
28
fév.
2022

Il était une fois, dans l'antre des laboratoires Bell, alors appelés Bell Telephone Laboratories, la création d'un langage. Nous sommes en 1972 et deux petits gars, Dennis Ritchie, 31 ans et Ken Thompson, 29 ans, décident que les langages de l'époque ne conviennent pas pour le système d'exploitation qu'ils participent à construire, un certain OS nommé UNIX. Ainsi naquit le langage C, il y a 50 ans.

Sa documentation, symbolisée par le livre The (…)

Journal Simuler un clic avec libevdev et uinput

Posté par  . Licence CC By‑SA.
70
2
sept.
2021

Préambule

Samedi 7 août, 14h UTC+2 : une pluie de tous les enfers se déchaîne. Il pleut tout l’après-midi, mais c’est la tempête surtout pendant une demi heure. Le sol est inondé. Les gens courent, l’imper sur lequel je comptais jette l’éponge, mon téléphone pas étanche dans la poche de l’imper pas étanche est mouillé et c’est le drame : il ne s’allume plus.

Dimanche 8 août. Le téléphone refonctionne (son module wifi et Bluetooth démarre bien quand bon lui (…)

Journal int *(*(*foo[])(int))(float*);

Posté par  . Licence CC By‑SA.
70
13
sept.
2014

Salut,

J'ai profité de mes vacances pour rédiger un petit article sur la lecture des déclarations complexes (dans le sens "obscures") en C. Ces "monstres" comme celui du titre, ne sont pas forcément fréquents, mais il peut-être utile de savoir les lire et de manière symétrique de pouvoir les construire.

Un petit rappel des déclarations est proposé autour de quelques éléments clés :

  • déclaration vs définition,
  • décomposition d'une déclaration : storage class, type qualifier, type specifier, declarator
  • les opérateurs (…)

C11 n'est pas encore mort

Posté par  . Édité par Bruno Michel, Benoît Sibaud, baud123, Nÿco et claudex. Modéré par Nÿco.
59
26
déc.
2011
C et C++

La dernière norme du langage C a été publiée le 8 décembre 2011, la pré-version finale étant accepté le 10 octobre, peu avant le décès du regretté Dennis Ritchie à l'origine du langage.

C11 intègre principalement la gestion du multithreading et rend optionnelles certaines fonctionnalités afin de faciliter la conformité des compilateurs vis-à-vis de la norme. La précédente norme C99 a eu beaucoup de mal à s'imposer auprès de certains éditeurs, certains refusant même de l'implémenter (notamment un vendeur d'environnement Basic, situé à Redmond).

Journal Projet embarqué: interface pour commande filaire Renault vers autoradio JVC

Posté par  . Licence CC By‑SA.
57
30
nov.
2017

Ce journal décrit succinctement la réalisation d'un projet embarqué, avec code et circuit à la fin.
(Quelques termes anglophones peuvent être rencontrés dans le reste de ce texte, ainsi que des conseils shopping)

Contexte / besoin
Quand je ne suis pas en vélo je roule avec cet excellent et adorable véhicule.

L'autoradio d'origine vient tout droit des années 90, je l'ai donc changé pour un JVC qui peut parler en bluetooth avec mon téléphone, et plus généralement me faire (…)

De la nécessité d’adopter les opérations atomiques C11 ?

50
1
mar.
2018
Linux

Jonathan Corbet, fondateur de LWN et contributeur au noyau Linux, a publié en juin 2016 un article important sur l’apport de la dernière version du langage C dans les recherches d’optimisation du noyau. En voici une traduction.

N. D. M. : Les articles publiés sur LWN le sont généralement sous licence Creative Commons Attribution-ShareAlike 4.0 (CC BY-SA 4.0)

Coccigrep, un grep sémantique pour le langage C basé sur Coccinelle

Posté par  (site web personnel) . Modéré par patrick_g. Licence CC By‑SA.
45
2
sept.
2011
C et C++

Lorsque l'on travaille sur un projet C comportant un certain nombre de fichiers et de lignes de code, il arrive fréquemment que l'on se pose des questions comme "Mais où est modifié le champ data de ma structure Packet ?". grep ne suffit pas pour répondre à ce genre de questions car ne comprenant pas C, il ne sait pas, par exemple, que la variable monbopkt est une structure Packet.

coccigrep, basé sur coccinelle qui est un outil très puissant de recherche et de modification automatique de code, est un logiciel libre chargé de répondre à ce genre de questions. Il vient d'être publié en version 1.0rc1, sous licence GPL v3. Il est écrit en Python et s'interface avec les éditeurs Vim et Emacs, ce qui permet de faire les recherches depuis l'éditeur.

Journal PyAlsaCap : Python, pointeurs, et cartes sons…

Posté par  (site web personnel) . Licence CC By‑SA.
44
14
mar.
2013

Sommaire

Pour fêter le retour de DLFP après cette trop longue vacance, voici un petit journal pythonesque, mais pas seulement !

Dans mon dernier journal, nous avions joué avec l'introspection Python et l'export de fonction sur D-Bus. Pour ce faire, nous avions généré du Python avec Python !

Cette fois-ci, (…)

Journal Des nouvelles d'Ulfius, framework web en C

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
43
9
oct.
2018

J'avais parlé ici d'Ulfius, un framework web écrit en C pour se faciliter la vie quand on veut développer des API web.

J'en profite donc de sortir la dernière version 2.4 pour en parler à nouveau et vous raconter ce que ca peut faire.

Adresse du projet: https://github.com/babelouest/ulfius

Le besoin est d'avoir un framework web pour écrire des applications web en C, en combinant la rapidité d'exécution ainsi que la consommation de mémoire plus réduite, avec un niveau d'abstraction permettant (…)

Journal scrcpy, une appli pour afficher et contrôler des devices Android

Posté par  (site web personnel) . Licence CC By‑SA.
38
9
mar.
2018

Bonjour nal,

Je viens te présenter une application que j'ai développée, qui permet d'afficher et de contrôler des devices Android connectés en USB.

Elle se concentre sur :

  • la légèreté (native, affiche uniquement l'écran)
  • les performances (30~60fps)
  • la qualité (1920×1080 ou plus)
  • la faible latence (70~100ms)
  • un démarrage rapide (~1 seconde pour afficher la première image)
  • la non-intrusivité (rien ne reste installé sur le device)

Je l'ai appelée scrcpy.

Il fallait un nom aussi imprononçable que mon précédent projet, gnirehtet (…)

Journal Ma domotique avec le Système Angharad, 3e génération

Posté par  (site web personnel) . Licence CC By‑SA.
36
28
sept.
2016

Préambule

Il y a quelques deux ans de ca, j'ai parlé de mon système domotique maison à base d'API REST et de client Web avec plein de JQuery dedans.
Depuis, j'ai continué ce projet avec entrain, et il en est maintenant dans sa 3e génération: Angharad sur Github

Pourquoi 3e génération et pas version 3.0 ? Parce que au début c'était pas mal un serveur autonome, mais avec le temps c'est devenu un d'ensemble de logiciels qui forment un écosystème et (…)

Journal Debug de code Python embarqué dans du code C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
35
30
sept.
2020

Demat' iNal,

On m'a posé tantôt une question assez intrigante au premier abord :

Dans une application native qui embarque un interpréteur Python, et que l'on est en train de déboguer avec gdb, comment faire pour débogguer le code Python associé ?

Pour donner un peu de contexte, on peut lire la doc Python et en extraire ce petit code C:

 #define PY_SSIZE_T_CLEAN
#include <Python.h>

int
main(int argc, char *argv[])
{
    wchar_t *program
(…)

Journal Ulfius: framework pour faire des API Web en C

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
33
1
juin
2016

TL;DR

Ulfius est un framework pour développer des webservices et des API REST en C facilement et rapidement.

Intro

Ca fait quelques mois que je travaille sur ce projet, et il a atteint une certaine maturité pour avoir envie d'en parler plus largement en espérant lui donner un nouvel élan.

Il y a quelques temps, je parlais ici de mon projet de serveur domotique à base d'API REST en C. Depuis, je continue à le faire évoluer tranquillement, et (…)

Journal Koffi, un paquet simple, complet et rapide de FFI C pour Node.js

Posté par  . Licence CC By‑SA.
Étiquettes :
30
22
juin
2022

Hello :)

Aperçu du projet

Koffi, c'est un petit projet que j'ai démarré un petit peu par hasard il y a 4 mois, après avoir eu besoin d'appeler du C depuis un projet Node.js. J'ai commencé par utiliser node-ffi et node-ffi-napi, mais les performances étaient désastreuses. J'ai essayé d'autres paquets (comme fastcall, basé sur dyncall), mais il leur manque trop de choses : notamment, le passage de structures par valeur (en paramètre ou en valeur de retour) (…)