[package]
name = "mmtk"
version = "0.2.0"
authors = ["The MMTk Developers <>"]
edition = "2018"
license = "MIT OR Apache-2.0"
description = "MMTk is a framework for the design and implementation of high-performance and portable memory managers."
homepage = "https://www.mmtk.io"
repository = "https://github.com/mmtk/mmtk-core"
readme = "README.md"
categories = ["memory-management"]
keywords = ["gc", "garbage", "collection", "garbage-collection", "allocation"]

[lib]
name = "mmtk"
crate-type = ["rlib"]
doctest = false

[package.metadata.docs.rs]
features = ["semispace"]

[dependencies]
custom_derive = "0.1"
enum_derive = "0.1"
libc = "0.2"
lazy_static = "1.1"
log = {version = "0.4", features = ["max_level_trace", "release_max_level_off"] }
crossbeam-deque = "0.6"
num_cpus = "1.8"
enum-map = "0.6.2"
downcast-rs = "1.1.1"
atomic-traits = "0.2.0"
atomic = "0.4.6"
spin = "0.5.2"
env_logger = "0.8.2"

[dev-dependencies]
crossbeam = "0.7.3"
rand = "0.7.3"

[features]
default = []

# plans
nogc = ["immortalspace", "largeobjectspace"]
semispace = ["immortalspace", "largeobjectspace", "copyspace"]
gencopy = ["immortalspace", "largeobjectspace", "copyspace"]

# spaces
base_spaces = []
vm_space = ["base_spaces"]
ro_space = ["base_spaces"]
code_space  = ["base_spaces"]

immortalspace = []
copyspace = []
largeobjectspace = []
lockfreeimmortalspace = []

sanity = []
nogc_lock_free = ["nogc", "lockfreeimmortalspace"]
nogc_no_zeroing = ["nogc_lock_free"]

single_worker = []
