Skip to content

chore(deps): bump sha2 from 0.10.9 to 0.11.0 - #31

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/sha2-0.11.0
Open

chore(deps): bump sha2 from 0.10.9 to 0.11.0#31
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/sha2-0.11.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 17, 2026

Copy link
Copy Markdown

Bumps sha2 from 0.10.9 to 0.11.0.

Commits

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.9 to 0.11.0.
- [Commits](RustCrypto/hashes@sha2-v0.10.9...sha2-v0.11.0)

---
updated-dependencies:
- dependency-name: sha2
  dependency-version: 0.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot @github

dependabot Bot commented on behalf of github Jun 17, 2026

Copy link
Copy Markdown
Author

Labels

The following labels could not be found: dependencies, rust. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

yfedoseev added a commit that referenced this pull request Jul 27, 2026
…ency + security refresh (#33, #32)

Reusing a Page across navigations grew V8's live heap by ~10 MB per page
without ceiling, and — as this work uncovered — was also silently corrupting
render output. Every reaper the engine had was wired only to Page::drop, which
a pool by definition never reaches, and several bootstrap-JS registries are
scoped to the JsRuntime rather than to the document.

Sources of retention, all previously unpruned on reuse:

  event_bootstrap.js   _objListeners    window-keyed; window is never collected
                       _nodeListeners   strong Map, never pruned at all
  dom_bootstrap.js     _nodeCache, _scrollState, _moObservers,
                       _appendedIframes, _frameRegistry
  window_bootstrap.js  _customElementsRegistry, _whenDefinedPromises
  globalThis           page-assigned properties, and on* handler VALUES

New JS reset hooks (__cancelAllListeners, __resetDomRegistries,
__resetCustomElements, __resetPageGlobals) bundled behind a public
Page::reset_for_reuse(). PagePool::acquire and the CDP protocol server — which
had the identical bug on Page.navigate — now call it.

Three correctness bugs fall out of the same fix. _nodeListeners and the node
wrapper cache are keyed by nodeId, and node IDs restart at zero when
replace_dom swaps the document, so the previous page's handler for node 42
fired on the new page's node 42. Re-define()ing a custom element name the
previous page had registered was a silent no-op. And __keepLongTimersRefed
stayed set after a challenge page, pinning long timers thereafter.

on* handlers needed value-level treatment: they already exist as own
properties at bootstrap, so a key-set diff cannot see `window.onscroll = fn`.
Values are snapshotted at baseline and restored, which clears page assignments
while preserving the engine's own window.onerror instrumentation.

Live heap, after a forced full GC, 25 warm reuses of a document retaining
~1 MB behind a window listener:

  without reset (0.1.0 behaviour)   1,040,662 B / reuse
  with reset    (this change)             468 B / reuse

Beyond memory: on main, the second site through the pool renders a 9-byte
body. Reproduced on two unrelated real sites — hackernews (9 -> 34,772 B) and
the areyouheadless detection probe (9 -> 164 B, matching cold-path output).
canary.yml could not catch this because it only exercises the cold path.

Adds Page::v8_heap_used_bytes() / collect_garbage() so operators can verify
pool health, and examples/canvas_fp_probe.rs to guard canvas fingerprint
stability across dependency bumps.

Dependencies (closes #32, supersedes #22-#31):
  deno_core 0.404, taffy 0.12, sha1/sha2 0.11, adblock 0.13, skia-safe 0.99,
  tokio-tungstenite 0.30, webpki-root-certs 1.0, brotli 8, base64 0.23,
  glow 0.18, chrono, http2, five SHA-pinned CI actions, plus cargo update.

  png HELD at 0.17: 0.18 emits a 9,646-byte canvas data URL where 0.17 emits
  17,502 — a different fingerprint on every page. deno_core HELD at 0.404:
  0.408 aborts (SIGABRT) during V8 isolate construction in Linux debug builds.

Security — cargo audit 2 vulnerabilities -> 0:
  quinn-proto     0.11.14 -> 0.11.16  RUSTSEC-2026-0185 (remote memory
                                      exhaustion, in the HTTP/3 path)
  crossbeam-epoch  0.9.18 -> 0.9.20   RUSTSEC-2026-0204
  anyhow          1.0.102 -> 1.0.104  RUSTSEC-2026-0190

Also fixes the DCO workflow, which could never pass: `git log --pretty=full`
indents the body four spaces, so its `^Signed-off-by:` anchor never matched.

Regression tested main -> HEAD on 15 open and 15 protected/anti-bot sites,
both engine paths: zero regressions, pool 11/15 -> 12/15 on the open corpus.
browserleaks/canvas, creepjs and pixelscan byte-identical on both paths.

adblock 0.13 API port by Ran-Mewo (SilvR-AI/browser_oxide fork), with thanks.
Reported by DemonMartin.

Closes #33
Closes #32

Signed-off-by: Yury Fedoseev <yfedoseev@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants