{"id":26057699,"url":"https://github.com/feenkcom/pharo-futures","last_synced_at":"2025-10-07T13:47:43.280Z","repository":{"id":41416463,"uuid":"400125183","full_name":"feenkcom/pharo-futures","owner":"feenkcom","description":"Abstractions for asynchronous programming in Pharo","archived":false,"fork":false,"pushed_at":"2025-09-06T19:43:05.000Z","size":475,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-09-06T21:33:04.076Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smalltalk","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/feenkcom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-08-26T10:12:55.000Z","updated_at":"2025-09-06T18:15:42.000Z","dependencies_parsed_at":"2023-01-29T22:01:24.711Z","dependency_job_id":"c947f22d-7440-48a5-81ce-e2c4003e3c67","html_url":"https://github.com/feenkcom/pharo-futures","commit_stats":null,"previous_names":[],"tags_count":149,"template":false,"template_full_name":null,"purl":"pkg:github/feenkcom/pharo-futures","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Fpharo-futures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Fpharo-futures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Fpharo-futures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Fpharo-futures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/feenkcom","download_url":"https://codeload.github.com/feenkcom/pharo-futures/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/feenkcom%2Fpharo-futures/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278786692,"owners_count":26045588,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-03-08T11:58:24.682Z","updated_at":"2025-10-07T13:47:43.276Z","avatar_url":"https://github.com/feenkcom.png","language":"Smalltalk","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Asynchronous Futures \u0026 Streams\nAbstractions for asynchronous programming in Pharo.\n\n## Install\n\n```smalltalk\nMetacello new\n   baseline: 'Futures';\n   repository: 'github://feenkcom/pharo-futures:main/src';\n   load\n```\n\n## Futures\n\n*Please note, that `wait` shouldn't be used in production, it is just for debugging and example purposes*\n\nReady:\n```smalltalk\n42 asAsyncFuture wait = 42\n```\n\nComputation:\n```smalltalk\n[ 2 seconds wait . 42 ] asAsyncFuture wait = 42 \n```\n\nMap:\n```smalltalk\n([ 2 ] asAsyncFuture map: [ :x | x + 40 ]) wait = 42\n```\n\nJoin all:\n```\n(AsyncJoinAllFuture futures: { \n   [ 42 ] asAsyncFuture.\n   3.14 asAsyncFuture.\n   9 asAsyncFuture map: [ :x | x * x ].\n}) wait = #(42 3.14 81)\n```\n\n## Streams \u0026 combinators\nSequence:\n```smalltalk\n(1 to: 5) asAsyncStream collect wait = #(1 2 3 4 5)\n```\n\nMap:\n```smalltalk\n((1 to: 3) asAsyncStream map: [ :x | x * 2]) collect wait = #(2 4 6)\n```\n\nTake:\n```smalltalk\n((1 to: 10) asAsyncStream take: 3) collect wait = #(1 2 3)\n```\n\nFilter:\n```smalltalk\n((1 to: 6) asAsyncStream filter: [ :x | x even ]) collect wait = #(2 4 6)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeenkcom%2Fpharo-futures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffeenkcom%2Fpharo-futures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffeenkcom%2Fpharo-futures/lists"}