reorganize other_libs by category

master
Sean Barrett ago%!(EXTRA string=10 years)
parent bb5917fa93
commit b9a29d9b5b
  1. 177
      docs/other_libs.md

@ -4,100 +4,99 @@ In addition to all of [my libraries](https://github.com/nothings/stb), there are
People have told me about quite a few of these. However, I haven't used most of these libraries People have told me about quite a few of these. However, I haven't used most of these libraries
and can't comment on their quality. (If you use them and aren't their author, feel and can't comment on their quality. (If you use them and aren't their author, feel
free to tell me about their quality.) _Newest additions are in italics._ free to tell me about their quality.
- **images** [jo_gif.cpp](http://www.jonolick.com/home/gif-writer): animated GIF writer (public domain) **Public domain single-file libraries are in bold.**
- **images** [gif.h](https://github.com/ginsweater/gif-h): animated GIF writer (public domain)
- **images** [tiny_jpeg.h](https://github.com/serge-rgb/TinyJPEG/blob/master/tiny_jpeg.h): JPEG encoder (public domain)
- **images** [miniexr](https://github.com/aras-p/miniexr): OpenEXR writer (public domain) category | library | license | # files | description
- **geometry** [nv_voronoi.h](http://www.icculus.org/~mordred/nvlib/): find voronoi regions on lattice w/ integer inputs (public domain) -------- | ------- | ------- | ------- | -----------
- **geometry** [sobol.h](https://github.com/Marc-B-Reynolds/Stand-alone-junk/blob/master/src/SFH/Sobol.h): sobol & stratified sampling sequences (public domain) 2D | [blendish](https://bitbucket.org/duangle/oui-blendish/src) | MIT | **1** | blender-style widget rendering
- **network** [zed_net](https://github.com/ZedZull/zed_net): cross-platform socket wrapper (public domain) 2D | [tigr](https://bitbucket.org/rmitton/tigr/src) | **public domain** | 2 | quick-n-dirty window text/graphics for Windows
- **strings**; **files & filenames** [DG_misc.h](https://github.com/DanielGibson/Snippets/): Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings (public domain) 2D | [noc_turtle](https://github.com/guillaumechereau/noc) | **public domain** | 2 | procedural graphics generator
- **strings** [utf8](https://github.com/sheredom/utf8.h): utf8 string library (public domain) 3D | [tinyobjloader](https://github.com/syoyo/tinyobjloader) | BSD | **1** | wavefront OBJ file loader
- **strings** [strpool.h](https://github.com/mattiasgustavsson/libs): string interning (public domain/MIT) 3D | [mikktspace](https://svn.blender.org/svnroot/bf-blender/trunk/blender/intern/mikktspace/) | zlib | 2 | compute tangent space for normal mapping
- **misc** [MakeID.h](http://www.humus.name/3D/MakeID.h): allocate/deallocate small integer IDs efficiently (public domain) AI | [micropather](http://www.grinninglizard.com/MicroPather/) | zlib | 2 | pathfinding with A*
- **misc** [gb_string.h](https://github.com/gingerBill/gb): dynamic strings for C (public domain) audio | [aw_ima.h](https://github.com/afterwise/aw-ima/blob/master/aw-ima.h) | MIT | **1** | IMA-ADPCM audio decoder
- **misc** [loguru](https://github.com/emilk/loguru): flexible logging for C++ (public domain) compression | [miniz.c](https://github.com/richgel999/miniz) | **public domain** | 2 | zlib compression,decompression, zip file, png writing
- **hardware** [EasyTab](https://github.com/ApoorvaJ/EasyTab): multi-platform tablet input (public domain) compression | [lz4](https://github.com/Cyan4973/lz4) | BSD | 2 | fast but larger LZ compression
compression | [fastlz](https://code.google.com/p/fastlz/source/browse/#svn%2Ftrunk) | MIT | 2 | fast but larger LZ compression
Not public domain: compression | [pithy](https://github.com/johnezang/pithy) | BSD | 2 | fast but larger LZ compression
crypto | [TweetNaCl](http://tweetnacl.cr.yp.to/software.html) | **public domain** | 2 | high-quality tiny cryptography library
- **images** [tinyexr](https://github.com/syoyo/tinyexr): EXR image read/write (BSD license) *uses miniz internally* data structures | [klib](http://attractivechaos.github.io/klib/) | MIT | 2 | many 2-file libs: hash, sort, b-tree, etc
- **images** [lodepng](http://lodev.org/lodepng/): PNG encoder/decoder (zlib license) data structures | [uthash](https://github.com/troydhanson/uthash) | BSD | 2 | several 1-header, 1-license-file libs: generic hash, list, etc
- **images** [nanoSVG](https://github.com/memononen/nanosvg): 1-file SVG parser; 1-file SVG rasterizer (zlib license) data structures | [PackedArray](https://github.com/gpakosz/PackedArray) | **WTFPLv2** | 2 | memory-efficient array of elements with non-pow2 bitcount
- **3D** [tinyobjloader](https://github.com/syoyo/tinyobjloader): wavefront OBJ file loader (BSD license) data structures | [minilibs](https://github.com/ccxvii/minilibs) | **public domain** | 2 | two-file binary tress (also regex, etc)
- **2D** [blendish](https://bitbucket.org/duangle/oui-blendish/src): blender-style widget rendering (MIT license) files&filenames|**[DG_misc.h](https://github.com/DanielGibson/Snippets/)**|**public domain**|**1**|Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
- **math** [mm_vec.h](https://github.com/vurtun/mmx): vector math (BSD license) files & filenames | [whereami](https://github.com/gpakosz/whereami) | **WTFPLv2** | 2 | get path/filename of executable or module
- _**math** [ShaderFastLibs](https://github.com/michaldrobot/ShaderFastLibs): approximate transcendental functions optimized for shaders (esp. GCN) (MIT license)_ geometry | **[nv_voronoi.h](http://www.icculus.org/~mordred/nvlib/)**|**public domain**|**1**|find voronoi regions on lattice w/ integer inputs
- **geometry** [sdf.h](https://github.com/memononen/SDF): compute signed-distance field from antialiased image (MIT license) geometry | **[sobol.h](https://github.com/Marc-B-Reynolds/Stand-alone-junk/blob/master/src/SFH/Sobol.h)**|**public domain**|**1**|sobol & stratified sampling sequences
- **geometry** [nanoflann](https://github.com/jlblancoc/nanoflann): build KD trees for point clouds (BSD license) geometry | [sdf.h](https://github.com/memononen/SDF) | MIT | **1** | compute signed-distance field from antialiased image
- **geometry** [jc_voronoi](https://github.com/JCash/voronoi): find voronoi regions on float/double data (MIT license) geometry | [nanoflann](https://github.com/jlblancoc/nanoflann) | BSD | **1** | build KD trees for point clouds
- **geometry** [par_msquares](https://github.com/prideout/par): convert (binarized) image to triangles (MIT license) geometry | [jc_voronoi](https://github.com/JCash/voronoi) | MIT | **1** | find voronoi regions on float/double data
- **geometry** [tk_objfile](https://github.com/joeld42/tk_objfile): OBJ file loader (MIT license) geometry | [par_msquares](https://github.com/prideout/par) | MIT | **1** | convert (binarized) image to triangles
- **geometry** [par_shapes](http://github.prideout.net/shapes/): generate various 3d geometric shapes (MIT license) geometry | [tk_objfile](https://github.com/joeld42/tk_objfile) | | **1** | OBJ file loader
- **network** [mm_web.h](https://github.com/vurtun/mmx): lightweight webserver, fork of webby (BSD license) geometry | [par_shapes](http://github.prideout.net/shapes/) | MIT | **1** | generate various 3d geometric shapes
- **network** [par_easycurl.h](https://github.com/prideout/par): curl wrapper (MIT license) geometry | [Tomas Akenine-Moller snippets](http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/code/) | **public domain** | 2 | various 3D intersection calculations, not lib-ified
- **audio** [aw_ima.h](https://github.com/afterwise/aw-ima/blob/master/aw-ima.h): IMA-ADPCM audio decoder (MIT license) geometry | [Clipper](http://www.angusj.com/delphi/clipper.php) | Boost | 2 | line & polygon clipping & offsetting
- **multithreading** [mm_sched.h](https://github.com/vurtun/mmx): cross-platform multithreaded task scheduler (zlib license) geometry | [PolyPartition](https://github.com/ivanfratric/polypartition) | MIT | 2 | polygon triangulation, partitioning
- **parsing** [SLRE](https://github.com/cesanta/slre): regular expression matcher (GPL v2) hardware| **[EasyTab](https://github.com/ApoorvaJ/EasyTab)**|**public domain**|**1**|multi-platform tablet input
- **parsing** [PicoJSON](https://github.com/kazuho/picojson): JSON parse/serializer for C++ (BSD license) images| **[jo_gif.cpp](http://www.jonolick.com/home/gif-writer)**|**public domain**|**1**|animated GIF writer
- **parsing** [mm_json.h](https://github.com/vurtun/mmx): JSON parser (zlib license) images| **[gif.h](https://github.com/ginsweater/gif-h)**|**public domain**|**1**|animated GIF writer
- **parsing** [mm_lexer.h](https://github.com/vurtun/mmx): C-esque language lexer (zlib license) images| **[tiny_jpeg.h](https://github.com/serge-rgb/TinyJPEG/blob/master/tiny_jpeg.h)**|**public domain**|**1**|JPEG encoder
- **tests** [utest](https://github.com/evolutional/utest): unit testing (MIT license) images| **[miniexr](https://github.com/aras-p/miniexr)**|**public domain**|**1**|OpenEXR writer
- **tests** [catch](https://github.com/philsquared/Catch): unit testing (Boost license) images | [tinyexr](https://github.com/syoyo/tinyexr) | BSD | **1** | EXR image read/write, uses miniz internally
- **tests** [SPUT](http://www.lingua-systems.com/unit-testing/): unit testing (BSD license) images | [lodepng](http://lodev.org/lodepng/) | zlib | **1** | PNG encoder/decoder
- **misc** [lualite](https://github.com/janezz55/lualite/): generate lua bindings in C++ (MIT license) images | [nanoSVG](https://github.com/memononen/nanosvg) | zlib | **1** | 1-file SVG parser; 1-file SVG rasterizer
- **misc** [tinyformat](https://github.com/c42f/tinyformat): C++ typesafe printf (Boost license) images | [picopng.cpp](http://lodev.org/lodepng/picopng.cpp) | zlib | 2 | tiny PNG loader
images | [jpeg-compressor](https://github.com/richgel999/jpeg-compressor) | **public domain** | 2 | 2-file jpeg compress, 2-file jpeg decompress
There are some that have a source file and require a separate header file (which they may math | [mm_vec.h](https://github.com/vurtun/mmx) | BSD | **1** | SIMD vector math
not even supply). That's twice as many files, and we at nothings/stb cannot condone math | [ShaderFastLibs](https://github.com/michaldrobot/ShaderFastLibs) | MIT | **1** | approximate transcendental functions optimized for shaders (esp. GCN)
this! But you might like them anyway: multithreading | [mm_sched.h](https://github.com/vurtun/mmx) | zlib | **1** | cross-platform multithreaded task scheduler
network | **[zed_net](https://github.com/ZedZull/zed_net)**|**public domain**|**1**|cross-platform socket wrapper
- **images** [picopng.cpp](http://lodev.org/lodepng/picopng.cpp): tiny PNG loader (zlib license) network | [mm_web.h](https://github.com/vurtun/mmx) | BSD | **1** | lightweight webserver, fork of webby
- **images** [jpeg-compressor](https://github.com/richgel999/jpeg-compressor): 2-file jpeg compress, 2-file jpeg decompress (public domain) network | [par_easycurl.h](https://github.com/prideout/par) | MIT | **1** | curl wrapper
- **3D** [mikktspace](https://svn.blender.org/svnroot/bf-blender/trunk/blender/intern/mikktspace/): compute tangent space for normal mapping (zlib) network | [yocto](https://github.com/tom-seddon/yhs) | **public domain** | 2 | non-production-use http server
- **2D** [tigr](https://bitbucket.org/rmitton/tigr/src): quick-n-dirty window text/graphics for Windows (public domain) network | [happyhttp](http://scumways.com/happyhttp/happyhttp.html) | zlib | 2 | http client requests
- **2D** [noc_turtle](https://github.com/guillaumechereau/noc): procedural graphics generator (public domain) network | [mongoose](https://github.com/cesanta/mongoose) | GPLv2 | 2 | http server
- **geometry** [Tomas Akenine-Moller snippets](http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/code/): various 3D intersection calculations, not lib-ified (public domain) network | [LUrlParser](https://github.com/corporateshark/LUrlParser) | MIT | 2 | lightweight URL & URI parser RFC 1738, RFC 3986
- **geometry** [Clipper](http://www.angusj.com/delphi/clipper.php): line & polygon clipping & offsetting (Boost license) parsing | [SLRE](https://github.com/cesanta/slre) | GPLv2 | **1** | regular expression matcher
- **geometry** [PolyPartition](https://github.com/ivanfratric/polypartition): polygon triangulation, partitioning (MIT license) parsing | [PicoJSON](https://github.com/kazuho/picojson) | BSD | **1** | JSON parse/serializer for C++
- **network** [yocto](https://github.com/tom-seddon/yhs): non-production-use http server (public domain) parsing | [mm_json.h](https://github.com/vurtun/mmx) | zlib | **1** | JSON parser
- **network** [happyhttp](http://scumways.com/happyhttp/happyhttp.html): http client requests (zlib license) parsing | [mm_lexer.h](https://github.com/vurtun/mmx) | zlib | **1** | C-esque language lexer
- **network** [mongoose](https://github.com/cesanta/mongoose): http server (GPL v2) parsing | [json.h](https://github.com/sheredom/json.h) | **public domain** | 2 | JSON parser
- _**network** [LUrlParser](https://github.com/corporateshark/LUrlParser): lightweight URL & URI parser RFC 1738, RFC 3986 (MIT license)_ parsing | [jzon.h](https://github.com/Zguy/Jzon) | MIT | 2 | JSON parser, C++
- **crypto** [TweetNaCl](http://tweetnacl.cr.yp.to/software.html): high-quality tiny cryptography library (public domain) parsing | [minilibs](https://github.com/ccxvii/minilibs) | **public domain** | 2 | two-file regex (also binary tree, etc)
- **AI** [micropather](http://www.grinninglizard.com/MicroPather/): pathfinding with A* (zlib license) profiling | [Remotery](https://github.com/Celtoys/Remotery) | Apache 2.0 | 2 | CPU/GPU profiler Win/Mac/Linux, using web browser for viewer
- **compression** [miniz.c](https://github.com/richgel999/miniz): zlib compression,decompression, zip file, png writing (public domain) profiling | [MicroProfile](https://bitbucket.org/jonasmeyer/microprofile) | **unlicense** | 2-4 | CPU (and GPU?) profiler, 1-3 header files, uses miniz internally
- **compression** [lz4](https://github.com/Cyan4973/lz4): fast but larger LZ compression (BSD license) scripting | [lualite](https://github.com/janezz55/lualite/) | MIT | **1** | generate lua bindings in C++
- **compression** [fastlz](https://code.google.com/p/fastlz/source/browse/#svn%2Ftrunk): fast but larger LZ compression (MIT license) strings | **[DG_misc.h](https://github.com/DanielGibson/Snippets/)**|**public domain**|**1**|Daniel Gibson's stb.h-esque cross-platform helpers: path/file, strings
- **compression** [pithy](https://github.com/johnezang/pithy): fast but larger LZ compression (BSD license) strings | **[utf8](https://github.com/sheredom/utf8.h)**|**public domain**|**1**|utf8 string library
- **profiling** [Remotery](https://github.com/Celtoys/Remotery): CPU/GPU profiler Win/Mac/Linux, using web browser for viewer (Apache 2.0 license) strings | **[strpool.h](https://github.com/mattiasgustavsson/libs)**|**public domain**/MIT|string interning
- **profiling** [MicroProfile](https://bitbucket.org/jonasmeyer/microprofile): CPU (and GPU?) profiler, 1-3 header files (unlicense) *uses miniz internally* strings | [dfa](http://bjoern.hoehrmann.de/utf-8/decoder/dfa/) | MIT | 2 | fast utf8 decoder
- **parsing** [json.h](https://github.com/sheredom/json.h): JSON parser (public domain) strings | **[gb_string.h](https://github.com/gingerBill/gb)**|**public domain**|**1**|dynamic strings for C
- **parsing** [jzon.h](https://github.com/Zguy/Jzon): JSON parser, C++ (MIT license) tests | [utest](https://github.com/evolutional/utest) | MIT | **1** | unit testing
- **strings** [dfa](http://bjoern.hoehrmann.de/utf-8/decoder/dfa/): fast utf8 decoder (MIT license) tests | [catch](https://github.com/philsquared/Catch) | Boost | **1** | unit testing
- **data structures** [klib](http://attractivechaos.github.io/klib/): many 2-file libs: hash, sort, b-tree, etc (MIT license) tests | [SPUT](http://www.lingua-systems.com/unit-testing/) | BSD | **1** | unit testing
- **data structures** [uthash](https://github.com/troydhanson/uthash): several 1-header, 1-license-file libs: generic hash, list, etc (BSD license) tests | [pempek_assert.cpp](https://github.com/gpakosz/Assert/tree/master/src) | **WTFPLv2** | 2 | flexible assertions in C++
- **data structures** [PackedArray](https://github.com/gpakosz/PackedArray): memory-efficient array of elements with non-pow2 bitcount (WTFPL v2 license) user interface|[dear imgui](https://github.com/ocornut/imgui)|MIT|_many_|an immediate-mode GUI formerly named "ImGui"
- **data structures**; **algorithms** [minilibs](https://github.com/ccxvii/minilibs): two-file regex, binary tree (public domain) misc | **[MakeID.h](http://www.humus.name/3D/MakeID.h)**|**public domain**|**1**|allocate/deallocate small integer IDs efficiently
- **files & filenames** [whereami](https://github.com/gpakosz/whereami): get path/filename of executable or module (WTFPL v2 license) misc | **[loguru](https://github.com/emilk/loguru)**|**public domain**|**1**|flexible logging for C++
- **misc** [dbgtools](https://github.com/wc-duck/dbgtools): cross-platform debug util libraries (zlib license) misc | [tinyformat](https://github.com/c42f/tinyformat) | Boost | **1** | C++ typesafe printf
- **misc** [stmr](https://github.com/wooorm/stmr.c): extract English word stems (MIT license) misc | [dbgtools](https://github.com/wc-duck/dbgtools) | zlib | 2 | cross-platform debug util libraries
- **misc** [levenshtein](https://github.com/wooorm/levenshtein.c): compute edit distance between two strings (MIT license) misc | [stmr](https://github.com/wooorm/stmr.c) | MIT | 2 | extract English word stems
- **tests** [pempek_assert.cpp](https://github.com/gpakosz/Assert/tree/master/src): flexible assertions in C++ (WTFPL v2 license) misc | [levenshtein](https://github.com/wooorm/levenshtein.c) | MIT | 2 | compute edit distance between two strings
There is also these XML libraries, but if you're using XML, shame on you:
There are also these XML libraries, but if you're using XML, shame on you:
- **parsing** [tinyxml2](https://github.com/leethomason/tinyxml2): XML (zlib license)
- **parsing** [pugixml](http://pugixml.org/): XML (MIT license) - parsing: [tinyxml2](https://github.com/leethomason/tinyxml2): XML
- parsing: [pugixml](http://pugixml.org/): XML (MIT license)
There are some libraries that are just _so_ awesome that even though they use more There are some libraries that are just _so_ awesome that even though they use more
than two files we're going to give them special dispensation to appear in their own than two files we're going to give them special dispensation to appear in their own
little list here. If you're a crazy purist, be warned, but otherwise, enjoy! little list here. If you're a crazy purist, be warned, but otherwise, enjoy!
- **user interface** [dear imgui](https://github.com/ocornut/imgui): an immediate-mode GUI ("imgui") named "ImGui" (MIT license)
Also you might be interested in other related, but different lists: Also you might be interested in other related, but different lists:
- [clib](https://github.com/clibs/clib/wiki/Packages): list of (mostly) small single C functions (licenses not listed) - [clib](https://github.com/clibs/clib/wiki/Packages): list of (mostly) small single C functions (licenses not listed)

Loading…
Cancel
Save