Skip to content

Request for adding observable#302

Open
nihil-pro wants to merge 1 commit intoWebKit:mainfrom
nihil-pro:aded-observable
Open

Request for adding observable#302
nihil-pro wants to merge 1 commit intoWebKit:mainfrom
nihil-pro:aded-observable

Conversation

@nihil-pro
Copy link
Copy Markdown

Add observable benchmark — Proxy + class inheritance reactivity

What this adds

This PR adds a new workload benchmarking observable, a reactive state library that implements observability via Proxy combined with class inheritance, without redefining any object properties.

Why it complements the existing mobx workload

JetStream already includes a MobX benchmark, which makes this a natural addition — but observable exercises a meaningfully different engine codepath for achieving the same goal (reactive state tracking).

The two approaches differ at a fundamental level:

MobX observable
Mechanism Redefines properties as getter/setter pairs; falls back to Proxy for some cases Pure Proxy + class inheritance, no property redefinition
Object shape Modified post-construction Preserved as-is
Proxy usage Partial / fallback Always, as the primary mechanism
[[Get]] / [[Set]] traps Via descriptors Via Proxy handler

This distinction matters for engine benchmarking. JS engines optimize property access on objects with stable hidden classes/shapes. MobX's getter/setter approach mutates those shapes, while observable leaves the underlying object intact and routes all access through a Proxy wrapping an inherited prototype chain. These two patterns stress different parts of the runtime — property descriptor lookup vs. Proxy trap dispatch — making them complementary workloads rather than redundant ones.

Why this is a realistic workload

Proxy-based reactivity with class inheritance is a growing pattern in the JS ecosystem. Libraries that avoid property mutation are increasingly preferred for their compatibility with class fields, decorators, and stricter object models. Benchmarking this pattern gives engine developers and implementors signal on how well Proxy + prototype-chain access performs under sustained reactive workloads, which MobX alone does not cover.

Summary

The existing mobx benchmark tests reactivity through property descriptor manipulation. This PR adds a workload that tests reactivity through Proxy interception on top of class inheritance — a distinct, real-world pattern that deserves its own benchmark slot in JetStream.

@netlify
Copy link
Copy Markdown

netlify bot commented Apr 5, 2026

Deploy Preview for webkit-jetstream-preview ready!

Name Link
🔨 Latest commit d263643
🔍 Latest deploy log https://app.netlify.com/projects/webkit-jetstream-preview/deploys/69d23ccf5e29380008cbfc8c
😎 Deploy Preview https://deploy-preview-302--webkit-jetstream-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

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.

1 participant