[package] name = "flusql" version = "0.5.0" edition = "2024" authors = ["Your Name "] 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