{"id":14957013,"url":"https://github.com/facebook/haxl","last_synced_at":"2025-05-16T01:00:16.049Z","repository":{"id":15642756,"uuid":"18379853","full_name":"facebook/Haxl","owner":"facebook","description":"A Haskell library that simplifies access to remote data, such as databases or web-based services. ","archived":false,"fork":false,"pushed_at":"2025-05-07T17:24:21.000Z","size":790,"stargazers_count":4301,"open_issues_count":8,"forks_count":311,"subscribers_count":190,"default_branch":"main","last_synced_at":"2025-05-08T22:15:08.368Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2014-04-02T20:10:58.000Z","updated_at":"2025-05-08T12:32:12.000Z","dependencies_parsed_at":"2024-01-08T14:30:39.050Z","dependency_job_id":"72e05445-fc4a-4396-95ac-80a2edb6ecc2","html_url":"https://github.com/facebook/Haxl","commit_stats":{"total_commits":296,"total_committers":61,"mean_commits":4.852459016393443,"dds":0.7837837837837838,"last_synced_commit":"fb2cabbcefb992daa0302b81304a5fa1ee6715c3"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2FHaxl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2FHaxl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2FHaxl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2FHaxl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/Haxl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253154977,"owners_count":21862623,"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-09-24T13:13:53.827Z","updated_at":"2025-05-08T22:15:11.089Z","avatar_url":"https://github.com/facebook.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Haxl Logo](https://raw.githubusercontent.com/facebook/Haxl/main/logo.png)\n\n# Haxl\n\n[![Support Ukraine](https://img.shields.io/badge/Support-Ukraine-FFD500?style=flat\u0026labelColor=005BBB)](https://opensource.fb.com/support-ukraine) [![Build Status](https://travis-ci.org/facebook/Haxl.svg?branch=master)](https://travis-ci.org/facebook/Haxl)\n\nHaxl is a Haskell library that simplifies access to remote data, such\nas databases or web-based services. Haxl can automatically\n\n * batch multiple requests to the same data source,\n * request data from multiple data sources concurrently,\n * cache previous requests,\n * memoize computations.\n\nHaving all this handled for you behind the scenes means that your\ndata-fetching code can be much cleaner and clearer than it would\notherwise be if it had to worry about optimizing data-fetching. We'll\ngive some examples of how this works in the pages linked below.\n\nThere are two Haskell packages here:\n\n * `haxl`: The core Haxl framework\n * `haxl-facebook` (in [https://github.com/facebook/Haxl/tree/master/example/facebook](example/facebook)): An (incomplete) example data source for accessing the Facebook Graph API\n\nTo use Haxl in your own application, you will likely need to build one or more\n*data sources*: the thin layer between Haxl and the data that you want\nto fetch, be it a database, a web API, a cloud service, or whatever.\n\nThere is a generic datasource in \"Haxl.DataSource.ConcurrentIO\" that\ncan be used for performing arbitrary IO operations concurrently, given\na bit of boilerplate to define the IO operations you want to perform.\n\nThe `haxl-facebook` package shows how we might build a Haxl data\nsource based on the existing `fb` package for talking to the Facebook\nGraph API.\n\n## Where to go next?\n\n * [The Story of Haxl](https://code.facebook.com/posts/302060973291128/open-sourcing-haxl-a-library-for-haskell/)\n   explains how Haxl came about at Facebook, and discusses our\n   particular use case.\n\n * [An example Facebook data source](https://github.com/facebook/Haxl/blob/master/example/facebook/readme.md) walks\n   through building an example data source that queries the Facebook\n   Graph API concurrently.\n\n * [Fun with Haxl (part 1)](https://simonmar.github.io/posts/2015-10-20-Fun-With-Haxl-1.html)\n   Walks through using Haxl from scratch for a simple SQLite-backed\n   blog engine.\n\n * [The N+1 Selects Problem](https://github.com/facebook/Haxl/blob/master/example/sql/readme.md) explains how Haxl\n   can address a common performance problem with SQL queries by\n   automatically batching multiple queries into a single query,\n   without the programmer having to specify this behavior.\n\n * [Haxl Documentation](http://hackage.haskell.org/package/haxl) on\n   Hackage.\n\n * [There is no Fork: An Abstraction for Efficient, Concurrent, and Concise Data Access](http://simonmar.github.io/bib/papers/haxl-icfp14.pdf), our paper on Haxl, accepted for publication at ICFP'14.\n\n## Contributing\n\nWe welcome contributions! See [CONTRIBUTING](https://github.com/facebook/Haxl/blob/master/CONTRIBUTING.md) for details on how to get started, and our [Code of Conduct](https://github.com/facebook/Haxl/blob/master/CODE_OF_CONDUCT.md).\n\n## License\n\nHaxl uses the BSD 3-clause License, as found in the [LICENSE](https://github.com/facebook/Haxl/blob/master/LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fhaxl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Fhaxl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fhaxl/lists"}