feat: add new implementation versions (go, js, rust) (#349)
* feat: add new implementation versions (go) * ci: generalise adding new implementation versions * ci: automate new version addition for rust-libp2p and js-libp2p
This commit is contained in:
parent
9fd3f85733
commit
ed111cdc25
|
@ -16,15 +16,57 @@ permissions:
|
||||||
actions: write
|
actions: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
go:
|
add:
|
||||||
|
name: Add new ${{ matrix.repository_name }} version to ${{ matrix.test_name }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- repository_name: go-libp2p
|
||||||
|
implementation_name: go-libp2p
|
||||||
|
test_name: perf
|
||||||
|
implementation_update_script: |
|
||||||
|
sed -i "1s/$LOCAL_MAJOR_MINOR_VERSION/$REMOTE_MAJOR_MINOR_VERSION/g" go.mod
|
||||||
|
go mod tidy -go=$GO_MAJOR_MINOR_VERSION
|
||||||
|
go mod tidy
|
||||||
|
go get github.com/libp2p/go-libp2p@$REMOTE_VERSION
|
||||||
|
- repository_name: go-libp2p
|
||||||
|
implementation_name: go
|
||||||
|
test_name: transport-interop
|
||||||
|
implementation_update_script: |
|
||||||
|
sed -i "s/image_name := go-${LOCAL_MAJOR_MINOR_VERSION}/image_name := go-${REMOTE_MAJOR_MINOR_VERSION}/g" Makefile
|
||||||
|
sed -i "s/version := ${LOCAL_MAJOR_MINOR_VERSION#v}\..*/version := ${REMOTE_VERSION#v}/g" Makefile
|
||||||
|
make version.lock
|
||||||
|
- repository_name: rust-libp2p
|
||||||
|
implementation_name: rust-libp2p
|
||||||
|
test_name: perf
|
||||||
|
implementation_update_script: |
|
||||||
|
sed -i "s/commitSha := .*/commitSha := ${REMOTE_SHA}/g" Makefile
|
||||||
|
- repository_name: rust-libp2p
|
||||||
|
implementation_name: rust
|
||||||
|
test_name: transport-interop
|
||||||
|
implementation_update_script: |
|
||||||
|
sed -i "s/image_name := rust-${LOCAL_MAJOR_MINOR_VERSION}/image_name := rust-${REMOTE_MAJOR_MINOR_VERSION}/g" Makefile
|
||||||
|
sed -i "s/commitSha := .*/commitSha := ${REMOTE_SHA}/g" Makefile
|
||||||
|
- repository_name: js-libp2p
|
||||||
|
implementation_name: js-libp2p
|
||||||
|
test_name: perf
|
||||||
|
implementation_update_script: |
|
||||||
|
suffix="$(echo "${REMOTE_MAJOR_MINOR_VERSION#v}" | sed 's/\./-/g')"
|
||||||
|
sed -i "s/perf-js-libp2p-[^\"]*/perf-js-libp2p-$suffix/g" package.json
|
||||||
|
npm install libp2p@$REMOTE_VERSION
|
||||||
|
- repository_name: js-libp2p
|
||||||
|
implementation_name: js
|
||||||
|
test_name: transport-interop
|
||||||
|
implementation_update_script: |
|
||||||
|
sed -i "s/image_name := js-${LOCAL_MAJOR_MINOR_VERSION}\..*/image_name := js-${REMOTE_VERSION}/g" Makefile
|
||||||
|
npm install libp2p@$REMOTE_VERSION
|
||||||
env:
|
env:
|
||||||
DIR: perf/impl/go-libp2p
|
BRANCH: add/${{ matrix.test_name }}/${{ matrix.repository_name }}
|
||||||
REPO: libp2p/go-libp2p
|
|
||||||
BRANCH: perf/go-libp2p
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout test-plans
|
- name: Checkout test-plans
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Configure git
|
- name: Configure git
|
||||||
run: |
|
run: |
|
||||||
git fetch origin $BRANCH && git checkout $BRANCH || git checkout -b $BRANCH
|
git fetch origin $BRANCH && git checkout $BRANCH || git checkout -b $BRANCH
|
||||||
|
@ -32,40 +74,81 @@ jobs:
|
||||||
git config --global user.email $GITHUB_ACTOR@users.noreply.github.com
|
git config --global user.email $GITHUB_ACTOR@users.noreply.github.com
|
||||||
git config --global user.name $GITHUB_ACTOR
|
git config --global user.name $GITHUB_ACTOR
|
||||||
- id: go
|
- id: go
|
||||||
uses: actions/setup-go@v3
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: stable
|
go-version: stable
|
||||||
- name: Get the latest version (local)
|
- name: Get the latest version (local)
|
||||||
id: local
|
id: local
|
||||||
run: ls -d v* | sort -V | tail -n-1 | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT
|
env:
|
||||||
working-directory: ${{ env.DIR }}
|
IMPLEMENTATION_DIRECTORY: ${{ matrix.test_name }}/impl/${{ matrix.implementation_name }}
|
||||||
|
run: |
|
||||||
|
pushd $IMPLEMENTATION_DIRECTORY
|
||||||
|
ls -d v* | sort -V | tail -n-1 | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT
|
||||||
|
popd
|
||||||
- name: Get the latest version (remote)
|
- name: Get the latest version (remote)
|
||||||
id: remote
|
id: remote
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
run: gh api repos/$REPO/releases/latest --jq '.tag_name' | xargs -I{} echo "version={}" | tee -a $GITHUB_OUTPUT
|
REPOSITORY_NAME: ${{ matrix.repository_name }}
|
||||||
|
run: |
|
||||||
|
releases="$(gh api --paginate repos/libp2p/$REPOSITORY_NAME/releases)"
|
||||||
|
latest="$(jq 'map(select(.tag_name | startswith("libp2p-"))) | first' <<< "$releases")"
|
||||||
|
if [[ "$latest" == "null" ]]; then
|
||||||
|
latest="$(jq 'first' <<< "$releases")"
|
||||||
|
fi
|
||||||
|
tag_name=$(jq -r '.tag_name' <<< "$latest")
|
||||||
|
target_commitish=$(jq -r '.target_commitish' <<< "$latest")
|
||||||
|
echo "version=${tag_name#libp2p-}" | tee -a $GITHUB_OUTPUT
|
||||||
|
echo "target_commitish=${target_commitish}" | tee -a $GITHUB_OUTPUT
|
||||||
|
- id: mm
|
||||||
|
env:
|
||||||
|
REMOTE_VERSION: ${{ steps.remote.outputs.version }}
|
||||||
|
GO_VERSION: ${{ steps.go.outputs.go-version }}
|
||||||
|
run: |
|
||||||
|
echo $REMOTE_VERSION | sed 's/\.[0-9]*$//' | xargs -I{} echo "remote={}" | tee -a $GITHUB_OUTPUT
|
||||||
|
echo $GO_VERSION | sed 's/\.[0-9]*$//' | xargs -I{} echo "go={}" | tee -a $GITHUB_OUTPUT
|
||||||
- name: Add the latest version
|
- name: Add the latest version
|
||||||
if: ${{ !startsWith(steps.remote.outputs.version, steps.local.outputs.version) }}
|
if: ${{ !startsWith(steps.remote.outputs.version, steps.local.outputs.version) }}
|
||||||
env:
|
env:
|
||||||
LOCAL_VERSION: ${{ steps.local.outputs.version }}
|
LOCAL_MAJOR_MINOR_VERSION: ${{ steps.local.outputs.version }}
|
||||||
REMOTE_VERSION: ${{ steps.remote.outputs.version }}
|
REMOTE_VERSION: ${{ steps.remote.outputs.version }}
|
||||||
|
REMOTE_MAJOR_MINOR_VERSION: ${{ steps.mm.outputs.remote }}
|
||||||
|
REMOTE_SHA: ${{ steps.remote.outputs.sha }}
|
||||||
GO_VERSION: ${{ steps.go.outputs.go-version }}
|
GO_VERSION: ${{ steps.go.outputs.go-version }}
|
||||||
|
GO_MAJOR_MINOR_VERSION: ${{ steps.mm.outputs.go }}
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
IMPLEMENTATION_DIRECTORY: ${{ matrix.test_name }}/impl/${{ matrix.implementation_name }}
|
||||||
|
VERSIONS_DIRECTORY: ${{ matrix.test_name == 'perf' && format('{0}/runner', matrix.test_name) || matrix.test_name }}
|
||||||
|
IMPLEMENTATION_NAME: ${{ matrix.implementation_name }}
|
||||||
|
REPOSITORY_NAME: ${{ matrix.repository_name }}
|
||||||
|
TEST_NAME: ${{ matrix.test_name }}
|
||||||
run: |
|
run: |
|
||||||
majorMinorRemoteVersion=$(echo $REMOTE_VERSION | sed 's/\.[0-9]*$//')
|
pushd $IMPLEMENTATION_DIRECTORY
|
||||||
majorMinorGoVersion=$(echo $GO_VERSION | sed 's/\.[0-9]*$//')
|
cp -r $LOCAL_MAJOR_MINOR_VERSION $REMOTE_MAJOR_MINOR_VERSION
|
||||||
cp -r $LOCAL_VERSION $majorMinorRemoteVersion
|
pushd $REMOTE_MAJOR_MINOR_VERSION
|
||||||
cd $majorMinorRemoteVersion
|
${{ matrix.implementation_update_script }}
|
||||||
sed -i "1s/$LOCAL_VERSION/$majorMinorRemoteVersion/g" go.mod
|
popd
|
||||||
go mod tidy -go=$majorMinorGoVersion
|
popd
|
||||||
go mod tidy
|
|
||||||
go get github.com/libp2p/go-libp2p@$REMOTE_VERSION
|
pushd $VERSIONS_DIRECTORY
|
||||||
git add .
|
versions=''
|
||||||
git commit -m "chore: add go-libp2p@$REMOTE_VERSION to $DIR"
|
if [[ "$TEST_NAME" == "perf" ]]; then
|
||||||
git push origin $BRANCH --force
|
versions="$(jq '. + map(select(.implementation == env.IMPLEMENTATION_NAME and .id == env.LOCAL_MAJOR_MINOR_VERSION) | .id = env.REMOTE_MAJOR_MINOR_VERSION)' versionsInput.json)"
|
||||||
# create a PR if an open one doesn't exist yet
|
else
|
||||||
if [[ $(gh pr list --state open --base $GITHUB_REF --head $BRANCH | wc -l) -eq 0 ]]; then
|
versions="$(jq '. + map(select(.id == "\(env.IMPLEMENTATION_NAME)-\(env.LOCAL_MAJOR_MINOR_VERSION)") | .id = "\(env.IMPLEMENTATION_NAME)-\(env.REMOTE_MAJOR_MINOR_VERSION)")' versionsInput.json)"
|
||||||
gh pr create --title "chore: add go-libp2p@$REMOTE_VERSION to $DIR" --body "This PR adds go-libp2p@$REMOTE_VERSION to $DIR" --head $BRANCH --base $GITHUB_REF
|
fi
|
||||||
|
echo "$versions" > versionsInput.json
|
||||||
|
popd
|
||||||
|
|
||||||
|
git add .
|
||||||
|
git commit -m "chore: add $REPOSITORY_NAME@$REMOTE_VERSION to $TEST_NAME"
|
||||||
|
|
||||||
|
git push origin $BRANCH --force
|
||||||
|
|
||||||
|
if [[ $(gh pr list --state open --base $GITHUB_REF --head $BRANCH | wc -l) -eq 0 ]]; then
|
||||||
|
gh pr create --title "chore: add $REPOSITORY_NAME@$REMOTE_VERSION to $TEST_NAME" --body "This PR adds $REPOSITORY_NAME@$REMOTE_VERSION to $TEST_NAME" --head $BRANCH --base $GITHUB_REF
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$TEST_NAME" == "perf" ]]; then
|
||||||
|
gh workflow run $TEST_NAME.yml --ref $BRANCH
|
||||||
fi
|
fi
|
||||||
gh workflow run perf.yml --ref $BRANCH
|
|
||||||
working-directory: ${{ env.DIR }}
|
|
||||||
|
|
|
@ -1,53 +1,10 @@
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
export type Version = {
|
export type Version = {
|
||||||
id: string,
|
id: string,
|
||||||
implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https" | "quic-go",
|
implementation: "go-libp2p" | "js-libp2p" | "nim-libp2p" | "rust-libp2p" | "zig-libp2p" | "https" | "quic-go",
|
||||||
transportStacks: string[],
|
transportStacks: string[],
|
||||||
}
|
}
|
||||||
|
|
||||||
export const versions: Array<Version> = [
|
export const versions: Array<Version> = JSON.parse(fs.readFileSync(path.join(__dirname, '../versionsInput.json'), 'utf8'));
|
||||||
{
|
|
||||||
id: "v0.34",
|
|
||||||
implementation: "quic-go",
|
|
||||||
transportStacks: ["quic-v1"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.53",
|
|
||||||
implementation: "rust-libp2p",
|
|
||||||
transportStacks: ["tcp", "quic-v1"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.1",
|
|
||||||
implementation: "https",
|
|
||||||
transportStacks: ["tcp"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.27",
|
|
||||||
implementation: "go-libp2p",
|
|
||||||
transportStacks: ["tcp", "quic-v1"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.28",
|
|
||||||
implementation: "go-libp2p",
|
|
||||||
transportStacks: ["tcp", "quic-v1"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.29",
|
|
||||||
implementation: "go-libp2p",
|
|
||||||
transportStacks: ["tcp", "quic-v1"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.31",
|
|
||||||
implementation: "go-libp2p",
|
|
||||||
transportStacks: ["tcp", "quic-v1"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v0.46",
|
|
||||||
implementation: "js-libp2p",
|
|
||||||
transportStacks: ["tcp"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "v1.0",
|
|
||||||
implementation: "js-libp2p",
|
|
||||||
transportStacks: ["tcp"]
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "v0.34",
|
||||||
|
"implementation": "quic-go",
|
||||||
|
"transportStacks": [
|
||||||
|
"quic-v1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.53",
|
||||||
|
"implementation": "rust-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp",
|
||||||
|
"quic-v1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.1",
|
||||||
|
"implementation": "https",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.27",
|
||||||
|
"implementation": "go-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp",
|
||||||
|
"quic-v1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.28",
|
||||||
|
"implementation": "go-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp",
|
||||||
|
"quic-v1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.29",
|
||||||
|
"implementation": "go-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp",
|
||||||
|
"quic-v1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.31",
|
||||||
|
"implementation": "go-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp",
|
||||||
|
"quic-v1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v0.46",
|
||||||
|
"implementation": "js-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v1.0",
|
||||||
|
"implementation": "js-libp2p",
|
||||||
|
"transportStacks": [
|
||||||
|
"tcp"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
|
@ -49,119 +49,12 @@ function browserImageIDLookup(id: string): string {
|
||||||
return imageID
|
return imageID
|
||||||
}
|
}
|
||||||
|
|
||||||
export const versions: Array<Version> = [
|
export const versions: Array<Version> = JSON.parse(fs.readFileSync(path.join(__dirname, 'versionsInput.json') , 'utf8')).map((v: Version) => {
|
||||||
{
|
switch(v.containerImageID) {
|
||||||
id: "rust-v0.51",
|
case "browser":
|
||||||
transports: ["ws", "tcp", "quic-v1", "webrtc-direct"],
|
return { ...v, containerImageID: browserImageIDLookup }
|
||||||
secureChannels: ["tls", "noise"],
|
case "canonical":
|
||||||
muxers: ["mplex", "yamux"],
|
default:
|
||||||
},
|
return { ...v, containerImageID: canonicalImageIDLookup }
|
||||||
{
|
}
|
||||||
id: "rust-v0.52",
|
});
|
||||||
transports: ["ws", "tcp", "quic-v1", "webrtc-direct"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "rust-v0.53",
|
|
||||||
transports: ["ws", "tcp", "quic-v1", "webrtc-direct"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
// {
|
|
||||||
// id: "rust-chromium-v0.52",
|
|
||||||
// transports: [{ name: "webtransport", onlyDial: true }],
|
|
||||||
// secureChannels: [],
|
|
||||||
// muxers: [],
|
|
||||||
// },
|
|
||||||
{
|
|
||||||
id: "rust-chromium-v0.53",
|
|
||||||
"transports": [
|
|
||||||
{ "name": "webtransport", "onlyDial": true },
|
|
||||||
{ "name": "webrtc-direct", "onlyDial": true },
|
|
||||||
{ "name": "ws", "onlyDial": true }
|
|
||||||
],
|
|
||||||
"secureChannels": ["noise"],
|
|
||||||
"muxers": ["mplex", "yamux"]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "js-v0.45",
|
|
||||||
transports: ["tcp", "ws", { name: "wss", onlyDial: true }],
|
|
||||||
secureChannels: ["noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "js-v0.46",
|
|
||||||
transports: ["tcp", "ws", { name: "wss", onlyDial: true }],
|
|
||||||
secureChannels: ["noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "chromium-js-v0.46",
|
|
||||||
containerImageID: browserImageIDLookup,
|
|
||||||
transports: [{ name: "webtransport", onlyDial: true }, { name: "wss", onlyDial: true }, { name: "webrtc-direct", onlyDial: true }, "webrtc"],
|
|
||||||
secureChannels: ["noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "firefox-js-v0.46",
|
|
||||||
containerImageID: browserImageIDLookup,
|
|
||||||
transports: [{ name: "wss", onlyDial: true }, { name: "webrtc-direct", onlyDial: true }, "webrtc"],
|
|
||||||
secureChannels: ["noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "go-v0.33",
|
|
||||||
transports: ["tcp", "ws", "quic-v1", "webtransport", "webrtc-direct"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "go-v0.32",
|
|
||||||
transports: ["tcp", "ws", "quic-v1", "webtransport", "webrtc-direct"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "go-v0.31",
|
|
||||||
transports: ["tcp", "ws", "quic-v1", "webtransport"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "go-v0.30",
|
|
||||||
transports: ["tcp", "ws", "quic-v1", "webtransport"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "go-v0.29",
|
|
||||||
transports: ["tcp", "ws", "quic", "quic-v1", "webtransport"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "nim-v1.0",
|
|
||||||
transports: ["tcp", "ws"],
|
|
||||||
secureChannels: ["noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "zig-v0.0.1",
|
|
||||||
transports: ["quic-v1"],
|
|
||||||
secureChannels: [],
|
|
||||||
muxers: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "java-v0.0.1",
|
|
||||||
transports: ["tcp"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "java-v0.6",
|
|
||||||
transports: ["tcp"],
|
|
||||||
secureChannels: ["tls", "noise"],
|
|
||||||
muxers: ["mplex", "yamux"],
|
|
||||||
},
|
|
||||||
].map((v: Version) => (typeof v.containerImageID === "undefined" ? ({ ...v, containerImageID: canonicalImageIDLookup }) : v))
|
|
||||||
|
|
|
@ -0,0 +1,295 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "rust-v0.51",
|
||||||
|
"transports": [
|
||||||
|
"ws",
|
||||||
|
"tcp",
|
||||||
|
"quic-v1",
|
||||||
|
"webrtc-direct"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rust-v0.52",
|
||||||
|
"transports": [
|
||||||
|
"ws",
|
||||||
|
"tcp",
|
||||||
|
"quic-v1",
|
||||||
|
"webrtc-direct"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rust-v0.53",
|
||||||
|
"transports": [
|
||||||
|
"ws",
|
||||||
|
"tcp",
|
||||||
|
"quic-v1",
|
||||||
|
"webrtc-direct"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rust-chromium-v0.53",
|
||||||
|
"transports": [
|
||||||
|
{
|
||||||
|
"name": "webtransport",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "webrtc-direct",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ws",
|
||||||
|
"onlyDial": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "js-v0.45",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
{
|
||||||
|
"name": "wss",
|
||||||
|
"onlyDial": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "js-v0.46",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
{
|
||||||
|
"name": "wss",
|
||||||
|
"onlyDial": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "chromium-js-v0.46",
|
||||||
|
"containerImageID": "browser",
|
||||||
|
"transports": [
|
||||||
|
{
|
||||||
|
"name": "webtransport",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wss",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "webrtc-direct",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
"webrtc"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "firefox-js-v0.46",
|
||||||
|
"containerImageID": "browser",
|
||||||
|
"transports": [
|
||||||
|
{
|
||||||
|
"name": "wss",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "webrtc-direct",
|
||||||
|
"onlyDial": true
|
||||||
|
},
|
||||||
|
"webrtc"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "go-v0.33",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
"quic-v1",
|
||||||
|
"webtransport",
|
||||||
|
"webrtc-direct"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "go-v0.32",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
"quic-v1",
|
||||||
|
"webtransport",
|
||||||
|
"webrtc-direct"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "go-v0.31",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
"quic-v1",
|
||||||
|
"webtransport"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "go-v0.30",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
"quic-v1",
|
||||||
|
"webtransport"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "go-v0.29",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws",
|
||||||
|
"quic",
|
||||||
|
"quic-v1",
|
||||||
|
"webtransport"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "nim-v1.0",
|
||||||
|
"transports": [
|
||||||
|
"tcp",
|
||||||
|
"ws"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "zig-v0.0.1",
|
||||||
|
"transports": [
|
||||||
|
"quic-v1"
|
||||||
|
],
|
||||||
|
"secureChannels": [],
|
||||||
|
"muxers": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "java-v0.0.1",
|
||||||
|
"transports": [
|
||||||
|
"tcp"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "java-v0.6",
|
||||||
|
"transports": [
|
||||||
|
"tcp"
|
||||||
|
],
|
||||||
|
"secureChannels": [
|
||||||
|
"tls",
|
||||||
|
"noise"
|
||||||
|
],
|
||||||
|
"muxers": [
|
||||||
|
"mplex",
|
||||||
|
"yamux"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in New Issue