icemelter

Crates.ioicemelter
lib.rsicemelter
version0.3.2
sourcesrc
created_at2023-03-17 02:17:42.579774
updated_at2023-07-17 17:48:30.61266
descriptionTool to minimize files that trigger internal compiler errors (ICEs)
homepagehttps://github.com/langston-barrett/icemelter
repositoryhttps://github.com/langston-barrett/icemelter
max_upload_size
id812255
size73,801
Langston Barrett (langston-barrett)

documentation

README

Icemelter

Icemelter automates steps in debugging rustc internal compiler errors (ICEs).

Features

  • Automatically minimizes files that cause the ICE (MCVEs)*
  • Runs cargo-bisect-rustc
  • rustfmts MCVEs if doing so keeps the ICE
  • Generates copy-pasteable Markdown reports
  • Optionally downloads MCVEs from Github

*It really works: Icemelter reduced a ~250 line file to just 4 lines in #107454.

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 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.

Commit count: 114

cargo fmt