Event-driven systems are essential in many domains: GUI applications, robotics, plotting, etc. Existing packages like Reactive.jl (asynchronous signals) and Observables.jl (synchronous observables) address this need.
EventNotifiers.jl combines the best of both worlds by introducing Notifyer objects that rely on states to define their behavior. These states (synchronous, asynchronous, etc.) can be mixed to create unique event-handling workflows.
For the stable release:
julia> ]add EventNotifiers For the development version:
julia> ]add https://github.com/Gesee-y/EventNotifiers.jl.git - Intuitive syntax inspired by Godot Engine signals:
@Notifyer name(arg1::Type1, ..., argn::Typen)
- State-driven behavior: Define states for delayed calls, async tasks, and more.
- State sharing: Pass states between
Notifyerobjects. - Parent-child relationship : A Notifyer can have childrens and propagate his updates to them.
While matching the performance of similar packages, EventNotifiers.jl provides a versatile solution for projects requiring both synchronous and asynchronous observer patterns.
After using Reactive.jl and Observables.jl, I sought a way to unify their strengths. Inspired by OpenGL’s state machine, EventNotifiers.jl adopts a simple workflow:
- Set a state.
- Perform operations within that state.
- Exit the state.
Explore the full documentation here.
MIT License. See LICENSE.
Contributions are welcome!
- Fork the repository.
- Create a new branch.
- Submit a Pull Request.
Found an issue? Report it here.