# Share GPUI and scheduler implementations \(\#64261\) · gitcafe/zed

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

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

Visibility: public

Requested revision: 0d08af1e53378fc2aca09eed049ab77df1a8439a

Requested commit: 0d08af1e53378fc2aca09eed049ab77df1a8439a

Commit: 0d08af1e53378fc2aca09eed049ab77df1a8439a

Tree: c9a95cba7fde670524889db6fce22d260d576ec6

Author: Kirill Bulatov

Committer: GitHub

## Message

```
Share GPUI and scheduler implementations (#64261)

Move GPUI window/entity updates, view rendering, listener adapters,
arena allocation, and scheduler task setup into shared implementations.
Keep the generic entry points as thin adapters.

Uses pretty much the same technique prior PRs did, but this time on
`gpui` which I am not too confident about — can close it if seems
dangerous, but the binary strip win looks good to try.

`cargo llvm-lines --locked -p gpui`:
Before (01c555b435): 934803 lines, 33225 copies
After: 926925 lines (-0.8%), 33454 copies (+0.7%)

With compiler wrappers disabled, `cargo clean --target-dir
target/binary-size-split-build` and `cargo build --locked -p zed`:
Before: 135.6s wall, 1569.8s CPU, zed binary 1175563800 bytes 
After: 142.5s wall (+5.1%), 1589.0s CPU (+1.2%), zed binary 1144068952
bytes (-2.7%, -31.5MB)

Release Notes:

- N/A
- [GPUI] Shared GPUI and scheduler implementations to reduce the final
binary size of the app
```

## Parents

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

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