# Drop the unused avif feature from the image dependency \(\#60897\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/8e06c323ae063f3d245ea5c283d4bf373ad51db2)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 8e06c323ae063f3d245ea5c283d4bf373ad51db2

Requested commit: 8e06c323ae063f3d245ea5c283d4bf373ad51db2

Commit: 8e06c323ae063f3d245ea5c283d4bf373ad51db2

Tree: 71915ccbd80088cb38d9bf55e498aee17de13d19

Author: Karsten

Committer: GitHub

## Message

```
Drop the unused avif feature from the image dependency (#60897)

# Objective

Every build of zed (and of every downstream gpui consumer) currently
compiles rav1e, a full AV1 video encoder, because `image`'s default
`avif` feature is enabled. That feature only provides `AvifEncoder`;
AVIF *decoding* requires the separate, non-default `avif-native` feature
(dav1d). So AVIF files do not decode anywhere in zed today, nothing
encodes AVIF (`AvifEncoder` has zero references in the repo), and rav1e
plus its support crates are dead weight in every clean build.

## Solution

Pin the workspace `image` dependency to its default feature set minus
`avif`.

No behavior changes: AVIF files fail to decode exactly as before, and
`ImageFormat::Avif` still exists (the enum is not feature-gated), so the
`image_viewer` match arm compiles unchanged. The `"avif"` entry in
gpui's supported-extension list is deliberately left untouched to keep
the diff minimal; loading such files fails identically before and after.

## Testing

- `cargo metadata` node diff (before vs after, all 1832 resolved
packages): the only change in the entire graph is `image` losing
`avif`/`default`/`default-formats`.
- `cargo tree -i rav1e` on the Linux host, plus `--target
aarch64-apple-darwin` and `--target x86_64-pc-windows-msvc`: no reverse
dependencies on any platform.
- `rg -i avif crates/` finds only string labels (an extension list in
`gpui`, a format name in `image_viewer`, an icon mapping in `theme`);
`AvifEncoder` is never referenced.
- `cargo check -p gpui` passes.
- Isolated probe crate depending on image 0.25.10 alone (cold builds,
Linux, 16 threads), default vs default-minus-avif: release drops from
191 to 122 CPU-seconds and 282 to 191 MB of `target/`; debug drops from
75 to 42 CPU-seconds and 549 to 342 MB.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments (n/a:
manifest-only change)
- [x] The content adheres to Zed's UI standards (n/a: no UI change)
- [x] Tests cover the new/changed behavior (no behavior change; CI
covers compilation)
- [x] Performance impact has been considered and is acceptable
(build-time improvement only)

---

Release Notes:

- N/A
```

## Parents

- [94b6d377badf9c2202850b551c4700a54b83895f](https://git.cafe/gitcafe/zed/commit/94b6d377badf9c2202850b551c4700a54b83895f?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/8e06c323ae063f3d245ea5c283d4bf373ad51db2?format=markdown)
