Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sackosoft/sanctum
Sanctum is an event streaming and storage platform which can be scripted by "spells" written in Lua or Wren.
https://github.com/sackosoft/sanctum
event-driven event-streaming lua zig
Last synced: about 1 month ago
JSON representation
Sanctum is an event streaming and storage platform which can be scripted by "spells" written in Lua or Wren.
- Host: GitHub
- URL: https://github.com/sackosoft/sanctum
- Owner: sackosoft
- License: mit
- Created: 2024-12-29T16:48:25.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-01-06T03:51:30.000Z (about 1 month ago)
- Last Synced: 2025-01-06T04:26:15.240Z (about 1 month ago)
- Topics: event-driven, event-streaming, lua, zig
- Language: Zig
- Homepage:
- Size: 25.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Sanctum
Welcome, sorcerer, to the Sanctum. Write spells in Lua for transforming and acting on event streams of magical energy.
## What is Sanctum?
Sanctum is a platform that enables sorcerers to craft powerful spells that process and transform event streams. Sorcerers
focus on writing spells in their preferred language, while Sanctum handles the complexities of event storage, state and routing
these energies across the ethereal planes.For more detailed reference information and documentation, refer to the [`docunomicon`](./docunomicon).
## Roadmap
# Release Roadmap
## v0.1 Proof of Concept - **Active**
Demonstrates event processing with Spells on a throw-away runtime. Sanctum runs as a CLI application and
covered by a suite of regression tests to enable building and refactoring the core engine. Runs on a
single node (no networking, no persistence).- [ ] Docunomicon - Definition and example of Lua spells
- [x] Minimal documentation for spells in the runtime.
- [ ] Detailed documentation for spells in the runtime.
- [ ] Exhaustive documentation for spells in the runtime.
- [ ] Spell Casting
- [x] Spells can be loaded dynamically into the sanctum from files.
- [ ] Spells are loaded and unloaded with the prepare and unprepare lifecycle hooks.
- [x] Counting loop spell is added with a reusable regression test.
- [x] Many reusable regression tests can be defined.
- [x] Regression tests are fully self-contained. Seed events, the initial event loop event,
can be specified in Lua and loaded by the runtime.
- [x] Malformed spells (spell parse failure) are handled gracefully.
- [x] Handle parsing failing line number from errors Lua message.
- [x] Unstable magic (internal spell failures) is handled gracefully.
- [ ] Spells can consume magical energy (events).
- [ ] Magical energies are always internally stored as MessagePack buffers.
- [ ] Spells can produce magical energy or act as a terminal action, producing nothing.
- [ ] Remove this section from the README, create release notes and initial release artifacts.## v0.2 Prototype - Pending
Upgrades the runtime with persistence for events and spell state. Sanctum can be used for real workloads with no guarantees.
Runs on a single node (no networking).- [ ] Storage Engine MVP
- [ ] Durable event logging.
- [ ] Durable spell state
- [ ] Spells can leverage a library for saving and loading data.
- [ ] Spells can use a key value store.
- [ ] Spells can leverage range queries (e.g. SELECT * FROM state WHERE v > 10 AND v < 20). I.e. support clustering in state store.
- [ ] (Option) Link SQLite?
- [ ] (Option) Provide simple data structures, serialize and save to disk?
- [ ] Add initial logging and metrics to identify performance characteristics.## v1.0 Beta - Pending
Sanctum fully featured as an MVP.
- [ ] Production Readiness
- [ ] Crash recovery guarantees.
- [ ] Limits defined and scale targets established.
- [ ] Platform Stability
- [ ] API contracts
- [ ] Documentation
- [ ] Performance optimization## Glossary
Novice sorcers may struggle to uncover the mysteries of the Sanctum:
| Mystical Term | Technical Meaning |
|---------------|-------------------|
| Sanctum | A scriptable event streaming and storage platform. |
| Sorcerers | Developers building on Sanctum. |
| Spells | User-defined modules invoked with events in an event stream. Spells may cause new events to be created. |
| Energy Streams | Ordered event streams with immutable data. |
| Runes | Configuration options. |
| Runeset | YAML configuration file of options which can be used by the Sanctum or its Spells. |## Want to help?
Thank you, brave scholar of the dark arts, please refer to [CONTRIBUTING.md][CONT].
[CONT]: ./Contributing.md
## Project Status
Incubation.
*This mystical undertaking is still in its early phases.*