[package] name = "jja" version = "0.9.1" # remember to update README.md edition = "2021" authors = ["Ali Polatel "] description = "swiss army knife for chess file formats" readme = "README.md" license = "GPL-3.0-or-later" categories = ["command-line-utilities", "filesystem", "games"] keywords = ["cli", "utility", "game", "chess", "terminal"] build = "build.rs" repository = "https://git.sr.ht/~alip/jja" rust-version = "1.70" # remember to update README.md [badges] maintenance = { status = "actively-developed" } # io-uring is enabled by default on Linux and requires liburing. # i18n is enabled by default, and must be disabled for static linking. [features] default = ["i18n", "io-uring"] io-uring = ["rocksdb/io-uring"] i18n = ["dep:i18n-embed", "dep:rust-embed", "dep:tr"] # docs.rs containers have no liburing [package.metadata.docs.rs] no-default-features = true [dependencies] anyhow = "1.0" benchmarking = "0.4" bytefmt = "0.1.7" bzip2 = "0.4" clap = { version = "4.4", features = ["env", "unicode", "color"] } console = { version = "0.15", features = ["windows-console-colors"] } crossbeam = { version = "0.8", features = ["crossbeam-channel"] } ctrlc = { version = "3.4", features = ["termination"] } dialoguer = { version = "0.11", default-features = false, features = ["editor"] } flate2 = "1.0" hostname = "0.4" human-panic = "1.2" i18n-embed = { version = "0.14", default-features = false, features = ["desktop-requester", "gettext-system", "rust-embed", "tr"], optional = true } indicatif = "0.17" is-terminal = "0.4" itertools = { version = "0.12", default-features = false, features = ["use_alloc", "use_std"] } lz4 = "1.24" memmap = "0.7" num_cpus = "1.16" once_cell = "1.19" pgcopy = "0.0.2" pgn-reader = "0.25" prettytable-rs = { version = "0.10", default-features = false } quick-csv = "0.1" rand = "0.8" rand_xorshift = "0.3" rayon = "1.10" regex = { version = "1.10", default-features = false, features = ["std", "unicode"] } rocksdb = { version = "0.21", features = ["bzip2", "lz4", "snappy", "zlib", "zstd", "multi-threaded-cf"], default-features = false } rusqlite = { version = "0.31", features = ["bundled", "hooks"] } rust-embed = { version = "8.4", default-features = false, features = ["debug-embed"], optional = true } serde = "1.0" serde_json = "1.0" sha2 = "0.10" shakmaty = "0.26" shakmaty-syzygy = "0.24" shell-escape = "0.1" tempfile = "3.10" termtree = "0.4" textwrap = { version = "0.16", default-features = false } tr = { version = "0.1", default-features = false, features = ["gettext"], optional = true } xz2 = "0.1" zstd = { version = "0.13", default-features = false } # Get user name relatively portably. [target.'cfg(windows)'.dependencies] username = "0.2" [target.'cfg(unix)'.dependencies] nix = { version = "0.28", default-features = false, features = ["signal", "user"] } # Use jemalloc on UNIX for RocksDB for better performance # It does not build on Windows for us at the time of writing: # https://builds.sr.ht/~alip/job/968628#task-build-146 # However upstream seems to think it does: # https://github.com/rust-rocksdb/rust-rocksdb/blob/44dc84171adefbbe75a25b72c35f773a643655a0/librocksdb-sys/build.rs#L214 # For the moment, we just keep it default to on for UNIX, as it's the most convenient. [target.'cfg(unix)'.dependencies.rocksdb] version = "0.21" features = ["jemalloc"] [build-dependencies] built = { version = "0.7", default-features = false, features = ["git2"] } [dev-dependencies] test_bin = "0.4" [profile.release] lto = true codegen-units = 1 # Includes debug information in release builds. Necessary for profiling. Does not # slow down the executable. debug = true # The default optimization level is 3 for release mode builds. # 0 means disable optimization and is the default for debug mode buids. # (Setting opt-level=1 for debug builds is a good way of speeding them up a bit.) # "s" means optimize for size, "z" reduces size even more. opt-level = 3