[package]
name = "rustpython-vm"
description = "RustPython virtual machine."
include = ["src/**/*.rs", "Cargo.toml", "build.rs", "Lib/**/*.py"]
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
repository.workspace = true
license.workspace = true

[features]
default = ["compiler", "wasmbind"]
importlib = []
encodings = ["importlib"]
vm-tracing-logging = []
flame-it = ["flame", "flamer"]
freeze-stdlib = ["encodings"]
jit = ["rustpython-jit"]
threading = ["rustpython-common/threading"]
compiler = ["parser", "codegen", "rustpython-compiler"]
ast = ["rustpython-ast"]
codegen = ["rustpython-codegen", "ast"]
parser = ["rustpython-parser", "ast"]
serde = ["dep:serde"]
wasmbind = ["chrono/wasmbind", "getrandom/js", "wasm-bindgen"]

[dependencies]
rustpython-compiler = { workspace = true, optional = true }
rustpython-codegen = { workspace = true, optional = true }
rustpython-common = { workspace = true }
rustpython-derive = { workspace = true }
rustpython-jit = { workspace = true, optional = true }

rustpython-ast = { workspace = true, optional = true }
rustpython-parser = { workspace = true, optional = true }
rustpython-compiler-core = { workspace = true }
rustpython-parser-core = { workspace = true }
rustpython-literal = { workspace = true }
rustpython-format = { workspace = true }
rustpython-sre_engine = { workspace = true }

ascii = { workspace = true }
ahash = { workspace = true }
atty = { workspace = true }
bitflags = { workspace = true }
bstr = { workspace = true }
cfg-if = { workspace = true }
crossbeam-utils = { workspace = true }
chrono = { workspace = true, features = ["wasmbind"] }
flame = { workspace = true, optional = true }
getrandom = { workspace = true }
hex = { workspace = true }
indexmap = { workspace = true }
itertools = { workspace = true }
is-macro = { workspace = true }
libc = { workspace = true }
log = { workspace = true }
nix = { workspace = true }
malachite-bigint = { workspace = true }
num-complex = { workspace = true }
num-integer = { workspace = true }
num-traits = { workspace = true }
num_enum = { workspace = true }
once_cell = { workspace = true }
parking_lot = { workspace = true }
paste = { workspace = true }
rand = { workspace = true }
serde = { workspace = true, optional = true }
static_assertions = { workspace = true }
thiserror = { workspace = true }
thread_local = { workspace = true }
memchr = { workspace = true }

caseless = "0.2.1"
flamer = { version = "0.4", optional = true }
half = "1.8.2"
memoffset = "0.9.1"
optional = "0.5.0"
result-like = "0.4.6"
timsort = "0.1.2"

## unicode stuff
unicode_names2 = { workspace = true }
# TODO: use unic for this; needed for title case:
# https://github.com/RustPython/RustPython/pull/832#discussion_r275428939
unicode-casing = "0.1.0"
# update version all at the same time
unic-ucd-bidi      = "0.9.0"
unic-ucd-category  = "0.9.0"
unic-ucd-ident     = "0.9.0"

[target.'cfg(unix)'.dependencies]
rustix = { workspace = true }
exitcode = "1.1.2"
uname = "0.1.1"
strum = "0.24.0"
strum_macros = "0.24.0"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
rustyline = { workspace = true }
which = "4.2.5"

[target.'cfg(any(not(target_arch = "wasm32"), target_os = "wasi"))'.dependencies]
num_cpus = "1.13.1"

[target.'cfg(windows)'.dependencies]
junction = { workspace = true }
schannel = { workspace = true }
widestring = { workspace = true }
winreg = "0.10.1"

[target.'cfg(windows)'.dependencies.windows]
version = "0.52.0"
features = [
  "Win32_Foundation",
  "Win32_System_LibraryLoader",
  "Win32_System_Threading",
  "Win32_UI_Shell",
]

[target.'cfg(windows)'.dependencies.windows-sys]
workspace = true
features = [
  "Win32_Foundation",
  "Win32_Networking_WinSock",
  "Win32_Security",
  "Win32_Storage_FileSystem",
  "Win32_System_Console",
  "Win32_System_Diagnostics_Debug",
  "Win32_System_Environment",
  "Win32_System_Ioctl",
  "Win32_System_LibraryLoader",
  "Win32_System_Memory",
  "Win32_System_Performance",
  "Win32_System_Pipes",
  "Win32_System_Registry",
  "Win32_System_SystemInformation",
  "Win32_System_SystemServices",
  "Win32_System_Threading",
  "Win32_UI_Shell",
  "Win32_UI_WindowsAndMessaging",
]

[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies]
wasm-bindgen = { workspace = true, optional = true }
getrandom = { workspace = true, features = ["custom"] }

[build-dependencies]
glob = { workspace = true }
itertools = { workspace = true }
rustc_version = "0.4.0"

[lints]
workspace = true