char/avril

(wip) why'd you have to go and make things so complicaaaaated?

git clone https://git.t4t.associates/char/avril

Charlotte Somrearrange libs into lib and extensions into extsf4a0f5b

main
1.2 KiB25 linesraw

avril's Streams build

polyfill.js remains the unmodified upstream distribution. avril uses polyfill.avril.js, generated from web-streams-polyfill 4.3.0 at commit 12b4fedec6c01503a137d837204ca0b85992461e with avril.patch applied.

The patch replaces promise rejection-suppression reactions with avril's private markPromiseHandled binding. Internal observation retains its first reaction and marks the resulting promise handled instead of attaching a second reaction. A frozen fulfilled promise is reused by internal default algorithms, tee pulls, and initial pipe bookkeeping. Public results, callback assimilation, and pending backpressure promises still use separate promises. The cached promise does not shadow constructor: that would invalidate V8's global promise-species protector and slow unrelated promise operations.

Regenerate with Node.js 22+ and npm on PATH:

node exts/webstreams/src/vendor/build.mjs

The build fetches the pinned upstream commit, installs its locked dependencies without lifecycle scripts, applies the readable source patch, and runs upstream's ES2015 polyfill bundler. The license banner is copied from the original vendored distribution rather than using the build date.

1# avril's Streams build
2
3`polyfill.js` remains the unmodified upstream distribution. avril uses
4`polyfill.avril.js`, generated from web-streams-polyfill 4.3.0 at commit
5`12b4fedec6c01503a137d837204ca0b85992461e` with `avril.patch` applied.
6
7The patch replaces promise rejection-suppression reactions with avril's private
8`markPromiseHandled` binding. Internal observation retains its first reaction
9and marks the resulting promise handled instead of attaching a second reaction.
10A frozen fulfilled promise is reused by internal default algorithms, tee pulls,
11and initial pipe bookkeeping. Public results, callback assimilation, and pending
12backpressure promises still use separate promises. The cached promise does not
13shadow `constructor`: that would invalidate V8's global promise-species
14protector and slow unrelated promise operations.
15
16Regenerate with Node.js 22+ and npm on PATH:
17
18```sh
19node exts/webstreams/src/vendor/build.mjs
20```
21
22The build fetches the pinned upstream commit, installs its locked dependencies
23without lifecycle scripts, applies the readable source patch, and runs
24upstream's ES2015 polyfill bundler. The license banner is copied from the
25original vendored distribution rather than using the build date.