101 lines
3.8 KiB
TOML
101 lines
3.8 KiB
TOML
[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
|