{"id":13731529,"url":"https://github.com/r-lyeh-archived/bundle","last_synced_at":"2025-04-29T20:59:40.075Z","repository":{"id":16770199,"uuid":"19528279","full_name":"r-lyeh-archived/bundle","owner":"r-lyeh-archived","description":":package: Bundle, an embeddable compression library: DEFLATE, LZMA, LZIP, BZIP2, ZPAQ, LZ4, ZSTD, BROTLI, BSC, CSC, BCM, MCM, ZMOLLY, ZLING, TANGELO, SHRINKER, CRUSH, LZJB and SHOCO streams in a ZIP file (C++03)(C++11)","archived":false,"fork":false,"pushed_at":"2017-10-07T13:55:12.000Z","size":15524,"stargazers_count":664,"open_issues_count":5,"forks_count":88,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-04-29T20:59:34.016Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"zlib","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/r-lyeh-archived.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-05-07T09:16:27.000Z","updated_at":"2025-04-26T12:10:38.000Z","dependencies_parsed_at":"2022-07-14T08:09:38.717Z","dependency_job_id":null,"html_url":"https://github.com/r-lyeh-archived/bundle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh-archived%2Fbundle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh-archived%2Fbundle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh-archived%2Fbundle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/r-lyeh-archived%2Fbundle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/r-lyeh-archived","download_url":"https://codeload.github.com/r-lyeh-archived/bundle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251582924,"owners_count":21612742,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T02:01:32.076Z","updated_at":"2025-04-29T20:59:40.063Z","avatar_url":"https://github.com/r-lyeh-archived.png","language":"C++","readme":"# bundle :package: \u003ca href=\"https://travis-ci.org/r-lyeh/bundle\"\u003e\u003cimg src=\"https://api.travis-ci.org/r-lyeh/bundle.svg?branch=master\" align=\"right\" /\u003e\u003c/a\u003e\n\nBundle is an embeddable compression library that supports 23 compression algorithms and 2 archive formats. \n\nDistributed in two files.\n\n### Features\n- [x] Archive support: .bun, .zip\n- [x] Stream support: DEFLATE, LZMA, LZIP, ZPAQ, LZ4, ZSTD, BROTLI, BSC, CSC, BCM, MCM, ZMOLLY, ZLING, TANGELO, SHRINKER, CRUSH, LZJB, BZIP2 and SHOCO \n- [x] Optimized for highest compression ratios on each compressor, where possible.\n- [x] Optimized for fastest decompression times on each decompressor, where possible.\n- [x] Configurable, redistributable, self-contained, amalgamated and cross-platform (C++03).\n- [x] Optional benchmark infrastructure (C++11).\n- [x] ZLIB/LibPNG licensed.\n\n### Bundle stream format\n```c++\n[0x00  ...]          Optional zero padding (N bits)\n[0x70 0x??]          Header (8 bits). De/compression algorithm (8 bits)\n                     enum { RAW, SHOCO, LZ4F, MINIZ, LZIP, LZMA20, ZPAQ, LZ4,      //  0..7\n                            BROTLI9, ZSTD, LZMA25, BSC, BROTLI11, SHRINKER, CSC20, //  7..14\n                            ZSTDF, BCM, ZLING, MCM, TANGELO, ZMOLLY, CRUSH, LZJB,  // 15..22\n                            BZIP2                                                  // 23..\n                     };\n[vle_unpacked_size]  Unpacked size of the stream (N bytes). Data is stored in a variable\n                     length encoding value, where bytes are just shifted and added into a\n                     big accumulator until MSB is found.\n[vle_packed_size]    Packed size of the stream (N bytes). Data is stored in a variable\n                     length encoding value, where bytes are just shifted and added into a\n                     big accumulator until MSB is found.\n[bitstream]          Compressed bitstream (N bytes). As returned by compressor.\n                     If possible, header-less bitstreams are preferred.\n```\n\n### Bundle .bun archive format\n```c++\n- Files/datas are packed into streams by using any compression method (see above)\n- Streams are archived into a standard ZIP file:\n  - ZIP entry compression is (0) for packed streams and (1-9) for unpacked streams.\n  - ZIP entry comment is a serialized JSON of (file) meta-datas (@todo).\n- Note: you can mix streams of different algorithms into the very same ZIP archive.\n```\n\n### Showcase\n```c++\n#include \u003ccassert\u003e\n#include \"bundle.h\"\n\nint main() {\n    using namespace bundle;\n    using namespace std;\n\n    // 23 mb dataset\n    string original( \"There's a lady who's sure all that glitters is gold\" );\n    for (int i = 0; i \u003c 18; ++i) original += original + string( i + 1, 32 + i );\n\n    // pack, unpack \u0026 verify all encoders\n    vector\u003cunsigned\u003e libs { \n        RAW, SHOCO, LZ4F, MINIZ, LZIP, LZMA20,\n        ZPAQ, LZ4, BROTLI9, ZSTD, LZMA25,\n        BSC, BROTLI11, SHRINKER, CSC20, BCM,\n        ZLING, MCM, TANGELO, ZMOLLY, CRUSH, LZJB\n    };\n    for( auto \u0026lib : libs ) {\n        string packed = pack(lib, original);\n        string unpacked = unpack(packed);\n        cout \u003c\u003c original.size() \u003c\u003c \" -\u003e \" \u003c\u003c packed.size() \u003c\u003c \" bytes (\" \u003c\u003c name_of(lib) \u003c\u003c \")\" \u003c\u003c endl;\n        assert( original == unpacked );\n    }\n\n    cout \u003c\u003c \"All ok.\" \u003c\u003c endl;\n}\n```\n\n### On choosing compressors (on a regular basis)\n|Rank|Compression ratio      |Fastest compressors    |Fastest decompressors  |Average speed          |Memory efficiency|\n|---:|:----------------------|:----------------------|:----------------------|:----------------------|:----------------|\n| 1st|91.15% ZPAQ            |958.18MB/s RAW         |2231.20MB/s RAW        |1340.63MB/s RAW        |tbd\n| 2nd|90.71% MCM             |358.41MB/s LZ4F        |993.68MB/s LZ4         |508.50MB/s LZ4F        |tbd\n| 3rd|90.02% TANGELO         |240.87MB/s SHRINKER    |874.83MB/s LZ4F        |334.57MB/s SHRINKER    |tbd\n| 4th|88.31% BSC             |223.28MB/s LZJB        |547.62MB/s SHRINKER    |267.57MB/s LZJB        |tbd\n| 5th|87.74% LZMA25          |210.74MB/s ZSTDF       |382.52MB/s MINIZ       |246.66MB/s ZSTDF       |tbd\n| 6th|87.74% LZIP            |159.59MB/s SHOCO       |380.39MB/s ZSTD        |209.32MB/s SHOCO       |tbd\n| 7th|87.63% BROTLI11        |40.19MB/s ZLING        |333.76MB/s LZJB        |65.40MB/s ZLING        |tbd\n| 8th|87.50% CSC20           |33.67MB/s CRUSH        |304.06MB/s SHOCO       |60.29MB/s CRUSH        |tbd\n| 9th|87.15% BCM             |13.73MB/s ZSTD         |297.34MB/s ZSTDF       |26.51MB/s ZSTD         |tbd\n|10th|86.44% ZMOLLY          |09.00MB/s BSC          |287.83MB/s CRUSH       |13.44MB/s BZIP2        |tbd\n|11th|86.17% LZMA20          |08.51MB/s BZIP2        |287.58MB/s BROTLI9     |11.51MB/s BROTLI9      |tbd\n|12th|86.05% BROTLI9         |06.77MB/s ZMOLLY       |246.88MB/s BROTLI11    |10.78MB/s BSC          |tbd\n|13th|85.27% BZIP2           |05.87MB/s BROTLI9      |175.54MB/s ZLING       |08.13MB/s LZ4          |tbd\n|14th|85.24% ZSTD            |05.21MB/s BCM          |118.49MB/s LZMA25      |07.24MB/s MINIZ        |tbd\n|15th|82.89% ZLING           |04.08MB/s LZ4          |108.71MB/s LZMA20      |06.73MB/s ZMOLLY       |tbd\n|16th|81.68% MINIZ           |03.65MB/s MINIZ        |72.72MB/s CSC20        |05.27MB/s LZMA20       |tbd\n|17th|77.93% ZSTDF           |02.70MB/s LZMA20       |57.05MB/s LZIP         |04.90MB/s LZMA25       |tbd\n|18th|77.57% LZ4             |02.50MB/s LZMA25       |31.88MB/s BZIP2        |04.83MB/s CSC20        |tbd\n|19th|77.37% CRUSH           |02.50MB/s CSC20        |13.44MB/s BSC          |04.65MB/s BCM          |tbd\n|20th|67.30% SHRINKER        |02.25MB/s MCM          |06.68MB/s ZMOLLY       |04.13MB/s LZIP         |tbd\n|21th|63.30% LZ4F            |02.14MB/s LZIP         |04.20MB/s BCM          |02.29MB/s MCM          |tbd\n|22th|59.37% LZJB            |01.15MB/s TANGELO      |02.34MB/s MCM          |01.17MB/s TANGELO      |tbd\n|23th|06.42% SHOCO           |00.24MB/s BROTLI11     |01.18MB/s TANGELO      |00.48MB/s BROTLI11     |tbd\n|24th|00.00% RAW             |00.23MB/s ZPAQ         |00.21MB/s ZPAQ         |00.22MB/s ZPAQ         |tbd\n- Note: SHOCO is a _text_ compressor intended to be used for plain ascii IDs only.\n\n### Charts\n\n[@mavam](https://github.com/mavam) has an awesome R script that plots some fancy graphics in [his compbench repository](https://github.com/mavam/compbench). The following CC images are a few of his own showcasing an invocation for a 10,000 packet PCAP trace:\n\n![Tradeoff](https://raw.githubusercontent.com/mavam/compbench/master/screenshots/bro-tradeoff-comp.png)\n![Throughput Scatterplot](https://raw.githubusercontent.com/mavam/compbench/master/screenshots/bro-throughput-scatter.png)\n![Compression Ratio](https://raw.githubusercontent.com/mavam/compbench/master/screenshots/bro-compression-ratio-decomp.png)\n\n### API - data\n```c++\nnamespace bundle\n{\n  // low level API (raw pointers)\n  bool is_packed( *ptr, len );\n  bool is_unpacked( *ptr, len );\n  unsigned type_of( *ptr, len );\n  size_t len( *ptr, len );\n  size_t zlen( *ptr, len );\n  const void *zptr( *ptr, len );\n  bool pack( unsigned Q, *in, len, *out, \u0026zlen );\n  bool unpack( unsigned Q, *in, len, *out, \u0026zlen );\n\n  // medium level API, templates (in-place)\n  bool is_packed( T );\n  bool is_unpacked( T );\n  unsigned type_of( T );\n  size_t len( T );\n  size_t zlen( T );\n  const void *zptr( T );\n  bool unpack( T \u0026, T );\n  bool pack( unsigned Q, T \u0026, T );\n\n  // high level API, templates (copy)\n  T pack( unsigned Q, T );\n  T unpack( T );\n}\n```\nFor a complete review check [bundle.hpp header](bundle.hpp)\n\n### API - archives\n```c++\nnamespace bundle\n{\n  struct file : map\u003cstring,string\u003e { // ~map of properties\n    bool    has(property);           // property check\n    string \u0026get(property);           // property access\n    string  toc() const;             // inspection (json)\n  };\n  struct archive : vector\u003cfile\u003e    { // ~sequence of files\n    void   bun(string);              // .bun serialization\n    string bun() const;              // .bun serialization\n    void   zip(string);              // .zip serialization\n    string zip() const;              // .zip serialization\n    string toc() const;              // inspection (json)\n  };\n}\n```\n\n### Build Directives (Licensing)\n|#define directive|Default value|Meaning|\n|:-----------|:---------------|:---------|\n|BUNDLE_NO_APACHE2|(undefined)|Define to remove any Apache 2.0 library from build\n|BUNDLE_NO_BSD2|(undefined)|Define to remove any BSD-2 library from build\n|BUNDLE_NO_BSD3|(undefined)|Define to remove any BSD-3 library from build\n|BUNDLE_NO_CDDL|(undefined)|Define to remove any CDDL library from build\n|BUNDLE_NO_GPL|(undefined)|Define to remove any GPL library from build\n|BUNDLE_NO_MIT|(undefined)|Define to remove any MIT library from build\n|BUNDLE_NO_UNLICENSE|(undefined)|Define to remove any Public Domain library from build (*)\n\n(*): will disable `.bun` and `.zip` archive support as well.\n\n### Build Directives (Libraries)\n|#define directive|Default value|Meaning|\n|:-----------|:---------------|:---------|\n|BUNDLE_NO_BCM|(undefined)|Define to remove BCM library from build\n|BUNDLE_NO_BROTLI|(undefined)|Define to remove Brotli library from build\n|BUNDLE_NO_BSC|(undefined)|Define to remove LibBsc library from build\n|BUNDLE_NO_BZIP2|(undefined)|Define to remove BZip2 library from build\n|BUNDLE_NO_CRUSH|(undefined)|Define to remove CRUSH library from build\n|BUNDLE_NO_CSC|(undefined)|Define to remove CSC library from build\n|BUNDLE_NO_LZ4|(undefined)|Define to remove LZ4/LZ4 libraries \n|BUNDLE_NO_LZIP|(undefined)|Define to remove EasyLZMA library from build\n|BUNDLE_NO_LZJB|(undefined)|Define to remove LZJB library from build\n|BUNDLE_NO_LZMA|(undefined)|Define to remove LZMA library from build\n|BUNDLE_NO_MCM|(undefined)|Define to remove MCM library from build\n|BUNDLE_NO_MINIZ|(undefined)|Define to remove MiniZ library from build (*)\n|BUNDLE_NO_SHOCO|(undefined)|Define to remove Shoco library from build\n|BUNDLE_NO_SHRINKER|(undefined)|Define to remove Shrinker library from build\n|BUNDLE_NO_TANGELO|(undefined)|Define to remove TANGELO library from build\n|BUNDLE_NO_ZLING|(undefined)|Define to remove ZLING library from build\n|BUNDLE_NO_ZMOLLY|(undefined)|Define to remove ZMOLLY library from build\n|BUNDLE_NO_ZPAQ|(undefined)|Define to remove ZPAQ library from build\n|BUNDLE_NO_ZSTD|(undefined)|Define to remove ZSTD library from build\n\n(*): will disable `.bun` and `.zip` archive support as well.\n\n## Build Directives (Other)\n|#define directive|Default value|Meaning|\n|:-----------|:---------------|:---------|\n|BUNDLE_USE_OMP_TIMER|(undefined)|Define as 1 to use OpenMP timers\n|BUNDLE_USE_CXX11|(autodetected)|Define as 0/1 to disable/enable C++11 features\n\n### Licensing table\n| Software | Author(s) | License | Version | Major changes? |\n|:---------|:----------|:--------|--------:|:---------------------|\n|[bundle](https://github.com/r-lyeh/bundle)|r-lyeh|ZLIB/LibPNG|latest||\n|[bcm](http://sourceforge.net/projects/bcm/)|Ilya Muravyov|Public Domain|1.00|istream based now|\n|[brotli](https://github.com/google/brotli)|Jyrki Alakuijala, Zoltan Szabadka|Apache 2.0|2015/11/03||\n|[bzip2](http://www.bzip.org/)|Julian Seward|BSD-4||\n|[crush](http://sourceforge.net/projects/crush/)|Ilya Muravyov|Public Domain|1.00|reentrant fix|\n|[csc](https://github.com/fusiyuan2010/CSC)|Siyuan Fu|Public Domain|2015/06/16||\n|[easylzma](https://github.com/lloyd/easylzma)|Igor Pavlov, Lloyd Hilaiel|Public Domain|0.0.7||\n|[endian](https://gist.github.com/panzi/6856583)|Mathias Panzenböck|Public Domain||msvc fix|\n|[libbsc](https://github.com/IlyaGrebnov/libbsc)|Ilya Grebnov|Apache 2.0|3.1.0||\n|[libzling](https://github.com/richox/libzling)|Zhang Li|BSD-3|2015/09/16||\n|[libzpaq](https://github.com/zpaq/zpaq)|Matt Mahoney|Public Domain|7.05||\n|[lz4](https://github.com/Cyan4973/lz4)|Yann Collet|BSD-2|1.7.1||\n|[lzjb](http://en.wikipedia.org/wiki/LZJB)|Jeff Bonwick|CDDL license|2010||\n|[mcm](https://github.com/mathieuchartier/mcm)|Mathieu Chartier|GPL|0.84||\n|[miniz](https://code.google.com/p/miniz/)|Rich Geldreich|Public Domain|v1.15 r.4.1|alignment fix|\n|[shoco](https://github.com/Ed-von-Schleck/shoco)|Christian Schramm|MIT|2015/03/16||\n|[shrinker](https://code.google.com/p/data-shrinker/)|Siyuan Fu|BSD-3|rev 3||\n|[tangelo](http://encode.ru/threads/1738-TANGELO-new-compressor-(derived-from-PAQ8-FP8))|Matt Mahoney, Jan Ondrus|GPL|2.41|reentrant fixes, istream based now|\n|[zmolly](https://github.com/richox/zmolly)|Zhang Li|BSD-3|0.0.1|reentrant and memstream fixes|\n|[zstd](https://github.com/Cyan4973/zstd)|Yann Collet|BSD-2|0.3.2||\n\n### Evaluated alternatives\n[FastLZ](http://fastlz.org/), [FLZP](http://cs.fit.edu/~mmahoney/compression/#flzp), [LibLZF](http://freshmeat.net/projects/liblzf), [LZFX](https://code.google.com/p/lzfx/), [LZHAM](https://code.google.com/p/lzham/), [LZLIB](http://www.nongnu.org/lzip/lzlib.html), [LZO](http://www.oberhumer.com/opensource/lzo/), [LZP](http://www.cbloom.com/src/index_lz.html), [SMAZ](https://github.com/antirez/smaz), [Snappy](https://code.google.com/p/snappy/), [ZLIB](http://www.zlib.net/), [bzip2](http://www.bzip2.org/), [Yappy](http://blog.gamedeff.com/?p=371), [CMix](http://www.byronknoll.com/cmix.html), [M1](https://sites.google.com/site/toffer86/m1-project)\n\n### Creating DLLs\n```bash\ncl bundle.cpp -DBUNDLE_API=BUNDLE_API_EXPORT /LD\ncl demo.cc -DBUNDLE_API=BUNDLE_API_IMPORT bundle.lib\n```\n\n### Changelog\n- v2.1.0 (2017/06/10): C API and DLL bindings; Pump up libcsc; Rename .bnd to .bun\n- v2.0.5 (2016/02/06): Bring back BZIP2 support\n- v2.0.4 (2015/12/04): Add padding support; Fix reentrant CRUSH; Optimizations \u0026 fixes\n- v2.0.3 (2015/12/02): Add LZJB and CRUSH; Add BUNDLE_NO_CDDL directive\n- v2.0.2 (2015/11/07): Fix ZMolly segmentation fault (OSX)\n- v2.0.1 (2015/11/04): Fix clang warnings and compilation errors\n- v2.0.0 (2015/11/03): Add BCM, ZLING, MCM, Tangelo, ZMolly, ZSTDf support\n- v2.0.0 (2015/11/03): Change archive format (break change)\n- v2.0.0 (2015/11/03): Disambiguate .bnd/.zip archive handling\n- v2.0.0 (2015/11/03): Fix compilation errors (C++03)\n- v2.0.0 (2015/11/03): Fix missing entries in benchmarks\n- v2.0.0 (2015/11/03): Improve runtime C++ de/initialization stability\n- v2.0.0 (2015/11/03): Optimize archive decompression\n- v2.0.0 (2015/11/03): Remove obsolete enums\n- v2.0.0 (2015/11/03): Upgrade Brotli, ZPAQ, LZ4, ZSTD and Shoco\n- v1.0.2 (2015/10/29): Skip extra copy during archive decompression\n- v1.0.2 (2015/10/29): Add extra archive meta-info\n- v1.0.1 (2015/10/10): Shrink to fit during measures() function\n- v1.0.0 (2015/10/09): Change benchmark API to sort multiples values as well (API break change)\n- v0.9.8 (2015/10/07): Remove confusing bundle::string variant class from API\n- v0.9.7 (2015/10/07): Add license configuration directives\n- v0.9.6 (2015/10/03): Add library configuration directives\n- v0.9.5 (2015/09/28): Add missing prototypes\n- v0.9.5 (2015/09/28): Bugfix helper function\n- v0.9.4 (2015/09/26): Add CSC20 + Shrinker support\n- v0.9.4 (2015/09/26): Rename enums LZ4-\u003eLZ4F/LZ4HC-\u003eLZ4\n- v0.9.3 (2015/09/25): Add a few missing API calls\n- v0.9.2 (2015/09/22): Pump up Brotli\n- v0.9.2 (2015/09/22): Split BROTLI enum into BROTLI9/11 pair\n- v0.9.1 (2015/05/10): Switch to ZLIB/LibPNG license\n- v0.9.0 (2015/04/08): BSC support\n- v0.8.1 (2015/04/07): Pump up Brotli+ZSTD\n- v0.8.1 (2015/04/07): LZMA20/25 dict\n- v0.8.1 (2015/04/07): Unify FOURCCs\n- v0.8.0 (2015/01/27): ZSTD support\n- v0.8.0 (2015/01/27): Reorder enums\n- v0.8.0 (2015/01/27): Simplify API\n- v0.7.1 (2015/01/26): Fix LZMA\n- v0.7.1 (2015/01/26): Verify DEFLATEs\n- v0.7.1 (2015/01/26): New AUTO enum\n- v0.7.0 (2014/10/22): Brotli support\n- v0.7.0 (2014/10/22): Pump up LZ4\n- v0.6.3 (2014/09/27): Switch to BOOST license\n- v0.6.2 (2014/09/02): Fix 0-byte streams\n- v0.6.2 (2014/09/02): Deflate alignment\n- v0.6.1 (2014/06/30): Safer LZ4 decompression\n- v0.6.1 (2014/06/30): Pump up LZ4 + ZPAQ\n- v0.6.0 (2014/06/26): LZ4HC support\n- v0.6.0 (2014/06/26): Optimize in-place decompression\n- v0.5.0 (2014/06/09): ZPAQ support\n- v0.5.0 (2014/06/09): UBER encoding\n- v0.5.0 (2014/06/09): Fixes\n- v0.4.1 (2014/06/05): Switch to lzmasdk\n- v0.4.0 (2014/05/30): Maximize compression (lzma)\n- v0.3.0 (2014/05/28): Fix alignment (deflate)\n- v0.3.0 (2014/05/28): Change stream header\n- v0.2.1 (2014/05/23): Fix overflow bug\n- v0.2.0 (2014/05/14): Add VLE header\n- v0.2.0 (2014/05/14): Fix vs201x compilation errors\n- v0.1.0 (2014/05/13): Add high-level API\n- v0.1.0 (2014/05/13): Add iOS support\n- v0.0.0 (2014/05/09): Initial commit\n","funding_links":[],"categories":["C++","Maths"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-lyeh-archived%2Fbundle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr-lyeh-archived%2Fbundle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr-lyeh-archived%2Fbundle/lists"}