Skip to content

This is package that implement a powerful reactive system for julia. With is state changing abilities, you can easily swith between synchronous and asynchronous states.

License

Notifications You must be signed in to change notification settings

Gesee-y/EventNotifiers.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EventNotifiers.jl

Introduction

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.

Installation

For the stable release:

julia> ]add EventNotifiers  

For the development version:

julia> ]add https://github.com/Gesee-y/EventNotifiers.jl.git  

Features

  • 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 Notifyer objects.
  • Parent-child relationship : A Notifyer can have childrens and propagate his updates to them.

Why EventNotifiers.jl?

While matching the performance of similar packages, EventNotifiers.jl provides a versatile solution for projects requiring both synchronous and asynchronous observer patterns.

Why States?

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:

  1. Set a state.
  2. Perform operations within that state.
  3. Exit the state.

Documentation

Explore the full documentation here.

License

MIT License. See LICENSE.

Contributing

Contributions are welcome!

  1. Fork the repository.
  2. Create a new branch.
  3. Submit a Pull Request.

Bug Reports

Found an issue? Report it here.

About

This is package that implement a powerful reactive system for julia. With is state changing abilities, you can easily swith between synchronous and asynchronous states.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages