From a5bb8e73bd3b31135ca4e713095f097c76398d11 Mon Sep 17 00:00:00 2001 From: Koz Ross Date: Wed, 21 Oct 2015 11:07:23 +1300 Subject: [PATCH] Multiple: see CHANGELOG.md --- CHANGELOG.md | 33 +++++++ README.md | 263 ++++++++++++++++++++++++--------------------------- TODO.md | 17 ++++ 3 files changed, 176 insertions(+), 137 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 TODO.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e128924 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog # + +## 21st October 2015 ## + +### General ### + +* Clarified licensing of awesome-c itself (no invariants, no cover). +* Clarified and fixed licenses of the listed works. + +### Removed ### + +* VXD-XML (freedom concerns). +* LibreSSL (freedom concerns). +* Netbeans (nonfree dependencies). +* ZeroMQ (unclear licensing). +* Neon (unclear licensing). +* pblSet (unclear licensing). +* CRlibm (unclear licensing). +* libroxml (unclear licensing). +* libimobiledevice (unclear licensing). +* SGLIB (unclear licensing). +* libRSVG (unclear licensing). +* Elementary (dead link). + +### Added ### + +* None in this version. + + + + + + diff --git a/README.md b/README.md index 993e846..c1ad610 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A curated list of C good stuff. This list contains *only* [free software][13] for code, and sellers who aren't evil for physical resources. -This is released under the GNU Free Documentation License - its text is provided in the LICENSE file. +This is released under the GNU Free Documentation License, without invariants or a cover - its text is provided in the LICENSE file. Contents ======== @@ -56,32 +56,31 @@ Build Systems These are tools to automate the building and testing of projects in C. -* [aimake][97] - A build tool designed to avoid complex configurations. [GNU GPL3][41]. -* [Autoconf][305] - An extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools. [GNU GPL3][41]. -* [Automake][306] - A tool for automatically generating ``Makefile.in`` files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools. [GNU GPL3][41]. +* [aimake][97] - A build tool designed to avoid complex configurations. [GNU GPL3][41] or later. +* [Autoconf][305] - An extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools. [GNU GPL3][41] or later. +* [Automake][306] - A tool for automatically generating ``Makefile.in`` files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools. [GNU GPL3][41] or later. * [Jam][334] - A build system, designed to be easier than make. Understands C build rules implicitly. [Jam License][335]. -* [Libtool][172] - A generic library support script. Part of the Autotools. [GNU GPL3][41]. +* [Libtool][172] - A generic library support script. Part of the Autotools. [GNU GPL3][41] or later. * [Meson][368] - An extremely fast, user-friendly build system. Based on Ninja. [Apache2.0][32]. Compilers ========= * [Clang][38] - A C compiler for LLVM. Supports C11. [NCSA][39]. -* [CompCert][269] - A fully-verified C compiler. Supports almost all of C89. [GNU GPL2.1][8]. -* [GCC][40] - Provides a C compiler as part of its compiler set. Supports C11 and OpenMP. [GNU GPL3][41]. +* [CompCert][269] - A fully-verified C compiler. Supports almost all of C89. [GNU GPL2.1][8] or later. +* [GCC][40] - Provides a C compiler as part of its compiler set. Supports C11 and OpenMP. [GNU GPL3][41] or later. * [PCC][74] - A venerable C compiler. Supports C99. [Various licenses][75], all free. -* [TCC][58] - Tiny C Compiler; a small, fast C compiler. Supports C99 (except complex types). [GNU GPL2.1][8]. +* [TCC][58] - Tiny C Compiler; a small, fast C compiler. Supports C99 (except complex types). [GNU LGPL2.1][15] only. Crypto ====== -* [GnuTLS][112] - A secure communication library, implementing SSL, TLS and DTLS. [GNU LGPL2.1][15]. -* [libgcrypt][142] - A general-purpose cryptography library, with a range of available ciphers. [GNU GPL2.1][8] and [GNU LGPL2.1][15]. -* [LibreSSL][143] - A BSD fork of OpenSSL. Various licenses, all semi-free. -* [OpenSSL][110] - Implementation of the SSL and TLS protocols, and also includes a cryptography library. [Dual Licensed under the OpenSSL License and the SSLeay License][111] +* [GnuTLS][112] - A secure communication library, implementing SSL, TLS and DTLS. [GNU LGPL2.1][15] or later. +* [libgcrypt][142] - A general-purpose cryptography library, with a range of available ciphers. [GNU LGPL2.1][15] or later (code), [GNU GPL2.1][8] or later (manual and tools). +* [OpenSSL][110] - Implementation of the SSL and TLS protocols, and also includes a cryptography library. [Dual Licensed under the OpenSSL License and the SSLeay License][111]. * [libsodium][198] - A modern and easy-to-use crypto library. [Expat][11]. * [libtomcrypt][299] - A fairly comprehensive, modular and portable cryptographic toolkit. Public domain. -* [mbed TLS][291] - Another crypto implementation for C. [GNU GPL2.1][8]. +* [mbed TLS][291] - Another crypto implementation for C. [Apache2.01][32]. Database ======== @@ -92,8 +91,8 @@ This lists databases and data stores with C APIs. * [LMDB][105] - An ultra-fast, ultra-compact key-value embedded data store. [newOpenLDAP][106]. * [MariaDB][25] - A robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL. [3-clause BSD][6]. * [mongo-c-driver][233] - A high-performance client library for [MongoDB][234]. [Apache2.0][32]. -* [PostgreSQL][121] - A powerful object-relational database system. [PostgreSQL licence][122] -* [recutils][360] - A set of tools and a C library for accessing human-editable, plaintext database files called recfiles. [GNU GPL3][41]. +* [PostgreSQL][121] - A powerful object-relational database system. [PostgreSQL licence][122]. +* [recutils][360] - A set of tools and a C library for accessing human-editable, plaintext database files called recfiles. [GNU GPL3][41] or later. * [Redis][51] - An advanced key-value store. [3-clause BSD][6]. * [sophia][244] - A modern, embeddable key-value database. [FreeBSD][24]. * [SQLite][22] - A self-contained, serverless, zero-configuration, transactional SQL database engine with a C interface. Public domain. @@ -102,24 +101,23 @@ This lists databases and data stores with C APIs. Documentation Generation ======================== -* [Cxref][317] - Generates documentation of C programs in either LaTeX, HTML, RTF or SGML. [GNU GPL2.1][8]. +* [Cxref][317] - Generates documentation of C programs in either LaTeX, HTML, RTF or SGML. [GNU GPL2.1][8] only. * [DocOnce][322] - A modestly-tagged markup language that can be used to generate a range of formats. [3-clause BSD][6]. * [Docutils][321] - A text-processing system to convert plain text documentation into a range of useful formats. Public domain. -* [Doxygen][318] - The de-facto standard tool for generating C documentation from annotated sources. Can generate a large range of formats. [GNU GPL2.1][8]. -* [GTK-Doc][319] - A tool for generating C documentation from annotated sources. Has support for Autotools. [GNU LGPL2.1][15]. +* [Doxygen][318] - The de-facto standard tool for generating C documentation from annotated sources. Can generate a large range of formats. [GNU GPL2.1][8] only. +* [GTK-Doc][319] - A tool for generating C documentation from annotated sources. Has support for the Autotools. [GNU GPL2.1][15] only (code), [GNU FDL1.1][375] only. Editors ======= -These are specifically fancier, IDE-type editors. If you want a programmer's text editor, and yours *doesn't* support C, I'd be quite surprised. +These are specifically fancier, IDE-type editors. If you want a programmer's text editor, look elsewhere. Besides, whatever choice you make most likely supports C anyway. -* [Anjuta DevStudio][42] - The GNOME IDE. [GNU GPL3][41]. -* [Code::Blocks][249] - An extensible, configurable IDE supporting C. [GNU GPL3][41]. -* [CodeLite][45] - A cross-platform IDE. [GNU GPL2.1][8]. +* [Anjuta DevStudio][42] - The GNOME IDE. [GNU GPL2.1][15] only. +* [Code::Blocks][249] - An extensible, configurable IDE supporting C. [GNU GPL3][41] only. +* [CodeLite][45] - A cross-platform IDE. [GNU GPL2.1][8] only. * [Eclipse][258] - An IDE written in Java. [EPL][259]. -* [Geany][43] - A very small and fast IDE. [GNU GPL2.1][8]. -* [KDevelop][44] - The KDE IDE. [GNU GPL2.1][8]. -* [NetBeans][260] - Another IDE written in Java. [GNU GPL2.1][8] or [CDDL][261]. +* [Geany][43] - A very small and fast IDE. [GNU GPL2.1][8] or later. +* [KDevelop][44] - The KDE IDE. [GNU GPL2.1][8] only. Environments ============ @@ -136,14 +134,13 @@ This section has big libraries that provide data structures and other stuff you * [APR][78] - Apache Portable Runtime; another library of cross-platform utility functions. [Apache2.0][32]. * [C Algorithms][88] - A collection of common algorithms and data structures for C. [ISC][61]. -* [CPL][308] - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit. [GNU GPL2.1][8]. +* [CPL][308] - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit. [GNU GPL2.1][8] only. * [EFL][119] - A large collection of useful data structures and functions. Various licenses, all free. -* [GLib][1] - A library of utility functions and structures, designed to be portable, efficient and powerful. [GNU LGPL3][5]. -* [GIO][2] - A modern and easy-to-use VFS API. [GNU LGPL3][5]. -* [GObject][3] - An object-oriented system and object model for C. [GNU LGPL3][5]. -* [libnih][93] - A lightweight library of C functions and structures. [GNU GPL2.1][8]. +* [GLib][1] - A library of utility functions and structures, designed to be portable, efficient and powerful. [GNU LGPL2.1][15] only. +* [GIO][2] - A modern and easy-to-use VFS API. [GNU LGPL2.1][15] only. +* [GObject][3] - An object-oriented system and object model for C. [GNU LGPL2.1][15] only. +* [libnih][93] - A lightweight library of C functions and structures. [GNU GPL2.1][8] only. * [libU][28] - A small library of basic utilities, including memory allocation, string manipulation and logging. [3-clause BSD][6]. -* [pblSet][346] - A large, portable collection of basic functions, data structures and utilities. [GNU LGPL2.1][15]. * [qlibc][277] - A simple and powerful C library, designed as a replacement for GLib while focusing on being small and light. [qLib license][278] (similar to [FreeBSD][24]). * [stb][114] - A range of single-file libraries for C. Public domain. @@ -155,11 +152,11 @@ Game Programming These are provided as examples of C game programming code. * [Corange][101] - A game engine in pure C. [FreeBSD][24]. -* [Darkplaces][369] - A modified version of the Quake2 engine. [GNU GPL2.1][8] or later. -* [ioquake3][107] - The Quake3 engine, freed at last. [GNU GPL2.1][8]. +* [Darkplaces][369] - A modified version of the Quake2 engine. [GNU GPL2.1][8] only. +* [ioquake3][107] - The Quake3 engine, freed at last. [GNU GPL2.1][8] only. * [Orx][370] - A portable, lightweight, plugin-based, data-driven, 2D-oriented game engine. [zlib][49]. -* [Quake][225] - The Quake engine. [GNU GPL2.1][8]. -* [Quake2][221] - The Quake2 engine. [GNU GPL2.1][8]. +* [Quake][225] - The Quake engine. [GNU GPL2.1][8] only. +* [Quake2][221] - The Quake2 engine. [GNU GPL2.1][8] only. * [Spearmint][371] - An engine designed for FPS games. [GNU GPL3][41] or later. ## Resources ## @@ -171,8 +168,8 @@ These are libraries of all sorts that are useful for game programming. * [CSFML][90] - A binding for [SFML][91] in C. [zlib][49]. * [FreeGLUT][99] - An alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts. [X11][100]. * [GLFW][98] - A multi-platform library for creating windows with OpenGL contexts. [zlib][49]. -* [libao][341] - A cross-platform audio library with a wide variety of outputs. [GNU GPL2.1][8]. -* [RetroArch][231] - The reference frontend for [libretro][232]. [GNU GPL3][41]. +* [libao][376] - A cross-platform audio library with a wide variety of outputs. [GNU GPL2.1][8] or later. +* [RetroArch][231] - The reference frontend for [libretro][232]. [GNU GPL3][41] only. * [SDL][50] - A cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. [zlib][49]. * [SDL2][301]- A a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL. This is the most current version. [zlib][49] @@ -180,20 +177,18 @@ Generic Programming =================== * [klib][76] - Small and lightweight implementations of common algorithms and data structures. [Expat][11]. -* [SGLIB][30] - Simple Generic Library; an implementation of a range of generic programming structures and idioms in C. [GNU GPL3][41]. Graphics ======== -* [Cogl][127] - A GPU graphics and utilities API. [GNU LGPL2.1][15]. -* [Clutter][126] - A UI library based on OpenGL. [GNU LGPL2.1][15]. +* [Cogl][127] - A GPU graphics and utilities API. [Expat][11] (dependent on [3-clause BSD][6] and possibly [LGPLv2.1][15] only libs). +* [Clutter][126] - A UI library based on OpenGL. [GNU LGPL2.1][15] only. * [heman][365] - A tiny library of image utilities dealing with height maps, normal maps, distance fields and the like. [Expat][11]. * [libcaca][366] - An ASCII renderer for terminal-based interfaces. [WTFPLv2][367]. * [libimagequant][300] - Small, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images. [FreeBSD][24]. * [libjpeg][192] - A library for reading and writing JPEG files. Free software license (check the source). * [libjpeg-turbo][193] - A faster library for reading and writing JPEG files. [Various licences][194]. -* [libRSVG][340] - A library to render SVG files using Cairo. [GNU LGPL2.1][15]. -* [libxmi][174] - A function library for rasterizing 2D vector graphics. [GNU GPL3][41]. +* [libxmi][174] - A function library for rasterizing 2D vector graphics. [GNU GPL3][41] or later. * [mozjpeg][200] - An improved JPEG encoder. [3-clause BSD][6]. * [OpenGL][147] - The industry standard for high-performance graphics, with a native C binding. [Various licenses][148]. @@ -203,11 +198,10 @@ Graphical User Interface These are specifically [widget toolkits][12]. -* [Elementary][17] - A widget toolkit. Part of the [EFL][18]. [GNU LGPL2.1][15]. -* [GTK+][14] - A cross-platform widget toolkit. [GNU LGPL2.1][15]. +* [GTK+][14] - A cross-platform widget toolkit. [GNU LGPL2.1][15] only. * [IUP][16] - Another cross-platform widget toolkit. [Expat][11]. * [Tk][19] - A basic widget toolkit. Part of Tcl/Tk. [Tcl/Tk License][20]. -* [XForms Toolkit][21] - A widget toolkit designed for the XWindow system. [GNU LGPL2.1][15]. +* [XForms Toolkit][21] - A widget toolkit designed for the XWindow system. [GNU LGPL2.1][15] only. JSON ======= @@ -215,7 +209,7 @@ JSON * [Jansson][53] - A C library for encoding, decoding and manipulating JSON. [Expat][11]. * [jsmn][120] - A minimalistic JSON parser. [Expat][11]. * [json-c][220] - A library for working with JSON. [Expat][11]. -* [WJElement][77] - Advanced JSON manipulation library, with support for JSON Schema. [GNU GPL3][41]. +* [WJElement][77] - Advanced JSON manipulation library, with support for JSON Schema. LGPL, any version. * [YAJL][60] - A fast C JSON streaming parser library. [ISC][61] @@ -313,8 +307,8 @@ Advanced Multimedia ========== -* [FFMPEG][63] - A complete, cross-platform solution to record, convert and stream audio and video. [GNU LGPL2.1][15], with some parts under [GNU GPL2.1][8]. -* [GStreamer][123] - A framework for audio and visual media. [GNU LGPL2.1][15]. +* [FFMPEG][63] - A complete, cross-platform solution to record, convert and stream audio and video. [GNU LGPL2.1][15] or later, with some parts under [GNU GPL2.1][8] or later. +* [GStreamer][123] - A framework for audio and visual media. [GNU LGPL2.1][15] only. * [lodepng][69] - A simple PNG image decoder and encoder, requiring no other dependencies. [3-clause BSD][6]. Networking and Internet @@ -322,57 +316,53 @@ Networking and Internet * [asnlc][138] - A compiler of ASN.1 specifications into C source code. [FreeBSD][24]. * [czmq][226] - A high-level binding for ZeroMQ. [MPL2.0][227] -* [GNU adns][155] - An advanced, easy-to-use, asynch-capable DNS client library and utilities. [GNU GPL3][41]. -* [GNU SASL][160] - An implementation of the Simple Authentication and Security Layer and a few common SASL mechanism. [GNU GPL3][41]. -* [GnuTLS][112] - A secure communication library, implementing SSL, TLS and DTLS. [GNU LGPL2.1][15]. +* [GNU adns][155] - An advanced, easy-to-use, asynch-capable DNS client library and utilities. [GNU GPL3][41] or later. +* [GNU SASL][160] - An implementation of the Simple Authentication and Security Layer and a few common SASL mechanism. [GNU GPL3][41] or later. +* [GnuTLS][112] - A secure communication library, implementing SSL, TLS and DTLS. [GNU LGPL2.1][15] or later. * [gumbo-parser][196] - An HTML5 parsing library in C99. [Apache2.0][32]. * [http-parser][197] - An HTTP request/response parser. [Expat][11]. -* [ldns][339] - A library to simplify DNS programming. [GNU LGPL2.1][15]. +* [ldns][339] - A library to simplify DNS programming. [3-clause BSD][6]. * [libcurl][65] - A client-side URL transfer library, supporting a wide range of formats. [curl license][66] * [LibEtPan][222] - A mail library providing an efficient network for IMAP, SMTP, POP and NNTP. [3-clause BSD][6]. * [libev][144] - Yet another event loop. [FreeBSD][24]. * [libevent][124] - An event loop replacement for network servers. [3-clause BSD][6]. -* [libgss][161] - Generic Security Service. [GNU GPL3][41]. -* [libhttpd][166] - A library to add basic web server capabilities to an application or embedded device. [GNU GPL3][41]. -* [libidn][164] - An implementation of the Stringprep, Punycode and IDNA specifications. [GNU LGPL2.1][15]. -* [libmicrohttpd][165] - A small C library that makes it easy to run an HTTP server as part of another application. [GNU LGPL2.1][15]. -* [libsoup][167] - A GNOME HTTP client/server library. Uses GObject. [GNU LGPL2.1][15]. -* [LibreSSL][143] - A BSD fork of OpenSSL. Various licenses, all semi-free. -* [lwan][199] - An experimental, scalable, high-performance HTTP server. [GNU GPL2.1][8]. +* [libgss][161] - Generic Security Service. [GNU GPL3][41] or later. +* [libhttpd][166] - A library to add basic web server capabilities to an application or embedded device. [GNU GPL2][41] only. +* [libidn][164] - An implementation of the Stringprep, Punycode and IDNA specifications. [GNU GPL3][41] or later. +* [libmicrohttpd][165] - A small C library that makes it easy to run an HTTP server as part of another application. [GNU LGPL2.1][15] or later. +* [libsoup][167] - A GNOME HTTP client/server library. Uses GObject. [GNU LGPL2.1][15] only. +* [lwan][199] - An experimental, scalable, high-performance HTTP server. [GNU GPL2.1][8] only. * [mihl][169] - A library for implementing an embedded HTTP server. [FreeBSD][24]. -* [mongoose][171] - Embedded web server for C. [GNU GPL2.1][8]. +* [mongoose][171] - Embedded web server for C. [GNU GPL2.1][8] only. * [nanomsg][139] - A C-based implementation of ZeroMQ. [Expat][11]. -* [neon][168] - An HTTP and WebDAV client library with a C interface. [GNU LGPL3][5]. * [onion][170] - HTTP server library, designed to be easy to use. [Apache2.0][32]. * [OpenSSL][110] - Implementation of the SSL and TLS protocols, and also includes a cryptography library. [Dual Licensed under the OpenSSL License and the SSLeay License][111] -* [oSip][179] - A SIP implementation in C without additional dependencies. [GNU GPL3][41]. +* [oSip][179] - A SIP implementation in C without additional dependencies. [GNU LGPLv2.1][15] or later. * [s2n][359] - A C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority. [Apache2.0][32]. -* [socket99][203] - A wrapper library for the BSD sockets API. -* [Tox][145] - A communication platform, designed to be a Skype-killer. [GNU GPL3][41]. -* [twitc][237] - A mini C library for interacting with the Twitter OAuth API. [GNU GPL3][41]. -* [ZeroMQ][52] - High-performance message passing networking library. Implemented in C++, but has a C interface. [GNU LGPL3][5]. +* [socket99][203] - A C99 wrapper for the BSD sockets API. [ISC][61]. +* [Tox][145] - A communication platform, designed to be a Skype-killer. [GNU GPL3][41] only. +* [twitc][237] - A mini C library for interacting with the Twitter OAuth API. [Expat][11]. Numerical ========= -* [apophenia][188] - A library for statistical and scientific computing. [GNU GPL2.1][8] with some [exceptions][189]. +* [apophenia][188] - A library for statistical and scientific computing. [GNU GPL2.1][8] only. * [ATLAS][137] - Automatically Tuned Linear Algebra Software. [3-clause BSD][6]. * [BLAS][135] - Basic Linear Algebra Subprograms; a set of routines that provide vector and matrix operations. [BLAS license][136] -* [CRlibm][268] - Correctly Rounded mathematical library; a modern implementation of a range of numeric routines. [GN LGPL3][5]. -* [Cuba][316] - A library for multidimensional numerical integration. [GNU LGPL3][5]. -* [FFTW][70] - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine. [GNU GPL2.1][8]. -* [FLINT][255] - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others. [GNU GPL2.1][8]. -* [GLPK][159] - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems. [GNU GPL3][41]. -* [GMP][79] - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. [GNU GPL2.1][8] and [GNU LGPL2.1][15]. -* [GNU MPC][175] - A library for complex number arithmetic. [GNU LGPL3][5]. -* [GNU MPFR][176] - A library for arbitrary-precision floating-point arithmetic. [GNU LGPL2.1][15]. -* [GNU MPRIA][177] - A portable mathematics library for multi-precision rational interval arithmetic. [GNU GPL3][41]. -* [GSL][47] - The GNU Scientific Library; a sophisticated numerical library. [GNU GPL3][41]. +* [Cuba][316] - A library for multidimensional numerical integration. [GNU LGPLv3][5] only. +* [FFTW][70] - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine. [GNU GPL2.1][8] or later. +* [FLINT][255] - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others. [GNU GPL2.1][8] or later. +* [GLPK][159] - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems. [GNU GPL3][41] or later. +* [GMP][79] - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. Dual-licensed [GNU GPL2.1][8] only and [GNU LGPLv3][5] only. +* [GNU MPC][175] - A library for complex number arithmetic. [GNU LGPL3][5] or later. +* [GNU MPFR][176] - A library for arbitrary-precision floating-point arithmetic. [GNU LGPL3][5] or later (most recent versions), [GNU LGPL2.1][15] or later (until version 2.4.x). +* [GNU MPRIA][177] - A portable mathematics library for multi-precision rational interval arithmetic. [GNU GPL3][41] or later. +* [GSL][47] - The GNU Scientific Library; a sophisticated numerical library. [GNU GPL3][41] only. * [KISS FFT][71] - A very simple fast Fourier transform library. [3-clause BSD][6]. * [LAPACKE][133] - A C interface to [LAPACK][134]. [3-clause BSD][6]. -* [PARI/GP][256] - A computer algebra system for number theory; includes a compiler to C. [GNU GPL3][41]. +* [PARI/GP][256] - A computer algebra system for number theory; includes a compiler to C. [GNU GPL2.1][8] or later. * [PETSc][282] - A suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations. [FreeBSD][24]. -* [SLEPc][283] - A software library for the solution of large, sparse eigenvalue problems on parallel computers. [GNU LGPL3][5]. +* [SLEPc][283] - A software library for the solution of large, sparse eigenvalue problems on parallel computers. [GNU LGPL3][5] only. * [Yeppp!][72] - Very fast, SIMD-optimized mathematical library. [3-clause BSD][6]. Parallel Programming @@ -385,9 +375,9 @@ Parallel Programming * [OpenMP][37] - A set of C pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable). * [OpenMPI][284] - A message passing interface implementation. [3-clause BSD][6]. * [PETSc][282] - A suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations. [FreeBSD][24]. -* [pth][180] - A portable implementation for non-preemptive priority-based scheduling for multiple threads of execution. [GNU GPL3][41]. +* [pth][180] - A portable implementation for non-preemptive priority-based scheduling for multiple threads of execution. [GNU GPL3][41] or later. * [pthreads][146] - The POSIX thread library. Standard (no license applicable). -* [SLEPc][283] - A software library for the solution of large, sparse eigenvalue problems on parallel computers. [GNU LGPL3][5]. +* [SLEPc][283] - A software library for the solution of large, sparse eigenvalue problems on parallel computers. [GNU LGPL3][5] only. * [TinyCThread][115] - A portable, small implementation of the C11 threads API. [zlib][49]. Regex @@ -396,7 +386,7 @@ Regex > "Some people, when confronted with a problem, think 'I know, I'll use regular expressions'. Now they have two problems." - Jamie Zawinski. * [PCRE][83] - An implementation of regexes identical to that of Perl 5. [3-clause BSD][6]. -* [SLRE][80] - Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax. [GNU GPL2.1][8]. +* [SLRE][80] - Super Light Regular Expression library; a very small implementation of a subset of Perl regex syntax. [GNU GPL2.1][8] only. * [TRE][82] - A POSIX-compliant, feature-full regex library. [FreeBSD][24]. * [T-Rex][81] - Another tiny regex library. [zlib][49]. @@ -416,7 +406,7 @@ This contains collections of small source code. If you want something big and in * [CCAN][103] - Modelled after Perl's CPAN, this is a big collection of C code that does stuff. The full list is [here][104]. Various licenses (all free software). * [clib][26] - Something of a package manager for C. Comes with a [bunch of libraries of its own][27]. [Expat][11]. -* [gnulib][46] - A collection of common GNU code. [GNU GPL3][41]. +* [gnulib][46] - A collection of common GNU code. Various licenses, all free. * [libdjb][292] - A collection of libraries doing various things. (Apparently) public domain. * [ulib][154] - Another collection of source code. [Expat][11]. @@ -426,17 +416,17 @@ Standard Libraries This contains standard C libraries. * [Bionic][4] - Google's C standard library, developed for Android. [3-clause BSD][6]. -* [dietlibc][9] - A C standard library designed for the smallest possible binaries. [GNU GPL2.1][8]. -* [glibc][57] - The GNU C Library; an implementation of the C standard library. [GNU LGPL3][5]. +* [dietlibc][9] - A C standard library designed for the smallest possible binaries. [GNU GPL2.1][8] only. +* [glibc][57] - The GNU C Library; an implementation of the C standard library. [GNU LGPL2.1][15] only. * [musl][10] - A standard C library, compatible with POSIX 2008 and C11. Designed for static linking. [Expat][11]. String Manipulation =================== -* [bstrlib][116] - The Better String Library. [3-clause BSD][6] or [GNU GPL2.1][8]. +* [bstrlib][116] - The Better String Library. Dual-licensed under [3-clause BSD][6] or [GNU GPL2.1][8] only. * [ICU][67] - International Components for Unicode; a library for Unicode support. [ICU license][68]. -* [libunistring][173] - A library for manipulating Unicode strings in C. [GNU LGPL3][5]. -* [libgiconv][163] - A text conversion library. [GNU LGPL2.1][8]. +* [libunistring][173] - A library for manipulating Unicode strings in C. [GNU LGPL3][5] only. +* [libgiconv][163] - A text conversion library. [GNU LGPL2.1][15] only (library), [GNU GPL3][41] only (*iconv* program). * [SDS][29] - Simple Dynamic Strings; a library for handling C strings in a simpler way, but one that is compatible with normal C string functions. Available via [clib][26]. [FreeBSD][24]. * [shoco][363] - A compressor for small text strings. [Expat][11]. * [smaz][363] - An efficient string compression library. [3-clause BSD][6]. @@ -445,11 +435,11 @@ Testing ======= * [CHEAT][84] - A very simple unit testing framework. [FreeBSD][24]. -* [Check][59] - A unit testing framework for C. [GNU LGPL2.1][15]. +* [Check][59] - A unit testing framework for C. [GNU LGPL2.1][15] only. * [CMock][297] - A mock/stub generator for C. [Expat][11]. * [cmocka][141] - A unit testing framework with support for mock objects. [Apache2.0][32]. * [Criterion][246] - A KISS, non-intrusive C test framework. [Expat][11]. -* [CUnit][94] - Another unit testing framework for C. [GNU LGPL2.1][15]. +* [CUnit][94] - Another unit testing framework for C. [GNU LGPL2.0][15] only. * [minunit][92] - Minimal unit testing framework for C. [Expat][11]. * [Unity][296] - A simple unit testing framework for C. [Expat][11]. @@ -460,47 +450,47 @@ While practically any decent programmer's text editor supports C, there are some ## Emacs ## -* [CEDET][250] - Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in. [GNU GPL2.1][8]. -* [Flycheck][149] - Modern syntax checking. For C, it can use either GCC or Clang as a back-end. [GNU GPL3][41]. -* [Yasnippet][150] - A template system, with C templates for common code snippets. [GNU GPL3][41]. +* [CEDET][250] - Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in. [GNU GPL3][41] or later. +* [Flycheck][149] - Modern syntax checking. For C, it can use either GCC or Clang as a back-end. [GNU GPL3][41] or later. +* [Yasnippet][150] - A template system, with C templates for common code snippets. [GNU GPL3][41] or later. ## Vim ## * [Syntastic][186] - Syntax checking and linting. [Do What The Fuck You Want To license][187]. -* [YouCompleteMe][151] - A code completion engine for Vim. [GNU GPL3][41]. +* [YouCompleteMe][151] - A code completion engine for Vim. [GNU GPL3][41] only. Tools ===== This is a list of useful programs to help you write and debug C code which are *not* editors, libraries or compilers. -* [adlint][344] - A static analyzer. Supports all of C89 and part of C99. [GNU GPL3][41]. -* [Artistic Style][314] - A fast and small automatic source code formatter that supports C. [GNU LGPL2.1][15]. +* [adlint][344] - A static analyzer. Supports all of C89 and part of C99. [GNU GPL3][41] or later. +* [Artistic Style][314] - A fast and small automatic source code formatter that supports C. [GNU LGPL3][5] only. * [address-sanitizer][288] - A fast memory error detector. [Apache2.0][32]. * [biicode][304] - A modern dependency manager for C. [Expat][11]. * [c][276] - Compile and execute C "scripts" in one go on the command line. Also has shebang support. [Expat][11]. -* [c2html][313] - Converts C source files to highlighted HTML. [GNU GPL2.1][8]. +* [c2html][313] - Converts C source files to highlighted HTML. [GNU GPL2.1][8] or later. * [c99sh][113] - Run C files using hash-bang. [FreeBSD][24]. * [CBMC][309] - C Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions. [Original BSD][310]. * [cdecl][348] - An online service to translate C declarations into English and vice versa. Public domain. -* [cinclude2dot][280] - Graphs include dependencies in a C project using Graphviz. [GNU GPL3][41]. -* [Complexity][307] - A tool for measuring the complexity of C source code. [GNU GPL3][41]. -* [DDD][320] - A graphical front-end for a range of command-line debuggers. [GNU GPL3][41]. -* [fab][323] - A build system that helps build optimally every time. [GNU GPL3][41]. -* [GDB][87] - The GNU Project debugger; a debugger for C. [GNU GPL3][41]. -* [Glade][328] - A RAD tool to enable quick development of GTK+ GUIs. [GNU LGPL2.1][15]. -* [GMSL][331] - GNU Make Standard Library; a collection of additional functionality for GNU Make. [GNU GPL3][41]. -* [GNU Global][330] - A source code tagging tool which works with C. [GNU GPL3][41]. -* [gprof][86] - A performance analysis tool. Part of GNU binutils. [GNU GPL3][41]. -* [Highlight][333] - Converts source code to formatted text with nice highlighting. [GNU GPL2.1][8]. +* [cinclude2dot][280] - Graphs include dependencies in a C project using Graphviz. Any GNU GPL version (due to underspecification in the file). +* [Complexity][307] - A tool for measuring the complexity of C source code. [GNU GPL3][41] or later. +* [DDD][320] - A graphical front-end for a range of command-line debuggers. [GNU GPL3][41] or later. +* [fab][323] - A build system that helps build optimally every time. [GNU GPL3][41] only. +* [GDB][87] - The GNU Project debugger; a debugger for C. [GNU GPL3][41] or later. +* [Glade][328] - A RAD tool to enable quick development of GTK+ GUIs. [GNU GPL2.1][8] only. +* [GMSL][331] - GNU Make Standard Library; a collection of additional functionality for GNU Make. [3-clause BSD][6]. +* [GNU Global][330] - A source code tagging tool which works with C. [GNU GPL3][41] only. +* [gprof][86] - A performance analysis tool. Part of GNU binutils. [GNU GPL3][41] or later. +* [Highlight][333] - Converts source code to formatted text with nice highlighting. [GNU GPL3][41] only. * [include-what-you-use][289] - Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it). [NCSA][39]. -* [indent][315] - Formats C source code automatically to make it easier to read. Also converts from one style of source to another. [GNU GPLv3][41]. -* [Make][324] - A tool which controls the generation of executables and other non-source files of a program. [GNU GPL3][41]. +* [indent][315] - Formats C source code automatically to make it easier to read. Also converts from one style of source to another. [GNU GPLv3][41] or later. +* [Make][324] - A tool which controls the generation of executables and other non-source files of a program. [GNU GPL3][41] or later (link to the GNU implementation). * [qo][274] - A build system that works without a separate config file. [Expat][11]. * [rr][95] - A debugger that records non-deterministic executions to allow for deterministic debugging. [FreeBSD][24]. -* [tup][326] - A very fast, file-based, cross-platform build system. [GNU GPL2.1][8]. +* [tup][326] - A very fast, file-based, cross-platform build system. [GNU GPL2.1][8] only. * [unifdef][290] - Removes #ifdef and #if directives with their delimited text without touching any other part of the file. [3-clause BSD][6] and [FreeBSD][24]. -* [Valgrind][85] - A range of dynamic analysis tools, including a leak checker. [GNU GPL2.1][8]. +* [Valgrind][85] - A range of dynamic analysis tools, including a leak checker. [GNU GPL2.1][8] only. Utilities ========= @@ -508,49 +498,48 @@ Utilities This is a 'catch-all' category for anything that doesn't fit well anywhere else. * [ApeTagLibs][345] - A C library for working with APEv2 tags. [Expat][11]. -* [bfd][157] - A library for manipulating binary object files. Part of GNU binutils. [GNU GPL2.1][8]. +* [bfd][157] - A library for manipulating binary object files. Part of GNU binutils. [GNU GPL3][41] or later. * [ccv][195] - C-based/Cached/Core Computer Vision library; modern computer vision. [3-clause BSD][6]. -* [cf4ocl][311] - The C Framework for OpenCL; a cross-platform object-oriented framework for developing and benchmarking [OpenCL][312] projects. [GNU LGPL3][5]. +* [cf4ocl][311] - The C Framework for OpenCL; a cross-platform object-oriented framework for developing and benchmarking [OpenCL][312] projects. [GNU LGPL3][5] only (library), [GNU GPL3][41] (other code). * [CommonMark][223] - A C implementation of the CommonMark spec. [Variety of licenses, all free][224]. * [CException][298] - A C implementation of exceptions. [Expat][11]. * [docopt.c][270] - A C implementation of a command-line option parser. [Expat][11]. * [dyncall][281] - Another foreign function interface library. [Expat][11]. -* [FANN][325] - Fast Artifical Neural Network library; an implementation of neural networks. [GNU GPL2.1][8]. -* [Firm][361] - A C library that provides a graph-based intermediate representation, optimizations and assembly code generation suitable for use in compilers. Comes with an example C front-end under the same license. [GNU GPL2.1][8]. -* [gjrand][327] - A library of random-number generation routines. [GNU GPL2.1][8]. -* [GNU FreeIPMI][158] - An in-band and out-of-band IPMI implementation. [GNU GPL3][41]. -* [GNU gperf][351] - A perfect hash function generator, given a list of strings. Outputs C code. [GNU GPL3][41]. -* [GNU Libffcall][162] - A collection of libraries for building foreign function interfaces. [GNU GPL3][41]. -* [hammer][356] - Parser combinators for binary formats. [GNU GPL2.1][8]. +* [FANN][325] - Fast Artifical Neural Network library; an implementation of neural networks. [GNU GPL2.1][8] only. +* [Firm][361] - A C library that provides a graph-based intermediate representation, optimizations and assembly code generation suitable for use in compilers. Comes with an example C front-end under the same license. [GNU LGPLv2.1][15] only. +* [gjrand][327] - A library of random-number generation routines. [GNU GPL2.1][8] or [GNU GPLv3][41] (user's choice). +* [GNU FreeIPMI][158] - An in-band and out-of-band IPMI implementation. [GNU GPL3][41] only. +* [GNU gperf][351] - A perfect hash function generator, given a list of strings. Outputs C code. [GNU GPL3][41] or later. +* [GNU Libffcall][162] - A collection of libraries for building foreign function interfaces. [GNU GPL3][41] or later. +* [hammer][356] - Parser combinators for binary formats. [GNU GPL2.1][8] only. * [Hans Boehm GC][125] - Garbage collection for C? Don't mind if I do! Various licenses, all free. * [huffandpuff][214] - A minimal Huffman encoder and decoder. Public domain. * [iniparser][336] - A parser for .ini files. [Expat][11]. * [jemalloc][293] - A malloc implementation that emphasizes avoidance of fragmentation and scalable concurrency support. [FreeBSD][24]. * [jwHash][350] - A fast hashtable implementation. [Apache2.0][32]. * [kdtree][337] - A simple library for working with KD-trees. [3-clause BSD][6]. -* [Kitsune][355] - An efficient, general-purpose framework for dynamic software updating. [GNU LGPL3][5]. -* [libavl][156] - A library containing a range of self-balancing binary trees. [GNU GPL2.1][8]. +* [Kitsune][355] - An efficient, general-purpose framework for dynamic software updating. [GNU LGPL3][5] or later. +* [libavl][156] - A library containing a range of self-balancing binary trees. [GNU GPL3][41] or later. * [libbson][235] - A BSON utility library. [Apache2.0][32]. * [libCello][96] - A library introducing higher-level programming to C. [3-clause BSD][6]. * [libcox][373] - A library which permits cross-platform system calls and standard utilities across different operating systems. [FreeBSD][24]. * [libffi][128] - A portable foreign-function interface library. [Expat][11]. -* [libgit2][108] - Pure C implementation of Git. [GNU GPL2 with a linking exception][109]. -* [libimobiledevice][354] - A cross-platform protocol library to communicate with iThings. [GNU GPL 2.1][8]. -* [libmpv][348] - A music-playing library. Compile with ``./waf configure --disable-cplayer --enable-libmpv-shared`` to not have the music player. [GNU GPL2.1][8]. -* [libnfc][332] - A platform-independent Near-Field Communication library. [GNU LGPL3][5]. +* [libgit2][108] - Pure C implementation of Git. [GNU GPL2 only, with a linking exception][109]. +* [libmpv][348] - A music-playing library. Compile with ``./waf configure --disable-cplayer --enable-libmpv-shared`` to not have the music player. [GNU GPL2.1][8] or later. +* [libnfc][332] - A platform-independent Near-Field Communication library. [GNU LGPL3][5] only. * [libPhenom][31] - An eventing framework for building high-scalability and high-performance systems. [Apache2.0][32]. * [libsoundio][372] - A library for cross-platform, real-time audio input and output. Has a range of back-ends. [Expat][11]. * [libucl][239] - A universal configuration library parser. [FreeBSD][24]. -* [libudp][302] - An implementation of the Universal Design Pattern in C. [GNU GPL3][41]. +* [libudp][302] - An implementation of the Universal Design Pattern in C. [GNU GPL3][41] or later. * [libuv][56] - Cross-platform asynchronous I/O. [Expat][11]. * [libYAML][341] - A YAML 1.1 parser and emitter. [Expat][11]. * [lzo][338] - A very fast data compression library. [GNU GPL2.1][8]. * [mpc][238] - A parser combinator library. [FreeBSD][24]. -* [ncurses][178] - Coloured terminal UI library. [GNU GPL3][41]. -* [nope.c][209] - A C-language-based, ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers). [GNU GPL2.1][8]. +* [ncurses][178] - Coloured terminal UI library. [GNU GPL3][41] or later. +* [nope.c][209] - A C-language-based, ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers). [GNU GPL2.1][8] only. * [pbc][236] - A protocol buffers library. [Expat][11]. * [rabbitmq-c][228] - A client library for [RabbitMQ][229]. [Expat][11]. -* [Ragel][54] - A DSL for state machines that compiles to C. [GNU GPL3][41]. +* [Ragel][54] - A DSL for state machines that compiles to C. [GNU GPL2.1][8] only. * [tcmalloc][294] - A fast, reduced-contention malloc implementation. Part of [gperftools][295]. [3-clause BSD][6]. * [uthash][117] - A hash table implementation, allowing existing structures to be stored in a hash table easily. [1-clause BSD][118] * [Viola][241] - A simplification of libCello. [Expat][11]. @@ -563,13 +552,11 @@ XML * [Expat][89] - A stream-oriented XML parser. [Expat][11]. * [ezXML][218] - An easy-to-use, fast and lightweight XML parser. [Expat][11]. -* [libroxml][219] - Another library for parsing XML. [GNU LGPL2.1][15]. * [libxml2][62] - A standards-compliant, portable XML parser. [Expat][11]. * [mini-xml][216] - A small XML reading and writing library. No dependencies aside from C standard library. [GNU LGPL2.1 with static linking exception][217]. -* [VTD-XML][215] - A very fast XML processing framework. [GNU GPL2.1][8]. -[1]: https://developer.gnome.org/glib/ +[1]: https://wiki.gnome.org/Projects/GLib [2]: https://developer.gnome.org/gio/ [3]: https://developer.gnome.org/gobject/stable/ [4]: https://github.com/android/platform_bionic @@ -675,7 +662,7 @@ XML [104]: http://ccodearchive.net/list.html [105]: http://symas.com/mdb/ [106]: http://directory.fsf.org/wiki/License:OpenLDAPv2.7 -[107]: http://ioquake3.org/ +[107]: https://github.com/ioquake/ioq3 [108]: https://libgit2.github.com/ [109]: https://github.com/libgit2/libgit2/blob/master/COPYING [110]: https://www.openssl.org/ @@ -694,8 +681,8 @@ XML [123]: http://gstreamer.freedesktop.org/ [124]: http://libevent.org/ [125]: http://www.hboehm.info/gc/ -[126]: http://blogs.gnome.org/clutter/about/ -[127]: http://www.cogl3d.org/ +[126]: https://blogs.gnome.org/clutter/get-it/ +[127]: https://github.com/rib/cogl-web/wiki [128]: https://github.com/atgreen/libffi [129]: https://github.com/protobuf-c/protobuf-c [130]: https://github.com/jmckaskill/c-capnproto @@ -787,7 +774,7 @@ XML [216]: http://www.msweet.org/projects.php?Z3 [217]: http://svn.msweet.org/mxml/trunk/COPYING [218]: http://ezxml.sourceforge.net/ -[219]: http://www.libroxml.net/ +[219]: https://github.com/blunderer/libroxml [220]: https://github.com/json-c/json-c/wiki [221]: https://github.com/id-Software/Quake-2 [222]: https://github.com/dinhviethoa/libetpan @@ -943,3 +930,5 @@ XML [372]: https://github.com/andrewrk/libsoundio [373]: http://libcox.net/ [374]: http://proprogramming.org/some-unknown-features-or-tricks-in-c-language/ +[375]: https://www.gnu.org/licenses/old-licenses/fdl-1.1.html +[376]: https://github.com/timonwong/libao diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..d923509 --- /dev/null +++ b/TODO.md @@ -0,0 +1,17 @@ +# To-do # + +These are not prioritized. + +* Clarify licensing on all unclear works: + + * CRlibm + * libimobiledevice + * libroxml + * libRSVG + * Neon + * pblSet + * SGLIB + * ZeroMQ + +* Incorporate Elementary OS stuff into list. +* Clean up heading styles in document.