Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/justfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ _step recipe:
just {{recipe}}
fi

# The full gate: checks, the cross-host pairing matrix, the deltic
# The full gate: checks, the cross-host pairing matrix, the polyengine
# endpoint exam, and the measured-claims bench. The execution-model
# probes are NOT here: what they assert about the host's async ABI is
# now asserted by the endpoint surface itself on both hosts (see the
Expand All @@ -35,5 +35,5 @@ checks:
@just gha::_step validate-wit
@just gha::_step test
@just gha::_step matrix
@just gha::_step exam-deltic
@just gha::_step exam-polyengine
@just gha::_step bench
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
# rust-toolchain.toml; `rustup show` installs exactly those.
run: rustup show active-toolchain || rustup toolchain install

- name: Install Deno (the deltic host; stock, no flags)
- name: Install Deno (the polyengine host; stock, no flags)
uses: denoland/setup-deno@v2
with:
deno-version: "2.9.5"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/jsr-publish.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Publish @polymorph/iroh (host-deltic) to JSR: build the endpoint
# Publish @polymorph/iroh (host-polyengine) to JSR: build the endpoint
# component from this tree, embed it as the package's base64 asset
# module, and publish.
#
Expand Down Expand Up @@ -28,6 +28,6 @@ jobs:
- name: Build and embed the endpoint component
run: |
cargo build -p iroh-endpoint --target wasm32-wasip2 --release
deno run --allow-read=target --allow-write=host-deltic/src/endpoint_component.ts scripts/embed-endpoint-component.ts
deno run --allow-read=target --allow-write=host-polyengine/src/endpoint_component.ts scripts/embed-endpoint-component.ts
- run: deno publish --allow-dirty
working-directory: host-deltic
working-directory: host-polyengine
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ node_modules
/experiments/iroh-relay-ws/host/dist
/experiments/iroh-blobs/host/dist
/experiments/ping-demo/web/site
/host-deltic/src/endpoint_component.ts
/host-polyengine/src/endpoint_component.ts
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ record (and usually an issue to resolve), not a refactor.
is a PR to the sibling.
- **Anything browser-hosted must stay browser-compatible**: host-side JS
uses only standard browser APIs (`crypto.subtle`, `RTCPeerConnection`,
`WebSocket`); Deno (via `host-deltic/`) is just the current runner.
`WebSocket`); Deno (via `host-polyengine/`) is just the current runner.
- **Divergence between targets is resolved, not accumulated.** Apply the
webcrypto sibling's portability ladder in order: design it out; enhance
the deficient implementation (never crypto, never key-material
Expand Down
42 changes: 21 additions & 21 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ publish = false
# Sibling crates are consumed as git dependencies pinned at a commit, per
# the siblings' own release practice; bumped deliberately.
[workspace.dependencies]
polymorph-tls-profile = { git = "https://github.com/polymorph-components/polymorph-tls.git", rev = "e6f244c2136a1fdc8bd836aab05572620c3d3df4" }
polymorph-tls-quic = { git = "https://github.com/polymorph-components/polymorph-tls.git", rev = "e6f244c2136a1fdc8bd836aab05572620c3d3df4" }
polymorph-webcrypto-guest = { git = "https://github.com/polymorph-components/polymorph-webcrypto.git", rev = "227d075a9f306764029dd6762fdab73c6cfc893f" }
polymorph-webcrypto-wasmtime = { git = "https://github.com/polymorph-components/polymorph-webcrypto.git", rev = "227d075a9f306764029dd6762fdab73c6cfc893f" }
wasmtime-webrtc-datachannels = { git = "https://github.com/polymorph-components/polymorph-webrtc-datachannels.git", rev = "0f991407c2698577df3d117789024c14be250bd6" }
wasmtime-websocket = { git = "https://github.com/polymorph-components/polymorph-websocket.git", rev = "7c364c593d51a977f5f267711b06d0fb18cfc068" }
polymorph-tls-profile = { git = "https://github.com/polymorph-components/polymorph-tls.git", rev = "ab4f88367b838f07a64ea64cfcfd5e03f494ea35" }
polymorph-tls-quic = { git = "https://github.com/polymorph-components/polymorph-tls.git", rev = "ab4f88367b838f07a64ea64cfcfd5e03f494ea35" }
polymorph-webcrypto-guest = { git = "https://github.com/polymorph-components/polymorph-webcrypto.git", rev = "422796bd4ca8450fc527415b7cc60ea8ab1b36ff" }
polymorph-webcrypto-wasmtime = { git = "https://github.com/polymorph-components/polymorph-webcrypto.git", rev = "422796bd4ca8450fc527415b7cc60ea8ab1b36ff" }
wasmtime-webrtc-datachannels = { git = "https://github.com/polymorph-components/polymorph-webrtc-datachannels.git", rev = "42f76c988c3356e62abf33af6a04f1daf8f0839c" }
wasmtime-websocket = { git = "https://github.com/polymorph-components/polymorph-websocket.git", rev = "563aa33fc214920e80a2fec6019e91a127969a7a" }

[profile.release]
lto = true
Expand Down
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Everything here is **unstable** (0.x), but [releases](../../releases) are
**caret-honest**: within a minor line they stay backward-compatible, and
anything breaking bumps the minor. Consumption is pinned at a release's
commit — sibling checkouts and vendored WIT at pinned release commits,
the release-pinned deltic/JSR graph — and bumped deliberately.
the release-pinned polyengine/JSR graph — and bumped deliberately.

## What iroh is, layer by layer

Expand Down Expand Up @@ -207,8 +207,8 @@ superseded it; the history is in the git log.)
while a UDP path finds the true one.
- **Every pairing exercised, plus upstream interop**: the Wasmtime
host (`host-wasmtime/`, the sibling host crates) runs authenticated
echoes on every wire through the stock relay, and the deltic JS host
(`host-deltic/`) runs the same surface on stock Deno.
echoes on every wire through the stock relay, and the polyengine JS host
(`host-polyengine/`) runs the same surface on stock Deno.

To run it: build the components, hosts, and the upstream relay, then
hand the server's printed endpoint ID to the client
Expand Down Expand Up @@ -249,12 +249,12 @@ task per bound endpoint owns all I/O, and wake-ups are event-driven in
both directions — resource methods kick the pump to flush their
mutations and park on wakers the pump fires (cross-task wakeups ride
wit-bindgen's `inter-task-wakeup` channel, delivered by both hosts).
The JS host for this surface is `host-deltic/`: it drives the endpoint
component runtime-linked under [deltic](https://github.com/lann/deltic)
The JS host for this surface is `host-polyengine/`: it drives the endpoint
component runtime-linked under [polyengine](https://github.com/polymorph-components/polyengine)
on stock Deno (no transpile step, no engine flag) — the jco host this
repository ran previously blocked on an upstream jco scheduler defect
(the detached-pump shape deltic's scheduler serves instead) and has
retired. `just exam-deltic` runs
(the detached-pump shape polyengine's scheduler serves instead) and has
retired. `just exam-polyengine` runs
its seven-scenario endpoint exam — bind + identity (including the
no-UDP profile's `not-supported`), relay echo, the WebRTC upgrade,
the issue #10 concurrency rows as passing assertions, the stream
Expand All @@ -263,8 +263,8 @@ terminal outcomes, idle survival, and teardown.
`just matrix` runs every claimed pairing — the composed endpoint demo
on every wire, cross-relay and upstream interop included, plus the
surface's negative probes — against stock `iroh-relay` servers; `just
bench` gates the measured claims; `just exam-deltic` gates the
deltic-hosted endpoint surface; `just ci` is the full gate. `just
bench` gates the measured claims; `just exam-polyengine` gates the
polyengine-hosted endpoint surface; `just ci` is the full gate. `just
interop-prod` (manual, internet-dependent) checks the production
relays.

Expand All @@ -279,7 +279,7 @@ Tracked as issues; the headline ones:
attribution and reachability probing, the native half of address
discovery.
- The jco browser leg (issue #10): resolved by moving the JS host to
deltic (`host-deltic/`), which serves the detached-pump shape jco's
polyengine (`host-polyengine/`), which serves the detached-pump shape jco's
scheduler could not; the jco host and its scheduler-defect
workarounds have retired. Root cause and partial upstream fix
attempts remain recorded on lann/jco#11 and PR #27 for reference.
2 changes: 1 addition & 1 deletion experiments/iroh-blobs/host/browser.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!doctype html>
<!-- Browser harness for the iroh-blobs spike: the same sockets shim,
bridges, and deltic runtime as the Deno driver, runtime-linked in the
bridges, and polyengine runtime as the Deno driver, runtime-linked in the
browser (JSPI). Serve from the repository root so the guest and
translator fetches resolve; driven by browser-test.mjs, which bundles
dist/browser-entry.js first. -->
Expand Down
2 changes: 1 addition & 1 deletion experiments/iroh-blobs/host/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.0.1",
"private": true,
"type": "module",
"description": "Spike host harness deps: Playwright for the browser leg (the drivers themselves run on Deno under deltic).",
"description": "Spike host harness deps: Playwright for the browser leg (the drivers themselves run on Deno under polyengine).",
"scripts": {
"test:browser": "node browser-test.mjs"
},
Expand Down
4 changes: 2 additions & 2 deletions experiments/iroh-blobs/host/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
// WebRTC). The guest prints its own results; this driver adds a
// watchdog and the shim/bridge counters.
//
// Runs on stock Deno; the translator is `@deltic/translator`'s packaged
// Runs on stock Deno; the translator is `@polyengine/translator`'s packaged
// asset, loaded through the module graph.

import { defaultTranslator } from "@deltic/translator";
import { defaultTranslator } from "@polyengine/translator";
import { stats } from "./sockets.ts";
import { bridgeStats } from "./bridge.ts";
import { webrtcStats } from "./webrtc-bridge.ts";
Expand Down
5 changes: 3 additions & 2 deletions experiments/iroh-blobs/run.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
#!/usr/bin/env bash
#!/usr/bin/env bash
# Runs the iroh-blobs spike end to end: the pinned iroh-relay binary
# (scripts/setup.sh), then the deltic host on stock Deno driving the
# (scripts/setup.sh), then the polyengine host on stock Deno driving the
# wasip2 guest — runtime-linked, no transpile step; the translator ships
# in the pinned @deltic/translator package.
# in the pinned @polyengine/translator package.
# Reuses an already-running relay on 127.0.0.1:3340; kills only what it
# started.
set -euo pipefail
Expand Down
4 changes: 2 additions & 2 deletions experiments/iroh-relay-ws/host/bridge.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// The websocket bridge: turns the guest's synthetic datagrams (see
// iroh-relay's wasi `datagram_pipe.rs`) into real websocket connections
// through the polymorph-websocket sibling's deltic host module — the
// through the polymorph-websocket sibling's polyengine host module — the
// same browser-first code that serves the WIT package's host half,
// running here as a plain library over the standard `WebSocket` global.
//
Expand All @@ -13,7 +13,7 @@
// Connections are keyed by the guest socket that carries them (one relay
// connection = one synthetic socket = one websocket).

import { Websocket } from "../../../.deps/websocket/js/deltic/websocket.ts";
import { Websocket } from "../../../.deps/websocket/js/polyengine/websocket.ts";
import type { OutgoingDatagram, UdpSocket } from "./sockets.ts";
import { pushDatagram, registerBridge } from "./sockets.ts";
import { describeErr } from "./errors.ts";
Expand Down
2 changes: 1 addition & 1 deletion experiments/iroh-relay-ws/host/browser.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!doctype html>
<!-- Browser harness for the iroh-relay-ws spike: the same sockets shim,
bridges, and deltic runtime as the Deno driver, runtime-linked in the
bridges, and polyengine runtime as the Deno driver, runtime-linked in the
browser (JSPI). Serve from the repository root so the guest and envelope
fetches resolve; driven by browser-test.mjs, which bundles
dist/browser-entry.js first. -->
Expand Down
Loading
Loading