Skip to content

Instantly share code, notes, and snippets.

@jart
Created February 3, 2013 22:53
Show Gist options
  • Save jart/4704095 to your computer and use it in GitHub Desktop.
Save jart/4704095 to your computer and use it in GitHub Desktop.
Google Open Source Libraries for C++ Development
* http://google-opensource.blogspot.com/
* http://blog.0x1fff.com/2009/12/35-google-open-source-projects-that-you.html
* glog - An excellent C++ logging library.
* gtest - An excellent C++ testing library.
* gflags - The best way to make your C++ program accept command line flags, be documented, and configurable all in one fell swoop.
* breakpad - A good multi-platform crash reporting system for C++ apps.
* gperftools - Faster heap memory and a bunch of tools similar to valgrind. Not as well maintained as it should be.
* sparsehash - An awesome hash map container library for both performance and low memory use cases.
* cityhash - Perhaps the best non-crypto hashing algorithm. 2x faster than MurmurHash.
* re2 - A drop-in replacement for PCRE (Perl Compatible Regular Expressions) that doesn't introduce security and performance risks. Most other regex libraries will run potentially boundless operations which can have surprising performance impacts and allow attackers to perform denial of service attacks.
* protobuf - The most robust and efficient means of serializing data so applications written in many different languages can talk to each other. Much better than JSON and XML.
* LevelDB - The premier key-value store library written by Jeff and Sanjay (two of the most revered coders alive)
* supersonic - A modern query engine for column-oriented data that implements every optimization modern x86 CPUs have to offer.
* snappy - The best cheap compression algorithm library.
* libphonenumber - Parsing, formatting, and information about phone numbers (you should also get your hands on a NANPA thousands database from telcodata.us)
* google-url - The proper way to parse, canonicalize, and resolve URLs in C++.
* libv8 - Embed the best javascript interpreter in your C++ application. This is what chrome and node.js use.
* libjingle - Implementation of XMPP Jingle protocol for VoIP phone calls (Jingle is a SIP competitor that was arguably a step backwards)
* tesseract-ocr - The best optical character recognition.
* refr - Reranker Framework
** http://aclweb.org/anthology-new/E/E09/E09-1024.pdf
* libvpx - High quality audio/video codec.
* clearsilver - Extremely fast, mature, and language neutral HTML templates. Although it feels a bit old-school.
* cpp-btree - (Not recommended: lacks build system and seems to thrash compiler) A binary tree container library that isn't based on red & black trees with lower overhead and better cache performance.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment