{"id":13545620,"url":"https://github.com/async-interop/event-loop","last_synced_at":"2026-01-11T13:36:20.457Z","repository":{"id":56950024,"uuid":"50024001","full_name":"async-interop/event-loop","owner":"async-interop","description":"An event loop interface for interoperability in PHP.","archived":false,"fork":false,"pushed_at":"2017-03-19T07:53:36.000Z","size":136,"stargazers_count":169,"open_issues_count":12,"forks_count":9,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-03-26T14:17:10.590Z","etag":null,"topics":["asynchronous","event-loop","interoperability","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/async-interop.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}},"created_at":"2016-01-20T10:52:37.000Z","updated_at":"2025-03-10T12:56:38.000Z","dependencies_parsed_at":"2022-08-21T09:20:24.330Z","dependency_job_id":null,"html_url":"https://github.com/async-interop/event-loop","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-interop%2Fevent-loop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-interop%2Fevent-loop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-interop%2Fevent-loop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/async-interop%2Fevent-loop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/async-interop","download_url":"https://codeload.github.com/async-interop/event-loop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246841806,"owners_count":20842649,"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":["asynchronous","event-loop","interoperability","php"],"created_at":"2024-08-01T11:01:07.222Z","updated_at":"2026-01-11T13:36:20.422Z","avatar_url":"https://github.com/async-interop.png","language":"PHP","readme":"# Event Loop Interopability\n\nThe purpose of this specification is to provide a common interface for\nevent loop implementations. This allows libraries and components from\ndifferent vendors to operate in an event driven architecture, sharing a\ncommon event loop.\n\n## Current Status\n\nThis project is currently on hold and to be seen as failed for now. It might be reconsidered at a later point in time. The specification in its current state has been merged into [Amp](https://github.com/amphp/amp). Interoperability between [ReactPHP](https://github.com/reactphp/event-loop) and Amp will be solved via adapters instead of a common interface. [Icicle](https://github.com/icicleio/icicle) has been deprecated and parts of it been merged into Amp libraries.\n\n## Why Bother?\n\nSome programming languages, such as Javascript, have an event loop that is\nnative to the execution environment. This allows package vendors to easily\ncreate asynchronous software that uses this native event loop. Although PHP\nis historically a synchronous programming environment, it is still possible\nto use asynchronous programming techniques. Using these techniques, package\nvendors have created event loop implementations that have seen success.\n\nHowever, as these event loop implementations are from package vendors, it\nis not yet possible to create event driven software components that are\nindependent of the underlying event loop implementation. By creating a\ncommon interface for an event loop, interoperability of this nature will\nbe possible.\n\n## Goals\n\nThe functionality exposed by this interface should include the ability to:\n\n- Watch input streams for available data\n- Watch output streams for the ability to perform non-blocking write operations\n- Run single and periodic timers\n- Listen for signals\n- Defer the execution of callables\n\n## Implementations\n\nYou can find [available implementations on Packagist](https://packagist.org/providers/async-interop/event-loop-implementation).\n\n## Compatible Packages\n\nYou can find [compatible packages on Packagist](https://packagist.org/packages/async-interop/event-loop/dependents).\n\n## Contributors\n\n* [Aaron Piotrowski](https://github.com/trowski)\n* [Andrew Carter](https://github.com/AndrewCarterUK)\n* [Bob Weinand](https://github.com/bwoebi)\n* [Cees-Jan Kiewiet](https://github.com/WyriHaximus)\n* [Christopher Pitt](https://github.com/assertchris)\n* [Daniel Lowrey](https://github.com/rdlowrey)\n* [Niklas Keller](https://github.com/kelunik)\n* [Stephen M. Coakley](https://github.com/coderstephen)\n","funding_links":[],"categories":["Event loop","PHP"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasync-interop%2Fevent-loop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasync-interop%2Fevent-loop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasync-interop%2Fevent-loop/lists"}