Skip to content

Latest commit

 

History

History
55 lines (47 loc) · 4.9 KB

File metadata and controls

55 lines (47 loc) · 4.9 KB

Changelog

All notable changes to ByeFast are documented here.

[0.1.0] — 2025

Added

Core engines

  • bye-event: Zero-copy EventBus backed by tokio::sync::broadcast. 30-variant Event enum. Payload type (Arc<Bytes>) for zero-copy large data transfer.
  • bye-kernel: Page lifecycle governor with VirtualClock for deterministic JS execution. Pages suspend after 30s idle and resume on demand. Per-page CPU quota enforcement.
  • bye-dom: Flat arena DOM (Vec<Node>) with O(1) node access. Built-in HTML parser (Document::from_html) with no external dependencies. IntentEngine for semantic element resolution by natural-language intent.
  • bye-net: HTTP/2+TLS network stack with per-origin semaphore concurrency limiting. Response cache with configurable TTL. Request deduplication for concurrent identical fetches. Pure-Rust TLS via rustls with bundled WebPKI root CAs.
  • bye-loader: Priority DAG resource orchestration. Ghost Mode — when a server provides /.well-known/semantic-map.json, JS execution is skipped entirely. HTML resource discovery via regex scan.
  • bye-js: JavaScript runtime using boa_engine (pure Rust, no C dependencies). Dedicated OS thread per page to safely own !Send JS context. Deterministic Date.now(), performance.now(), Math.random() overrides. Lazy polyfill registry (fetch, URL, TextEncoder, TextDecoder, structuredClone). Full document object bindings: querySelector, querySelectorAll, open, write, close, title.
  • bye-layout: Incremental box-model layout engine with above-fold priority. Constraint solver for percentage widths, padding, margin.
  • bye-render: Neural-semantic differ. Classifies DOM mutations into typed events: TextChanged, AttributeChanged, ElementAppeared, ElementRemoved, NavigationOccurred.
  • bye-storage: Persistent state via sled. Cookie jar with SameSite enforcement. IndexedDB store. Web Time-Travel — full page state snapshots serialised with zstd compression.
  • bye-safe: Origin sandbox. Capability system with 12 capability types. HumanitySimulator generating Bézier mouse paths and Gaussian keystroke timing distributions.
  • bye-api: axum HTTP control surface with 32 routes. Per-page flight recorder (event trace log). semantic-action-map endpoint as primary LLM interface.
  • bye-vision: Visual-semantic element matcher. 64-dimensional feature vectors built from tag, role, text, depth, and interactivity. Cosine similarity search returning confidence scores.
  • bye-compositor: Cross-origin virtual page synthesis. Mount multiple real pages into named slots, query them as a unified page.
  • bye-audit: Cryptographic Merkle-tree action audit log. Per-action SHA-256 hashes and verifiable inclusion proofs.
  • bye-evolve: Self-healing shim generator. Observes polyfill failures and broken selectors, generates repaired versions.

API endpoints (32 total)

  • Page lifecycle: spawn, status, destroy, navigate, load-html, resume, clock/advance
  • Agent control: semantic-action-map, actions, eval, console
  • Capabilities: list, request
  • Web Time-Travel: snapshots (save, list, restore)
  • Vision: find, find-interactive, reindex
  • Compositor: create, query, destroy, mount, unmount, actions
  • Audit: session (start, summary, end), record, prove, log
  • Evolve: repair, selector, health
  • Observability: trace, health, stats

Documentation

  • README.md: complete project overview, API reference, quick-start guide
  • SPEC.md: full technical specification — EventBus internals, page state machine, DOM arena design, HTML parser algorithm, JS thread model, Merkle proof format, cold-start budget, memory budget per page, known limitations

Fixed

  • bye-net: Removed .http2_prior_knowledge() which forced raw H2 on HTTPS connections, breaking all TLS fetches. Now uses ALPN negotiation.
  • bye-net: Added rustls-tls-webpki-roots feature for bundled CA certificates, fixing TLS verification on Windows.
  • bye-dom: Fixed create_element call with &tag (String) → &*tag to satisfy Into<Arc<str>> bound.
  • bye-api: navigate now actually fetches and parses HTML into the DOM (previously discarded the response body).
  • bye-js: Added document.open/write/close — were missing, causing TypeError: not a callable function on any page using document.write.
  • bye-event: Added #[allow(dead_code)] on TimestampedEvent::now to silence build warning.
  • bye-dom: Fixed arena_insertion_and_query test that lost its #[test] and fn header during code insertion.

Known Limitations

  • boa_engine is 10-100× slower than V8 for compute-intensive JS. DOM-manipulation workloads are fine.
  • No CSS parsing or execution — layout is structural only.
  • navigate background fetch may fail on servers that block non-browser user agents. Use POST /pages/{id}/load-html for reliable DOM injection.
  • No iframe isolation — iframes are parsed as regular elements.
  • No WebSocket/EventSource — stubs only.