flusql/Cargo.toml
2026-01-08 18:30:33 +03:00

101 lines
3.8 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[package]
name = "flusql"
version = "0.5.0"
edition = "2024"
authors = ["Your Name <your.email@example.com>"]
description = "Embedded SQL database with wait-free architecture, Lua support and clustering"
license = "MIT OR Apache-2.0"
readme = "README.md"
repository = "https://github.com/yourusername/flusql"
keywords = ["database", "sql", "embedded", "lua", "cluster", "mvcc", "wait-free"]
categories = ["database", "embedded"]
[features]
default = ["cli", "wal", "mvcc", "lua", "cluster", "plugins", "tokio"]
cli = ["ansi_term", "clap", "rustyline"] # интерактивный интерфейс
wal = [] # Write-Ahead Log
mvcc = [] # Multi-Version Concurrency Control
lua = ["mlua/lua54", "mlua/vendored"] # поддержка Lua 5.4 с встроенной библиотекой
cluster = ["serde", "serde_json", "tokio-tungstenite", "reqwest", "tokio"] # кластерные функции
plugins = ["serde", "serde_json", "uuid", "crossbeam"] # поддержка плагинов с lock-free архитектурой
full = ["cli", "wal", "mvcc", "lua", "cluster", "plugins"]
[dependencies]
# Основные системные зависимости
tokio = { version = "1.0", features = ["full"], optional = true }
futures = "0.3"
async-trait = "0.1"
log = "0.4"
env_logger = "0.11"
parking_lot = "0.12" # эффективные примитивы синхронизации
dashmap = "5.0" # конкурентные HashMap
thiserror = "1.0" # удобные ошибки
anyhow = "1.0" # ошибки для приложений
itertools = "0.12" # итераторы
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1.0", features = ["v4", "serde"], optional = true }
serde = { version = "1.0", features = ["derive"], optional = true }
mlua = { version = "0.11.5", optional = true } # версия Lua будет выбрана через фичи
tokio-util = "0.7.0"
# Дополнительные зависимости
hex = "0.4.3"
crossbeam = { version = "0.8.4", optional = true } # каналы для lock-free архитектуры
toml = "0.5"
libc = "0.2"
postcard = "1.0"
atty = "0.2"
lazy_static = "1.4"
regex = "1.5"
csv = "1.1"
memmap2 = "0.5"
arc-swap = "1.4"
unicode-width = "0.1"
# Сетевые и кластерные зависимости (опционально)
reqwest = { version = "0.11", optional = true } # HTTP клиент
tungstenite = { version = "0.20", optional = true } # WebSocket
tokio-tungstenite = { version = "0.20", optional = true } # асинхронные WebSocket
serde_json = { version = "1.0", optional = true }
# CLI и интерфейс
ansi_term = { version = "0.12", optional = true }
clap = { version = "4.0", optional = true, features = ["derive"] }
rustyline = { version = "12.0", optional = true }
colored = { version = "2.0", optional = true } # цветной вывод
prettytable-rs = { version = "0.10", optional = true } # табличный вывод
# Плагины и события (опционально)
notify = { version = "6.0", optional = true } # отслеживание файлов плагинов
[dev-dependencies]
tempfile = "3.0" # временные файлы для тестов
criterion = "0.5" # бенчмарки
proptest = "1.0" # property-based тестирование
tokio-test = "0.4" # тестирование async
[lib]
name = "flusql"
path = "src/lib.rs"
crate-type = ["cdylib", "staticlib", "rlib"] # поддержка разных форматов
[profile.dev]
opt-level = 0
debug = true
debug-assertions = true
overflow-checks = true
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = 'abort' # для максимальной производительности
[profile.bench]
opt-level = 3
debug = false
debug-assertions = false
overflow-checks = false
lto = true
codegen-units = 1