{"id":13706695,"url":"https://github.com/eddelbuettel/rcppsimdjson","last_synced_at":"2025-05-16T09:03:10.536Z","repository":{"id":42559326,"uuid":"234755502","full_name":"eddelbuettel/rcppsimdjson","owner":"eddelbuettel","description":"Rcpp Bindings for the 'simdjson' Header Library","archived":false,"fork":false,"pushed_at":"2025-03-07T16:36:21.000Z","size":6491,"stargazers_count":118,"open_issues_count":3,"forks_count":14,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-13T06:09:40.005Z","etag":null,"topics":["cran","json","r","r-package","simdjson"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eddelbuettel.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-18T15:31:21.000Z","updated_at":"2025-04-23T12:01:34.000Z","dependencies_parsed_at":"2024-03-03T23:36:29.683Z","dependency_job_id":"e81fc340-c91e-48bb-8752-5e0e49020f1b","html_url":"https://github.com/eddelbuettel/rcppsimdjson","commit_stats":{"total_commits":178,"total_committers":4,"mean_commits":44.5,"dds":0.2134831460674157,"last_synced_commit":"22ca2f0a5af8f607c6f9b4d83317b6e69f4025e7"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddelbuettel%2Frcppsimdjson","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddelbuettel%2Frcppsimdjson/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddelbuettel%2Frcppsimdjson/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddelbuettel%2Frcppsimdjson/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddelbuettel","download_url":"https://codeload.github.com/eddelbuettel/rcppsimdjson/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254501555,"owners_count":22081528,"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":["cran","json","r","r-package","simdjson"],"created_at":"2024-08-02T22:01:05.605Z","updated_at":"2025-05-16T09:03:10.515Z","avatar_url":"https://github.com/eddelbuettel.png","language":"C++","readme":"## RcppSimdJson: Rcpp Bindings for the simdjson Header Library\n\n[![CI](https://github.com/eddelbuettel/rcppsimdjson/workflows/ci/badge.svg)](https://github.com/eddelbuettel/rcppsimdjson/actions?query=workflow%3Aci)\n[![License](https://eddelbuettel.github.io/badges/GPL2+.svg)](https://www.gnu.org/licenses/gpl-2.0.html)\n[![CRAN](https://www.r-pkg.org/badges/version/RcppSimdJson)](https://cran.r-project.org/package=RcppSimdJson)\n[![Dependencies](https://tinyverse.netlify.app/badge/RcppSimdJson)](https://cran.r-project.org/package=RcppSimdJson)\n[![Downloads](https://cranlogs.r-pkg.org/badges/RcppSimdJson?color=brightgreen)](https://www.r-pkg.org/pkg/RcppSimdJson)\n[![Code Coverage](https://codecov.io/gh/eddelbuettel/RcppSimdJson/graph/badge.svg)](https://app.codecov.io/gh/eddelbuettel/RcppSimdJson)\n[![Last Commit](https://img.shields.io/github/last-commit/eddelbuettel/rcppsimdjson)](https://github.com/eddelbuettel/rcppsimdjson)\n\n### Motivation\n\n[simdjson](https://github.com/simdjson/simdjson) by [Daniel Lemire](https://lemire.me/en/) (with contributions by [Geoff\nLangdale](https://branchfree.org/),  [John Keiser](https://github.com/jkeiser) and  [many others](https://github.com/simdjson/simdjson/graphs/contributors)) is an\nengineering marvel.  Through very clever use of [SIMD instructions](https://en.wikipedia.org/wiki/SIMD),\nit manages to parse JSON files faster than disc access. Wut? Yes you read that right: parallel\nprocessing with so little overhead that the net throughput is limited only by disk speed.\n\nMoreover, it is implemented in neat modern C++ and can be accessed as a header-only library. (Well,\none library in two files, really.)  Which makes R packaging easy and convenient and compelling. So\nhere we are.\n\nFor further introduction, see the [arXiv paper](https://arxiv.org/abs/1902.08318) by Langdale and Lemire (out/to appear in VLDB\nJournal 28(6) as well) and/or the video of the [recent talk by Daniel Lemire at\nQCon](https://www.youtube.com/watch?v=wlvKAT7SZIQ) (voted best talk).\n\n### Example\n\n```r\njsonfile \u003c- system.file(\"jsonexamples\", \"twitter.json\", package=\"RcppSimdJson\")\nlibrary(RcppSimdJson)\nvalidateJSON(jsonfile)                  # validate a JSON file\nres \u003c- fload(jsonfile)                  # parse a JSON file\n```\n\n### Comparison\n\nA [simple file-oriented parsing benchmark][simpleBenchmark] against the other R-accessible JSON\nparsers:\n\n```r\n\u003e print(res)\nUnit: microseconds\n     expr       min        lq      mean   median        uq        max neval   cld\n  yyjsonr   312.267   347.683   405.177   390.11   425.827    926.776   100 a\n simdjson   274.367   323.998   447.691   467.79   526.237    773.070   100 a\n  jsonify  2727.874  2813.681  2952.804  2896.84  2972.852   7442.755   100  b\n jsonlite  4237.538  4435.683  4587.428  4552.38  4668.345   7082.673   100   c\n  RJSONIO  9131.864  9425.515  9707.274  9599.48  9845.006  13516.616   100    d\n   ndjson 91668.822 92628.357 95386.212 93192.37 94507.484 152179.095   100     e\n\u003e\n```\n\nOr in chart form, also including the [second benchmark parsing strings][simpleParseBenchmark.R]:\n\n![](https://eddelbuettel.github.io/rcppsimdjson/rcppsimdjson_both_benchmarks.png)\n\n### Status\n\nAll three major OSs are supported, and JSON can be parsed from file and string under a variety of\nsettings. A C++17 compiler is required for ease of setup (though the upstream can fall back to older\ncompiler; one can edit [src/Makevars](https://github.com/eddelbuettel/rcppsimdjson/blob/master/src/Makevars)\naccordingly if need be).\n\n### Contributing\n\nAny problems, bug reports, or features requests for the package can be submitted and handled most\nconveniently as [Github issues](https://github.com/eddelbuettel/rcppsimdjson/issues) in the repository.\n\nBefore submitting pull requests, it is frequently preferable to first discuss need and scope in such\nan issue ticket.  See the file\n[Contributing.md](https://github.com/RcppCore/Rcpp/blob/master/Contributing.md) (in the\n[Rcpp](https://github.com/RcppCore/Rcpp) repo) for a brief discussion.\n\n\n### See Also\n\nFor standard JSON work on R, as well as for other nicely done C++ libraries, consider these:\n\n- [jsonlite](https://cran.r-project.org/package=jsonlite) by [Jeroen Ooms](https://github.com/jeroen) is excellent, very versatile, and probably most-widely used;\n- [rapidjsonr](https://cran.r-project.org/package=rapidjsonr) and [jsonify](https://cran.r-project.org/package=jsonify) by [David Cooley](https://github.com/dcooley) bringing [RapidJSON](https://rapidjson.org/) to R;\n- [ndjson](https://cran.r-project.org/package=ndjson) by [Bob Rudis](https://rud.is/b/) builds on the [JSON for Modern C++](https://github.com/nlohmann/json) library by [Niels Lohmann](https://github.com/nlohmann);\n- [RJSONIO](https://cran.r-project.org/package=RJSONIO) by [Duncan Temple Lang](https://www.stat.ucdavis.edu/~duncan/) started all this but could use a little love;\n- [yyjsonr](https://cran.r-project.org/package=yyjsonr) by [Mike Cheng](https://coolbutuseless.github.io/) is a more recent and performant addition based on [yyjson](https://github.com/ibireme/yyjson).\n\n### Author\n\nFor the R package, [Dirk Eddelbuettel](https://github.com/eddelbuettel) and [Brendan\nKnapp](https://github.com/knapply).\n\nFor everything pertaining to simdjson, [Daniel Lemire](https://lemire.me/en/) (and [many\ncontributors](https://github.com/simdjson/simdjson/graphs/contributors)).\n\n\n[simpleBenchmark]: https://github.com/eddelbuettel/rcppsimdjson/blob/master/inst/examples/simpleBenchmark.R\n[simpleParseBenchmark]: https://github.com/eddelbuettel/rcppsimdjson/blob/master/inst/examples/simpleParseBenchmark.R\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddelbuettel%2Frcppsimdjson","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddelbuettel%2Frcppsimdjson","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddelbuettel%2Frcppsimdjson/lists"}