[workspace] members = [ "crates/compiler/*", "crates/vendor/*", "crates/glue", "crates/editor", "crates/ast", "crates/cli", "crates/cli_utils", "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/roc_std", "crates/test_utils", "crates/valgrind", "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", ] # 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.package] authors = ["The Roc Contributors"] edition = "2021" license = "UPL-1.0" repository = "https://github.com/roc-lang/roc" version = "0.0.1" [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 = "inkwell-llvm-15", features = ["llvm13-0"] } arrayvec = "0.7.2" # update roc_std/Cargo.toml on change base64-url = "1.4.13" bincode = "1.3.3" bitflags = "1.3.2" bitvec = "1.0.1" blake3 = "1.3.3" brotli = "3.3.4" # used for decompressing tarballs over HTTPS, if the server supports brotli bumpalo = { version = "3.12.0", features = ["collections"] } bytemuck = { version = "1.13.1", features = ["derive"] } capstone = { version = "0.11.0", default-features = false } cgmath = "0.18.0" clap = { version = "3.2.23", default-features = false, features = ["std", "color", "suggestions"] } colored = "2.0.0" confy = { git = 'https://github.com/rust-cli/confy', features = ["yaml_conf"], default-features = false } console_error_panic_hook = "0.1.7" const_format = { version = "0.2.30", features = ["const_generics"] } copypasta = "0.8.2" criterion = { git = "https://github.com/Anton-4/criterion.rs", features = ["html_reports"] } criterion-perf-events = { git = "https://github.com/Anton-4/criterion-perf-events" } crossbeam = "0.8.2" dircpy = "0.3.14" distance = "0.4.0" encode_unicode = "1.0.0" errno = "0.3.0" flate2 = "1.0.25" fnv = "1.0.7" fs_extra = "1.3.0" futures = "0.3.26" glyph_brush = "0.7.7" hashbrown = { version = "0.13.2", features = ["bumpalo"] } iced-x86 = { version = "1.18.0", default-features = false, features = ["std", "decoder", "op_code_info", "instr_info"] } im = "15.1.0" im-rc = "15.1.0" indexmap = "1.9.2" indoc = "1.0.9" insta = "1.28.0" js-sys = "0.3.61" lazy_static = "1.4.0" libc = "0.2.139" # update roc_std/Cargo.toml on change libfuzzer-sys = "0.4" libloading = "0.7.4" log = "0.4.17" mach_object = "0.1" maplit = "1.0.2" memmap2 = "0.5.10" mimalloc = { version = "0.1.34", default-features = false } nonempty = "0.8.1" object = { version = "0.30.3", features = ["read", "write"] } packed_struct = "0.10.1" page_size = "0.5.0" palette = "0.6.1" parking_lot = "0.12" peg = "0.8.1" perfcnt = "0.8.0" pest = "2.5.6" pest_derive = "2.5.6" pretty_assertions = "1.3.0" # update roc_std/Cargo.toml on change proc-macro2 = "1.0.51" proptest = "1.1.0" pulldown-cmark = { version = "0.9.2", default-features = false } quickcheck = "1.0.3" # update roc_std/Cargo.toml on change quickcheck_macros = "1.0.0" # update roc_std/Cargo.toml on change quote = "1.0.23" rand = "0.8.5" regex = "1.7.1" remove_dir_all = "0.8.1" reqwest = { version = "0.11.14", default-features = false, features = ["blocking", "rustls-tls"] } # default-features=false removes libopenssl as a dependency on Linux, which might not be available! rlimit = "0.9.1" 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.153", features = ["derive"] } # update roc_std/Cargo.toml on change serde-xml-rs = "0.6.0" serde_json = "1.0.94" # update roc_std/Cargo.toml on change serial_test = "1.0.0" signal-hook = "0.3.15" snafu = { version = "0.7.4", features = ["backtraces"] } static_assertions = "1.1.0" # update roc_std/Cargo.toml on change strip-ansi-escapes = "0.1.1" strum = { version = "0.24.1", features = ["derive"] } strum_macros = "0.24.3" syn = { version = "1.0.109", features = ["full", "extra-traits"] } tar = "0.4.38" target-lexicon = "0.12.6" tempfile = "=3.2.0" threadpool = "1.8.1" tracing = { version = "0.1.37", features = ["release_max_level_off"] } tracing-appender = "0.2.2" tracing-subscriber = { version = "0.3.16", features = ["env-filter"] } unicode-segmentation = "1.10.1" uuid = { version = "1.3.0", features = ["v4"] } walkdir = "2.3.2" wasm-bindgen = "0.2.84" wasm-bindgen-futures = "0.4.34" wgpu = "0.12.0" wgpu_glyph = "0.16.0" winapi = { version = "0.3.9", features = ["memoryapi"] } winit = "0.26.1" wyhash = "0.5.0" # Optimizations based on https://deterministic.space/high-performance-rust.html [profile.release] codegen-units = 1 # debug = true # enable when profiling [profile.bench] codegen-units = 1 lto = "thin" [profile.release-with-debug] debug = true inherits = "release" [profile.release-with-lto] lto = "thin" # TODO: We could consider full here since this is only used for packaged release on github. inherits = "release"