{"id":36414601,"url":"https://github.com/dotty-cps-async/dotty-cps-async","last_synced_at":"2026-04-11T19:08:57.071Z","repository":{"id":43575476,"uuid":"231184252","full_name":"dotty-cps-async/dotty-cps-async","owner":"dotty-cps-async","description":"experimental CPS transformer for dotty","archived":false,"fork":false,"pushed_at":"2026-03-02T14:44:10.000Z","size":20011,"stargazers_count":194,"open_issues_count":3,"forks_count":23,"subscribers_count":11,"default_branch":"master","last_synced_at":"2026-03-02T17:49:33.390Z","etag":null,"topics":["async","continuation","cps","dotty","monad","scala","scala-async","scala-js","transformation"],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dotty-cps-async.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-01-01T06:44:14.000Z","updated_at":"2026-03-01T22:14:43.000Z","dependencies_parsed_at":"2025-12-11T00:07:52.235Z","dependency_job_id":null,"html_url":"https://github.com/dotty-cps-async/dotty-cps-async","commit_stats":null,"previous_names":["dotty-cps-async/dotty-cps-async","rssh/dotty-cps-async"],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/dotty-cps-async/dotty-cps-async","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotty-cps-async%2Fdotty-cps-async","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotty-cps-async%2Fdotty-cps-async/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotty-cps-async%2Fdotty-cps-async/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotty-cps-async%2Fdotty-cps-async/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dotty-cps-async","download_url":"https://codeload.github.com/dotty-cps-async/dotty-cps-async/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dotty-cps-async%2Fdotty-cps-async/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30477233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T20:45:58.186Z","status":"ssl_error","status_checked_at":"2026-03-13T20:45:20.133Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","continuation","cps","dotty","monad","scala","scala-async","scala-js","transformation"],"created_at":"2026-01-11T16:56:50.899Z","updated_at":"2026-03-13T22:01:40.012Z","avatar_url":"https://github.com/dotty-cps-async.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🇺🇦 HELP UKRAINE\n\nI'm the creator of this project. \nMy country, Ukraine, [is being invaded by the Russian Federation, right now](https://war.ukraine.ua). If you want to help my country to fight, consider donating to [charity supporting Ukrainian army](https://www.comebackalive.in.ua/). More options is described on [support ukraine](https://supportukrainenow.org/) site.\n\n# dotty-cps-async\n\n\nThis is the implementation of async/await transformation for [Scala 3][scala3] (Dotty), based on an optimized version of [CPS] (*Continuation Passing Style*) transformation, where the continuation is ‘pushed’ to the monad. \n\n## \u003cspan id=\"highlights\"\u003eHighlights\u003c/span\u003e\n\n * Full support of all Scala language constructs in async/await block.\n * Pluggable monad interface:  \n    *  An await monad can be any trait for which it is possible to implement [`CpsAsyncMonad`](https://github.com/rssh/dotty-cps-async/blob/master/shared/src/main/scala/cps/CpsMonad.scala) type class. You can provide those methods for your favorite monad.\n * Limited support of high-order functions:\n    * ```urls.map(fetchData(_))(await _ )``` is an idiomatic way to fetch data for all items in parallel.\n    * An application developer or library author can provide 'shifted' implementation of the own high-order functions.\n * Optional features, which enhance ergonomics in some cases, such as automatic coloring and handling discarded values\n * Optional [SIP-22 compatible API][sip_22].\n\nFor more details, please, read the documentation at https://dotty-cps-async.github.io/dotty-cps-async/.\n\n\n## \u003cspan id=\"presentations\"\u003ePresentations\u003c/span\u003e\n\n* Embedding generic monadic transformers into scala.\n    * Trends in Functional Programming 2022. https://www.slideshare.net/rssh1/embedding-generic-monadic-transformer-into-scala-tfp2022 (May 2022)\n\n* Scala3 \u0026 Async: Behind Futures.\n   * Svitla Smart Talk. https://www.youtube.com/watch?v=fBcGhjM2s-c (April 2021. In Ukrainian language).\n\n* Can we free concurrent programming from the monadic style?\n    * ScalaR:  https://www.youtube.com/watch?v=ImlUuTQUeaQ  (June 2020)\n    * ScalaUA: https://www.youtube.com/watch?v=w-noRPLxYoA\u0026t=3s  (April 2020)\n   (slides: https://www.slideshare.net/rssh1/can-concurrent-functional-programming-be-liberated-from-monadic-style )\n\n[cps]: https://en.wikipedia.org/wiki/Continuation-passing_style\n[scala3]: https://dotty.epfl.ch/\n[sip_22]: https://docs.scala-lang.org/sips/async.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotty-cps-async%2Fdotty-cps-async","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdotty-cps-async%2Fdotty-cps-async","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdotty-cps-async%2Fdotty-cps-async/lists"}