A C Compendium
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md

README.md

The C Compendium

This repository is a compendium of C articles, books, libraries, source code, and tools. The original list was sourced from the blog post A List of C Resources.

Articles

Books

  • Expert C Programming - Written for experienced C programmers who want to quickly pick up some of the insights and techniques of experts and master the fine arts of ANSI C, this volume passes on the wisdom of a highly experienced C compiler writer and his colleagues to help programmers reach new heights, and avoid common software pitfalls along the way.
  • Learn C The Hard Way - Zed Shaw's book, a great resource to learn C
  • 21st Century C: C Tips from the New School - A book to bring old school C programmers into the 21st Century
  • The C Programming Language - The authors present the complete guide to ANSI standard C language programming.

Other Writings

  • Comp.Lang.C FAQ - This page is the top of an HTML version of the Usenet comp.lang.c Frequently Asked Questions list (also known as the "clc FAQ"). An FAQ list is a collection of questions commonly asked on Usenet, together with presumably definitive answers, provided in an attempt to keep repeated questions on the newsgroup down to a low background drone so that discussion can move on to more interesting matters.
  • ISO C Standard - The ISO C Standard

Libraries

  • Apophenia - Apophenia is an open statistical library for working with data sets and statistical or simulation models. It provides functions on the same level as those of the typical stats package (such as OLS, probit, or singular value decomposition) but gives the user more flexibility to be creative in model-building
  • Blosc - Blosc, an extremely fast, multi-threaded, meta-compressor library
  • GNU Scientific Library - "The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite."
  • Klib: a Generic Library in C - A macro heavy C library providing containers and other utilities. Avoids the use of void* for performance.
  • Mongoose - An embeddable C http server
  • Nanomsg - An evolution of ZeroMQ, a high performance brokerless message queue
  • SFMT - SIMD version of the Mersenne Twister random number generator. Floating point and integer versions
  • TinyCThread - Small, portable implementation of the C11 threads API
  • TurboPFor - Fast integer compression library. Includes random access without decompression.

Source Code

Projects to Study

  • Mongrel - Mongrel2 is an application, language, and network architecture agnostic web server that focuses on web applications using modern browser technologies.
  • LuaJIT - LuaJIT is a Just-In-Time Compiler (JIT) for the Lua programming language. Lua is a powerful, dynamic and light-weight programming language. It may be embedded or used as a general-purpose, stand-alone language. http://luajit.org/luajit.html
  • Redis - Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes, HyperLogLogs, Bitmaps. http://redis.io
  • SQLite - SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.

Tools

Compilers

  • clang - The goal of the Clang project is to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler.
  • icc - Intel C/C++ Compiler, also known as icc or icl, is a group of C and C++ compilers from Intel available for OS X, Linux, Windows and Intel-based Android devices
  • GCC - The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, Ada, and Go, as well as libraries for these languages (libstdc++, libgcj,...). GCC was originally written as the compiler for the GNU operating system.
  • MSVC - Microsoft Visual Studio Compiler
  • Pelles C - Pelles C is a complete development kit for Windows. It contains among other things an optimizing C compiler, a macro assembler, a linker, a resource compiler, a message compiler, a code signing utility, a make utility and an install builder.
  • TCC - The Tiny C Compiler

C99/C11 Compatibility

Build Systems

  • biicode - C/C++ dependency manager and build system
  • CMake - CMake is a family of tools designed to build, test and package software
  • GYP - GYP (Generate Your Projects) is a build automation tool. GYP is created by Google to generate native IDE project files (such as Visual Studio and Xcode) for building the Chromium web browser and is licensed as open source software using the BSD software license.
  • Make - GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files.
  • Ninja - Ninja is a small build system with a focus on speed. It differs from other build systems in two major respects: it is designed to have its input files generated by a higher-level build system, and it is designed to run builds as fast as possible
  • tup - Tup is a file-based build system for Linux, OSX, and Windows

Code Generation/Macros

  • Cog - Code generation tool
  • DynASM - DynASM is a Dynamic Assembler for code generation engines. DynASM has been developed primarily as a tool for LuaJIT, but might be useful for other projects, too. If you are writing a just-in-time compiler or need to generate code on the fly (e.g. for high-performance graphics or other CPU-intensive computations), DynASM might be just what you are looking for.
  • Jinja - Jinja2 is a modern and designer-friendly templating language for Python, modelled after Django’s templates
  • Warp - Alternative performance oriented C/C++ preprocessor implemented in D by Facebook

Lexer/Parsers

  • Lemon - The Lemon program is an LALR(1) parser generator. It takes a context free grammar and converts it into a subroutine that will parse a file using that grammar. Used in SQLite, implemented in two C files: lemon.c and lempar.c.
  • Ragel - Ragel compiles executable finite state machines from regular languages. Ragel targets C, C++, Obj-C, C#, D, Java, Go and Ruby. Ragel state machines can not only recognize byte sequences as regular expression machines do, but can also execute code at arbitrary points in the recognition of a regular language

IDE

  • CLion - JetBrains' C/C++ IDE
  • Eclipse CDT - The CDT Project provides a fully functional C and C++ Integrated Development Environment based on the Eclipse platform.
  • KDevelop - It is a feature-full, plugin extensible IDE for C/C++ and other programming languages.
  • NetBeans - Develop professional native applications in C, C++, and Fortran for a variety of platforms including Windows, Linux, OS X, and the Solaris operating system
  • YouCompleteMe - VIM code completion for C-family and other languages

Contribute

  • Fork and and submit a PR
  • Please keep contributions small and manageable

TODO

  • The main priority is adding content and properly categorizing