Roadmap
This page tracks features planned for upcoming releases and the reasoning behind them.
v0.3.1 — Released (2026-02-28)
All items below were delivered in this release.
| Feature | Status |
|---|---|
| PostgreSQL read / write / execute | ✅ Done |
| MySQL read / write / execute | ✅ Done |
| SQL Server read / write / execute | ✅ Done |
| MongoDB read / write / execute | ✅ Done |
| PostgreSQL COPY FROM STDIN (> 10k rows) | ✅ Done |
| MySQL LOAD DATA LOCAL INFILE (> 10k rows) | ✅ Done (server-side flag required) |
| SQL Server batch INSERT 500 rows/stmt | ✅ Done |
| SQL Server MERGE upsert | ✅ Done |
| MongoDB ordered:false, 10k doc batches | ✅ Done |
to_dict(), to_json() — full DataFrame export | ✅ Done |
value_counts(), unique() — EDA Observer | ✅ Done |
df.add(), df.sub(), df.std(), df.min_max_scale() | ✅ Done |
df.sort_values(ascending, gpu) | ✅ Done |
| GPU Bitonic sort (WebGPU / wgpu) with CPU fallback | ✅ Done |
Zero-copy NumPy bridge (__array__ protocol) | ✅ Done |
| PHP SDK — full feature parity | ✅ Done |
| Node.js SDK — full feature parity | ✅ Done |
| FFI memory safety — heap vs. thread-local string ownership | ✅ Fixed |
v0.3.2 — Released (2026-03-15)
All items below were delivered in this release.
| Feature | Status |
|---|---|
write_sql_prdx() — PRDX streaming to PostgreSQL via COPY FROM STDIN, O(block) RAM | ✅ Done |
| GroupBy aggregation (Gap 1) | ✅ Done — Python, JS, PHP |
| String & Date operations (Gap 2) | ✅ Done — Python, JS, PHP |
| Decimal type (Gap 3) | ✅ Done — Python, JS, PHP |
| Window functions (Gap 4) | ✅ Done — Python, JS, PHP |
| Lazy pipeline (Gap 5) | ✅ Done — Python, JS, PHP |
| GPU compute (Gap 7) | ✅ Done — Python, PHP |
| Pivot & Melt (Gap 8) | ✅ Done — Python, PHP |
| Time Series Fill (Gap 9) | ✅ Done — Python, PHP |
| Nested Data / JSON (Gap 10) | ✅ Done — Python, PHP |
| Spill to Disk (Gap 11) | ✅ Done — Python, PHP |
| Universal Loader PRDX (Gap 12) | ✅ Done — Python, PHP |
| Streaming GroupBy (Gap 13) | ✅ Done — PHP |
| SQL over DataFrames (Gap 14) | ✅ Done — Python, JS, PHP |
| Cloud Storage (Gap 15) | ✅ Done — Python |
| Live Query (Gap 16) | ✅ Done — Python |
| WebAssembly (Gap 17) | ✅ Done — JS |
| Encryption (Gap 18) | ✅ Done — Python |
| Data Contracts (Gap 19) | ✅ Done — Python |
| Time Travel (Gap 20) | ✅ Done — Python |
| Arrow Flight (Gap 21) | ✅ Done — Python |
| Distributed Cluster (Gap 22) | ✅ Done — Python |
| SQL Server Fix (Gap 23) | ✅ Done — Python |
| Fault Tolerance (Gap 26) | ✅ Done — Python |
| Query Planner (Gap 27) | ✅ Done — Python |
| Linear Algebra (Gap 28) | ✅ Done — Python |
| REST Connector (Gap 29) | ✅ Done — Python |
| FFI Reference documentation (181 exports) | ✅ Done |
| VAP31 CSV→PostgreSQL — 3 SDKs | ✅ Done |
| VAP32 PRDX→PostgreSQL — 3 SDKs | ✅ Done — 150M rows validated |
v0.3.4 — Released (2026-04-01)
| Feature | Status |
|---|---|
| SQL Cursor API — all 3 SDKs (Gap 30) | query_to_results() generator + sql_to_parquet() validated in Python, JavaScript, PHP (11/11 tests each) |
v0.3.3 — Released (2026-03-17)
| Feature | Status |
|---|---|
| SQL Cursor API — Rust Core (Gap 30) | SqlCursor struct in engine/sql/postgres.rs. 5 new FFI exports: pardox_scan_sql_cursor_open, pardox_scan_sql_cursor_fetch, pardox_scan_sql_cursor_offset, pardox_scan_sql_cursor_close, pardox_scan_sql_to_parquet. Zero warnings, zero errors |
v0.4.0 — Planned
SQL Server — Password Special Character Fix
Problem: The tiberius Rust driver (v0.12) fails to authenticate when the SQL Server password contains ! or certain other special characters.
Planned fix: Audit tiberius v0.12.x login.rs and patch or upgrade to a version where the encoding is correct for all printable ASCII characters.
Workaround until fixed: Use a SQL Server password that contains only [A-Za-z0-9_\-@#$].
Error Code Hierarchy
Problem: All database errors currently return -100 regardless of the actual failure reason, making diagnostics difficult.
Planned improvement:
| Code range | Category |
|---|---|
| -100 to -199 | Connection / authentication errors |
| -200 to -299 | Query parse / syntax errors |
| -300 to -399 | Data type mismatch |
| -400 to -499 | Constraint violations |
| -500 to -599 | Timeout errors |
Additional Native Data Sources
| Source | Format / Protocol | Notes |
|---|---|---|
| Apache Parquet | Binary columnar | Direct read into HyperBlock via parquet2 crate |
| Apache Kafka | Streaming | Topic → DataFrame streaming ingestion |
| AWS S3 | Object storage | CSV / Parquet over S3 via aws-sdk-rust |
| Snowflake | JDBC-like | Via Snowflake Arrow export |
| Oracle DB | OCI | Via oracle Rust crate |
| SQLite | File-based SQL | Via rusqlite |
Gaps 7–14 — JavaScript SDK
JavaScript SDK currently segfaults on Gaps 7–11 due to a known Core issue. Fix and re-validate planned.
Long-Term Vision
- Distributed execution: Partition HyperBlocks across nodes via a Rust-native scheduler.
- Streaming DataFrames: Ingest from Kafka / Kinesis as append-only HyperBlock partitions.
- GPU-accelerated aggregations: Extend GPU support from sort to sum, mean, and groupby using compute shaders.
- WASM SDK: Full PardoX in the browser via WebAssembly.