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 Encore un exemple de code spaghetti : Toyota

96
5
mar.
2014
Ce journal a été promu en dépêche : Encore un exemple de code spaghetti : Toyota.

Cher nourjal,

Après les journaux successifs sur l'instruction goto, je reçois un mail d'un de nos professeurs par rapport à une affaire où les freins d'une Toyota ont refusé de fonctionner à cause d'un code spaghetti : http://www.safetyresearch.net/2013/11/07/toyota-unintended-acceleration-and-the-big-bowl-of-spaghetti-code/

L'article est très long et en angliche, ça date du 13 novembre 2013, je vais tenter un résumé :

Jean Bookout et Barbara Schwarz avaient une Toyota Camry de 2005. Le système de freinage est contrôlé par l'électronique du système. Mais voilà (…)

La version 4.6 du compilateur GCC est disponible

Posté par  (site web personnel) . Modéré par baud123. Licence CC By‑SA.
87
26
mar.
2011
GNU

La sortie de la version 4.6 du compilateur GCC a été annoncée ce vendredi 25 mars sur la liste de diffusion du projet.

Écrit à l’origine par [Richard Stallman] en tant que compilateur C officiel du projet GNU, dont il est le fondateur, [GCC] est aujourd’hui le compilateur multi-langage de référence du monde du logiciel libre. Il accepte du code source écrit en Ada, C, C++, Objective-C, Objective-C++, D, Fortran, Go, Java, Pascal et VHDL, et fonctionne sur une multitude d’architectures.

Le standard C++0x a enfin été voté

Posté par  . Modéré par Lucas Bonnet. Licence CC By‑SA.
Étiquettes :
76
18
août
2011
C et C++

Le nouveau standard du langage C++ a été voté ce vendredi 12 août. Initialement prévu pour 2008 ou 2009, il a pris du retard, notamment à cause de problèmes avec certaines fonctionnalités. Malgré cette date, beaucoup l'appellent quand même C++0x et il suffit de le nommer C++0xB pour que le nom soit conservé. La publication officielle ne devrait cependant pas arriver avant quelques mois.

Heureusement pour les utilisateurs, ces fonctionnalités ont déjà commencé à être implémentées dans les différents compilateurs et bibliothèques standard. Ceci devrait permettre de ne pas attendre trop longtemps avant de pouvoir profiter de ces nouveautés, voire d'en profiter dès à présent pour certaines. Par exemple, sous GCC, il faut passer l'option -std=c++0x au compilateur pour utiliser des évolutions qui sont déjà implémentées.

Une sélection des principales nouveautés est présentée en seconde partie de dépêche.

Merci à moules< pour son aide lors de la rédaction de cette dépêche.

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 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 (…)

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 Angharad, mon système de domotique maison

Posté par  (site web personnel) . Licence CC By‑SA.
63
19
août
2014

Pour voir si c'est possible, j'ai voulu me fabriquer mon système domotique du début à la fin.
Les systèmes domotiques qui existent déjà sont souvent très chers pour pas grand-chose j'ai trouvé, de plus ils sont souvent fermés, et j'ai furieusement envie de savoir comment ca fonctionne par en dedans chez moi.

De preuve de concept en prototype, j'ai fini par mettre en place un système qui, bien qu'il ne soit pas encore parfait, est utilisable. Je me suis donc (…)

Seafile, un Dropbox-like libre à héberger sort en version 3

Posté par  . Édité par Nils Ratusznik, ZeroHeure et Benoît Sibaud. Modéré par claudex. Licence CC By‑SA.
63
25
avr.
2014
Cloud

Suite à la dépêche présentant les alternatives à Dropbox, , qui évoquait Seafile, il semble intéressant de présenter de façon plus approfondie ce logiciel.
Seafile

Seafile est une solution de synchronisation et de partage de fichiers bâtie sur trois composants :

  • un serveur, Seafile (sous licence GPLv3) ;
  • une interface web, SeaHub (sous licence Apache), permettant de consulter les fichiers gérés par Seafile directement via le web ;
  • un client de synchronisation.

Le projet utilise un modèle inspiré de Git pour la gestion de fichiers, avec certaines adaptations, permettant par exemple de gérer de façon plus performante les gros fichiers.

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 Tomate, un logiciel pour planifier vos cultures

Posté par  . Licence CC By‑SA.
59
16
mar.
2014

Tomate est un logiciel qui permet de planifier et de suivre les cultures dans un potager.

Une fois décrites les différentes planches de votre potager, et les plantes que vous souhaitez cultiver, il permet de planifier et de suivre les cultures. Il offre deux vues du potager: la vue temporelle, où toutes les cultures d'une année sont visibles de façon chronologique, et la vue spatiale, où l'état du jardin à une date donnée est représenté.

Tomate est développé en C++ (…)

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 (…)

Journal Et Dieu inventa le soutien gorge !

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
56
17
août
2012

Le C est connu pour ses pointeurs. Les pointeurs sont une merveille pour certains, une horreur pour d'autre. Je sais qu'il s'agit d'un nième débat religieux par ici, mais parlons de C et de pointeurs !

Un vrai moment de détente pour le week-end :D

Le noyau Linux utilise une forme particulière de listes chaînées qui nous permet d'apprécier ce genre de code include/linux/kernel.h:683:

#define container_of(ptr, type, member) ({                      \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type
(…)

LLVM 3.1 et Conférence EURO-LLVM 2012

Posté par  . Édité par rewind, baud123, Sylvestre Ledru, Nÿco, Florent Zara, patrick_g et Benoît Sibaud. Modéré par Florent Zara. Licence CC By‑SA.
55
23
mai
2012
Technologie

LLVM est une suite de compilation, c'est-à-dire un ensemble de bibliothèques et d'outils pour construire des compilateurs, des assembleurs, des éditeurs de liens, etc. Et quand on parle de LLVM, on parle forcément de Clang, le compilateur C/C++/ObjectiveC/ObjectiveC++ attitré du projet LLVM. Clang, par rapport à GCC, compile plus vite mais génère du code moins rapide, le vrai intérêt de Clang réside dans la clarté des messages d'erreurs.

La seconde partie de cette dépêche détaille les nouveautés de la version 3.1 de LLVM et Clang, sortie le 22 mai 2012 et propose un compte rendu de la toute première conférence Euro-LLVM (avril 2012).

LLVM et Clang 3.1 sont téléchargeables ici et respectivement (les utilisateurs de Debian Sid n'ont évidemment qu'à faire un apt-get install llvm-3.1 clang)

[NDA: un grand Merci à rewind qui a rédigé, entre autres, toute la couverture de la conf Euro-LLVM. Merci également à patrick_g, reno, Nÿco, baud123 et Sylvestre Ledru pour leurs corrections et leurs précisions.]

Sortie de Boost 1.46

Posté par  . Modéré par patrick_g.
Étiquettes :
51
23
fév.
2011
Linux

Une nouvelle version de Boost vient de sortir après trois mois de gestation.

Boost est une compilation de pas moins de 104 bibliothèques logicielles multiplateformes et sous licence libre (licence semblable à la Licence_MIT) écrites en C++. Plusieurs bibliothèques ajoutées au standard TR1 ont d'ailleurs pour origine Boost, comme les bibliothèques "array" et "regex".

Ces bibliothèques exploitent généralement de manière intensive la programmation par template, ce qui en font des bibliothèques génériques pour résoudre une large palette de problèmes.