19 points par GN⁺ 2026-01-04 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Un langage évolutif qui hérite de la syntaxe et de la sémantique du C tout en renforçant la sécurité et l’ergonomie, afin de conserver un environnement familier pour les développeurs C existants
  • Compatibilité complète avec l’ABI C, ce qui permet une intégration immédiate dans des projets C/C++ ; une partie du code de vkQuake a déjà été convertie en C3 et compilée avec le compilateur c3c
  • Système de modules, surcharge d’opérateurs, macros à la compilation, etc., pour améliorer la structure du code et sa capacité d’expression
  • Inclut des fonctionnalités modernes comme la programmation par contrat (Gradual Contracts), la gestion des erreurs sans surcoût, ainsi que la réflexion à l’exécution et à la compilation
  • En mode debug, fournit automatiquement des vérifications de sécurité et des traces de pile détaillées, utiles pour détecter les bugs et renforcer la stabilité

Aperçu de C3

  • C3 est un langage de programmation développé à partir de la syntaxe et de la sémantique du langage C
    • Son objectif est de faire évoluer le langage tout en conservant une forme familière pour les programmeurs C existants
  • Prend en charge une surcharge d’opérateurs précise et orientée objectif
    • Sans la complexité de la surcharge en C++, il permet d’exprimer naturellement les vecteurs, matrices et calculs en virgule fixe
  • Prend en charge la programmation par contrat, ce qui permet d’exprimer des contraintes à l’exécution comme à la compilation
    • Renforce la stabilité du code et la cohérence des spécifications
  • Combine les avantages de la gestion des erreurs basée sur Result et des exceptions
    • Fournit une structure de gestion des erreurs qui s’intègre naturellement au code C
  • Prend en charge l’introspection de types aussi bien à la compilation qu’à l’exécution
  • Assembleur inline : il est possible d’écrire de l’assembleur comme du code ordinaire, sans chaînes ni contraintes complexes
  • En mode debug, le runtime insère automatiquement des vérifications de limites (bound checks) et des vérifications de valeurs (value checks)
  • La bibliothèque standard de C3 fournit par défaut des traces de pile détaillées dans les builds de debug
    • Elle permet d’identifier l’emplacement précis d’une erreur au lieu d’un simple « segmentation fault »

Ergonomics and Safety

  • Les Optionals apportent une gestion sûre des erreurs et des valeurs nulles
  • La syntaxe defer prend en charge l’automatisation du nettoyage des ressources
  • slices et foreach permettent une itération sûre
  • Les contracts basés sur des commentaires permettent d’exprimer les contraintes du code
  • Le contexte @pool prend en charge la libération automatique de la mémoire

Performance by default

  • Il est possible d’écrire directement des vecteurs SIMD pour un contrôle au niveau matériel
  • Le choix entre différents allocateurs mémoire permet un ajustement fin des performances
  • La gestion des erreurs adopte une conception sans surcoût
  • Bénéficie de temps de compilation rapides et des optimisations du backend LLVM
  • Fournit un assembleur inline facile à utiliser

Batteries included standard library

  • Fournit des structures de données standard, y compris des conteneurs dynamiques et des chaînes
  • Garantit la portabilité entre plateformes grâce à des abstractions multiplateformes
  • Autorise l’accès natif à la plateforme lorsque nécessaire

Leverage existing C or C++ libraries

  • C3 est entièrement compatible avec l’ABI C, sans besoin de types « compatibles C » ou de déclarations de fonctions séparées
  • Le code C peut être lié depuis C3, et le code C3 peut aussi être lié depuis C

Modules are simple

  • Système de modules simple et intuitif
    • Les réglages par défaut sont raisonnables et n’entravent pas le flux de développement
  • Fournit une gestion des espaces de noms via les modules
  • Une commande explicite permet de simplifier la structure d’encapsulation
  • Les interfaces permettent de définir des comportements partagés
  • Fournit des generic modules qui permettent d’implémenter de manière simple et claire la création de types génériques
  • Prend en charge la réutilisation de structures via le sous-typage de structures

Macros without a PhD

  • Les macros à la compilation peuvent être écrites sous une forme proche de fonctions ordinaires
  • Prend en charge des macros conscientes des types qui comprennent les informations de type du code
  • Offre une génération de code plus claire et plus puissante que le préprocesseur du C

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.