Merge release/v1.1.0 into main
This commit is contained in:
@@ -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
@@ -16,7 +16,7 @@ FROM debian:bookworm-slim
|
||||
|
||||
LABEL maintainer="BaraDB Team"
|
||||
LABEL description="BaraDB — Multimodal Database Engine"
|
||||
LABEL version="1.0.0"
|
||||
LABEL version="1.1.0"
|
||||
|
||||
# Инсталираме runtime зависимости
|
||||
# libpcre3 — нужна за Nim regex (зарежда се динамично)
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ FROM alpine:3.19
|
||||
|
||||
LABEL maintainer="BaraDB Team"
|
||||
LABEL description="BaraDB — Multimodal Database Engine (source build)"
|
||||
LABEL version="1.0.0"
|
||||
LABEL version="1.1.0"
|
||||
|
||||
# Инсталираме runtime зависимости
|
||||
RUN apk add --no-cache ca-certificates su-exec wget pcre
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
**A multimodal database engine written in Nim — 100% native, zero dependencies.**
|
||||
|
||||
[](baradadb.nimble)
|
||||
[](baradadb.nimble)
|
||||
[](docs/index.md)
|
||||
|
||||
## Documentation
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
# Package
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
author = "BaraDB Team"
|
||||
description = "BaraDB — Multimodal database written in Nim"
|
||||
license = "Apache-2.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "baradb",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"description": "Official JavaScript/Node.js client for BaraDB — Multimodal Database Engine",
|
||||
"main": "baradb.js",
|
||||
"types": "baradb.d.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Package
|
||||
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
author = "BaraDB Team"
|
||||
description = "Official Nim client for BaraDB — async binary protocol client"
|
||||
license = "Apache-2.0"
|
||||
|
||||
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "baradb"
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
description = "Official Python client for BaraDB — Multimodal Database Engine"
|
||||
readme = "README.md"
|
||||
license = { text = "Apache-2.0" }
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "baradb"
|
||||
version = "1.0.0"
|
||||
version = "1.1.0"
|
||||
edition = "2021"
|
||||
authors = ["BaraDB Team <team@baradb.dev>"]
|
||||
description = "Official Rust client for BaraDB — binary protocol client"
|
||||
|
||||
@@ -2,6 +2,45 @@
|
||||
|
||||
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
|
||||
|
||||
### Added
|
||||
|
||||
@@ -5,7 +5,7 @@ import ../query/lexer
|
||||
import ../query/parser
|
||||
|
||||
const
|
||||
Version = "0.1.0"
|
||||
Version = "1.1.0"
|
||||
Prompt = "bara> "
|
||||
ContinuationPrompt = " .. > "
|
||||
|
||||
|
||||
@@ -178,7 +178,7 @@ proc queryHandler(server: HttpServer): RequestHandler =
|
||||
proc healthHandler(): RequestHandler =
|
||||
return proc(request: Request) {.gcsafe.} =
|
||||
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 =
|
||||
return proc(request: Request) {.gcsafe.} =
|
||||
@@ -514,7 +514,7 @@ function showTab(idx){
|
||||
}
|
||||
setInterval(() => { if(document.querySelectorAll('.panel')[4].classList.contains('active')) loadMetrics() }, 5000)
|
||||
</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>"""
|
||||
request.respond(200, @[("Content-Type", "text/html; charset=utf-8")], html)
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ proc exportOtlp*(tracer: Tracer, endpoint: string = "http://localhost:4318/v1/tr
|
||||
{"key": "service.name", "value": {"stringValue": "baradadb"}}
|
||||
]},
|
||||
"scopeSpans": [{
|
||||
"scope": {"name": "baradadb-tracer", "version": "0.1.0"},
|
||||
"scope": {"name": "baradadb-tracer", "version": "1.1.0"},
|
||||
"spans": otlpSpans
|
||||
}]
|
||||
}]
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ proc main() =
|
||||
# Init structured logger from config
|
||||
let logLvl = parseEnum[LogLevel]("ll" & capitalizeAscii(config.logLevel))
|
||||
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
|
||||
if config.jwtSecret.len == 0:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Reference in New Issue
Block a user