Impresionante c
Una lista curada de cosas buenas. Esta lista contiene solo código de código abierto (según lo definido por la definición de código abierto vinculado) y los vendedores que no son malvados para los recursos físicos.
Esto se lanza bajo una licencia Creative Commons-Attribution-Sharealike, versión 4 (código SPDX CC-BY-SA-4.0 ). Puede encontrar su texto en el archivo de licencia.
Una nota importante: este proyecto no indexa nada de C ++ relacionado; Solo se considera las cosas C puras.
Nota para los contribuyentes: si desea hacer una solicitud de extracción, lea contribuyente. MD primero.
Contenido
- AI
- Margen de evaluación
- Sistemas de construcción
- Compiladores
- Compresión
- Concurrencia y paralelismo
- Cripto
- Base de datos
- Estructuras de datos
- Depuración
- Generación de documentación
- Editores
- Motores de secuencia de comandos incrustables
- Marcos
- Programación de juegos
- Gráficos
- Interfaz gráfica de usuario
- Chava
- Aprendizaje, referencia y tutoriales
- Recursos de referencia en línea
- Recursos para principiantes en línea
- Recursos intermedios en línea
- Recursos avanzados en línea
- Libros de referencia
- Libros para principiantes
- Libros intermedios
- Libros avanzados
- Lexing y análisis
- Gestión de la memoria
- Multimedia
- Redes e internet
- Numérico
- Perfil
- Regular
- Publicación por entregas
- Colecciones de código fuente
- Bibliotecas estándar
- Manipulación de cuerdas
- Procesamiento de archivos estructurado
- CSV
- Json
- Ini
- Otros
- Xml
- Yaml
- Pruebas
- Extensiones del editor de texto
- Herramientas
- Utilidades
- Marcos web
- Entornos de Windows
AI
Visión por computadora, redes neuronales, aprendizaje automático y otras cosas similares. Básicamente, si su universidad lo llama IA, vive aquí.
- Biblioteca de visión por computadora basada en CCV - C/Cached/Core; Visión de la computadora moderna.
BSD-3-Clause - Cranium - Biblioteca ANN de solo encabezado, solo encabezado en C99.
MIT - Fann - Biblioteca de red neuronal artificial rápida; Una implementación de redes neuronales.
GPL-2.0-only - Genann - Simple Ann en C89, sin dependencias adicionales.
Zlib - Kann - Biblioteca Ann de dos archivos.
MIT - LibDeep - Biblioteca de aprendizaje profundo.
BSD-3-Clause - M2CGEN: una herramienta de CLI para transmisar modelos ML clásicos entrenados en un código C nativo con cero dependencias.
MIT - SOD - Una biblioteca de visión de computadora y aprendizaje automático incrustado.
GPL-3.0-only
Margen de evaluación
Comparando el rendimiento de varios subsistemas en diferentes arquitecturas de chip/sistema.
- B63-Herramienta de micro benchmarking de peso ligero para C.
Apache-2.0
Sistemas de construcción
Herramientas que automatizan la construcción y prueba de proyectos en C.
- AUTOTOOLS: también conocido como GNU Build System (Autoconf, LibBtool ...) es uno de los sistemas de compilación más utilizados (configure && make). GPL -.0-ORA
- AutoTools Project Skeleton: un simple esqueleto de AutoTools (plantilla) para iniciar rápidamente nuevos proyectos.
BSD-2-Clause - CMAKE - Familia de herramientas multiplataforma diseñada para construir, empaquetar y probar software.
BSD-3-Clause - GNU Make - Herramienta que controla la generación de ejecutables y otros archivos no fuente de un programa.
GPL-3.0-or-later - Meson: sistema de compilación extremadamente rápido y fácil de usar. Basado en ninja.
Apache-2.0 - Premake: utilidad de línea de comandos que lee una definición con guión de un proyecto de software y lo utiliza para generar archivos de proyecto para Visual Studio y GNU. También se están trabajando en otros objetivos.
BSD-3-Clause - Scons - Herramienta de construcción de software utilizando Python.
MIT - XMake - Utilidad de compilación multiplataforma.
Apache-2.0 - ZProject - Generador de proyectos y herramienta de soporte del sistema de compilación.
MPL-2.0
Compiladores
Compiladores, así como herramientas relacionadas con el compilador y compilación.
- CCACHE - Cache del compilador diseñado para acelerar la recompilación.
GPL-3.0-or-later - Clang - Compilador para LLVM. Admite C11.
NCSA - CPROC - Un compilador C11 usando QBE como backend.
ISC - DISTCC - Programa que permite que las compilaciones se distribuyan entre varias máquinas.
GPL-2.0-or-later - Firma: biblioteca que proporciona una generación de representación intermedia, optimizaciones y código de ensamblaje basada en gráficos adecuada para su uso en compiladores. Viene con un ejemplo de front-end bajo la misma licencia.
LGPL-2.1-only - GCC: proporciona un compilador C como parte de su conjunto de compiladores. Admite C11.
GPL-3.0-or-later - PCC - Venerable compilador. Admite C99. Varias licencias, todas de código abierto.
Compresión
- BLOSC-Biblioteca de meta-compresor extremadamente rápida, múltiple. Varias licencias, todas de código abierto.
- BROTLI - Biblioteca de algoritmo de compresión sin pérdida de propósito general. Tiene velocidades comparables a las relaciones de compresión mucho más altas.
MIT . - CLZIP - Versión C del compresor de datos de alta calidad LZIP (implementación de LZMA).
GPL-2.0-or-later - Croación - C Implementación de mapas de bits rugientes.
Apache-2.0 - FinitateEntropy: dos códecs de compresión altamente eficientes optimizados para las CPU modernas.
BSD-2-Clause - Densidad - Biblioteca de compresión súper rápida.
BSD-3-Clause - HeatShrink: biblioteca de compresión de datos/descompresión para sistemas integrados y en tiempo real.
ISC - Fast_Zlib - ZLIB mejorado, que se ejecuta de 2 a 10 veces más rápido.
BSD-3-Clause - Fastlz - Biblioteca de compresión sin pérdida de rayos (tipo LZ77). Embedable en un objetivo pequeño como las familias ARM Cortex-M. Código fuente directamente embraltable en su proyecto (un par de archivos H/C), sin asignación de memoria dinámica.
MIT - Huffandpuff: codificador y decodificador mínimo de Huffman. Dominio público.
- Libzip - B Biblioteca para leer, crear y modificar los archivos zip.
BSD-3-Clause - LibBZIP2-Biblioteca de compresión de datos de alta calidad sin patentes.
BSD-4-Clause - Lizard - Anteriormente LZ5; un compresor eficiente con descompresión rápida. Logra relaciones de compresión comparables con ZIP y ZLIB a velocidades de descompresión de 1000 MB/sy más rápido.
BSD-2-Clause - LZ4 - Biblioteca para un algoritmo de compresión extremadamente rápido.
BSD-2-Clause - LZO - Biblioteca de compresión de datos rápidos.
GPL-2.0-or-later - PIXZ - Compresor XZ Paralelo, indexado.
BSD-2-Clause - Shoco - Compresor para pequeñas cuerdas de texto.
MIT - SIMDCOMP - Biblioteca simple para comprimir listas de enteros utilizando el embalaje binario. Utiliza las instrucciones SIMD en X86.
BSD-3-Clause - SMAZ - Biblioteca de compresión de cadena eficiente.
BSD-3-Clause - Squash - Biblioteca de abstracción de compresión, completa con algunas utilidades.
MIT - Turbopfor - Compresión entera más rápida.
GPL-2.0-or-later - Turborle: la codificación de longitud de ejecución más eficiente.
GPL-2.0-or-later - ZIP - Biblioteca de procesamiento de archivo Zip realmente pequeña.
Unlicense - ZLIB - Biblioteca de compresión masivamente elegante pero delicadamente discreta.
BSD-3-Clause - Libarchive: Libarchive es una biblioteca C portátil y eficiente que puede leer y escribir archivos de transmisión en una variedad de formatos.
BSD-3-Clause - ZLIB-NG-Reemplazo de ZLIB con optimizaciones para sistemas de 'próxima generación'.
BSD-3-Clause - ZSTANDARD-Algoritmo de compresión rápido y sin pérdidas, dirigido a escenarios de compresión en tiempo real a nivel de ZLIB o mejores relaciones de compresión.
BSD-3-Clause
Concurrencia y paralelismo
- CCHAN - Pequeña biblioteca para construcciones de canales para la comunicación entre subcontrol. Dominio público.
- CheckEdThreads: una biblioteca simple para el paralelismo, con la verificación incorporada para condiciones de carrera.
BSD-2-Clause - CK: primitivas de concurrencia, mecanismos de recuperación de memoria segura y estructuras de datos sin bloqueo.
BSD-2-Clause - FCFS RWLOCK-Lectura de lectores/escritores de primer servicio para hilos POSIX.
CC0-1.0 - Libaco: una biblioteca de coroutina asimétrica C rápida y liviana.
Apache-2.0 - LibConcurrent: biblioteca de programación concurrente, utilizando coroutinas, para C11.
BSD-3-Clause - LIBCSP - Biblioteca C de alto rendimiento C influenciada por el modelo CSP.
MIT - Libdill - Biblioteca que facilita la programación concurrente estructurada.
MIT - LIBHL - Biblioteca implementando una API segura de hilo para administrar una variedad de estructuras de datos. También proporciona algunas funciones y estructuras de soporte para la programación concurrente y sin bloqueo.
LGPL-3.0-only - LIBURCU - Biblioteca de sincronización de datos, que escala linealmente con el número de núcleos.
LGPL-2.1-or-later - Mill - Concurrencia al estilo de Go.
MIT - OCLKIT - Wrapper OpenCl de dos archivos.
GPL-3.0-or-later - OCL-MLA-Abstracciones de nivel medio de OpenCl.
BSD-3-Clause - OpenMP - Conjunto de Pragmas diseñados para permitir una fácil paralelización del código. Estándar (licencias no aplicables).
- Abra MPI - Implementación de la interfaz de aprobación de mensajes.
BSD-3-Clause - PAL - Biblioteca optimizada para matemáticas, procesamiento paralelo y movimiento de datos.
Apache-2.0 - PTH-Implementación portátil para una programación basada en prioridades no previas para la prioridad para múltiples hilos de ejecución.
GPL-3.0-or-later - PTHREADS - Biblioteca Posix Thread. Estándar (sin licencia aplicable).
- TinyCthread - Portable, pequeña implementación de la API de hilos C11.
Zlib
Cripto
Principalmente implementaciones de la biblioteca de algoritmos o protocolos criptográficos bien conocidos.
- GNU SASL - Implementación de la capa simple de autenticación y seguridad y algunos mecanismo SASL común.
GPL-3.0-or-later - GNUTLS - Biblioteca de comunicación segura, implementación de SSL, TLS y DTLS.
LGPL-2.1-or-later - LibgCrypt - Biblioteca de criptografía de uso general, con una gama de cifrados disponibles.
LGPL-2.1-or-later - OPENSSL - Implementación de los protocolos SSL y TLS. También incluye una biblioteca de criptografía. Dual con licencia bajo la licencia OpenSSL y la licencia SSLEAY.
- Liboqs - Biblioteca para algoritmos criptográficos resistentes a la cantidad cuántica.
MIT - Libsodium: biblioteca de criptografía moderna y fácil de usar.
MIT - LibtomCrypt: un kit de herramientas criptográfico bastante integral, modular y portátil. Dominio público.
- MBed TLS - Otra implementación criptográfica.
Apache-2.0 - Miracl - Integer Multiprecision y Biblioteca criptográfica aritmética racional; Un SDK para la criptografía de la curva elíptica.
AGPL-3.0-or-later - Retter: recolección de funciones hash, cifrados, herramientas, bibliotecas y materiales relacionados con criptografía y seguridad. Dominio público.
- S2N - C99 Implementación de los protocolos TLS/SSL, diseñados para ser simples, rápidos y con seguridad como prioridad.
Apache-2.0 - SPHLIB - Conjunto de implementaciones de varias funciones hash, incluidas varias criptográficas.
MIT - Trezor -Crypto: algoritmos criptográficos muy optimizados para dispositivos integrados.
MIT - BIGHT - Un sencillo incluye la biblioteca de cripto de Blowfish ANSI -C Blowfish. Dominio público.
Base de datos
Bases de datos y almacenes de datos con API C.
- BerkeleyDB-Biblioteca para una base de datos integrada de alto rendimiento para datos de valor clave.
AGPL-3.0-only - DuckDB - Base de datos analítica rápida en proceso, con C API.
MIT - EJDB2 - Motor de base de datos JSON integrable.
MIT - Groonga - Tienda columna con búsqueda de texto completo.
LGPL-2.1-only - HIREDIS - Biblioteca de clientes minimalistas para Redis.
BSD-3-Clause - LibMongoC - Biblioteca de clientes de alto rendimiento para MongoDB.
Apache-2.0 - LMDB: almacén de datos integrado de valor de clave ultra-rápido, ultra compacto.
OLDAP-2.8 - MySQL: la base de datos de código abierto más popular del mundo.
GPL-2.0-only - PostgreSQL: poderoso sistema de bases de datos relacionales de objetos.
PostgreSQL - Redis - Tienda de valor clave avanzado.
BSD-3-Clause - Sophia - base de datos moderna e integrable de valor clave.
BSD-2-Clause - Sparkey - Biblioteca de almacenamiento de tecla/valor constante simple. Diseñado para cargas de lectura con infrecuente y grandes insertos a granel.
Apache-2.0 - SQLITE: motor autónomo, sin servidor, configuración cero, motor transaccional de la base de datos SQL. Dominio público.
- UNQLITE: autónomo, sin servidor, configuración cero, motor NoSQL transaccional.
BSD-2-Clause - Whitedb - Biblioteca de bases de datos livianas, operando completamente en la memoria principal.
GPL-3.0-or-later - FLASHDB: una base de datos de peso ultraviencial que admite datos de valores clave y series de tiempo.
Apache-2.0 - TDENGINE-Base de datos de series de tiempo nativas de alto rendimiento, nativa de la nube.
AGPL-3.0-only
Estructuras de datos
- Colecciones de C-Macro: genere estructuras de datos simples y genéricas utilizando macros.
MIT - CLIST - Implementación de matriz dinámica simple y liviana.
BSD-2-Clause - Colecciones -C - Biblioteca de estructuras de datos genéricos.
LGPL-3.0-or-later - DS - Estructuras de datos comunes y algoritmos.
MIT - Igraph - una biblioteca de procesamiento de gráficos.
GPL-2.0-or-later - Kdtree - Biblioteca simple para trabajar con KD -árboles.
BSD-3-Clause - Libavl - Biblioteca que contiene una variedad de árboles binarios de equilibrio.
GPL-3.0-or-later - LIBCDADA: una biblioteca pequeña, portátil, sin macro para estructuras de datos básicas (lista, conjunto, mapa, cola ...) en C (backend de C ++).
BSD-2-Clause - LIBLFDS - Biblioteca portátil de estructura de datos sin bloqueo. Dominio público (más exactamente, cualquier licencia que desee).
- Libsrt - Estructuras de datos en tiempo real suaves y duras.
BSD-3-Clause . - List.h - Implementaciones para funciones de lista vinculadas y doblemente vinculadas.
GPL-3.0-only - M*lib - Biblioteca para contenedores C genéricos, pero typefe. Implementado como solo encabezado.
BSD-2-Clause - OffBrand - Recopilación de estructuras de datos genéricas con contenido de referencia.
MIT - PackedArray: matriz de acceso aleatorio de enteros sin firmar bien empacados de cualquier ancho deseado. Tiene una implementación optimizada SIMD.
WTFPL - RB3PTR - Árbol rojo -negro. Expone casi todas las primitivas de implementación, por lo que se pueden usar para escenarios como aumento, múltiples funciones de pedido compatibles y más.
MIT - Uthash - Implementación de la tabla hash de un solo archivo.
BSD-1-Clause - vector.h - Biblioteca de encabezado para listas mecanografiadas.
MIT
Depuración
Porque todos tenemos que hacerlo a veces. Varias herramientas para hacer que la depuración sea más fácil o mejor, así como bibliotecas o código que permiten un mejor trabajo de depuración.
- C -Reduce: herramienta que toma un archivo C grande con una propiedad de interés y produce automáticamente un archivo C mucho más pequeño que tiene la misma propiedad. Destinado a ayudar a crear casos mínimos de demanda de errores en código complejo.
BSD-3-Clause - CBMC - C verificador de modelos limitado; Una herramienta para la verificación de los límites de la matriz, la seguridad del puntero y las afirmaciones especificadas por el usuario.
BSD-4-Clause - CFLOW: analiza una colección de archivos fuente e imprime un flujo de control de gráficos de gráficos en el programa.
GPL-3.0-or-later - Complejidad: herramienta para medir la complejidad del código fuente.
GPL-3.0-or-later - CSCOUT - Analizador de código fuente y navegador de refactorización para programas C.
GPL-3.0-only - DDD-Front-end gráfico para una gama de depuradores de línea de comandos.
GPL-3.0-or-later - Depuración: biblioteca de un cabeza de cabeza para 'depuración printf más fácil.
MIT - ESBMC - Verificador de modelos limitado basado en SMT eficiente; Una herramienta para la verificación de programas únicos y multiproceso, afirmaciones de los usuarios, desbordamiento y seguridad para el puntero/memoria.
Apache-2.0 - GDB - GNU Project Debugger.
GPL-3.0-or-later - LLDB - LLVM DEBUGGER.
NCSA - RR: depurador que registra ejecuciones no deterministas para permitir la depuración determinista.
BSD-2-Clause - Valgrind: rango de herramientas de análisis dinámico, incluido un verificador de fugas.
GPL-2.0-only
Generación de documentación
- CXREF: genera documentación en látex, HTML, RTF o SGML.
GPL-2.0-only - DOCONCE: un lenguaje de marcado modestamente etiquetado que puede usarse para generar una gama de formatos.
BSD-3-Clause - Doxygen: herramienta estándar de facto para generar documentación a partir de fuentes anotadas. Puede generar una amplia gama de formatos.
GPL-2.0-only
Editores
Editores más elegantes, tipo IDE. Si desea el editor de texto de un programador, busque en otro lugar. Además, lo que sea que use probablemente sea compatible con C de todos modos.
- Anjuta Devstudio - Gnome IDE.
GPL-2.0-only - Código :: bloques-IDE amplible y configurable que admite C.
GPL-3.0-only - Codelite - IDE multiplataforma.
GPL-2.0-only - Geany - Pequeño y rápido IDE.
GPL-2.0-or-later - KDEVROVEL - KDE IDE.
GPL-2.0-only - Zinjai - IDE simple, liviano y rico en funciones.
GPL-3.0-only
Motores de secuencia de comandos incrustables
Cuando C no es la solución correcta, o cuando necesita un motor de configación más dinámico:
- DUKTAPE - Motor JavaScript integrable con un enfoque en la portabilidad y el
MIT compacto de huella. - METACALL - Tiempo de ejecución de políglota multiplataforma que admite NodeJs, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol y más.
Apache-2.0
Marcos
Grandes bibliotecas que proporcionan estructuras de datos y otras cosas que espera de una biblioteca estándar 'moderna'.
- APR - tiempo de ejecución portátil de Apache; Otra biblioteca de funciones de utilidad multiplataforma.
Apache-2.0 - Algoritmos C: recopilación de algoritmos comunes y estructuras de datos.
ISC - CPL - La biblioteca de tubería común; Un conjunto de bibliotecas diseñadas para ser un kit de herramientas de software integral, eficiente y robusto.
GPL-2.0-only - EFL: gran recopilación de estructuras y funciones de datos útiles. Varias licencias, todas de código abierto.
- GLIB - Biblioteca de funciones y estructuras de servicios públicos, diseñada para ser portátil, eficiente y potente.
LGPL-2.1-only - KLIB: implementaciones pequeñas y livianas de algoritmos comunes y estructuras de datos.
MIT - LibCork: funciones y estructuras de servicios públicos, diseñadas para sistemas con recursos limitados. Puede ser incrustado.
BSD-3-Clause - Libnih - Biblioteca ligera de funciones y estructuras.
GPL-2.0-only - Libu: pequeña biblioteca de utilidades básicas, incluida la asignación de memoria, la manipulación de cadenas y el registro.
BSD-3-Clause - PBL - Gran biblioteca de servicios públicos, con estructuras de datos, entre otras cosas.
LGPL-2.1-or-later - PLIBSYS - Biblioteca del sistema de plataforma cruzada. Cero dependencias de terceros, usa solo llamadas del sistema nativo.
MIT - QLIBC: biblioteca simple y potente, diseñada como un reemplazo para Glib, mientras se enfoca en ser pequeño y ligero.
BSD-2-Clause - SC - Bibliotecas y estructuras de datos comunes para C.
MIT - Tbox - Biblioteca multiplataforma con una gran cantidad de capacidades.
Apache-2.0 - PSPSDK: un SDK de código abierto para PSP Homebrew Development. Varias licencias.
Programación de juegos
Motores, bibliotecas y otras cosas útiles específicamente para hacer juegos.
- Allegro: multiplataforma, desarrollo de videojuegos y biblioteca multimedia.
Zlib - Assetkit? IMPORTER DE ASSET 3D/Biblioteca de exportador/UtilS basada en
MIT de especificaciones Collada/GLTF - Astera - C99 Cross Platform 2d Game Library
MIT - CGLM -? OpenGL/Graphics Math (GLM) optimizado para C.
MIT - Chipmunk2d - Biblioteca de física de juego 2D rápida y liviana.
MIT - CMT -? C Bintings/Wrappers para el marco de gráficos de metal de Apple.
MIT - CORANGE-MOTOR DE JUEGO EN PURO C.
BSD-2-Clause - CSFML - Unión para SFML.
Zlib - Darkplaces: versión modificada del motor Quake2.
GPL-2.0-only - Epoxi - Biblioteca para manejar la administración de puntero de la función OpenGL.
MIT - Exengine - motor de juego 3D en C99 con una plantilla de inicio.
MIT - FLECS: un sistema de componentes de entidad multiproceso escrito para C89 y C99
MIT - Freecell Solver: conjunto de bibliotecas y programas de línea de comandos para resolver automáticamente Freecell y algunas variantes similares de solitaria de tarjetas.
MIT - Freeglut: alternativa al Kit de herramientas de utilidad OpenGL. Permite la creación y administración de Windows con contextos OpenGL.
X11 - GLFW - Biblioteca multiplataforma para crear Windows con contextos OpenGL.
Zlib - IOQUAKE3 - Motor Quake3, liberado por fin.
GPL-2.0-only - Kazmath - Biblioteca de matemáticas para juegos.
BSD-2-Clause - Libao - Biblioteca de audio multiplataforma con una amplia variedad de salidas.
GPL-2.0-or-later - LIBERG-Biblioteca de redes de juegos Pure C99 para construir soluciones simples y elegantes para el cliente multijugador multiplataforma.
Apache-2.0 - MATHC - Biblioteca de matemáticas para programación 2D y 3D.
ZLib - ORX: motor portátil, liviano, basado en complementos, basado en datos y motor de juego orientado a 2D.
Zlib - Quake - Motor de terremoto.
GPL-2.0-only - Quake2 - Motor Quake2.
GPL-2.0-only - Raylib-Biblioteca simple y fácil de usar para aprender la programación de videojuegos.
Zlib - Retroarch - Frontend de referencia para Libretro.
GPL-3.0-only - SDL2-Biblioteca multiplataforma diseñada para proporcionar acceso de bajo nivel a audio, teclado, mouse, joystick y hardware gráfico a través de OpenGL.
Zlib - SDL-GPU-Biblioteca para gráficos 2D modernos de alto rendimiento. Basado en SDL.
MIT - Sigil - Biblioteca de integración de sonido, entrada y gráficos; Una alternativa simple a otras bibliotecas para hacer todas esas cosas. Varias licencias, todas de código abierto.
- UASTAR - Implementación mínima de A*.
ZLib
Gráficos
Manipulación programática de gráficos en C; Si desea hacer una GUI, la sección gráfica de la interfaz de usuario tiene lo que necesita.
- Assetkit? IMPORTER DE ASSET 3D/Biblioteca de exportador/UtilS basada en
MIT de especificaciones Collada/GLTF - El Cairo - Biblioteca de gráficos 2D.
LGPL-2.1-only o MPL-1.1 . - CMT -? C Bintings/Wrappers para el marco de gráficos de metal de Apple.
MIT - Giflib - Biblioteca para leer y escribir imágenes GIF.
MIT - Grafeno: capa delgada de tipos de datos gráficos.
MIT - Heman - Tiny Library of Image Utities que se ocupa de mapas de altura, mapas normales, campos de distancia y similares.
MIT - Libcaca - Renderizador ASCII para interfaces basadas en terminales.
WTFPL - LIBGD - Biblioteca para la creación dinámica de imágenes por programadores.
MIT - Libimagequant: pequeña biblioteca portátil para la conversión de alta calidad de imágenes RGBA en imágenes de color indexadas de 8 bits.
GPL-3.0-or-later - Libjpeg -Turbo - Biblioteca más rápida para leer y escribir archivos JPEG. Varias licencias.
- libpng - Biblioteca de referencia PNG oficial.
Libpng - LIBERSVG - Biblioteca para representar archivos SVG usando El Cairo.
LGPL-2.1-or-later - Libsixel - Biblioteca implementando el protocolo Sixel, que permite hermosos gráficos en su terminal.
MIT - Libspng: una interfaz más simple para leer y escribir archivos PNG.
BSD-2-Clause - Libvips - Biblioteca de procesamiento de imágenes.
LGPL-2.1-or-later - LibXMI - Biblioteca de funciones para rasterizar gráficos vectoriales 2D.
GPL-3.0-or-later - LightMapper: biblioteca de un solo archivo para hornear mapa de luz, utilizando un renderizador OpenGL existente. Dominio público.
- Little CMS: un sistema de gestión de color. Proporciona transformaciones rápidas entre los perfiles ICC.
MIT - Mozjpeg - Encoder JPEG mejorado.
BSD-3-Clause - Nanovg: biblioteca de dibujo vectorial 2D anti -alias en la parte superior de OpenGL, para UI y visualizaciones.
Zlib - OpenGL: estándar de la industria para gráficos de alto rendimiento, con una vinculación de C nativa. Varias licencias.
- PLUTOVG - Una biblioteca de gráficos vectorial 2D independiente en C
MIT - Vela - ⛵ La biblioteca de decodificación de imagen pequeña y rápida que falta para humanos (no para máquinas)
MIT
Interfaz gráfica de usuario
Los kits de herramientas de widget, o las cosas destinadas a usarse de manera similar a ellos.
- GTK+ - Kit de herramientas de widget de plataforma cruzada.
LGPL-2.1-only - IUP - Otro kit de herramientas de widget multiplataforma.
MIT - Microui: pequeña biblioteca de interfaz de usuario de modo inmediato escrita en ANSI C.
MIT portátil - NAPPGUI - SDK profesional para construir aplicaciones de escritorio multiplataforma utilizando C.
MIT - Nuklear - Pequeño, C89, Kit de herramientas de widget de un solo cabezazo. Dominio público.
- TinyFileDialogs: biblioteca de un solo archivo para diálogos simples. Compatible con muchos otros kits de herramientas y OMS.
Zlib - TK - Kit de herramientas de widget básico. Parte de TCL/TK.
TCL - XForms Toolkit - Widget Toolkit diseñado para el sistema XWindow.
LGPL-2.1-only - LVGL: GUI incrustada con elementos gráficos fáciles de usar, imágenes hermosas y una huella de baja memoria.
MIT - Luigi: una biblioteca de GUI de un solo cabezazo de Barebones para Win32, X11 y Essence.
MIT
Chaveta
Implementaciones de funciones hash para fines no cristiptos. Los hashes criptográficos se pueden encontrar en la sección Crypto.
- CLHASH - Biblioteca implementando la función ridículamente rápida de hash de Clhash. Solo funciona en Intel Haswell o más nuevo.
Apache-2.0 - Highwayhash: función de hash de uso rápido, fuerte, que usa simd. También contiene una implementación de Siphash (aunque esto es más lento).
Apache-2.0 - Spookyhash: función hash extremadamente rápida.
BSD-3-Clause - T1HA - Hash rápido positivo: una función de hash portátil y rápida.
BSD-3-Clause - XXHASH - Algoritmo de hashing extremadamente rápido. Viene en variedades de 32 y 64 bits.
BSD-2-Clause
Aprendizaje, referencia y tutoriales
Recursos para aprender la programación C en general, o algo útil relacionado con la programación C.
Recursos de referencia en línea
- Puntos de referencia del asignador de memoria sin bloqueo
- C FAQ - Comp.Lang.C Preguntas frecuentes
- Comparación de implementaciones de biblioteca estándar C/POSIX para Linux
- Estándar de borrador C89
- Borrador del estándar C99
- Borrador del estándar C11
- Encontrar el mejor PRNG de simulación de 64 bits
- Estándar de codificación SEI Cert C
- Tinyc.game - Tiny C James puedes compilar y ejecutar ahora mismo http://tinyc.games
MIT
Recursos para principiantes en línea
- Un tutorial sobre punteros
- Un tutorial sobre makfiles portátiles
- Proyectos del edificio C
- C WikiBook de programación C
- Introducción a la 'diversión' c
- Aprendiendo C con GDB
- Memcpy vs Memmove
- Tutorial de programación de Posix Threads (un poco anticuado, pero la mayor parte sigue siendo válido y útil)
- El tutorial de programación GNU C (PDF en línea)
- Plantilla en c
- Lo que un programador C debe saber sobre la memoria
- CodeForwin: Aprenda programación C, tutoriales de estructuras de datos y ejercicios en línea
- Aprender C: Tutorial de C de Free y Abraz Interactive C
- Cómo programar una aventura de texto en c
Recursos intermedios en línea
- 8 trucos GDB que deberías saber
- 10 trucos C99
- Un recurso tutorial de MPI integral
- Construye tu propio editor de texto
- Bucear en concurrencia: probar mutexes y atomics
- Contado genérico de referencia C
- Cómo escribir C Portable C sin complicar su construcción
- Introducción a OpenMP (video)
- Tutorial OpenMP (para el estándar OpenMP3)
- Tutorial de MPI
- C -Escalada CRIBICIÓN A LA A LA A GRAN ESCALA C
- Algunas características desconocidas o trucos en el lenguaje C
- Lo que todo programador C debe saber sobre el comportamiento indefinido
Recursos avanzados en línea
- Metaprograma avanzado en c
- Un tutorial rápido sobre la implementación y la depuración de Malloc, Free, Calloc y RealLoc
- Bit Hacks Twiddling
- Implementación de punteros inteligentes para el lenguaje de programación C
- Funciones en línea en C
- Metaprogramación de estructuras de control personalizadas en C
- Resolver el problema de almacenamiento temporal de las macros C
- Algunas esquinas oscuras de C
- Escribir optimización eficiente del código C y C
- Compilación de tipos de datos algebraicos en C99 puro
Libros de referencia
- C: Un manual de referencia 5E - Libro de referencia completo para C99.
- C en un momento de la cáscara 2e - Libro de referencia conciso para C11.
- C Referencia de bolsillo - Libro de referencia conciso para C99.
- The C Programming Language 2E - Libro original sobre C, por sus creadores.
Libros para principiantes
- C Primer Plus 6E - Tutorial completo sobre programación en C11.
- Programación C: un enfoque moderno: excelente libro para aprender los conceptos básicos de C.
- Head First C - Libro de estilo 'Head -First' para aprender C.
Libros intermedios
- 21st siglo C - Buen segundo libro de programación sobre C.
- Comprensión y uso de punteros C: recurso en profundidad en punteros en C.
- ZEROMQ - Libro para usar Zeromq con C.
Libros avanzados
- Programación de expertos C: Secretos C profundos: mirada interesante, profunda y entretenida a las entrañas de C.
- Modern C, Tercera Edición: Cubre el estándar C23: en Modern C, tercera edición, aprenderá a aprovechar el potencial de C de C con las últimas herramientas y técnicas.
Lexing y análisis
Bibliotecas específicamente para análisis léxico (o lexing) y análisis sintáctico (o análisis).
- Flex - Generador de analizador léxico rápido.
BSD-2-Clause - GNU Bison: generador de analgésicos de uso general que convierte una gramática anotada sin contexto en una gama de analizadores.
GPL-3.0-or-later - Hammer - combinadores de analizador para formatos binarios.
GPL-2.0-only - MPC - Biblioteca de combinador de analizador.
BSD-2-Clause - Búho: un generador de analizador para idiomas visiblemente posteriores.
MIT - RE2C - Generador Lexer, que produce lexers rápidos, con acceso a sus partes internas. Dominio público.
Gestión de la memoria
Ya sea un malloc diferente y más rápido o una recolección de basura directa, cualquier cosa que ver con la gestión de la memoria C vive aquí.
- Boehm GC - Recolección de basura para C. Varias licencias, todas de código abierto.
- Jemalloc - Implementación de MALLOC que enfatiza la evitación de fragmentación y soporte de concurrencia escalable.
BSD-2-Clause - Asignador de memoria sin bloqueo: asignador de memoria eficiente.
GPL-3.0-or-later - libcsptr - consejos inteligentes para C.
MIT - RPMALLOC-ESCARGO DE MEMORIA RÁPIDO, alineado naturalmente en los límites de 32 bytes. Dominio público.
- TALLOC - Sistema de piscina de memoria jerárquico y con respecto a la referencia con destructores.
LGPL-3.0-or-later - TLSF - Asignator de ajuste segregado de dos niveles; Un asignador de memoria dinámico de uso general diseñado para cumplir con los requisitos en tiempo real. Implementación actualizada.
BSD-3-Clause
Multimedia
- Aubio - Biblioteca para análisis de audio y música.
GPL-3.0-or-later - FFMPEG - Solución completa y multiplataforma para grabar, convertir y transmitir audio y video.
LGPL-2.1-or-later - GStreamer - Marco para medios de audio y visuales.
LGPL-2.1-or-later - LibMPV - Biblioteca que juega música.
GPL-2.0-or-later - Libsndfile - Biblioteca para leer y escribir archivos de sonido. Admite muchos formatos.
LGPL-2.1-only o LGPL-3.0-only - Libsoundio-Biblioteca para la plataforma cruzada, entrada y salida de audio en tiempo real. Tiene una gama de back-end.
MIT - LibVLC: biblioteca multimedia completa para codificación de audio y video, decodificación, reproducción y transmisión.
GPL-2.0-only - LODEPNG - Decodificador y codificador de imagen PNG simple, que no requieren otras dependencias.
BSD-3-Clause - MINIMP3 - Biblioteca de encabezado único de decodificador MP3 ligero.
CC0-1.0 - Soundpipe - Biblioteca DSP de música liviana.
MIT
Redes e internet
Networking de bajo nivel y cosas relacionadas con Internet. Si desea algo más integral y de alto nivel, es posible que desee la sección de marcos web.
- ASNLC - Compilador de ASN.1 Especificaciones en el código fuente C.
BSD-2-Clause - CHL - C Biblioteca de hipertexto: una biblioteca para escribir aplicaciones web en C.
GPL-3.0-only - CZMQ: unión de alto nivel para ZEROMQ.
MPL-2.0 - Dyad.c - Biblioteca de redes livianas, fácil y asíncrona.
MIT - GNU ADNS-Biblioteca de clientes DNS de DNS avanzada, fácil de usar y con capacidad para asynch.
GPL-3.0-or-later - Gumbo -Parser - Biblioteca de análisis HTML5 en C99.
Apache-2.0 - H20 - Un servidor HTTP de nueva generación.
MIT - LLHTTP - HTTP Solicitud/respuesta de respuesta.
MIT - LDNS - Biblioteca para simplificar la programación DNS.
BSD-3-Clause - LibCurl - Biblioteca de transferencia de URL del lado del cliente, que admite una amplia gama de formatos.
curl - LibetPan - Biblioteca de correo que proporciona una red eficiente para IMAP, SMTP, POP y NNTP.
BSD-3-Clause - Libev - Otro bucle de eventos.
BSD-2-Clause - Libevent - Reemplazo de bucle de eventos para servidores de red.
BSD-3-Clause - Libhttpd: biblioteca para agregar capacidades básicas del servidor web a una aplicación o dispositivo integrado.
GPL-2.0-only - LibHV - Biblioteca de bucle de eventos de plataforma cruzada.
BSD-3-Clause - LIBIDN - Implementación de las especificaciones StringPrep, PunyCode e IDNA.
GPL-3.0-or-later - LibMicrohttpd: pequeña biblioteca que facilita la ejecución de un servidor HTTP como parte de otra aplicación.
LGPL-2.1-or-later - Libnl -
libnl es una colección de bibliotecas para provisar API al protocolo NetLink (reemplazo para IOCTL). Su uso principal es comunicarse con el kernel de Linux, para modificar el estado de red (interfaces, enrutamiento, etc.). LGPL-2.1-only - Libonion - Biblioteca del servidor HTTP, diseñada para ser fácil de usar.
Apache-2.0 - LibPCAP: la API proporciona a varios mecanismos de captura de paquetes del núcleo.
BSD-3-Clause - Libquickmail: la biblioteca destinada a dar a los desarrolladores una forma de enviar correo electrónico desde sus aplicaciones. Admite múltiples destinatarios y accesorios de múltiples a/cc/bcc sin límites de tamaño.
GPL-3.0-or-later - Libsagui - Biblioteca para servidores HTTP multiplataforma.
LGPL-3.0-or-later - Libuhttpd: una biblioteca de servidor HTTP muy flexible, liviana y totalmente asíncrona basada en Libev y HTTP -Parser para Linux incrustado.
MIT - LibVNCServer: bibliotecas multiplataforma para implementar la funcionalidad del servidor VNC y/o el cliente.
GPL-2.0-or-later - Libwebsock-Biblioteca de socket web fácil de usar y potente.
LGPL-3.0-only - Libzmq - Biblioteca Core ZEROMQ, una biblioteca de mensajería asíncrona de alto rendimiento, dirigida a su uso en aplicaciones distribuidas o concurrentes. C API (Backend C ++)
GPL-3.0-or-later con excepción de enlace estático - LWAN - servidor HTTP experimental, escalable y de alto rendimiento.
GPL-2.0-only - Mongoose - servidor web integrado.
GPL-2.0-only - MQTT -C - Un cliente MQTT C portátil para sistemas integrados y PC por igual.
MIT - NANOMSG - Implementación basada en C de ZEROMQ.
MIT - NNG - NANOMSG -NEXT -GENERACIÓN - Mensajes ligeros sin corredores.
MIT - OSIP - Implementación SIP sin dependencias adicionales.
LGPL-2.1-or-later - Silgy - Motor HTTP (s) asincrónico para proyectos C/C ++.
MIT - Socket99 - envoltura C99 para la API BSD Sockets.
ISC - TWITC - Mini Biblioteca para interactuar con la API de Twitter OAuth.
MIT - Uriparser - Strictly RFC 3986 Complante de la Biblioteca de análisis y manejo de URI.
BSD-3-Clause - WSlay - Biblioteca WebSocket. Implementa la versión 13 del protocolo WebSocket, como se describe en RFC 6455.
MIT - ZYRE-Marco para aplicaciones entre pares basadas en la proximidad.
MPL-2.0
Numérico
- Apofenia - Biblioteca para la informática estadística y científica.
GPL-2.0-only - ARB - Biblioteca para el intervalo de precisión arbitraria aritmética.
LGPL-2.1-or-later - Atlas: software de álgebra lineal sintonizado automáticamente.
BSD-3-Clause - CLBLAS - Funciones BLAS escritas en OpenCl.
Apache-2.0 - CMATHL - Biblioteca de matemáticas con una gran variedad de funciones matemáticas con CMAKE Built Support. Busca estar cerca de C89/C90 que cumple con la portabilidad.
MIT - Cuba - Biblioteca para integración numérica multidimensional.
LGPL-3.0-only - FFT-C-Una transformación de Fourier de alto rendimiento del FFTPack de Netlib; envuelto en un
MIT de formato fácil de usar - FFTW - La transformación más rápida de Fourier en Occidente; Una rutina de transformación de Fourier rápida altamente optimizada.
GPL-2.0-or-later - Flint - Biblioteca rápida para la teoría de números; Una biblioteca que respalda la aritmética con números, polinomios, series de potencia y matrices, entre otros.
GPL-2.0-or-later - GLPK - Kit de programación lineal GNU; Un paquete diseñado para resolver la programación lineal a gran escala, la programación de enteros mixtos y otros problemas relacionados.
GPL-3.0-or-later - GMP - Biblioteca aritmética de precisión de GNU Multple; 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
Perfil
- 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
Publicación por entregas
- 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
Otros
- 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]
Pruebas
- 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. Incorporado.
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
Herramientas
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
Utilidades
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.