[workspace] members = [ "crates/compiler/*", "crates/vendor/*", "crates/glue", "crates/editor", "crates/ast", "crates/cli", "crates/code_markup", "crates/highlight", "crates/error_macros", "crates/reporting", "crates/packaging", "crates/repl_cli", "crates/repl_eval", "crates/repl_test", "crates/repl_wasm", "crates/repl_expect", "crates/test_utils", "crates/tracing", "crates/utils", "crates/docs", "crates/docs_cli", "crates/linker", "crates/wasi-libc-sys", "crates/wasm_module", "crates/wasm_interp", ] exclude = [ "ci/benchmarks/bench-runner", # Examples sometimes have Rust hosts in their platforms. The compiler should ignore those. "crates/cli_testing_examples", "examples", # Ignore building these normally. They are only imported by tests. # The tests will still correctly build them. "crates/cli_utils", "crates/compiler/test_mono_macros", "crates/compiler/str", # `cargo build` would cause roc_std to be built with default features which errors on windows "crates/roc_std", ] # Needed to be able to run `cargo run -p roc_cli --no-default-features` - # see www/build.sh for more. # # Without the `-p` flag, cargo ignores `--no-default-features` when you have a # workspace, and without `resolver = "2"` here, you can't use `-p` like this. resolver = "2" [workspace.dependencies] # NOTE: roc-lang/inkwell is a fork of TheDan64/inkwell which does not change anything. # # The reason for this fork is that the way Inkwell is designed, you have to use # a particular branch (e.g. "llvm8-0") in Cargo.toml. That would be fine, except that # breaking changes get pushed directly to that branch, which breaks our build # without warning. # # We tried referencing a specific rev on TheDan64/inkwell directly (instead of branch), # but although that worked locally, it did not work on GitHub Actions. (After a few # hours of investigation, gave up trying to figure out why.) So this is the workaround: # having an immutable tag on the roc-lang/inkwell fork which points to # a particular "release" of Inkwell. # # When we want to update Inkwell, we can sync up roc-lang/inkwell to the latest # commit of TheDan64/inkwell, push a new tag which points to the latest commit, # change the tag value in this Cargo.toml to point to that tag, and `cargo update`. # This way, GitHub Actions works and nobody's builds get broken. inkwell = { git = "https://github.com/roc-lang/inkwell", branch = "master", features = [ "llvm13-0" ] } arrayvec = "0.7.2" bincode = "1.3.3" bitvec = "1.0.1" bumpalo = { version = "3.11.0", features = ["collections"] } capstone = "0.11.0" clap = { version = "3.2.20", default-features = false, features = ["std", "color", "suggestions"] } const_format = { version = "0.2.23", features = ["const_generics"] } criterion = { git = "https://github.com/Anton-4/criterion.rs", features = ["html_reports"]} crossbeam = "0.8.2" distance = "0.4.0" encode_unicode = "1.0.0" errno = "0.2.8" fnv = "1.0.7" fs_extra = "1.2.0" hashbrown = { version = "0.12.3", features = [ "bumpalo" ] } iced-x86 = { version = "1.15.0", default-features = false, features = ["std", "decoder", "op_code_info", "instr_info"] } im = "15.0.0" im-rc = "15.0.0" indoc = "1.0.7" insta = "1.20.0" lazy_static = "1.4.0" libc = "0.2.135" libloading = "0.7.1" mach_object = "0.1" maplit = "1.0.2" memmap2 = "0.5.7" mimalloc = { version = "0.1.26", default-features = false } packed_struct = "0.10.0" page_size = "0.4.2" parking_lot = "0.12" peg = "0.8.1" pretty_assertions = "1.3.0" quickcheck = "1.0.3" quickcheck_macros = "1.0.0" regex = "1.5.5" rustyline = {git = "https://github.com/roc-lang/rustyline", rev = "e74333c"} rustyline-derive = {git = "https://github.com/roc-lang/rustyline", rev = "e74333c"} serde = { version = "1.0.144", features = ["derive"] } signal-hook = "0.3.14" snafu = { version = "0.7.1", features = ["backtraces"] } static_assertions = "1.1.0" strip-ansi-escapes = "0.1.1" strum = { version = "0.24.1", features = ["derive"] } target-lexicon = "0.12.3" tempfile = "3.2.0" unicode-segmentation = "1.10.0" walkdir = "2.3.2" wyhash = "0.5.0" # TODO: Deal with the update of object to 0.27. # It looks like it breaks linking the generated objects. # Probably just need to specify an extra field that used to be implicit or something. object = { version = "0.29.0", features = ["read", "write"] } # Optimizations based on https://deterministic.space/high-performance-rust.html [profile.release] lto = "thin" codegen-units = 1 # debug = true # enable when profiling [profile.bench] lto = "thin" codegen-units = 1