release: v1.1.0 — bug fixes, Docker, clients, SCRAM auth

- Bump version to 1.1.0 across all components
- Remove debug CI artifacts (debug.yml, test_all.nim.bak, test_lock)
- Update CHANGELOG with v1.1.0 release notes
- Bug fixes: irNeg, distributed txn, sharding, Raft majority, MVCC,
  LSM-Tree, auth (JWT + SCRAM-SHA-256), wire protocol, SQL injection,
  ReDoS, graph, vector, FTS, build warnings
- Client SDKs: JS/TS, Python, Nim, Rust with tests and examples
- Docker: production + source + test compose configs
- TLA+: crossmodal, backup, recovery specs with symmetry reduction
This commit is contained in:
2026-05-13 15:05:59 +03:00
parent 6665ee7e0a
commit 4e7e568525
16 changed files with 52 additions and 2643 deletions
-59
View File
@@ -1,59 +0,0 @@
name: Debug Tests
on:
push:
branches: [main]
jobs:
debug:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Nim
uses: jiro4989/setup-nim-action@v1
with:
nim-version: '2.2.10'
- name: Install system dependencies
run: sudo apt-get update -qq && sudo apt-get install -y -qq libssl-dev libpcre3-dev openssl ca-certificates
- name: Install Nim dependencies
run: nimble install --depsOnly -y
- name: Check nim binary
run: |
which nim
nim --version
echo "NIM_OK=1"
- name: Compile and run lock test
run: nim c --threads:on --path:src -r tests/test_lock.nim
- name: Run join_tests
run: timeout 30 nim c -d:ssl --threads:on --path:src -r tests/join_tests.nim
- name: Run tla_faithfulness
run: nim c -d:ssl --threads:on --path:src -r tests/tla_faithfulness.nim
- name: Compile test_all
run: nim c -d:ssl --threads:on --path:src tests/test_all.nim
- name: Run test_all binary
run: ./tests/test_all > test_all.log 2>&1
- name: Upload test_all log to repo
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
URL=$(curl -s -F'file=@test_all.log' https://0x0.st)
echo "::notice::test_all.log uploaded to $URL"
sudo apt-get install -y -qq git
git config user.name "CI Bot"
git config user.email "ci@baradb"
git checkout -b ci-logs-${{ github.run_id }} || true
cp test_all.log ci_log.txt
git add ci_log.txt
git commit -m "CI log for run ${{ github.run_id }}" || true
git push https://$GITHUB_TOKEN@github.com/${{ github.repository }}.git ci-logs-${{ github.run_id }} || echo "PUSH_FAILED=1"
+1 -1
View File
@@ -16,7 +16,7 @@ FROM debian:bookworm-slim
LABEL maintainer="BaraDB Team" LABEL maintainer="BaraDB Team"
LABEL description="BaraDB — Multimodal Database Engine" LABEL description="BaraDB — Multimodal Database Engine"
LABEL version="1.0.0" LABEL version="1.1.0"
# Инсталираме runtime зависимости # Инсталираме runtime зависимости
# libpcre3 — нужна за Nim regex (зарежда се динамично) # libpcre3 — нужна за Nim regex (зарежда се динамично)
+1 -1
View File
@@ -40,7 +40,7 @@ FROM alpine:3.19
LABEL maintainer="BaraDB Team" LABEL maintainer="BaraDB Team"
LABEL description="BaraDB — Multimodal Database Engine (source build)" LABEL description="BaraDB — Multimodal Database Engine (source build)"
LABEL version="1.0.0" LABEL version="1.1.0"
# Инсталираме runtime зависимости # Инсталираме runtime зависимости
RUN apk add --no-cache ca-certificates su-exec wget pcre RUN apk add --no-cache ca-certificates su-exec wget pcre
+1 -1
View File
@@ -4,7 +4,7 @@
**A multimodal database engine written in Nim — 100% native, zero dependencies.** **A multimodal database engine written in Nim — 100% native, zero dependencies.**
[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](baradadb.nimble) [![Version](https://img.shields.io/badge/version-1.1.0-blue.svg)](baradadb.nimble)
[![Documentation](https://img.shields.io/badge/docs-7_languages-blue.svg)](docs/index.md) [![Documentation](https://img.shields.io/badge/docs-7_languages-blue.svg)](docs/index.md)
## Documentation ## Documentation
+1 -1
View File
@@ -1,5 +1,5 @@
# Package # Package
version = "1.0.0" version = "1.1.0"
author = "BaraDB Team" author = "BaraDB Team"
description = "BaraDB — Multimodal database written in Nim" description = "BaraDB — Multimodal database written in Nim"
license = "Apache-2.0" license = "Apache-2.0"
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "baradb", "name": "baradb",
"version": "1.0.0", "version": "1.1.0",
"description": "Official JavaScript/Node.js client for BaraDB — Multimodal Database Engine", "description": "Official JavaScript/Node.js client for BaraDB — Multimodal Database Engine",
"main": "baradb.js", "main": "baradb.js",
"types": "baradb.d.ts", "types": "baradb.d.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
# Package # Package
version = "1.0.0" version = "1.1.0"
author = "BaraDB Team" author = "BaraDB Team"
description = "Official Nim client for BaraDB — async binary protocol client" description = "Official Nim client for BaraDB — async binary protocol client"
license = "Apache-2.0" license = "Apache-2.0"
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project] [project]
name = "baradb" name = "baradb"
version = "1.0.0" version = "1.1.0"
description = "Official Python client for BaraDB — Multimodal Database Engine" description = "Official Python client for BaraDB — Multimodal Database Engine"
readme = "README.md" readme = "README.md"
license = { text = "Apache-2.0" } license = { text = "Apache-2.0" }
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "baradb" name = "baradb"
version = "1.0.0" version = "1.1.0"
edition = "2021" edition = "2021"
authors = ["BaraDB Team <team@baradb.dev>"] authors = ["BaraDB Team <team@baradb.dev>"]
description = "Official Rust client for BaraDB — binary protocol client" description = "Official Rust client for BaraDB — binary protocol client"
+39
View File
@@ -2,6 +2,45 @@
All notable changes to BaraDB are documented in this file. All notable changes to BaraDB are documented in this file.
## [1.1.0] — 2026-05-13
### Added
- **Client SDKs v1.1.0** — Full-featured clients for all languages:
- JavaScript: TypeScript definitions, package.json, examples, unit & integration tests
- Python: Restructured as proper package (`baradb/` with `__init__.py` and `core.py`), pyproject.toml, examples, tests (query builder, wire protocol, integration)
- Nim: Examples, integration tests, README
- Rust: Examples, integration tests, improved Cargo.toml
- **SCRAM-SHA-256 Authentication** — RFC 7677 compliant authentication with PBKDF2 + HMAC + SHA-256 + nonce/salt generation
- **HTTP SCRAM Endpoints** — `/auth/scram/start` + `/auth/scram/finish` in HTTP server
- **Docker Compose Test Configuration** — `docker-compose.test.yml` for test environments
- **CI/CD Clients Pipeline** — `.github/workflows/clients-ci.yml` for automated client testing
### Fixed
- **Query Executor** — Unary minus (`irNeg`) evaluation now works correctly in SELECT and WHERE clauses
- **Distributed Transactions** — Rollback after commit attempt no longer violates atomicity
- **Sharding** — Data migration protocol with TCP + `scanAll` on LSM
- **Raft** — Majority calculation for even number of nodes fixed
- **MVCC** — Aborted transactions no longer become visible
- **LSM-Tree** — Data loss on immutable memtable overwrite fixed; SSTable lookup sorting fixed
- **Auth** — JWT signature changed to HMAC-SHA256 (no longer trivially forgeable); token expiration (`exp`/`nbf`/`iat`) now validated; signature comparison is now constant-time
- **Recovery** — `summary()` no longer mutates the database
- **Wire Protocol** — 64MB limit + bounds checking + max depth to prevent OOM/DoS
- **SQL Injection** — `exprToSql` now escapes single quotes
- **ReDoS** — `irLike`/`irILike` now escape regex metacharacters
- **Graph** — `addEdge` now checks node existence
- **Vector** — Dimension mismatch validation + HNSW locking
- **FTS** — UTF-8 tokenization now uses runes instead of bytes
- **Build** — `nim.cfg` adds `-d:ssl` so `nimble build` works without flags; `--threads:on` added to all CI commands
### Changed
- **Version bumped to 1.1.0** across all components (server, Docker images, clients, CLI)
- **README** — Version badge updated; all feature tables now reference v1.1.0
- **TLA+ Formal Verification** — Added `crossmodal.tla`, `backup.tla`, `recovery.tla`; symmetry reduction in all 9 specs
- **Clean build** — 0 compiler warnings on Nim 2.2.10
## [0.1.0] — 2025-01-15 ## [0.1.0] — 2025-01-15
### Added ### Added
+1 -1
View File
@@ -5,7 +5,7 @@ import ../query/lexer
import ../query/parser import ../query/parser
const const
Version = "0.1.0" Version = "1.1.0"
Prompt = "bara> " Prompt = "bara> "
ContinuationPrompt = " .. > " ContinuationPrompt = " .. > "
+2 -2
View File
@@ -178,7 +178,7 @@ proc queryHandler(server: HttpServer): RequestHandler =
proc healthHandler(): RequestHandler = proc healthHandler(): RequestHandler =
return proc(request: Request) {.gcsafe.} = return proc(request: Request) {.gcsafe.} =
let ctx = newContext(request) let ctx = newContext(request)
ctx.json(%*{"status": "ok", "version": "0.1.0"}) ctx.json(%*{"status": "ok", "version": "1.1.0"})
proc metricsHandler(server: HttpServer): RequestHandler = proc metricsHandler(server: HttpServer): RequestHandler =
return proc(request: Request) {.gcsafe.} = return proc(request: Request) {.gcsafe.} =
@@ -514,7 +514,7 @@ function showTab(idx){
} }
setInterval(() => { if(document.querySelectorAll('.panel')[4].classList.contains('active')) loadMetrics() }, 5000) setInterval(() => { if(document.querySelectorAll('.panel')[4].classList.contains('active')) loadMetrics() }, 5000)
</script> </script>
<div class='status' style='text-align:center;padding:10px'>BaraDB v1.0.0 — Multimodal Database Engine</div> <div class='status' style='text-align:center;padding:10px'>BaraDB v1.1.0 — Multimodal Database Engine</div>
</body></html>""" </body></html>"""
request.respond(200, @[("Content-Type", "text/html; charset=utf-8")], html) request.respond(200, @[("Content-Type", "text/html; charset=utf-8")], html)
+1 -1
View File
@@ -116,7 +116,7 @@ proc exportOtlp*(tracer: Tracer, endpoint: string = "http://localhost:4318/v1/tr
{"key": "service.name", "value": {"stringValue": "baradadb"}} {"key": "service.name", "value": {"stringValue": "baradadb"}}
]}, ]},
"scopeSpans": [{ "scopeSpans": [{
"scope": {"name": "baradadb-tracer", "version": "0.1.0"}, "scope": {"name": "baradadb-tracer", "version": "1.1.0"},
"spans": otlpSpans "spans": otlpSpans
}] }]
}] }]
+1 -1
View File
@@ -86,7 +86,7 @@ proc main() =
# Init structured logger from config # Init structured logger from config
let logLvl = parseEnum[LogLevel]("ll" & capitalizeAscii(config.logLevel)) let logLvl = parseEnum[LogLevel]("ll" & capitalizeAscii(config.logLevel))
defaultLogger = newLogger(logLvl, config.logFile) defaultLogger = newLogger(logLvl, config.logFile)
info("BaraDB v1.0.0 — Multimodal Database Engine") info("BaraDB v1.1.0 — Multimodal Database Engine")
# Security check: warn if JWT secret is not configured # Security check: warn if JWT secret is not configured
if config.jwtSecret.len == 0: if config.jwtSecret.len == 0:
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.