3 releases (breaking)
new 0.3.0 | Mar 18, 2023 |
---|---|
0.2.0 | Mar 17, 2023 |
0.1.0 | Mar 17, 2023 |
#270 in Development tools
49 downloads per month
26KB
620 lines
Icemelter
Icemelter automates steps in debugging rustc internal compiler errors (ICEs).
Features
- Automatically minimizes files that cause the ICE (MCVEs) (it really works: Icemelter reduced a ~250 line file to just 4 lines in #107454)
- Integrates with cargo-bisect-rustc
- Formats MCVEs if doing so keeps the ICE
- Generates copy-pasteable Markdown reports
- Optionally downloads MCVEs from Github (no more copying and pasting!)
More features are planned.
Usage
Icemelter works on standalone Rust files. If your file is named ice.rs
, use
it like so:
icemelter ice.rs
By default, the result is stored to melted.rs
. A few helpful flags:
--output
: Change where the output file is written--bisect
: Bisect the regression with cargo-bisect-rustc--markdown
: Output a copy-pasteable report
Here's an example that uses a different compiler and adds a flag:
icemelter ice.rs -- rustc +nightly --crate-type=lib
For more options, see --help
.
Installation
From a release
Statically-linked Linux binaries are available on the releases page.
From crates.io
You can build a released version from crates.io. You'll need the
Rust compiler and the Cargo build tool. rustup makes it very
easy to obtain these. Then, to install the reducer for the language <LANG>
,
run:
cargo install icemelter
This will install binaries in ~/.cargo/bin
by default.
Build
To build from source, you'll need the Rust compiler and the Cargo build tool. rustup makes it very easy to obtain these. Then, get the source:
git clone https://github.com/langston-barrett/icemelter
cd icemelter
Finally, build everything:
cargo build --release
You can find binaries in target/release
. Run tests with cargo test
.
How it works
Icemelter's minimization capabilities are built on
treereduce-rust
.
Dependencies
~10–20MB
~440K SLoC