-
Améliorations évidentes de C
- Norme C23 : le langage C évolue régulièrement et en est désormais à C23. Cependant, certains problèmes restent encore non résolus.
- Efforts de la communauté Dlang : l’intégration d’un compilateur C (ImportC) dans le compilateur du langage D offre l’occasion de résoudre ces problèmes.
-
Évaluation des expressions constantes
- Problème : C peut calculer des expressions simples à la compilation, mais ne peut pas exécuter de fonctions.
- Solution d’ImportC : ImportC permet l’exécution de fonctions à la compilation, ce qui dépasse cette limitation.
-
Tests unitaires à la compilation
- Problème en C : dans du code C, les tests unitaires nécessitent une cible de build distincte, ce qui est contraignant.
- Avantage d’ImportC : ImportC facilite l’exécution de tests unitaires grâce à l’évaluation de fonctions à la compilation.
-
Références anticipées dans les déclarations
- Limitation de C : C est sensible à l’ordre des déclarations et n’autorise pas les références anticipées.
- Avantage d’ImportC : ImportC n’est pas contraint par l’ordre des déclarations et autorise les déclarations globales dans n’importe quel ordre.
-
Importation de déclarations
- Problème de l’approche existante : il est fastidieux de devoir écrire un fichier
.h pour chaque module externe.
- Solution d’ImportC : ImportC peut importer des déclarations sans fichier
.h, ce qui est plus efficace.
-
Références
- Documentation d’ImportC : fournit des informations détaillées sur ImportC.
- Documentation du langage D : fournit des informations complémentaires sur le langage D.
1 commentaires
Avis Hacker News
Les fichiers d’en-tête du langage C sont utiles car ils permettent de distinguer clairement ce qui est public de ce qui ne l’est pas, ainsi que l’interface de l’implémentation. Les fichiers
.hpermettent de comprendre facilement comment utiliser une bibliothèque.h, ce qui les rend différents des fichiers.c.c, mais cela rend l’interface moins agréable à lireCertains estiment qu’il devrait être possible d’exécuter des fonctions à la compilation en C, mais les fonctions dont le temps d’exécution est long peuvent poser problème
busybeaverest citée en exempleOn s’interroge sur des solutions à des problèmes comme l’évaluation des expressions constantes, les tests unitaires à la compilation, les références anticipées de déclarations et l’import de déclarations
Il est possible d’écrire des tests unitaires pour du code C avec un bon système de build et un peu de boilerplate
npyest cité en exempleQuand l’évaluation des expressions constantes devient complexe, la vitesse du compilateur peut chuter, et une VM peut devenir nécessaire
Les tests unitaires à la compilation retirent du contrôle aux développeurs et imposent des étapes inutiles pour terminer le travail
Discussion sur le fait de savoir s’il est préférable de définir les fonctions de manière « descendante »
Fonctionnalités qu’on aimerait voir ajoutées au langage C
deferde Go et ZigLa simplicité de l’implémentation de C est un avantage, et élargir fortement son périmètre n’est pas une bonne idée
Pourquoi il vaut mieux définir les fonctions de haut en bas