Does the core crate not support panic="abort" any more? [wasm32-unknown-emscripten]

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?

are you on nightly toolchain? if so, try rebuild core and panic_abort using the -Z build-std unstable option:

$ cargo +nightly build -Z build-std-features=core,panic_abort --release --target=wasm32-unknown-emscripten

I did a little bisect and have determined that it worked in 1.89, so 1.90 is where it stopped. I couldn't see anything relevant in the 1.90 release notes. Do you think this was intentional or is it a bug? Should I report it? Edit: filed as GitHub ยท Where software is built

No, I'm on stable, but I could try nightly if you think it might help. Not tonight though.