{"id":13514753,"url":"https://github.com/facebook/Haxl","last_synced_at":"2025-03-31T03:31:18.914Z","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":"2024-11-19T13:29:04.000Z","size":783,"stargazers_count":4295,"open_issues_count":6,"forks_count":311,"subscribers_count":191,"default_branch":"main","last_synced_at":"2025-03-25T17:13:53.369Z","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}},"created_at":"2014-04-02T20:10:58.000Z","updated_at":"2025-03-25T14:30:02.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":246413377,"owners_count":20773053,"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-01T05:01:01.299Z","updated_at":"2025-03-31T03:31:15.834Z","avatar_url":"https://github.com/facebook.png","language":"Haskell","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","funding_links":[],"categories":["Haskell","Data Access","\u003ca name=\"Haskell\"\u003e\u003c/a\u003eHaskell"],"sub_categories":[],"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"}