Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
65fc162
feat(pvm): add host-neutral app runtime
replghost Aug 28, 2026
9653d88
fix(pvm): expose selected backend type
replghost Aug 28, 2026
e7935ee
fix(pvm): slice long browser hostcall sequences
replghost Aug 28, 2026
414cdf4
feat(pvm): publish split worker artifacts
replghost Aug 28, 2026
c4c5e83
refactor(pvm): share worker and host-thread core
replghost Aug 28, 2026
89966da
fix(pvm): retain init guest diagnostics
replghost Aug 28, 2026
2cb4c70
fix(pvm): report trapped guest program counters
replghost Aug 28, 2026
d29109c
fix(pvm): target supported Android ABIs
replghost Aug 28, 2026
da3b005
build(pvm): refresh browser runtime artifact
replghost Aug 28, 2026
994d0c1
fix(pvm): satisfy release quality gates
replghost Aug 28, 2026
053edb4
build(pvm): generate browser distribution on demand
replghost Aug 28, 2026
6721522
fix(pvm): enforce launch and presentation bounds
replghost Aug 28, 2026
d9a513d
build(pvm): emit Firefox-clean worker bundle
replghost Aug 28, 2026
c5beb8e
fix(pvm): retain duplicate asset diagnostics
replghost Aug 28, 2026
e72b649
fix(pvm): preserve Epoca CoreVM input events
replghost Aug 28, 2026
d0e16fc
chore(pvm): update rebased PolkaVM revision
replghost Aug 28, 2026
2c08d25
docs(pvm): draft App ABI v1 contract
replghost Aug 29, 2026
c6624a9
refactor(pvm): consume standalone runtime bridge
replghost Aug 29, 2026
d155fe2
feat(pvm): export bridge-owned browser assets
replghost Aug 29, 2026
9696832
feat(pvm): update standalone runtime to v0.1.1
replghost Aug 29, 2026
da47447
chore(pvm): update browser runtime
replghost Aug 29, 2026
2289b05
chore(pvm): update browser runtime
replghost Aug 30, 2026
c60fcb8
feat(pvm): bridge baseline TrUAPI runtime
replghost Aug 30, 2026
7654ac6
fix(pvm): expose pinned runtime source identity
replghost Aug 30, 2026
9bdaead
chore(pvm): update browser runtime
replghost Aug 30, 2026
7021423
fix(pvm): pin corrected 0.1.2 browser assets
replghost Aug 30, 2026
ebf5db6
chore(pvm): pin merged runtime 0.1.2
replghost Aug 30, 2026
e2a3c78
chore(pvm): update browser runtime
replghost Aug 30, 2026
608b579
chore(pvm): update browser runtime
replghost Aug 30, 2026
f4c0ba9
chore(pvm): update browser runtime
replghost Aug 30, 2026
483994b
feat(pvm): update runtime to v0.1.3
replghost Aug 30, 2026
90191e3
fix(pvm): update runtime to v0.1.4
replghost Aug 30, 2026
17f46c9
fix(pvm): update runtime to v0.1.5
replghost Aug 30, 2026
e892cd9
feat(pvm): add optional motion and resize recovery
replghost Aug 31, 2026
b4dd44d
chore(pvm): update browser runtime
replghost Aug 31, 2026
ed2730d
chore(pvm): pin merged browser runtime
replghost Aug 31, 2026
5e04221
feat(pvm): expose UI automation ABI
replghost Aug 31, 2026
d67b5e4
docs(truapi): record pointer capture proposal
replghost Aug 31, 2026
9813278
docs(truapi): align pointer capture with protocol
replghost Aug 31, 2026
c77c76b
docs(truapi): park pointer capture proposal
replghost Aug 31, 2026
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
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ rust/crates/truapi-server/src/wasm/generated_bridge.rs linguist-generated=true
ios/truapi-host/Sources/TrUAPIHost/truapi*.swift linguist-generated=true
ios/truapi-host/Sources/TrUAPIHost/Resources/truapi-container.js linguist-generated=true
ios/truapi-host/Sources/truapi*FFI/include/** linguist-generated=true
ios/truapi-host/Sources/TrUAPIHost/pvm_runtime.swift linguist-generated=true
ios/truapi-host/Sources/pvm_runtimeFFI/include/** linguist-generated=true

ios/truapi-provider/Sources/TrUAPIProvider/truapi_provider.swift linguist-generated=true
ios/*-provider/Sources/*FFI/include/** linguist-generated=true
7 changes: 7 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ rust/crates/
truapi-platform/ Host syscall traits (storage, navigation, consent, ...)
truapi-provider/ network provider backends (WebSocket RPC or smoldot light-client)
truapi-server/ Rust runtime hosts implement; ships as WASM (browser/node)
truapi-pvm-host/ reviewed bridge pinned to paritytech/pvm-host-runtime;
re-exports native APIs and optional browser assets
js/packages/
truapi/ @parity/truapi TS package; generated TS lives under ignored paths
truapi-host/ @parity/truapi-host: WASM-backed host runtime. Subpath entries:
Expand Down Expand Up @@ -44,6 +46,11 @@ scripts/truapi-host-installer.sh
.github/consumers.json maps each released package to the repos notified by a bump issue
```

The PolkaVM runtime implementation, GPU wire crate, browser package, and ABI
contract live in `paritytech/pvm-host-runtime`. Changes here update only the
`truapi-pvm-host` bridge pin and host integration; do not copy runtime source or
browser workers back into this repository.

### Crate + binding invariants

- `truapi` is canonical; runtime crates re-export rather than redefine. New
Expand Down
167 changes: 157 additions & 10 deletions Cargo.lock

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

9 changes: 5 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -238,9 +238,9 @@ uniffi-kotlin: ## Regenerate Kotlin UniFFI bindings from the truapi-server cdyli
--language kotlin \
--out-dir $(UNIFFI_KOTLIN_OUT)

# Android ABIs to cross-compile the cdylib for. arm64 + armv7 cover physical
# devices; x86_64 covers the emulator on Intel/Apple-silicon hosts.
ANDROID_ABIS ?= arm64-v8a armeabi-v7a x86_64
# Android ABIs supported by both TrUAPI and PolkaVM. arm64 covers physical
# devices; x86_64 covers emulators. PolkaVM does not support 32-bit armv7.
ANDROID_ABIS ?= arm64-v8a x86_64
ANDROID_JNILIBS := android/truapi-host/src/main/jniLibs

android-jni: ## Cross-compile libtruapi_server.so for Android ABIs into jniLibs (needs cargo-ndk + NDK).
Expand Down Expand Up @@ -444,7 +444,8 @@ xcframework: uniffi ## Build truapi_server.xcframework for iOS device + simulato
rm -rf $(XCFRAMEWORK_OUT) $(XCFRAMEWORK_HEADERS)
mkdir -p $(XCFRAMEWORK_HEADERS)
cp $(UNIFFI_SWIFT_TMP)/truapiFFI.h $(UNIFFI_SWIFT_TMP)/truapi_platformFFI.h \
$(UNIFFI_SWIFT_TMP)/truapi_serverFFI.h $(XCFRAMEWORK_HEADERS)/
$(UNIFFI_SWIFT_TMP)/truapi_serverFFI.h $(UNIFFI_SWIFT_TMP)/pvm_runtimeFFI.h \
$(XCFRAMEWORK_HEADERS)/
cp $(UNIFFI_SWIFT_TMP)/truapi_serverFFI.modulemap $(XCFRAMEWORK_HEADERS)/module.modulemap
slices=""; \
for target in $(XCFRAMEWORK_TARGETS); do \
Expand Down
9 changes: 8 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,18 @@ let package = Package(
pkgConfig: nil,
providers: []
),
.systemLibrary(
name: "pvm_runtimeFFI",
path: "ios/truapi-host/Sources/pvm_runtimeFFI/include",
pkgConfig: nil,
providers: []
),
binaryTarget,
.target(
name: "TrUAPIHost",
dependencies: [
"truapiFFI", "truapi_platformFFI", "truapi_serverFFI", "truapi_serverFFI_binary",
"truapiFFI", "truapi_platformFFI", "truapi_serverFFI",
"pvm_runtimeFFI", "truapi_serverFFI_binary",
],
path: "ios/truapi-host/Sources/TrUAPIHost",
resources: [.copy("Resources/truapi-container.js")]
Expand Down
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ rust/crates/
truapi-platform/ Host syscall traits used by truapi-server (storage, navigation, consent, ...)
truapi-provider/ Network provider backends (WebSocket RPC or smoldot light-client)
truapi-server/ Host runtime: dispatcher, typed SCALE logic, chain signing, WASM surface
truapi-pvm-host/ Reviewed bridge to one immutable pvm-host-runtime release
js/packages/
truapi/ @parity/truapi TypeScript client
truapi-host/ @parity/truapi-host: WASM-backed host runtime; entries `.`
Expand All @@ -92,6 +93,12 @@ scripts/codegen.sh Regenerate the TS client from the Rust source
scripts/battery.sh Run the generated battery against both headless CLI host roles
```

The PolkaVM application runtime, GPU wire contract, browser workers, and
reproducible browser assets live in
[`paritytech/pvm-host-runtime`](https://github.com/paritytech/pvm-host-runtime).
Hosts integrate through `truapi-pvm-host`, which pins one reviewed runtime
source revision and exposes the matching native API and browser asset set.

The Swift host adapter (the `TrUAPIHost` SPM package over the truapi-server
UniFFI core) lives under [`ios/truapi-host/`](ios/truapi-host), with its SPM
manifest at the repo root (`Package.swift`) so apps can consume it as a git-URL
Expand Down
5 changes: 5 additions & 0 deletions deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ exceptions = [
# BSL-1.0 is permissive, but scope it so it cannot spread to other crates.
{ name = "clipboard-win", allow = ["BSL-1.0"] },
{ name = "error-code", allow = ["BSL-1.0"] },
# The host-neutral PVM runtime and wire protocol are intentionally MPL-2.0
# so their Rust and browser implementations retain file-level copyleft.
{ name = "pvm-gpu-wire", allow = ["MPL-2.0"] },
{ name = "pvm-runtime", allow = ["MPL-2.0"] },
{ name = "pvm-runtime-assets", allow = ["MPL-2.0"] },
{ name = "uniffi", allow = ["MPL-2.0"] },
{ name = "uniffi_bindgen", allow = ["MPL-2.0"] },
{ name = "uniffi_checksum_derive", allow = ["MPL-2.0"] },
Expand Down
Loading