I'm trying to shrink my WASM output, and wanted to try panic="abort", but I'm getting an error saying that the core crate requires the unwind panic strategy.
Rust version: 1.90.0
Target: wasm32-unknown-emscripten
Cargo invocation:
RUSTFLAGS=-Csymbol-mangling-version=v0 cargo build --release --target=wasm32-unknown-emscripten
Compiler output:
Compiling remglk v0.1.0 (/src/remglk/remglk)
Compiling remglk_capi v0.1.0 (/src/remglk/remglk_capi)
error: the crate `core` requires panic strategy `unwind` which is incompatible with this crate's strategy of `abort`
error: could not compile `remglk_capi` (lib) due to 1 previous error
Cargo.toml contents for each package
Workspace Cargo.toml:
[workspace]
members = [
"remglk/remglk",
"remglk/remglk_capi",
]
resolver = "2"
[profile.release]
codegen-units = 1
lto = true
panic = "abort"
Remglk Cargo.toml:
[package]
name = "remglk"
version = "0.1.0"
edition = "2021"
rust-version = "1.77.0"
authors = ["Dannii Willis <curiousdannii@gmail.com>"]
description = "A Rust port of RemGlk"
homepage = "https://github.com/curiousdannii/remglk-rs"
license = "MIT"
repository = "https://github.com/curiousdannii/remglk-rs"
[dependencies]
byteorder = "1.5.0"
enum_dispatch = "0.3.12"
jiff = {version = "0.2.1", default-features = false}
serde = {version = "1.0", features = ["derive", "rc"]}
thiserror = "2.0.17"
widestring = "1.0.2"
remglk_capi Cargo.toml
[package]
name = "remglk_capi"
version = "0.1.0"
edition = "2021"
rust-version = "1.80.0"
authors = ["Dannii Willis <curiousdannii@gmail.com>"]
description = "A Rust port of RemGlk - C API"
homepage = "https://github.com/curiousdannii/remglk-rs"
license = "MIT"
repository = "https://github.com/curiousdannii/remglk-rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type=["staticlib"]
[dependencies]
remglk = {path = "../remglk", version = "0.1.0"}
serde = "1.0"
serde_json = "1.0"
thiserror = "2.0.17"
widestring = "1.0.2"
[target.'cfg(target_os = "emscripten")'.dependencies]
jiff = {version = "0.2.1", default-features = false}
[target.'cfg(not(target_os = "emscripten"))'.dependencies]
jiff = {version = "0.2.1", default-features = false, features = ["perf-inline", "std"]}
unicode-case-mapping = "1.0.0"
unicode-normalization = "0.1.22"
[build-dependencies]
cc = "1.0"
In my searches I haven't seen anyone have panic strategy troubles for the core crate before, which I take either means that I'm doing something very weird with my setup, or that wasm32-unknown-emscripten is not used much any more.
I know that I was able to build with panic="abort" back with Rust 1.76.0 because I then had linking errors with the rest of my Emscripten app, but my Rust library compiled fine back then.
Any suggestions on how to diagnose what's going wrong here?