*s*•**kipja**•*c*•**k**

A small, pelagic fish from the tuna family. Found in large schools in the
tropical and sub-tropical oceans of the world.

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/kipjak)
![PyPI - Version](https://img.shields.io/pypi/v/kipjak)
![PyPI - Coverage](https://img.shields.io/badge/coverage-75%25-brightgreen)
![PyPI - Integration](https://img.shields.io/badge/integration-passing-cyan)

---

The **kipjak** library is applicable to;

* **Large, multiprocess website backends**
* **Applications with complex multithreading requirements**
* **Components requiring one or more subprocesses**
* **Complex, distributed process control systems**

---

The technical goal of the **kipjak** library is to deliver software communications, wherever the
relevant software entities may be located. At the lowest level this involves a message-driven
framework providing for seamless communication between threads, processes and hosts. At higher
levels it delivers responsiveness, concurrency and clarity.

* Sophistication with clarity ••• *separation from the details of threads and networks*
* Quick on-boarding ••• *cookbook of multithreading, multiprocessing and multihosting solutions*
* Optimal throughput ••• *load distribution across threads, processes and hosts*
* Quality client feedback ••• *negative responses to requests during periods of heavy load*
* Simple leveraging of sub-processes ••• *load child processes as callable libraries*
* Process orchestration ••• *definition and execution of persisted process groups*
* System daemons ••• *foreground or background execution*
* True application messaging ••• *send and receive application values; Person, list[Person], dict[UUID,Person], bool, etc*
* Broker-less communicatins ••• *no middleware, no additional hop, no additional latency*
* Publish-subscribe networking ••• *networking without network addresses*
* Industrial-grade encryption ••• *NaCl (Salt)*
* Automated transport monitoring ••• *discreet keep-alive protocol*
* HTTP integration ••• *RPC or RESTful APIs*
* Technical support ••• *baked-in logging, log storage and log recovery*

A few comparisons of related technologies with **kipjak**;

* HTTP is a blocking, request-response model ••• *fundamentally asynchronous with HTTP integration*
* [ZeroMQ](https://zeromq.org) delegates message serialization, e.g. to [protobuf](https://protobuf.dev) ••• *sends and receives final application values*
* [NATS](https://nats.io) is broker-based middleware ••• *uses direct peer-to-peer connections*
