{"id":13760427,"url":"https://github.com/funcool/promesa","last_synced_at":"2026-03-15T11:33:20.593Z","repository":{"id":29355239,"uuid":"32889542","full_name":"funcool/promesa","owner":"funcool","description":"A promise library \u0026 concurrency toolkit for Clojure and ClojureScript.","archived":false,"fork":false,"pushed_at":"2025-05-10T09:07:10.000Z","size":1243,"stargazers_count":505,"open_issues_count":22,"forks_count":58,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-05-10T10:21:48.395Z","etag":null,"topics":["async-await","asynchronous-programming","clojure","clojurescript","completablefuture","concurrency","deferred","non-blocking","promises","threads","virtual-threads"],"latest_commit_sha":null,"homepage":"https://funcool.github.io/promesa/latest/","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/funcool.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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,"zenodo":null},"funding":{"github":"niwinz","patreon":"niwinz"}},"created_at":"2015-03-25T20:39:35.000Z","updated_at":"2025-05-10T09:07:13.000Z","dependencies_parsed_at":"2023-10-20T19:55:03.471Z","dependency_job_id":"6c366484-d056-410c-833e-2ee59eb403a9","html_url":"https://github.com/funcool/promesa","commit_stats":{"total_commits":660,"total_committers":33,"mean_commits":20.0,"dds":0.1515151515151515,"last_synced_commit":"658c429c56c11c33da7594fa2ef53f4e6afedac4"},"previous_names":[],"tags_count":82,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funcool%2Fpromesa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funcool%2Fpromesa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funcool%2Fpromesa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/funcool%2Fpromesa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/funcool","download_url":"https://codeload.github.com/funcool/promesa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253399496,"owners_count":21902309,"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":["async-await","asynchronous-programming","clojure","clojurescript","completablefuture","concurrency","deferred","non-blocking","promises","threads","virtual-threads"],"created_at":"2024-08-03T13:01:10.037Z","updated_at":"2025-12-25T01:28:51.941Z","avatar_url":"https://github.com/funcool.png","language":"Clojure","readme":"# promesa #\n\n[![Clojars Project](http://clojars.org/funcool/promesa/latest-version.svg)](http://clojars.org/funcool/promesa)\n\nA promise library \u0026 concurrency toolkit for Clojure and ClojureScript.\n\nThis library exposes a bunch of useful syntactic abstractions that\nconsiderably simplify working with promises (in a very similar\nway as you will do it in JS with async/await) and many helpers from\nexecutors to concurrency patterns (bulkhead \u0026 CSP). With 0 runtime\nexternal dependencies.\n\nHere you can look a detailed [documentation][1].\n\n\n## Getting Started\n\ndeps.edn:\n\n```clojure\nfuncool/promesa {:mvn/version \"11.0.678\"}\n```\n\nOr you can try the latest RC:\n\n```clojure\nfuncool/promesa {:mvn/version \"12.0.0-RC2\"}\n```\n\nYou also can get it via git:\n\n```clojure\nfuncool/promesa\n{:git/sha \"f152066\"\n :git/tag \"12.0.0-RC2\"\n :git/url \"https://github.com/funcool/promesa\"}\n```\n\n## On the REPL\n\n```clojure\n(require '[promesa.core :as p])\n\n(-\u003e\u003e (p/promise 1)\n     (p/map inc)\n     (deref)\n;; =\u003e 2\n```\n\nNOTE: example only work on JVM because the evident lack of blocking\nprimitives on JS runtime.\n\n## Contributing\n\nIf you miss something, feel free to open an issue for a discussion. If\nthere is a clear use case for the proposed enhancement, the PR will be\nmore than welcome.\n\n## Testing\n\nRun the Clojure (.clj) tests:\n\n``` shell\nclojure -M:dev -m promesa.tests.main\n```\n\nRun the ClojureScript (.cljs) tests:\n\n``` shell\ncorepack enable\ncorepack install\nyarn install\nyarn run test\n```\n\nRun the Babashka tests:\n\n``` shell\nbb test:bb\n```\n\n[1]: https://funcool.github.io/promesa/latest/\n","funding_links":["https://github.com/sponsors/niwinz","https://patreon.com/niwinz"],"categories":["Clojure"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuncool%2Fpromesa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuncool%2Fpromesa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuncool%2Fpromesa/lists"}