Génial c
Une liste organisée de C Good Stuff. Cette liste ne contient que du code open source (tel que défini par la définition open source liée) et les vendeurs qui ne sont pas mauvais pour les ressources physiques.
Ceci est publié sous une licence créative Commons-Attribution-Sharealike, version 4 (code SPDX CC-BY-SA-4.0 ). Vous pouvez trouver son texte dans le fichier de licence.
Une note importante: ce projet n'indexe rien C ++ - lié; Seuls les trucs C purs sont considérés.
Remarque pour les contributeurs: Si vous souhaitez faire une demande de traction, veuillez d'abord lire contribution.md.
Contenu
- IA
- Référence
- Systèmes de construction
- Compilateurs
- Compression
- Concurrence et parallélisme
- Crypto
- Base de données
- Structures de données
- Débogage
- Génération de documents
- Éditeurs
- Moteurs de script intégrés
- Frameworks
- Programmation de jeux
- Graphique
- Interface utilisateur graphique
- Hachage
- Apprentissage, référence et tutoriels
- Ressources de référence en ligne
- Ressources débutantes en ligne
- Ressources intermédiaires en ligne
- Ressources avancées en ligne
- Livres de référence
- Livres pour débutants
- Livres intermédiaires
- Livres avancés
- Lexing et l'analyse
- Gestion de la mémoire
- Multimédia
- Réseautage et Internet
- Numérique
- Profilage
- Expirat
- Sérialisation
- Collections de code source
- Bibliothèques standard
- Manipulation de cordes
- Traitement de fichiers structurés
- CSV
- Json
- Ini
- Autres
- Xml
- Yaml
- Essai
- Extensions de l'éditeur de texte
- Outils
- Services publics
- Frameworks Web
- Environnements Windows
IA
Vision par ordinateur, filets neuronaux, apprentissage automatique et autres choses similaires. Fondamentalement, si votre université l'appelle, elle vit ici.
- Bibliothèque de vision par ordinateur basée sur CCV - CCV / CACHED / CORE; Vision informatique moderne.
BSD-3-Clause - Cranium - Bibliothèque ANN portable et en tête uniquement en C99.
MIT - Fann - Bibliothèque de réseau neuronal rapide rapide; une implémentation de réseaux de neurones.
GPL-2.0-only - Genann - Simple Ann en C89, sans dépendances supplémentaires.
Zlib - Kann - bibliothèque Ann à deux fichiers.
MIT - Libdeep - Bibliothèque d'apprentissage en profondeur.
BSD-3-Clause - M2CGEN - Un outil CLI pour transporter des modèles ML classiques formés dans un code C natif avec zéro dépendances.
MIT - SOD - Une bibliothèque de vision informatique et d'apprentissage automatique intégrée.
GPL-3.0-only
Référence
Comparaison des performances de divers sous-systèmes à travers différentes architectures de puce / système.
- B63 - outil de micro-benchmarking de poids léger pour C.
Apache-2.0
Systèmes de construction
Outils qui automatisent le bâtiment et les tests de projets dans C.
- Autotools - également connu sous le nom de système de construction GNU (Automake, AutoConf, LiBtool ...) est l'un des systèmes de construction les plus utilisés (configure && make). GPL-1.0-ou-LAPER
- Autotools Project Skeleton - Un simple squelette Autotools (modèle) pour bootstrap de nouveaux projets rapidement.
BSD-2-Clause - CMake - Famille d'outils multiplateformes conçue pour créer, package et tester les logiciels.
BSD-3-Clause - GNU Make - Tool qui contrôle la génération d'exécutables et autres fichiers non source d'un programme.
GPL-3.0-or-later - Meson - Système de construction extrêmement rapide et convivial. Basé sur Ninja.
Apache-2.0 - PREMAKE - Utilitaire de ligne de commande qui lit une définition scénarisée d'un projet logiciel et l'utilise pour générer des fichiers de projet pour Visual Studio et GNU Make. D'autres cibles sont également en cours de travail.
BSD-3-Clause - SCONS - outil de construction du logiciel utilisant Python.
MIT - XMake - Utilitaire de construction multiplateforme.
Apache-2.0 - ZProject - Générateur de projets et outil de support système de construction.
MPL-2.0
Compilateurs
Compilateurs, ainsi que des outils liés au compilateur et à la compilation.
- CCACH - CACHE DE COMPILATEUR conçu pour accélérer la recompilation.
GPL-3.0-or-later - Clang - Compiler pour LLVM. Prend en charge C11.
NCSA - CPROC - Un compilateur C11 utilisant QBE comme backend.
ISC - DISTCC - Programme qui permet de répartir les builds entre plusieurs machines.
GPL-2.0-or-later - Firm - Library qui fournit une représentation intermédiaire basée sur des graphiques, des optimisations et une génération de code d'assembly adaptés à une utilisation dans les compilateurs. Livré avec un exemple C frontal sous la même licence.
LGPL-2.1-only - GCC - fournit un compilateur C dans le cadre de son ensemble de compilateur. Prend en charge C11.
GPL-3.0-or-later - PCC - Vénérable compilateur. Prend en charge C99. Divers licences, toutes open source.
Compression
- BLOSC - Bibliothèque de méta-compresseurs extrêmement rapide et multi-thread. Divers licences, toutes open source.
- Brotli - bibliothèque d'algorithmes de compression sans perte à usage général. A des vitesses comparables à la dégonflage, mais des rapports de compression beaucoup plus élevés.
MIT . - CLZIP - C version du compresseur de données de haute qualité LZIP (implémentation LZMA).
GPL-2.0-or-later - Croaring - C Implémentation de bitmaps rugissants.
Apache-2.0 - FiniStateEntropy - Deux codecs de compression hautement efficaces optimisés pour les processeurs modernes.
BSD-2-Clause - Densité - Bibliothèque de compression super rapide.
BSD-3-Clause - HeatShrink - Bibliothèque de compression / décompression des données pour les systèmes intégrés et en temps réel.
ISC - FAST_ZLIB - ZLIB amélioré, qui fonctionne 2 à 10 fois plus rapidement.
BSD-3-Clause - Fastlz - Library de compression sans perte de Lightning (type LZ77). Emblérable sur une petite cible comme les familles ARM Cortex-M. Code source directement emblétable sur votre projet (une paire de fichiers H / C), pas d'allocation de mémoire dynamique.
MIT - Huffandpuff - Encodeur et décodeur Huffman minimal. Domaine public.
- Libzip - C Library pour la lecture, la création et la modification des archives ZIP.
BSD-3-Clause - LibBZIP2 - bibliothèque de compression de données de haute qualité sans brevet.
BSD-4-Clause - Lizard - anciennement LZ5; un compresseur efficace avec décompression rapide. Atteint des rapports de compression comparables à ZIP et ZLIB à des vitesses de décompression de 1000 Mo / s et plus rapidement.
BSD-2-Clause - LZ4 - Bibliothèque pour un algorithme de compression extrêmement rapide.
BSD-2-Clause - LZO - Bibliothèque de compression de données rapide.
GPL-2.0-or-later - Pixz - Compresseur XZ parallèle, indexé.
BSD-2-Clause - Shoco - Compresseur pour petites chaînes de texte.
MIT - SimdComp - Bibliothèque simple pour la compression des listes d'entiers à l'aide de l'emballage binaire. Utilise des instructions SIMD sur x86.
BSD-3-Clause - SMAZ - Bibliothèque de compression de chaîne efficace.
BSD-3-Clause - Squash - Bibliothèque d'abstraction de compression, avec certains services publics.
MIT - TurbopFor - Compression entier la plus rapide.
GPL-2.0-or-later - Turborle - codage de longueur de course le plus efficace.
GPL-2.0-or-later - Zip - Bibliothèque de traitement des archives zip vraiment très petite.
Unlicense - ZLIB - Massivement Spiffy mais délicatement discrète Bibliothèque de compression.
BSD-3-Clause - Libarchive - Libarchive est une bibliothèque C portable et efficace qui peut lire et écrire des archives en streaming dans une variété de formats.
BSD-3-Clause - ZLIB-NG - ZLIB Remplacement par des optimisations pour les systèmes de «nouvelle génération».
BSD-3-Clause - Zstandard - Algorithme de compression rapide et sans perte, ciblant les scénarios de compression en temps réel aux rapports de niveau ZLIB ou de meilleure compression.
BSD-3-Clause
Concurrence et parallélisme
- CCHAN - Petite bibliothèque pour les constructions de canaux pour la communication inter-thread. Domaine public.
- CheckEdThreads - Une bibliothèque simple pour le parallélisme, avec une vérification intégrée des conditions de course.
BSD-2-Clause - CK - primitives de concurrence, mécanismes de récupération de la mémoire sûre et structures de données non bloquantes.
BSD-2-Clause - FCFS RWLOCK - Verrouillage des lecteurs / écrivains du premier arrivé, premier arrivé, pour les threads POSIX.
CC0-1.0 - Libaco - Une bibliothèque coroutine asymétrique en C rapide et légère et légère.
Apache-2.0 - LibConcurrent - bibliothèque de programmation simultanée, en utilisant les coroutines, pour C11.
BSD-3-Clause - LIBCSP - Bibliothèque de concurrence C à haute performance influencée par le modèle CSP.
MIT - Libdill - Bibliothèque qui facilite la programmation simultanée structurée.
MIT - LIBHL - Bibliothèque implémentant une API de filetage pour gérer une gamme de structures de données. Fournit également quelques fonctions et structures de support pour la programmation simultanée et sans verrouillage.
LGPL-3.0-only - Liburcu - Bibliothèque de synchronisation des données, qui évolue linéairement avec le nombre de cœurs.
LGPL-2.1-or-later - Moulin - par la concurrence de style go.
MIT - Oclkit - emballage OpenCl à deux fichiers.
GPL-3.0-or-later - OCL-MLA - OpenCL Abstractions de niveau intermédiaire.
BSD-3-Clause - OpenMP - Ensemble de pragmas conçu pour permettre une parallélisation facile du code. Standard (licence non applicable).
- Open MPI - Implémentation de l'interface de passage des messages.
BSD-3-Clause - Bibliothèque optimisée pour les mathématiques, le traitement parallèle et le mouvement des données.
Apache-2.0 - PTH - Implémentation portable pour la planification basée sur la priorité non préemptive pour plusieurs threads d'exécution.
GPL-3.0-or-later - Pthreads - Posix Thread Library. Norme (aucune licence applicable).
- TinYNTHREAD - Portable, petite implémentation de l'API C11 Threads.
Zlib
Crypto
Principalement des implémentations de bibliothèque d'algorithmes ou de protocoles cryptographiques bien connus.
- GNU SASL - Implémentation de la couche d'authentification et de sécurité simple et quelques mécanismes SASL communs.
GPL-3.0-or-later - GNUTLS - Bibliothèque de communication sécurisée, implémentation de SSL, TLS et DTLS.
LGPL-2.1-or-later - Libgcrypt - bibliothèque de cryptographie à usage général, avec une gamme de chiffres disponibles.
LGPL-2.1-or-later - OpenSSL - Implémentation des protocoles SSL et TLS. Comprend également une bibliothèque de cryptographie. Dual sous licence sous la licence OpenSSL et la licence SSLeay.
- Liboqs - Bibliothèque pour les algorithmes cryptographiques résistants aux quantiques.
MIT - Libsodium - bibliothèque de crypto moderne et facile à utiliser.
MIT - Libtomcrypt - boîte à outils cryptographique assez complète, modulaire et portable. Domaine public.
- MBED TLS - Une autre implémentation de crypto.
Apache-2.0 - Miracl - Multiprecision Entier et Rational Arithmétique Cryptographic Bibliothèque; Un SDK pour la cryptographie de la courbe elliptique.
AGPL-3.0-or-later - Retter - Collection des fonctions de hachage, des chiffres, des outils, des bibliothèques et des matériaux liés à la cryptographie et à la sécurité. Domaine public.
- Implémentation S2N - C99 des protocoles TLS / SSL, conçus pour être simples, rapides et avec la sécurité en priorité.
Apache-2.0 - SPHLIB - Ensemble d'implémentations de diverses fonctions de hachage, dont plusieurs cryptographiques.
MIT - Trezor-Crypto - Algorithmes de cryptographie fortement optimisés pour les appareils intégrés.
MIT - BFISH - Un seul comprend la bibliothèque Crypto ECB ANSI Blowfish ECB. Domaine public.
Base de données
Bases de données et magasins de données avec C API.
- Berkeleydb - Bibliothèque pour une base de données intégrée haute performance pour les données de valeur clé.
AGPL-3.0-only - DuckDB - base de données analytique rapide en cours, avec API C.
MIT - EJDB2 - Moteur de base de données JSON EmbedDaddable.
MIT - GROONGA - Store à colonnes avec recherche en texte intégral.
LGPL-2.1-only - Hiredis - bibliothèque client minimaliste pour redis.
BSD-3-Clause - Libmongoc - bibliothèque client haute performance pour MongoDB.
Apache-2.0 - LMDB - Ultra-fast et ultra-compact Value Embedded Data Store.
OLDAP-2.8 - MySQL - La base de données open source la plus populaire au monde.
GPL-2.0-only - PostgreSQL - Système de base de données relationnel puissant d'objet.
PostgreSQL - Redis - Advanced Key-Value Store.
BSD-3-Clause - Sophia - base de données de valeur clé moderne et intégrée.
BSD-2-Clause - SPARKEY - Bibliothèque de stockage de touche / valeur constante simple. Conçu pour des charges lourdes en lecture avec des inserts en vrac peu fréquents.
Apache-2.0 - SQLITE - autonome, sans serveur, moteur de base de données SQL transactionnel, transactionnel. Domaine public.
- UNQLITE - MOTEUR NOSQL transactionnel autonome, sans serveur, zéro configuration, transactionnel.
BSD-2-Clause - WhitedB - Bibliothèque de base de données légère, fonctionnant entièrement dans la mémoire principale.
GPL-3.0-or-later - FlashDB - une base de données ultra-légère qui prend en charge les données de valeur clé et de série chronologique.
Apache-2.0 - TDENGINE - Base de données de séries chronologiques natives à haute performance.
AGPL-3.0-only
Structures de données
- C-macro-collections - Générez des structures de données simples et génériques à l'aide de macros.
MIT - CLIST - Implémentation de tableau dynamique simple et légère.
BSD-2-Clause - Collections-C - Bibliothèque des structures de données génériques.
LGPL-3.0-or-later - DS - Structures de données et algorithmes communs.
MIT - IGRAPH - Une bibliothèque de traitement de graphiques.
GPL-2.0-or-later - Kdtree - Bibliothèque simple pour travailler avec KD-Trees.
BSD-3-Clause - Libavl - Bibliothèque contenant une gamme d'arbres binaires auto-équilibrés.
GPL-3.0-or-later - Libcdada - Une petite bibliothèque portable et macro-sans structures de données de base (liste, définition, carte, file d'attente ...) en C (backend C ++).
BSD-2-Clause - LiblFDS - bibliothèque de structures de données sans verrouillage portable. Domaine public (plus exactement, quelle que soit la licence que vous voulez).
- Libsrt - Structures de données en temps réel et dures.
BSD-3-Clause . - list.h - implémentations pour les fonctions de liste liées et doublement liées.
GPL-3.0-only - M * lib - bibliothèque pour les conteneurs génériques, mais de type C. Implémenté en en-tête uniquement.
BSD-2-Clause - Offbrand - Collecte de structures de données génériques à comptation de référence.
MIT - PackEdArray - Récès d'accès aléatoire d'intégères non signés serrés de toute largeur souhaitée. A une implémentation optimisée SIMD.
WTFPL - RB3PTR - Arbre rouge-noir. Expose presque toutes les primitives d'implémentation, il peut donc être utilisé pour des scénarios comme l'augmentation, plusieurs fonctions de commande compatibles, et plus encore.
MIT - UTHASH - Implémentation de table de hachage à un seul fichier.
BSD-1-Clause - Vector.h - Bibliothèque d'en-tête pour les listes dactylographiées.
MIT
Débogage
Parce que nous devons tous le faire parfois. Divers outils pour faciliter ou mieux le débogage, ainsi que des bibliothèques ou du code qui permettent un meilleur travail de débogage.
- C-Reduce - Outil qui prend un grand fichier C avec une propriété d'intérêt et produit automatiquement un fichier C beaucoup plus petit qui a la même propriété. Destiné à aider à créer un minimum de cas démontrant des bogues dans un code complexe.
BSD-3-Clause - Cbmc - c Un outil de vérification des limites du tableau, de la sécurité du pointeur et des assertions spécifiées par l'utilisateur.
BSD-4-Clause - CFLOW - Analyse une collection de fichiers source et imprime un flux de contrôle de graphique graphique dans le programme.
GPL-3.0-or-later - Complexité - outil pour mesurer la complexité du code source.
GPL-3.0-or-later - CSCOUT - Analyseur de code source et navigateur de refactorisation pour les programmes C.
GPL-3.0-only - DDD - Front-end graphique pour une gamme de débuggeurs de ligne de commande.
GPL-3.0-or-later - Debug - Bibliothèque à tête pour un «débogage de printf» plus facile.
MIT - ESBMC - vérificateur de modèle limité à base de SMT efficace; Un outil de vérification des programmes uniques et multithreads, affirmations des utilisateurs, débordement et sécurité du pointeur / mémoire.
Apache-2.0 - GDB - débogueur du projet GNU.
GPL-3.0-or-later - LLDB - LLVM Debugger.
NCSA - RR - débogueur qui enregistre les exécutions non déterministes pour permettre un débogage déterministe.
BSD-2-Clause - Valgrind - Plage d'outils d'analyse dynamique, y compris un vérificateur de fuite.
GPL-2.0-only
Génération de documents
- CXREF - génère de la documentation dans le latex, HTML, RTF ou SGML.
GPL-2.0-only - DOCONCE - Langue de balisage modestement étiquetée qui peut être utilisée pour générer une gamme de formats.
BSD-3-Clause - DOXYGEN - outil standard de facto pour générer des documents à partir de sources annotées. Peut générer une large gamme de formats.
GPL-2.0-only
Éditeurs
Fancier, éditeurs de type IDE. Si vous voulez l'éditeur de texte d'un programmeur, regardez ailleurs. En outre, tout ce que vous utilisez soutient le plus probablement C de toute façon.
- Anjuta Devstudio - Gnome IDE.
GPL-2.0-only - Code :: Blocs - IDE extensible et configurable prenant en charge C.
GPL-3.0-only - Codelite - IDE multiplateforme.
GPL-2.0-only - Geany - petit et rapide.
GPL-2.0-or-later - Kdevelop - KDE IDE.
GPL-2.0-only - Zinjai - IDE simple, léger et riche en fonctionnalités.
GPL-3.0-only
Moteurs de script intégrés
Lorsque C n'est pas la bonne solution, ou lorsque vous avez besoin d'un moteur de configration plus dynamique:
- Duktape - moteur JavaScript Embedddable avec un accent sur la portabilité et l'empreinte compacte
MIT . - METACALL - Runtime de polyglotte multiplateforme qui prend en charge Nodejs, JavaScript, TypeScript, Python, Ruby, C #, Wasm, Java, Cobol et plus encore.
Apache-2.0
Frameworks
Les grandes bibliothèques qui fournissent des structures de données et d'autres choses que vous attendez d'une bibliothèque standard «moderne».
- APR - Runtime portable Apache; Une autre bibliothèque de fonctions d'utilité multiplateforme.
Apache-2.0 - C Algorithmes - Collecte d'algorithmes communs et de structures de données.
ISC - CPL - La bibliothèque de pipelines commune; Un ensemble de bibliothèques conçues pour être une boîte à outils logicielle complète, efficace et robuste.
GPL-2.0-only - EFL - Grande collecte de structures et fonctions de données utiles. Divers licences, toutes open source.
- Glib - Bibliothèque des fonctions et structures utilitaires, conçues pour être portables, efficaces et puissantes.
LGPL-2.1-only - KLIB - Implémentations petites et légères des algorithmes et structures de données communs.
MIT - Libcork - fonctions et structures utilitaires, conçues pour les systèmes liés aux ressources. Peut être intégré.
BSD-3-Clause - Libnih - Bibliothèque légère de fonctions et de structures.
GPL-2.0-only - Libu - petite bibliothèque d'utilitaires de base, y compris l'allocation de mémoire, la manipulation et la journalisation des chaînes.
BSD-3-Clause - PBL - Grande bibliothèque de services publics, avec des structures de données, entre autres.
LGPL-2.1-or-later - PLIBSYS - Système multiplateforme C Library. Zéro dépendances tierces, utilise uniquement des appels système natifs.
MIT - QLIBC - Bibliothèque simple et puissante, conçue en remplacement de GLIB tout en se concentrant sur la petite et légère.
BSD-2-Clause - SC - Bibliothèques et structures de données communes pour C.
MIT - TBOX - Bibliothèque multi-plateforme avec un grand nombre de capacités.
Apache-2.0 - PSPSDK - Un SDK open source pour le développement de Homebrew PSP. Divers licences.
Programmation de jeux
Moteurs, bibliothèques et autres choses utiles spécifiquement pour faire des jeux.
- Allegro - multiplateforme, développement de jeux vidéo et bibliothèque multimédia.
Zlib - Assetkit? Importateur d'actifs 3D / Exportateur / bibliothèque Util basé sur Collada / Gltf Specs
MIT - ASTERA - C99 Cross Platform 2d Game Library
MIT - CGLM -? Math OpenGL / Graphics optimisé (GLM) pour C.
MIT - Chipmunk2d - Bibliothèque de physique de jeu 2D rapide et légère.
MIT - CMT -? C LESSURATIONS / ERRAGES POUR LA FRAMPAGE GRAPHIQUE MÉTAL D'Apple.
MIT - Corange - moteur de jeu dans
BSD-2-Clause - CSFML - BONSEMENT POUR SFML.
Zlib - Darkplaces - version modifiée du moteur Quake2.
GPL-2.0-only - EPOXY - Bibliothèque pour gérer la gestion des pointeurs de fonction OpenGL.
MIT - EXENGINE - Moteur de jeu 3D en C99 avec un modèle de départ.
MIT - FLECS - Un système de composants d'entités multithread écrit pour C89 et C99
MIT - Freecell Solver - Ensemble de bibliothèques et de programmes de ligne de commande pour résoudre automatiquement FreeCell et quelques variantes similaires de Card Solitaire.
MIT - FreeGlut - Alternative à la boîte à outils OpenGL Utility. Permet la création et la gestion de Windows avec des contextes OpenGL.
X11 - GLFW - Bibliothèque multi-plateforme pour la création de Windows avec des contextes OpenGL.
Zlib - IoQUake3 - moteur Quake3, libéré enfin.
GPL-2.0-only - Kazmath - Bibliothèque mathématique pour les jeux.
BSD-2-Clause - Libao - bibliothèque audio multiplateforme avec une grande variété de sorties.
GPL-2.0-or-later - BIBLIBRG - Pure bibliothèque de réseautage de jeux C99 pour la construction de solutions multijoueurs multijoueurs simples et élégantes.
Apache-2.0 - MathC - Math Library pour la programmation 2D et 3D.
ZLib - ORX - Portable, léger, basé sur des plugins, moteur de jeu axé sur les données et orienté 2D.
Zlib - Quake - moteur Quake.
GPL-2.0-only - Quake2 - moteur Quake2.
GPL-2.0-only - Raylib - bibliothèque simple et facile à utiliser pour apprendre la programmation de jeux vidéo.
Zlib - Retroarch - Référence Frontend pour Libretro.
GPL-3.0-only - SDL2 - Bibliothèque multiplateforme conçue pour fournir un accès de bas niveau à l'audio, au clavier, à la souris, au joystick et au matériel graphique via OpenGL.
Zlib - SDL-GPU - Bibliothèque pour les graphiques 2D modernes et modernes. Basé sur SDL.
MIT - Sigil - Bibliothèque d'intégration du son, des entrées et graphiques; Une alternative simple aux autres bibliothèques pour faire toutes ces choses. Divers licences, toutes open source.
- Uastar - Implémentation minimale A *.
ZLib
Graphique
Manipulation programmatique des graphiques en C; Si vous souhaitez faire une interface graphique, la section d'interface utilisateur graphique a ce dont vous avez besoin.
- Assetkit? Importateur d'actifs 3D / Exportateur / bibliothèque Util basé sur Collada / Gltf Specs
MIT - Caire - Bibliothèque graphique 2D.
LGPL-2.1-only ou MPL-1.1 . - CMT -? C LESSURATIONS / ERRAGES POUR LA FRAMPAGE GRAPHIQUE MÉTAL D'Apple.
MIT - GIFSIB - Bibliothèque pour lire et écrire des images GIF.
MIT - Graphène - Mine couche de types de données graphiques.
MIT - Heman - Tiny Library of Image Utilities traitant des cartes de hauteur, des cartes normales, des champs de distance et similaires.
MIT - libcaca - rendu ASCII pour les interfaces basées sur les terminaux.
WTFPL - libgd - bibliothèque pour la création dynamique d'images par les programmeurs.
MIT - Libimagequant - petite bibliothèque portable pour une conversion de haute qualité des images RGBA en images couleur indexées 8 bits.
GPL-3.0-or-later - Libjpeg-Turbo - Bibliothèque plus rapide pour lire et écrire des fichiers JPEG. Divers licences.
- libpng - bibliothèque de référence PNG officielle.
Libpng - librsvg - bibliothèque pour rendre les fichiers SVG à l'aide du Caire.
LGPL-2.1-or-later - LibSixel - Bibliothèque implémentant le protocole Sixel, permettant de beaux graphiques dans votre terminal.
MIT - libspng - une interface plus simple pour lire et écrire des fichiers PNG.
BSD-2-Clause - Libvips - bibliothèque de traitement d'image.
LGPL-2.1-or-later - Libxmi - Bibliothèque de fonctions pour rashiriser les graphiques vectoriels 2D.
GPL-3.0-or-later - LightMapper - Bibliothèque unique pour la cuisson Lightmap, à l'aide d'un rendu OpenGL existant. Domaine public.
- Little CMS - un système de gestion des couleurs. Il fournit des transformations rapides entre les profils ICC.
MIT - Mozjpeg - Encodeur JPEG amélioré.
BSD-3-Clause - Nanovg - bibliothèque de dessin vectorielle 2D anti-aliasé au-dessus d'OpenGL, pour l'interface utilisateur et les visualisations.
Zlib - OpenGL - Standard de l'industrie pour les graphiques hautes performances, avec une liaison C native. Divers licences.
- Plutovg - Une bibliothèque graphique vectorielle 2D autonome en C
MIT - Sail - ⛵ La bibliothèque de décodage d'image petite et rapide manquante pour les humains (pas pour les machines)
MIT
Interface utilisateur graphique
Boupées d'outils de widget, ou des choses destinées à être utilisées de la même manière.
- GTK + - boîte à outils de widget multiplateforme.
LGPL-2.1-only - IUP - Une autre boîte à outils de widget multiplateforme.
MIT - Microui - bibliothèque d'interface utilisateur en mode immédiat écrit en portable ANSI C.
MIT - nappGui - SDK professionnel pour créer des applications de bureau multiplateforme en utilisant C.
MIT - Nuklear - Small, C89, boîte à outils à widget à tête unique. Domaine public.
- TinyfileDialogs - Bibliothèque unique pour les dialogues simples. Compatible avec de nombreuses autres boîtes à outils et OSE.
Zlib - TK - Basic Widget Toolkit. Partie de TCL / TK.
TCL - XForms Toolkit - Widget Toolkit conçu pour le système Xwindow.
LGPL-2.1-only - LVGL - GUI intégrée avec des éléments graphiques faciles à utiliser, de beaux visuels et une empreinte de mémoire basse.
MIT - LUIGI - Une bibliothèque d'interface graphique à tête barebones pour Win32, X11 et Essence.
MIT
Hachage
Implémentations de la fonction de hachage à des fins de non -cripto. Les hachages cryptographiques peuvent être trouvés dans la section cryptographique.
- CLHASH - Bibliothèque implémentant la fonction de hachage Clhash ridiculement rapide. Fonctionne uniquement sur Intel Haswell ou plus récent.
Apache-2.0 - Highwayhash - fonction de hachage rapide, forte et using simd. Contient également une implémentation de Siphash (bien que cela soit plus lent).
Apache-2.0 - SPOOKYHASH - Fonction de hachage extrêmement rapide.
BSD-3-Clause - T1HA - Hash rapide positif - une fonction de hachage portable et rapide.
BSD-3-Clause - XXHASH - Algorithme de hachage extrêmement rapide. Livré en variétés 32 et 64 bits.
BSD-2-Clause
Apprentissage, référence et tutoriels
Ressources pour apprendre la programmation C en général, ou quelque chose d'utile concernant la programmation C.
Ressources de référence en ligne
- Benchmarks de l'allocateur de mémoire sans verrouillage
- C FAQ - Comp.lang.c Fnceutement posé des questions
- Comparaison des implémentations de bibliothèque standard C / POSIX pour Linux
- Projet de norme C89
- Projet de norme C99
- Projet de norme C11
- Trouver le meilleur PRNG de simulation 64 bits
- Norme de codage SEI CERT C
- tinyc.game - Tiny C Games que vous pouvez compiler et exécuter dès maintenant http://tinyc.games
MIT
Ressources débutantes en ligne
- Un tutoriel sur les pointeurs
- Un tutoriel sur les makefiles portables
- Projets de construction C
- C Programmation WikiBook
- Introduction à «Fun» C
- Apprendre C avec GDB
- memcpy vs memmove
- Tutoriel de programmation des threads POSIX (un peu daté, mais la plupart sont toujours valides et utiles)
- Le tutoriel de programmation GNU C (PDF en ligne)
- Templage en C
- Ce qu'un programmeur C devrait savoir sur la mémoire
- Codeforwin: Apprenez C Programmation, Tutoriels de structures de données et exercices en ligne
- Apprenez C: Tutoriel interactif C gratuit et open-source
- Comment programmer une aventure texte en c
Ressources intermédiaires en ligne
- 8 astuces GDB que vous devriez savoir
- 10 astuces C99
- Une ressource de tutoriel MPI complète
- Créez votre propre éditeur de texte
- Plonger dans la concurrence: essayer les mutex et les atomiques
- Comptage de référence générique C
- Comment écrire portable C sans compliquer votre construction
- Introduction à OpenMP (vidéo)
- Tutoriel OpenMP (pour la norme OpenMP3)
- Tutoriel MPI
- C - Écriture de C distribué à grande échelle C
- Quelques fonctionnalités ou astuces inconnues dans le langage C
- Ce que chaque programme C doit savoir sur le comportement non défini
Ressources avancées en ligne
- Métaprogrammation avancée en c
- Un tutoriel rapide sur la mise en œuvre et le débogage malloc, gratuit, calloc et realloc
- Bit Twiddling Hacks
- Implémentation de pointeurs intelligents pour le langage de programmation C
- Fonctions en ligne en c
- Métaprogrammation des structures de contrôle personnalisées en c
- Résolution du problème de stockage temporaire des macros C
- Quelques coins sombres de C
- Écrire une optimisation efficace du code C et C
- Compilation des types de données algébriques en pur C99
Livres de référence
- C: Un manuel de référence 5E - Livre de référence complet pour C99.
- C En un mot 2E - Livre de référence concis pour C11.
- C Pocket Reference - Livre de référence concis pour C99.
- Le langage de programmation C 2e - Livre original sur C, par ses créateurs.
Livres pour débutants
- C Primer Plus 6E - Tutoriel complet sur la programmation dans C11.
- C Programmation C: une approche moderne - Excellent livre pour apprendre les bases de C.
- Head First C - Livre de style «Head premier» pour l'apprentissage C.
Livres intermédiaires
- 21e siècle C - Bon deuxième livre de programmation sur C.
- Comprendre et utiliser C Pointers - Ressource approfondie sur les pointeurs dans C.
- Zeromq - Réservez pour utiliser Zeromq avec C.
Livres avancés
- Programmation C experte: Secrets De Deep C - Regard intéressant, approfondi et divertissant sur les entrailles de C.
- Modern C, Third Edition: couvre la norme C23 - dans Modern C, troisième édition, vous apprendrez à exploiter le plein potentiel de C en utilisant les derniers outils et techniques.
Lexing et l'analyse
Bibliothèques spécifiquement pour l'analyse lexicale (ou lexing) et l'analyse syntaxique (ou l'analyse).
- Flex - Générateur d'analyseur lexical rapide.
BSD-2-Clause - GNU Bison - générateur d'analyse à usage général qui convertit une grammaire sans contexte annotée en une gamme de analyseurs.
GPL-3.0-or-later - Hammer - combinateurs d'analyseurs pour formats binaires.
GPL-2.0-only - MPC - Parser Combinator Library.
BSD-2-Clause - OWL - Un générateur d'analyseur pour les langues visiblement pushdown.
MIT - RE2C - Générateur Lexer, produisant des lexers rapides, avec accès à ses internes. Domaine public.
Gestion de la mémoire
Qu'il s'agisse d'une collection de Malloc ou de déchets différente différente, plus rapide, tout ce qui est à voir avec la gestion de la vie de la mémoire C ici.
- Boehm GC - Collection des ordures pour C. divers licences, toutes open source.
- Jemalloc - Mise en œuvre de Malloc qui met l'accent sur l'évitement de la fragmentation et le soutien de la concurrence évolutive.
BSD-2-Clause - Allocateur de mémoire sans verrouillage - Allocator de mémoire efficace.
GPL-3.0-or-later - libcsptr - pointeurs intelligents pour C.
MIT - RPMALLOC - ALLOCATEUR DE MÉMOIRE FAST FAST, naturellement aligné sur les limites de 32 octets. Domaine public.
- TALLOC - Système de pool de mémoire hiérarchique et référentiel avec destructeurs.
LGPL-3.0-or-later - TLSF - allocateur d'ajustement séparé à deux niveaux; Un allocateur de mémoire dynamique à usage général conçu pour répondre aux exigences en temps réel. Implémentation à jour.
BSD-3-Clause
Multimédia
- Aubio - Bibliothèque pour l'analyse audio et musicale.
GPL-3.0-or-later - FFMPEG - Solution complète et multiplateforme pour enregistrer, convertir et diffuser l'audio et la vidéo.
LGPL-2.1-or-later - GStreamer - Framework pour les médias audio et visuels.
LGPL-2.1-or-later - libmpv - bibliothèque de jeux musicaux.
GPL-2.0-or-later - libsndfile - bibliothèque pour lire et écrire des fichiers sonores. Prend en charge de nombreux formats.
LGPL-2.1-only ou LGPL-3.0-only - LibSoundio - Bibliothèque pour la plate-forme multiplateforme, entrée audio en temps réel et sortie. A une gamme de back-end.
MIT - libvlc - Bibliothèque multimédia complète pour le codage audio et vidéo, le décodage, la lecture et le streaming.
GPL-2.0-only - LODEPNG - Décodeur et encodeur d'image PNG simple, ne nécessitant aucune autre dépendance.
BSD-3-Clause - MINIMP3 - Library d'en-tête unique de décodeur mp3 léger.
CC0-1.0 - Soundpepe - bibliothèque DSP de musique légère.
MIT
Réseautage et Internet
Des réseaux de bas niveau et des trucs liés à Internet. Si vous voulez quelque chose de plus complet et de haut niveau, vous voudrez peut-être la section Frameworks Web.
- ASNLC - Compilateur de spécifications ASN.1 dans le code source C.
BSD-2-Clause - CHL - C Library Hypertext - Une bibliothèque pour écrire des applications Web dans C.
GPL-3.0-only - CZMQ - liaison de haut niveau pour Zeromq.
MPL-2.0 - Dyad.c - Bibliothèque de réseautage légère, facile, asynchrone.
MIT - GNU ADNS - Bibliothèque et utilitaires DNS Advanced, faciles à utiliser, compatibles ASynch.
GPL-3.0-or-later - Gumbo-Parser - Bibliothèque d'analyse HTML5 en C99.
Apache-2.0 - H20 - Un serveur HTTP de nouvelle génération.
MIT - LlHTTP - analyser de demande / réponse HTTP.
MIT - LDNS - Bibliothèque pour simplifier la programmation DNS.
BSD-3-Clause - Libcurl - bibliothèque de transfert d'URL côté client, prenant en charge un large éventail de formats.
curl - Libetpan - Bibliothèque de courrier fournissant un réseau efficace pour IMAP, SMTP, POP et NNTP.
BSD-3-Clause - Libev - Encore une autre boucle d'événement.
BSD-2-Clause - Libevent - Remplacement de la boucle d'événements pour les serveurs réseau.
BSD-3-Clause - libhttpd - bibliothèque pour ajouter des capacités de serveur Web de base à une application ou un périphérique intégré.
GPL-2.0-only - Libhv - Bibliothèque de boucle d'événements croisées.
BSD-3-Clause - Libidn - Implémentation des spécifications StringPrep, Punycode et IDNA.
GPL-3.0-or-later - libmicrohttpd - petite bibliothèque qui facilite l'exécution d'un serveur HTTP dans le cadre d'une autre application.
LGPL-2.1-or-later - libnl -
libnl est une collection de bibliothèques pour fournir des API au protocole NetLink (remplacement de l'IOCTL). Son utilisation principale est de communiquer avec le noyau Linux, pour modifier l'état de réseautage (interfaces, routage etc ...). LGPL-2.1-only - Libonion - Bibliothèque de serveurs HTTP, conçue pour être facile à utiliser.
Apache-2.0 - LIBPCAP - L'API fournit à divers mécanismes de capture de paquets de noyau.
BSD-3-Clause - Libquickmail - Bibliothèque destinée à donner aux développeurs un moyen d'envoyer des e-mails de leurs applications. Prend en charge plusieurs destinataires et pièces jointes à / cc / BCC sans limites de taille.
GPL-3.0-or-later - Libsagui - Bibliothèque pour les serveurs HTTP multiplateformes.
LGPL-3.0-or-later - Libuhttpd - Une bibliothèque de serveur HTTP très flexible, légère et entièrement asynchrone basée sur LiBev et HTTP-PARSER pour Linux embarqué.
MIT - Libvncserver - bibliothèques multiplateformes pour implémenter les fonctionnalités VNC Server et / ou client.
GPL-2.0-or-later - Libwebsock - bibliothèque de socket Web facile à utiliser et puissante.
LGPL-3.0-only - Libzmq - Core Zeromq Library, une bibliothèque de messagerie asynchrone haute performance, visant l'utilisation dans des applications distribuées ou simultanées. C API (Backend C ++)
GPL-3.0-or-later avec exception de liaison statique - LWAN - Serveur HTTP expérimental, évolutif et haute performance.
GPL-2.0-only - Mongoose - serveur Web intégré.
GPL-2.0-only - MQTT-C - Un client MQTT C portable pour les systèmes intégrés et les PC.
MIT - Implémentation basée sur Nanomsg - C de Zeromq.
MIT - Nng - Nanomsg-next-Generation - Messagerie sans courtage légère.
MIT - Implémentation OSIP - SIP sans dépendances supplémentaires.
LGPL-2.1-or-later - Silgy - moteur HTTP (S) asynchrone pour les projets C / C ++.
MIT - SOCKET99 - Wrapper C99 pour l'API BSD Sockets.
ISC - TWITC - Mini Library pour interagir avec l'API Twitter OAuth.
MIT - Uriparser - Strictement RFC 3986 Conforme à la bibliothèque d'analyse et de manutention d'URI.
BSD-3-Clause - WSLAY - Bibliothèque WebSocket. Implémente la version 13 du protocole WebSocket, comme décrit dans RFC 6455.
MIT - Zyre - Cadre pour les applications entre les pairs basées sur la proximité.
MPL-2.0
Numérique
- APOPHENIE - BIBLIOTHÈQUE POUR L'INPORTATION STATIQUE ET SCIENTIFIQUE.
GPL-2.0-only - ARB - Bibliothèque pour l'intervalle arbitraire intervalle arithmétique.
LGPL-2.1-or-later - Atlas - logiciel d'algèbre linéaire réglé automatiquement.
BSD-3-Clause - Clblas - Blas Fonctions écrites en OpenCl.
Apache-2.0 - CMATHL - Bibliothèque de mathématiques avec une grande variété de fonctions mathématiques avec support CMake Build. Cherche à être proche de la conformité C89 / C90 pour la portabilité.
MIT - Cuba - Bibliothèque pour l'intégration numérique multidimensionnelle.
LGPL-3.0-only - FFT-C - Un Fourier haute performance se transforme de FFTPACK de NetLib; Enveloppé dans un format convivial
MIT - FFTW - La transformée de Fourier la plus rapide en Occident; Une routine de transformée de Fourier rapide hautement optimisée.
GPL-2.0-or-later - Flint - Bibliothèque rapide pour la théorie des nombres; Une bibliothèque prenant en charge l'arithmétique avec des nombres, des polynômes, des séries de puissance et des matrices, entre autres.
GPL-2.0-or-later - Kit de programmation linéaire GLPK - GNU; a package designed for solving large-scale linear programming, mixed integer programming and other related problems.
GPL-3.0-or-later - GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic.
GPL-2.0-only or LGPL-3.0-only - GNU MPC - Library for complex number arithmetic.
LGPL-3.0-or-later - GNU MPFR - Library for arbitrary-precision floating-point arithmetic.
LGPL-3.0-or-later - GNU MPRIA - Portable mathematics library for multi-precision rational interval arithmetic.
GPL-3.0-or-later - GSL - The GNU Scientific Library; a sophisticated numerical library.
GPL-3.0-only . - KISS FFT - Simple fast Fourier transform library.
BSD-3-Clause - LAPACKE - Interface to LAPACK.
BSD-3-Clause - LibTomMath - Portable, number-theoretic, multiple-precision integer library. Supports algebra, digit manipulation, modular reductions, and various number-theoretic routines. Public domain.
- LibTomPoly - Polynomial-related maths library. Public domain.
- PARI/GP - Computer algebra system for number theory; includes a compiler to C.
GPL-2.0-or-later - PETSc - Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations.
BSD-2-Clause - SCS - Splitting Conic Solver; a numerical optimization package for solving large-scale convex cone problems.
MIT - SLEPc - Library for the solution of large, sparse eigenvalue problems on parallel computers.
LGPL-3.0-only - TomsFastMath - Set of optimized maths operations (in assembly), suitable for cryptographic use. Public domain.
- Yeppp! - Fast, SIMD-optimized mathematical library.
BSD-3-Clause
Profilage
- gperftools - Collection of utilities for measuring and improving performance.
BSD-3-Clause - gprof - Performance analysis tool. Part of GNU binutils.
GPL-3.0-or-later - OProfile - Statistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation.
GPL-2.0-only - perf - Linux kernel-based profiler with a lot of functionality.
GPL-2.0-only
Pdf
- pdfio - PDFio is a simple C library for reading and writing PDF files.
Apache-2.0
Regex
- Onigmo - Fork of Oniguruma, supporting more advanced regexps.
BSD-2-Clause - Oniguruma - Regex library supporting a wide range of encodings, and incorporating many security-oriented fixes.
BSD-2-Clause - PCRE - Implementation of regexes identical to that of Perl 5.
BSD-3-Clause - SLRE - Super Light Regular Expression library; a small implementation of a subset of Perl regex syntax.
GPL-2.0-only - TRE - POSIX-compliant, feature-full regex library.
BSD-2-Clause
Sérialisation
- binn - Binary serialization format, meant to be compact, fast and easy-to-use.
Apache-2.0 - c-capnproto - Implementation of the Cap'n Proto serialization protocol.
MIT - cmp - Implementation of the MessagePack serialization protocol.
MIT - flatcc - FlatBuffers compiler and library.
Apache-2.0 - libavro - Implementation of the Avro data serialization system.
Apache-2.0 - mpack - Another implementation of the MessagePack serialization protocol.
MIT - OPIC - Object Persistence in C; a revolutionary serialization framework, with matching on-disk and in-memory representations.
GPL-3.0-or-later - protobuf-c - Implementation of Google Protocol Buffer.
BSD-2-Clause - tpl - Small binary serialization library.
MIT - xdr - External Data Representation; a standard for data serialization. Standard (no license applicable).
- pbtools - Google Protocol Buffers C source code generator.
MIT
Source Code Collections
Collections of small source code. If you want something big and integrated, check the Frameworks section.
- CCAN - Modelled after Perl's CPAN, this is a big collection of code that does stuff. The full list is here. Various licenses, all open source.
- clib - Something of a package manager. Comes with a bunch of libraries of its own.
MIT - gnulib - Collection of common GNU code. Various licenses, all open source.
- libdjb - Collection of libraries doing various things. (Apparently) public domain.
- mmx - Collection of single-header libraries. Various licenses, all open source.
- par - Bunch of single-file libraries.
MIT - Snippets - Useful code snippets and header-only libraries. Public domain.
- stb - Range of single-file libraries. Public domain.
- tinyheaders - Collection of header-only libraries, primarily oriented toward game development.
Zlib - zpl - C99 cross-platform header-only library with many goodies. [
BSD-3-Clause , Unlicense ][BSD-3-Clause, Unlicense]
Standard Libraries
Implementations of the (standard-mandated) C standard library.
- Bionic - Google's standard library, developed for Android.
BSD-3-Clause - cloudlibc - Standard library based on the concept of capability-based security.
BSD-2-Clause - dietlibc - Standard library designed for the smallest possible binaries.
GPL-2.0-only - glibc - The GNU C Library; an implementation of the standard library.
LGPL-2.1-only . - musl - Standard library, compatible with POSIX 2008 and C11. Designed for static linking.
MIT - PDCLib - The Public Domain C Library. Implements most of C99 and some of C11.
CC0-1.0 - uClibc-ng - Small C library for developing embedded systems.
LGPL-2.1-or-later
Template libraries
- CTL - C CONTAINER TEMPLATE LIBRARY (CTL)
MIT
String Manipulation
- bstring - The Better String Library.
BSD-3-Clause - ICU - International Components for Unicode; a library for Unicode support.
ICU - levenstein.c - Levenstein distance algorithm implementation.
MIT . - libunistring - Library for manipulating Unicode strings.
LGPL-3.0-only - libgiconv - Text conversion library.
LGPL-2.1-only - librope - UTF-8 rope ('heavy' string) library.
MIT - SDS - Simple Dynamic Strings; a library for handling strings in a simpler way, but one that is compatible with normal C string functions. Available via clib.
BSD-2-Clause - stmr.c - Porter Stemmer algorithm implementation.
MIT - str - Yet another string library for C language.
BSD-3-Clause - StringZilla - Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators.
Apache-2.0 - utf8.h - Single-header UTF-8 library, designed to mimic C-style string functions. Public domain.
- utf8proc - Library for processing UTF-8 data.
MIT
Structured File Processing
This includes libraries for things like XML, JSON, CSV, and other similar formats.
CSV
- libcsv - Simple, streaming CSV parser.
LGPL-2.1-or-later
JSON
- Jansson - Library for encoding, decoding and manipulating JSON.
MIT - jfes - JSON For Embedded Systems; simple JSON engine without any dependencies.
MIT - jsmn - Minimalistic JSON parser.
MIT - json - Simple, low-memory-use JSON parser.
MIT - json-c - Easily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with RFC 7159.
MIT - json.h - Single-file non-streaming JSON parser.
Unlicense - parson - Two-file, C89-compatible JSON parser.
MIT - WJElement - Advanced JSON manipulation library, with support for JSON Schema.
LGPL-2.0-or-later or LGPL-2.1-or-later or LGPL-3.0-or-later - YAJL - Fast streaming JSON parser library.
ISC
INI
- inih - Small and simple INI file parser, good for embedded systems.
BSD-3-Clause - iniparser - Parser for .ini files.
MIT - libconfini - Yet another INI parser.
GPL-3.0-only - minIni - Small and portable INI parser.
Apache-2.0
Autres
- libbson - BSON utility library.
Apache-2.0 - libcbor: CBOR protocol implementation for C and others.
MIT - libconfuse - Small configuration file parser library.
ISC - libelf - Simple library for parsing ELF files.
MIT - libucl - Universal configuration library parser.
BSD-2-Clause - libxo - Allows an application to generate plain text, XML, JSON and HTML output using a common set of function calls. The application decides at runtime what output style should be produced.
BSD-2-Clause
Xml
- Expat - Stream-oriented XML parser. Mit
- libxml2 - Standards-compliant, portable XML parser. Mit
- xml - Simple, low-memory-use XML parser / tokenizer.
MIT
YAML
- libYAML - YAML 1.1 parser and emitter.
MIT
Signal Processing
- libsigrok - signal analysis software suite that supports various device types (such as logic analyzers, oscilloscopes, multimeters, and more). [
GPL ][GPL]
Essai
- CHEAT - Simple unit testing framework.
BSD-2-Clause - Check - Unit testing framework.
LGPL-2.1-only - ciut - A modern minimal hassle unit test framework.
MIT - clar - Clear and simple unit testing framework.
MIT - CMock - Mock/stub generator.
MIT - cmocka - Unit testing framework with support for mock objects.
Apache-2.0 - Criterion - KISS, non-intrusive test framework.
MIT - ctest - Yet another unit testing framework.
Apache-2.0 - CUnit - Another unit testing framework.
LGPL-2.1-or-later - greatest - Unit testing library in one file, with no memory allocation.
ISC - minctest - Unit testing microlibrary.
BSD-3-Clause - munit - Small unit testing framework.
MIT - Nala - A test framework for C projects.
MIT - Rexo - Framework for C89/C++ featuring automatic registration of tests and a polished API.
Unlicense - Tau - A Micro Unit testing framework for C/C++ (~1k lines of code). Includes a rich set of assertion macros, supports automatic test registration and can output to multiple formats, like the TAP format or JUnit XML. Supported on Linux, macOS, FreeBSD, and Windows.
MIT - theft - Property-based testing (similar to Quickcheck).
MIT - Unity - Simple unit testing framework.
MIT - utest - Single-header unit testing library.
Unlicense
Text Editor Extensions
While practically any decent programmer's text editor supports C, there are some extensions that make it more pleasant. These are labelled by editor.
- CCompletion - Notepad++ autocompletion plugin. Works with all identifiers recognized by Ctags. This is a download link.
GPL-2.0-or-later - CEDET - Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in.
GPL-3.0-or-later - Flycheck - Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end.
GPL-3.0-or-later - Neomake - Async :make and linting framework for Neovim/Vim.
MIT - Syntastic - Syntax checking and linting for Vim.
WTFPL - YASnippet - Emacs code template system, with C templates for common snippets.
GPL-3.0-or-later - YouCompleteMe - Code completion engine for Vim.
GPL-3.0-only
Outils
Useful programs to help you write and debug C code which are not editors, libraries or compilers.
- Artistic Style - Fast and small automatic source code formatter that supports C.
LGPL-3.0-only - address-sanitizer - Fast memory error detector.
Apache-2.0 - bcc - A byte array generator to import binary files directy from C in the spirit of xxd.
ISC - c - Compile and execute C "scripts" in one go on the command line. Also has shebang support.
MIT - c99sh - Run C files using hash-bang.
BSD-2-Clause - cdecl - Online service to translate C declarations into English and vice versa. Public domain.
- cinclude2dot - Graphs include dependencies in a project using Graphviz. GPL-1.0-or-later or
GPL-2.0-or-later or GPL-3.0-or-later - ClangCheck - Static analysis tool, designed to work with Clang.
NCSA - conan.io - Something of a package manager for C.
MIT . - Cppcheck - Static analysis tool. Despite the name, works well with C.
GPL-3.0-or-later - Glade - RAD tool to enable quick development of GTK+ GUIs.
GPL-2.0-only - GMSL - GNU Make Standard Library; a collection of additional functionality for GNU Make.
BSD-3-Clause - GNU Global - Source code tagging tool.
GPL-3.0-only - GPP - General-purpose preprocessor. More versatile than the C preprocessor, but more flexible than m4.
LGPL-3.0-or-later - Highlight - Converts source code to formatted text with nice highlighting.
GPL-3.0-only - include-what-you-use - Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it).
NCSA - incbin - Include binary files in your C/C++ applications with ease
Unlicense - indent - Formats C source code automatically to make it easier to read. Also converts from one style of source to another.
GPL-3.0-or-later - SMACK - Modular software verification toolchain and a self-contained software verifier. Currently only works with programs compiled using Clang.
MIT - unifdef - Removes #ifdef and #if directives with their delimited text without touching any other part of the file.
BSD-3-Clause or BSD-2-Clause
Services publics
A 'catch-all' category for anything that doesn't fit well anywhere else.
- ApeTagLibs - Library for working with APEv2 tags.
MIT - argparse - Command-line argument parsing library, inspired by Python's argparse module.
MIT - attr - Commands for manipulating filesystem extended attributes.
GPL-2.0-or-later - bfd - Library for manipulating binary object files. Part of GNU binutils.
GPL-3.0-or-later - Caffeine - Library for building daemons and services for Linux and FreeBSD systems.
LGPL-2.1-or-later - CException - Implementation of exceptions.
MIT - CommonMark - Implementation of the CommonMark spec.
- cosmopolitan - fast portable static native textmode containers (build C programs for LinuxMacWindows in one go) Variety of licenses, all open source.
- cpu_features - Get CPU features at runtime.
Apache-2.0 . - CRIU - Checkpoint/Restore In Userspace; a software tool (with a C API) for 'freezing' a running application to disk, then restoring it.
GPL-2.0-only or LGPL-2.1-only - D-Bus - Simple way for applications to talk to one another.
AFL-2.1 or GPL-2.0-or-later - Discount - Simple implementation of a Markdown parser.
BSD-3-Clause - dlx - Implementation of Knuth's Algorithm X, with example solvers.
GPL-3.0-or-later - docopt.c - Implementation of a command-line option parser.
MIT - dyncall - Another foreign function interface library.
MIT - GNU FreeIPMI - In-band and out-of-band IPMI implementation.
GPL-3.0-only - GNU gperf - Perfect hash function generator, given a list of strings. Outputs C code.
GPL-3.0-or-later - GNU Libffcall - Collection of libraries for building foreign function interfaces.
GPL-3.0-or-later - Hoedown - Fully standards-compliant, extension-supporting, UTF-8 aware, fast Markdown parser.
MIT - Kitsune - Efficient, general-purpose framework for dynamic software updating.
LGPL-3.0-or-later - libCello - Library introducing higher-level programming to C.
BSD-3-Clause - libcmark - Library for parsing the CommonMark dialect of Markdown.
BSD-2-Clause - libcoap - Implementation of the Constrained Application Protocol.
GPL-2.0-or-later or BSD-2-Clause - libcox - Library which permits cross-platform system calls and standard utilities across different operating systems.
BSD-2-Clause - libffi - Portable foreign-function interface library.
MIT - libgeohash - Pure C implementation of the Geohash algorithm.
BSD-3-Clause - libgit2 - Portable implementation of the Git core methods, provided as a re-entrant linkable library. Custom license.
- libgss - Generic Security Service.
GPL-3.0-or-later - libimobiledevice - Cross-platform protocol library to communicate with iThings.
LGPL-2.1-or-later - libnfc - Platform-independent Near-Field Communication library.
LGPL-3.0-only - libpostal - Library for parsing and normalization of street addresses around the world. Powered by statistical NLP and open geo data.
MIT - libtrading - Implementation of network protocols for communicating with exchanges, dark pools and other trading venues. Supports FIX, FIX/FAST and many proprietary protocols.
BSD-2-Clause - libusb - Provides generic access to USB devices.
LGPL-2.1-or-later - libuv - Cross-platform asynchronous I/O.
MIT - libvldmail - Your friendly email validation library. No external dependencies (not even regexps).
WTFPL - linenoise - Small, self-contained alternative to readline and libedit.
BSD-2-Clause - libXDGdirs - An implementation of XDG Base Directory Specification
MIT - MegaMimes - Library for getting the MIME types of a file.
MIT - ncurses - Coloured terminal UI library.
MIT - netbsd-curses - Simplified and small version of ncurses, with the same interface.
BSD-3-Clause - nope.c - Ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers).
GPL-2.0-only - obj.h - A single-header supports OOP in pure C.
MIT - parg - A single-file reimplementation of
getopt with better defaults. CC0-1.0 - pbc - Protocol buffers library.
MIT - progressbar - Easy-to-use library for displaying text progress bars.
BSD-3-Clause - rabbitmq-c - Client library for RabbitMQ.
MIT - Ragel - DSL for state machines that compiles to C.
GPL-2.0-only - rmw - safe-remove utility for the command line that can purge items from your waste directories after x number of days.
GPL-3.0-or-later - Rogueutil - Cross-platform library for creating text-based user interfaces (TUI)
Apache-2.0 - sort - Collection of sorting routines, which type-specialize at compile-time with a user-defined type.
MIT - termbox - Library for writing text-based interfaces.
MIT - tinyexpr - Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions.
BSD-3-Clause - tm - ⏱ Timer and Timeline Utils for C.
MIT - Tulip Indicators - Library of functions for technical analysis of financial data.
LGPL-3.0-or-later - whereami - One-file library for locating the current executable on the file system.
WTFPL - XLSX I/O - Cross-platform library for reading and writing .xlsx files.
MIT - xlsx_drone - Fast Microsoft Excel's *.xlsx reader.
MIT - zlog - Reliable, pure C logging library.
LGPL-2.1-only - zproto - Protocol framework for ZeroMQ.
MIT - Metalang99 - Full-blown preprocessor metaprogramming.
MIT - Datatype99 - Algebraic data types for C99.
MIT - EasyLogger - An ultra-lightweight, high-performance C/C++ log library.
MIT
Web Frameworks
Comprehensive and integrated solutions for building the next brilliant web application in C.
- Concord - A Discord API wrapper library written in C.
MIT - facil.io - Mini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols.
MIT - kcgi - CGI and FastCGI library for C
ISC . - KLone - Fully featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances.
BSD-3-Clause - Kore - Easy-to-use web application framework for writing scalable web APIs in C.
ISC
Windows Environments
Technologies designed to bring Windows into the 21st century with respect to support for C.
- Cygwin - Designed to emulate a POSIX-compatible environment extensively under Windows. Various licenses, all open source.
- MinGW-w64 - Minimalist environment for C development on Windows with 64 bit support. Various licenses, all open source.
- MSYS2 - Minimal SYStem 2; aims to provide support for a POSIX environment on Windows, with a package manager based on Arch Linux's pacman. Packages have individual licenses, otherwise, as MinGW and Cygwin.