rstgcalls
Источник:
dev/fera/rstgcalls/README.md(read-only; сгенерировано scripts/sync-docs.mjs)
rstgcalls
Section titled “rstgcalls”Rust FFI bindings to tgcalls — Telegram’s calling stack (WebRTC via C++) — for voice/video calls and streams in Fera.
Pre-code. This repo will hold the binding crate. The C++ base itself is not vendored here: it lives in our tgcalls fork, pulled in as a git submodule — the org’s repo tree is recursive by design, same pattern as the rest of the ecosystem.
rstgcalls (this repo — Rust bindings)└── tgcalls/ (submodule → the-fera/tgcalls, fork of TelegramMessenger/tgcalls)Why bindings, not a reimplementation
Section titled “Why bindings, not a reimplementation”Telegram’s calling stack is not a documented, stable public protocol
like MTProto itself. Reimplementing from scratch carries high risk of
breakage on undocumented protocol changes — so the initial release
line ships the official tgcalls via C++ FFI, isolated to the calling
module specifically (the rest of Fera’s stack avoids C/C++
dependencies).
A from-scratch pure-Rust reimplementation is a deferred long-term goal, tracked separately under the reserved name re:call — not this repo. This crate’s name stays honest: Rust bindings to tgcalls.
What this crate will expose
Section titled “What this crate will expose”- Safe Rust wrappers over the tgcalls C++ API surface Fera needs: call setup/teardown, audio/video streams, signaling hooks over MTProto (via grmrs).
- Fera’s
calls-tgcallsnylon-ring module is built on top of this crate — bindings stay UI/runtime-agnostic.
Status
Section titled “Status”Pre-code. Upstream: tgcalls (LGPL-3.0) — licensing implications of linking are assessed before the first release.
Team: recall — repo access
is granted through the team.
License
Section titled “License”TBD — decided before the first public release. Upstream tgcalls’ LGPL-3.0 terms apply to the submodule base.