Skip to content

Latest commit

 

History

History
24 lines (20 loc) · 1.73 KB

ReadMe.md

File metadata and controls

24 lines (20 loc) · 1.73 KB

SaneIO.py Unlicensed work

wheel (GHA via nightly.link) GitHub Actions N∅ hard dependencies Libraries.io Status Code style: antiflash

A very simplified and limited IO framework.

  1. It is simple to use. It comes at cost.

    1. Count of callback funtions is minimized.
    2. Every object MUST inherit certain classes.
    3. Batteries included.
  2. It is "portable" in the sense the ports of this framework to other languages and platforms should keep the same structure, allowing the programs using it be ported more easily.

    1. The core is decoupled from concrete implementations.
    2. Upper level protocols are "Sans-IO". They don't depend on concrete IO implementations. Instead they depend on the interfaces provided by the framework.
    3. Composition over inheritance -> can be ported C and Rust support
  3. It is composable. The structure is a stack of objects.

    • Wanna change the protocol in the stack? Just replace the layer object!
    • Wanna access the same server using both TCP and UART? Just add a mux!
    • Wanna access multiple upper layer protocols over the same low-level protocol (i.e. TCP)? Again, just add a mux!