# gpui: Gate blocking executor APIs on WebAssembly \(\#63484\) · gitcafe/zed

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

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

Visibility: public

Requested revision: 98c6c1403b14463d6274b791f5a5471cdb4345f3

Requested commit: 98c6c1403b14463d6274b791f5a5471cdb4345f3

Commit: 98c6c1403b14463d6274b791f5a5471cdb4345f3

Tree: c79c0d4b3d0d054e75b1c6a8805aca97aaab0da7

Author: Lukas Wirth

Committer: GitHub

## Message

```
gpui: Gate blocking executor APIs on WebAssembly (#63484)

GPUI's scheduler exposed synchronous blocking APIs on WebAssembly even
though the platform implementation could only panic. This became an
implicit crash when cancellation dropped a scoped background operation:
preserving the borrowed task lifetime called `Scheduler::block`, which
panicked with `Cannot block on wasm`.

This change removes blocking scheduler and executor APIs from
WebAssembly builds, including borrowed background scopes and the
separate `pollster::block_on` export. Native behavior remains unchanged.
Application shutdown now runs WebAssembly quit handlers asynchronously
as best-effort cleanup rather than blocking the browser event-loop
thread.


Release Notes:

- Fixed a GPUI Web crash caused by synchronous executor blocking.
```

## Parents

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

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