Repository navigation
NimRTC v1.0.2
[1.0.2] - 2026-11-02
Status: Stable
Patch release fixing two defects in
v1.0.1.v1.0.1remains
published and its tag is unchanged; perRELEASING.md§2.3 a
post-announcement fix becomes a new patch version. Public API is
unchanged (NIMRTC_API_VERSION= 10002,NIMRTC_API_VERSION_PRE_RELEASE
="").
Fixed
- WebTransport ALPN mismatch (NimRTC ↔ NimRTC handshakes were
rejected). The listener advertised the HTTP/3 token"h3"
(RFC 9114 §3.1) while the session advertised the legacy draft
token"sm", so every NimRTC-to-NimRTC WebTransport handshake was
refused during ALPN negotiation (Chrome interop was unaffected —
Chrome offers"h3"). Both sides now share one definition in
src/web_transport/src/web_transport_msquic_alpn.hpp
(session_alpn()/listener_alpn()), and
src/web_transport/tests/test_web_transport_alpn.cpppins the
invariant so the two cannot drift apart again. - Windows release bundle contained the whole CI workspace
(822 MB).release.ymlpacked the Windows bundle with
7z a -ttar -so "$staging" | 7z a -txz -si "$bundle". With-so,
7-Zip consumes the first positional argument as the archive name
(discarded, because the archive goes to stdout) and, with no file
list left, it packs the current working directory — so the
published v1.0.1 Windows asset shipped the sources,.gitand the
complete MSVC build tree instead of the install staging tree
(822,079,464 bytes against 2.3-2.9 MB for the other three
platforms). The Windows job now uses
tools/make_release_bundle.py, which packs exactly the staging
tree with members relative to the staging root — the same layout as
thetar -C ... .of the Linux/macOS jobs — and all four jobs now
refuse to publish a bundle larger than 64 MB. - The signing public key is now shipped with the release.
v1.0.1
published detached.ascsignatures while the signing key stayed
private, sogpg --verifyfailed for every downstream consumer.
The publish job now exports the public half of the signing key as
thenimrtc-signing-key.ascrelease asset, pushes it to
keyserver.ubuntu.com and keys.openpgp.org, and the release body
carries the verification recipe together with the fingerprint
(114154CFEC3F5EE5A8D2D313BEACFBB55871CC06).
Known issues
- The
v1.0.1Windows asset stays broken. The published
nimrtc-1.0.1-windows-x86_64-msvc.tar.xzis still the 822 MB
archive that contains the CI workspace rather than the install
tree;v1.0.1is immutable now, so the usable Windows artefact is
the one in this release. - The bundles do not contain NimRTC's own headers, static library,
orNimRTCConfig.cmake. Each platform bundle currently ships
only the vendored third-party dependency stack (wolfSSL /
libsrtp3 / libjuice / msquic headers and libraries); no module in
src/modules/declares aninstall()rule, and no CMake package
config is generated, sofind_package(NimRTC)does not resolve
against a downloaded bundle and linking NimRTC itself still requires
a source build. This predatesv1.0.1(its Linux bundle has the
same shape). Adding per-moduleinstall()rules plus a generated
NimRTCConfig.cmake/NimRTCConfigVersion.cmakeis tracked for
v1.1.0(Track D indocs/plan/v1.1-plan.md);README.md"Download prebuilt" has been corrected to
describe what the bundles actually contain. - The bundles carry no WebRTC APM archives, so no bundle provides a
usable 3A. The fourv1.0.2tarballs contain no
lib/webrtc_apm/directory at all (verified 2026-11-05 against the
publishednimrtc-1.0.2-{windows-x86_64-msvc,linux-x86_64-gcc}.tar.xz
assets): they ship the vendored third-party stack only. The APM
archives are installed bycmake/NimRTCInstall.cmake(Track D), which
landed after thev1.0.2cut, so thev1.0.2bundles predate it.
Notes
- Public API is unchanged vs
v1.0.1;NIMRTC_API_VERSION= 10002,
NIMRTC_API_VERSION_PRE_RELEASE="". - The 3A status table in this release's body was wrong, and so was
the reason it gave for thewindowsline. The table is generated
from the per-platform build-time APM mode
(build/3a-status-<platform>.txt, which records whether the WebRTC
APM prebuild succeeded), not from what the published bundle carries.
The "WebRTC APM (real 3A) bundled" lines for linux/macOS therefore
described the build, not the artefact: none of the four bundles ships
the APM archives (see the known issue above). Thewindowsline
blamed a failed prebuild, but thePrebuild WebRTC APMstep
succeeded in the finalv1.0.2release run (release / build / windows→Prebuild WebRTC APM→success); the persistent Windows
stub-3A outcome throughv1.0.2came from defects in
tools/build_webrtc_apm.cmd— LF-only line endings that cmd.exe
mis-parses, apowershell -Commandwrapper that turned ninja's
stderr progress line into a terminating error, and a ninja invocation
withoutcall— all fixed in9c3c522, i.e. before this cut. The
generator now lists the published tarball and reports the build mode
and the shipped content separately, so "real 3A bundled" is only
claimed whenlib/webrtc_apm/is actually present in the artefact.
Verifying the signature
The public half of the signing key ships with this
release asnimrtc-signing-key.asc. To verify a bundle:
gpg --import nimrtc-signing-key.asc gpg --verify nimrtc-<version>-<platform>.tar.xz.asc nimrtc-<version>-<platform>.tar.xz
The signing key fingerprint is
114154CFEC3F5EE5A8D2D313BEACFBB55871CC06.
Check it against the fingerprint shown bygpg --fingerprint
after importing — do not trust the key file blindly.
3A (AEC/ANS/AGC) status per platform
linux-aarch64— the build used the real WebRTC APM, but this bundle ships no APM archives (lib/webrtc_apm/is absent), so it provides no usable 3Alinux-x86_64— the build used the real WebRTC APM, but this bundle ships no APM archives (lib/webrtc_apm/is absent), so it provides no usable 3Amacos-arm64— the build used the real WebRTC APM, but this bundle ships no APM archives (lib/webrtc_apm/is absent), so it provides no usable 3Awindows— the build used the real WebRTC APM, but this bundle ships no APM archives (lib/webrtc_apm/is absent), so it provides no usable 3A
The WebRTC APM is prebuilt out-of-tree with meson. Where
that prebuild fails, the build falls back to NimRTC's
built-in stub 3A path instead of aborting the release.
The status above is checked against the published bundle:
a platform counts as "real 3A bundled" only when
lib/webrtc_apm/is actually present in the tarball.