All Projects → async-interop → Event Loop

async-interop / Event Loop

Licence: mit
An event loop interface for interoperability in PHP.

Projects that are alternatives of or similar to Event Loop

promise
Common interface for simple asynchronous placeholders.
Stars: ✭ 66 (-61.18%)
Mutual labels:  asynchronous, interoperability
Falcon
A high-performance web server for Ruby, supporting HTTP/1, HTTP/2 and TLS.
Stars: ✭ 2,058 (+1110.59%)
Mutual labels:  asynchronous
Tascalate Concurrent
Implementation of blocking (IO-Bound) cancellable java.util.concurrent.CompletionStage and related extensions to java.util.concurrent.ExecutorService-s
Stars: ✭ 144 (-15.29%)
Mutual labels:  asynchronous
Index.py
An easy-to-use high-performance asynchronous web framework.
Stars: ✭ 158 (-7.06%)
Mutual labels:  asynchronous
Ambassador
Super lightweight web framework in Swift based on SWSGI
Stars: ✭ 152 (-10.59%)
Mutual labels:  asynchronous
Future.apply
🚀 R package: future.apply - Apply Function to Elements in Parallel using Futures
Stars: ✭ 159 (-6.47%)
Mutual labels:  asynchronous
Qtpromise
Promises/A+ implementation for Qt/C++
Stars: ✭ 137 (-19.41%)
Mutual labels:  asynchronous
Lear
Linux Engine for Asset Retrieval - speed-profiled C HTTP server
Stars: ✭ 165 (-2.94%)
Mutual labels:  asynchronous
Minotaur
A pythonic, asynchronous, inotify interface
Stars: ✭ 163 (-4.12%)
Mutual labels:  asynchronous
Ratelimiter
C# rate limiting utility
Stars: ✭ 159 (-6.47%)
Mutual labels:  asynchronous
Vert.x
Vert.x is a tool-kit for building reactive applications on the JVM
Stars: ✭ 12,544 (+7278.82%)
Mutual labels:  event-loop
Play Redis
Play framework 2 cache plugin as an adapter to redis-server
Stars: ✭ 152 (-10.59%)
Mutual labels:  asynchronous
Denite.nvim
Stars: ✭ 2,014 (+1084.71%)
Mutual labels:  asynchronous
Kubernetes asyncio
Python asynchronous client library for Kubernetes http://kubernetes.io/
Stars: ✭ 147 (-13.53%)
Mutual labels:  asynchronous
Simplenet
An easy-to-use, event-driven, asynchronous network application framework compiled with Java 11.
Stars: ✭ 164 (-3.53%)
Mutual labels:  asynchronous
Tokio
A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
Stars: ✭ 14,278 (+8298.82%)
Mutual labels:  asynchronous
Interledger Rs
An easy-to-use, high-performance Interledger implementation written in Rust
Stars: ✭ 155 (-8.82%)
Mutual labels:  interoperability
Webssh
🌱 Web based ssh client
Stars: ✭ 2,520 (+1382.35%)
Mutual labels:  asynchronous
Vertx Blueprint Todo Backend
Vert.x Blueprint Project - A reactive todo-backend implementation using Vert.x and various persistence
Stars: ✭ 169 (-0.59%)
Mutual labels:  asynchronous
Metasync
Asynchronous Programming Library for JavaScript & Node.js
Stars: ✭ 164 (-3.53%)
Mutual labels:  asynchronous

Event Loop Interopability

The purpose of this specification is to provide a common interface for event loop implementations. This allows libraries and components from different vendors to operate in an event driven architecture, sharing a common event loop.

Current Status

This 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. Interoperability between ReactPHP and Amp will be solved via adapters instead of a common interface. Icicle has been deprecated and parts of it been merged into Amp libraries.

Why Bother?

Some programming languages, such as Javascript, have an event loop that is native to the execution environment. This allows package vendors to easily create asynchronous software that uses this native event loop. Although PHP is historically a synchronous programming environment, it is still possible to use asynchronous programming techniques. Using these techniques, package vendors have created event loop implementations that have seen success.

However, as these event loop implementations are from package vendors, it is not yet possible to create event driven software components that are independent of the underlying event loop implementation. By creating a common interface for an event loop, interoperability of this nature will be possible.

Goals

The functionality exposed by this interface should include the ability to:

  • Watch input streams for available data
  • Watch output streams for the ability to perform non-blocking write operations
  • Run single and periodic timers
  • Listen for signals
  • Defer the execution of callables

Implementations

You can find available implementations on Packagist.

Compatible Packages

You can find compatible packages on Packagist.

Contributors

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].