Skip to content

Releases: cutetailbud/ff-ruyijs

v0.3.0

Choose a tag to compare

@cutetailbud cutetailbud released this 31 Oct 19:37

ruyijs 0.3.0 adds macOS arm64 and Linux x86_64 wheels to PyPI. GitHub Actions now builds the wheels for all three platforms from the official Firefox 159.0 source.

python -m pip install --upgrade ruyijs
Platform Wheel Notes
Windows x64 win_amd64 js.exe and mozglue.dll built from the Firefox 159.0 source on CI; Necko transport as in 0.2.1
macOS arm64 macosx_26_0_arm64 macOS 26 or later; direct HTTPS through libnecko_core / libnecko_quic; no proxy support yet
Linux x86_64 manylinux_2_39_x86_64 glibc 2.39 or later; #5 by @Starktomy; bundles its libraries and the Necko helper's Python
  • Source: the official Firefox source is the firefox/ submodule (mozilla-firefox/firefox at FIREFOX_159_0_RELEASE).
  • Build: one run of .github/workflows/wheels.yml builds SpiderMonkey, Skia and NSS on each runner, then ruyijs and the wheel.
  • Tests: each installed wheel is tested offline and with one real page load.
  • Fixes: this release also includes the Firefox 159 parity fixes made on main since 0.2.1: CSSOM serialization, the cascade, iframe timing, layout, and canvas colour and text.

ruyijs-runtime-0.3.0-win-amd64.zip is the Windows runtime that runtime.json pins for source builds. The changes are listed in CHANGELOG.md.

v0.2.1

Choose a tag to compare

@cutetailbud cutetailbud released this 30 Oct 04:06

Fixed

  • Timer precision is Firefox 159's: performance.now(), timeOrigin,
    Date.now(), Event.timeStamp and every navigation / resource time are
    clamped to 1 ms with Firefox's jittered rounding (nsRFPService), one seed
    per document. Event.timeStamp is on the document's performance timeline.
  • Navigation and resource timing report the measured DNS, connect and TLS
    phases from Necko (a reused connection reads fetchStart, as in Firefox);
    a browser-initiated load's fetchStart precedes navigationStart.
    deliveryType is in Firefox's member order; unreached milestones read 0.
  • Necko resolves IP literals without a lookup and caches names
    (network.dnsCacheExpiration 60 s, 1600 entries).
  • Layout: CSS margin collapsing, 17 px classic scrollbars on the viewport and
    scroll containers, root clientWidth/Height and scrollWidth/Height from
    the scrollport, scrollTopMax / scrollLeftMax, clientTop /
    clientLeft, window.scrollMaxX/Y.
  • Fonts: SimSun line height (bad-underline metrics), the Arial default when no
    listed family is installed, Firefox's per-script system fallback list.
  • SVG text getBBox: font box versus frame descent, and no glyph ink below
    20 px (text-rendering: auto).
  • Example result files no longer ship in the wheel.

v0.2.0

Choose a tag to compare

@cutetailbud cutetailbud released this 29 Oct 15:50

Added

  • Canvas 2D draws through Firefox 159's own Skia (gfx/skia), set up like
    Firefox's DrawTargetSkia: fills, strokes, paths, clip, gradients,
    patterns, roundRect, drawImage, shadows and fillText / strokeText.
  • Context(tls="100".."159") selects the Firefox release whose TLS
    ClientHello, HTTP/2 settings and HTTP/3 priorities Necko sends.
  • DOMMatrix / DOMMatrixReadOnly: every operation, fromMatrix,
    fromFloat32/64Array, CSS transform strings, transformPoint, toString.

Fixed

  • Origin and the body Content-Type on fetch / XHR / sendBeacon;
    Sec-Fetch-Site across redirects; window.originAgentCluster.
  • window.event during microtasks queued by an event listener.
  • Font fallback by language group, element lang, SVG presentation
    attributes and SVG text getBBox; ctx.font read-back.
  • python -m ruyijs.examples lists the examples that ship; DataDome output on
    a Chinese Windows console; the Akamai example keeps its User-Agent and TLS
    version together (--tls).

Changed

  • The bundled runtime is rebuilt on Firefox 159 (SpiderMonkey, Necko, Skia).