⚡ Introducing AQE — Atomic Quantum Engine #193501
Replies: 1 comment
-
|
💬 Your Product Feedback Has Been Submitted 🎉 Thank you for taking the time to share your insights with us! Your feedback is invaluable as we build a better GitHub experience for all our users. Here's what you can expect moving forward ⏩
Where to look to see what's shipping 👀
What you can do in the meantime 💻
As a member of the GitHub community, your participation is essential. While we can't promise that every suggestion will be implemented, we want to emphasize that your feedback is instrumental in guiding our decisions and priorities. Thank you once again for your contribution to making GitHub even better! We're grateful for your ongoing support and collaboration in shaping the future of our platform. ⭐ |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
🏷️ Discussion Type
Product Feedback
Body
Hey everyone,
I'm excited to share something I've been building for a while: AQE (Atomic Quantum Engine), a high-performance CSS selector engine that takes a fundamentally different approach to DOM querying.
Instead of walking the DOM tree on every query, AQE projects every node into a 64-bit BigInt bitmask stored in a flat
SharedArrayBuffer. Matching a selector becomes a bitwise AND — one integer comparison per node, no string parsing, no tree traversal.On top of that, AQE Pro adds a dual Bloom bucket index that lets the background Worker skip entire 32-node chunks before any node-level comparison occurs. On a 20,000-node DOM, a selective query can resolve in under 0.4ms while the main thread stays completely unblocked.
Two editions
AQE Light — free and open source
el.matches()AQE Pro — commercial
SharedArrayBuffer+Atomicsfor zero-copy, race-condition-free memory accessMutationObserver— buffer stays in sync automaticallyqueryIdroutingWhy not just use
querySelectorAll?querySelectorAllis excellent for occasional queries. AQE targets a different problem: high-frequency querying on large DOMs — virtual DOM diffing, design tools, live dashboards, component libraries that query hundreds of times per second. At that scale, the difference between 6ms and 0.3ms per query is the difference between a janky UI and a smooth one.Performance at a glance
querySelectorAllSupported selector syntax
Full coverage: tag,
.class,#id,[attr=val]with all operators,:pseudo-class,::pseudo-element,:not(),:is(),:has(), compound selectors, selector lists, and all combinators (>,+,~, descendant).Get it
I'd love to hear your feedback — whether it's edge cases in the selector parser, ideas for the spatial API, or questions about the SharedArrayBuffer setup. Drop a comment below or open an issue.
Thanks for reading. 🚀
Beta Was this translation helpful? Give feedback.
All reactions