Skip to content

Commit 4797dd0

Browse files
author
Leo Louvar
committed
Release v3.0.0: AI automation - workflows, sandbox, stream, observability, cache; universal improvements (binary serialization, span init, sandbox result wrapping, GenServer startup)
1 parent b7b30bb commit 4797dd0

11 files changed

Lines changed: 2941 additions & 4 deletions

File tree

RELEASE_NOTES_v3.0.0.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# Zixir v3.0.0 — AI automation release
2+
3+
This release adds full AI automation support: workflow orchestration with checkpointing, resource sandboxing, streaming/async, observability, and a cache layer. Plus universal improvements for binary serialization, tracing, sandbox results, and GenServer startup.
4+
5+
## AI automation features
6+
7+
### 1. Workflow orchestration with checkpointing ✅
8+
9+
- **Files:** `lib/zixir/workflow.ex`, `lib/zixir/workflow/checkpoint.ex`
10+
- **Features:** DAG execution, dependency management, automatic checkpointing, resume from failure, retry policies, dead letter queues
11+
- **Usage:** Build fault-tolerant AI pipelines that recover automatically
12+
13+
### 2. Resource limits & sandboxing ✅
14+
15+
- **File:** `lib/zixir/sandbox.ex`
16+
- **Features:** Time limits, memory limits (e.g. "2GB"), CPU monitoring, automatic process termination, call depth limits
17+
- **Usage:** Prevent runaway AI processes from consuming all resources
18+
19+
### 3. Streaming & async support ✅
20+
21+
- **File:** `lib/zixir/stream.ex`
22+
- **Features:** Async/await, parallel execution, lazy sequences, stream transformations (map, filter, batch), backpressure
23+
- **Usage:** Handle streaming AI responses (LLMs) and parallel model inference
24+
25+
### 4. Structured observability ✅
26+
27+
- **File:** `lib/zixir/observability.ex`
28+
- **Features:** JSON logging, execution tracing with spans, Prometheus-compatible metrics, performance monitoring
29+
- **Usage:** Monitor AI workflows without manual intervention
30+
31+
### 5. Cache & persistence layer ✅
32+
33+
- **File:** `lib/zixir/cache.ex`
34+
- **Features:** In-memory caching with TTL, disk persistence, database-like operations (insert/query/update), cache warming
35+
- **Usage:** Store intermediate results and avoid redundant computation
36+
37+
## Universal improvements
38+
39+
| Improvement | Benefit |
40+
|-------------|---------|
41+
| **Binary serialization** (instead of JSON) | Handles all Elixir data types (tuples, atoms, PIDs, etc.); more reliable for internal state persistence |
42+
| **Span struct initialization** | Prevents KeyError in all tracing scenarios; works regardless of span lifecycle |
43+
| **Result wrapping in Sandbox** | Follows Elixir `{:ok, result}` / `{:error, reason}` convention; consistent across all sandboxed operations |
44+
| **GenServer startup handling** | Standard Elixir pattern for idempotent service startup; works in supervision trees and manual startup |
45+
46+
## Requirements
47+
48+
- **Elixir** 1.14+ / OTP 25+
49+
- **Zig** 0.15+ (build-time; run `mix zig.get` after `mix deps.get`)
50+
- **Python** 3.8+ *(optional)* for ML/specialist calls
51+
52+
## Quick start
53+
54+
```bash
55+
git clone https://github.com/PersistenceOS/Zixir.git
56+
cd Zixir
57+
git checkout v3.0.0
58+
mix deps.get
59+
mix zig.get
60+
mix compile
61+
mix test
62+
```
63+
64+
## License
65+
66+
**Apache-2.0** — see [LICENSE](LICENSE).

lib/zixir/application.ex

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,32 @@ defmodule Zixir.Application do
99
@impl true
1010
def start(_type, _args) do
1111
children = [
12+
# Core infrastructure
1213
{Registry, keys: :unique, name: Zixir.Python.Registry},
1314
Zixir.Memory,
15+
16+
# Python bridge
1417
Zixir.Python.CircuitBreaker,
1518
Zixir.Python.Supervisor,
19+
20+
# Module system
1621
Zixir.Modules,
22+
23+
# AI Automation services
24+
Zixir.Workflow,
25+
Zixir.Sandbox,
26+
Zixir.Stream,
27+
Zixir.Observability,
28+
Zixir.Cache,
29+
30+
# Intent router (last, depends on all above)
1731
Zixir.Intent
1832
]
1933

2034
opts = [
2135
strategy: :rest_for_one,
22-
max_restarts: Application.get_env(:zixir, :max_restarts, 3),
23-
max_seconds: Application.get_env(:zixir, :restart_window_seconds, 5)
36+
max_restarts: Application.get_env(:zixir, :max_restarts, 10),
37+
max_seconds: Application.get_env(:zixir, :restart_window_seconds, 30)
2438
]
2539

2640
Supervisor.start_link(children, opts)

0 commit comments

Comments
 (0)