kb · межъязыковые библиотекиkb · cross-language libraries
Библиотеки, не привязанные к одному языку — C-ядро с биндингами повсюду или намеренно спроектированный межъязыковой стандарт (схема + кодогенерация). В отличие от cpp/libraries, rust/ecosystem, go/ecosystem, python/ecosystem, js/ecosystem — здесь то, что одинаково встречается в C++, Rust, Go, Python и JS/TS одновременно, а не специфично для одного языка.Libraries not tied to one language — a C core with bindings everywhere, or a deliberately designed cross-language standard (schema plus code generation). Unlike cpp/libraries, rust/ecosystem, go/ecosystem, python/ecosystem, js/ecosystem — this is what shows up identically across C++, Rust, Go, Python, and JS/TS at once, rather than being specific to one language.
.proto-файл, из которого кодогенерация выдаёт типобезопасный код для C++/Rust/Go/Python/JS одновременно — фундамент gRPC.A .proto file that code generation turns into type-safe code for C++/Rust/Go/Python/JS at once — the foundation gRPC is built on.
Родное ядро C++, официальные биндинги для Rust/Go/Python — структура читается прямо из буфера без шага декодирования.A native C++ core with official Rust/Go/Python bindings — the structure is read straight from the buffer with no decode step.
Официальные генераторы для C++/Rust/Go/Python/JS — концептуально похож на Cap'n Proto, шире используется в играх и на мобильных.Official generators for C++/Rust/Go/Python/JS — conceptually close to Cap'n Proto, more widely used in games and mobile.
Один из первых фреймворков такого рода (изначально Facebook) — схема, кодогенерация на десятки языков, множество транспортов.One of the earliest frameworks of its kind (originally Facebook) — schema, code generation for dozens of languages, many transports.
Обмен табличными данными между процессами/языками без копирования — C++/Rust/Go/Python (pyarrow — один из самых зрелых биндингов вообще)/JS.Exchanging tabular data between processes/languages without copying — C++/Rust/Go/Python (pyarrow is one of the most mature bindings anywhere)/JS.
Тесно связан с Arrow — читают/пишут C++, Rust (parquet-rs), Python (pyarrow/fastparquet), Go (parquet-go), JS (parquet-wasm).Closely tied to Arrow — read/written by C++, Rust (parquet-rs), Python (pyarrow/fastparquet), Go (parquet-go), JS (parquet-wasm).
Java-центричный исторически, но полноценные биндинги для Python (fastavro), Go, JS — стандарт схем в Kafka-экосистеме.Historically Java-centric, but with full bindings for Python (fastavro), Go, JS — the schema standard in the Kafka ecosystem.
JSON-подобная модель данных без схемы, в компактном бинарном виде — реализации есть практически на всех языках.A JSON-like schema-less data model in compact binary form — implementations exist in practically every language.
Бинарный JSON с дополнительными типами (дата, бинарные данные) — драйверы MongoDB есть на всех языках, формат единый.Binary JSON with extra types (dates, binary data) — MongoDB drivers exist for every language, sharing one format.
Фиксированные офсеты, каст буфера напрямую в структуру без шага декодирования — референсная реализация на Java/C++/C#, используется CME. Схема — XML, компилируется sbe-tool.Fixed offsets, casting the buffer straight into a struct with no decode step — reference implementation in Java/C++/C#, used by CME. Schema is XML, compiled by sbe-tool.
Поверх Protobuf и HTTP/2 — официальные реализации C++/Rust(tonic)/Go/Python/JS, Go-реализация особенно зрелая (Kubernetes/etcd).Built on Protobuf and HTTP/2 — official implementations in C++/Rust (tonic)/Go/Python/JS, with the Go implementation especially mature (Kubernetes/etcd).
Паттерны pub-sub/req-rep поверх сокетов — C-ядро, биндинги на 40+ языков (pyzmq, zeromq.js, go-zmq).pub-sub/req-rep patterns over sockets — a C core with bindings for 40+ languages (pyzmq, zeromq.js, go-zmq).
Переосмысление ZeroMQ с более простым API — биндинги слабее развиты, но покрывают Go/Python.A rethink of ZeroMQ with a simpler API — less mature bindings, but covering Go/Python.
Однонаправленный pub/sub поверх UDP unicast/multicast/IPC, Java/C/C++ клиенты. Archive — отдельный процесс поверх того же транспорта: пишет на диск, даёт replay по recordingId. Persistence, retention, consumer offsets — не встроены, реализуются вручную. Прод-кейсы: Man Group, Coinbase.Unidirectional pub/sub over UDP unicast/multicast/IPC, Java/C/C++ clients. Archive is a separate process over the same transport: writes to disk, offers replay by recordingId. Persistence, retention, consumer offsets aren't built in — hand-rolled. Production cases: Man Group, Coinbase.
Самая распространённая в мире БД — весь движок в одном файле, драйверы во всех языках (Python — прямо в stdlib).The world's most widely deployed database — the entire engine in one file, drivers in every language (Python has one right in stdlib).
LSM-tree для write-heavy нагрузок — родное ядро C++, официальные/community биндинги Go/Rust/Python.An LSM-tree store for write-heavy workloads — native C++ core, official/community bindings for Go/Rust/Python.
Memory-mapped B+tree — минимальный overhead на чтение, биндинги повсюду, часто как movement layer в latency-чувствительных системах.A memory-mapped B+tree — minimal read overhead, bindings everywhere, often used as a movement layer in latency-sensitive systems.
Сервер на C, но протокол RESP реализован одинаково в каждом языке — go-redis, redis-py, ioredis и другие говорят на одном проводном формате.The server is written in C, but the RESP protocol is implemented identically in every language — go-redis, redis-py, ioredis, and others all speak the same wire format.
Быстрый локальный аналитический движок — нативные API для C++/Rust/Go/Python/JS(WASM), не только Python, где чаще всего встречается.A fast local analytics engine — native APIs for C++/Rust/Go/Python/JS (WASM), not just the Python context it's usually seen in.
clickhouse-cpp, clickhouse-go, clickhouse-connect (Python), clickhouse-driver, JS через HTTP-интерфейс — уже используется в cran-стеке.clickhouse-cpp, clickhouse-go, clickhouse-connect (Python), clickhouse-driver, JS via the HTTP interface — already used in the cran stack.
librdkafka (C) лежит в основе confluent-kafka-go, confluent-kafka-python, rdkafka (Rust), kafkajs (Node) — один движок под разными обёртками.librdkafka (C) underlies confluent-kafka-go, confluent-kafka-python, rdkafka (Rust), kafkajs (Node) — one engine under different wrappers.
Сам брокер на Go, нативные клиенты на Go/Rust/Python/JS — альтернатива Kafka для меньшего масштаба.The broker itself is written in Go, with native clients for Go/Rust/Python/JS — a Kafka alternative for smaller scale.
Специализированный фреймворк поверх gRPC для передачи колоночных Arrow-данных между процессами/языками с минимальным overhead.A specialized framework on top of gRPC for moving columnar Arrow data between processes/languages with minimal overhead.
Баланс скорости/степени сжатия лучше zlib/gzip — стало индустриальным стандартом, биндинги везде, часто рядом с Parquet/Arrow.A better speed/ratio balance than zlib/gzip — now an industry standard, bindings everywhere, often paired with Parquet/Arrow.
Приоритет скорости над степенью сжатия — используется там, где сжатие не должно попасть в hot path.Prioritizes speed over ratio — used where compression must not get in the way of the hot path.
Более старый вариант, всё ещё встречается в Hadoop-экосистеме — вытесняется zstd в новых проектах.An older option still seen in the Hadoop ecosystem — being displaced by zstd in newer projects.
Индустриальный стандарт TLS/SSL — биндинги во всех языках (Go имеет частично свою реализацию в stdlib, но линкуется тоже).The industry standard for TLS/SSL — bindings in every language (Go has a partial stdlib implementation of its own, but also links against it).
Альтернатива OpenSSL с простым API — C-ядро, биндинги C++/Rust (sodiumoxide, dryoc)/Go/Python (PyNaCl)/JS (libsodium-wrappers).An OpenSSL alternative with a simple API — a C core, bindings for C++/Rust (sodiumoxide, dryoc)/Go/Python (PyNaCl)/JS (libsodium-wrappers).
Библиотека от Google — гарантированное линейное время вместо экспоненциального; биндинги C++/Python/Go/Rust (rure).Google's library — guaranteed linear time instead of exponential blowups; bindings for C++/Python/Go/Rust (rure).
Классический полнофункциональный движок — биндинги повсюду, используется в Apache, PHP и многих других проектах.The classic full-featured engine — bindings everywhere, used in Apache, PHP, and many other projects.
Нормализация, коллации, локали — стандарт везде, где нужна серьёзная работа с текстом на разных языках.Normalization, collation, locales — the standard wherever serious multilingual text processing is needed.
Единый источник, который читают chrono-tz (Rust), pytz/zoneinfo (Python), time.Location (Go), Intl (JS) — все согласованы между собой.A single source read by chrono-tz (Rust), pytz/zoneinfo (Python), time.Location (Go), Intl (JS) — all mutually consistent.
Биндинги C++/Rust (ffmpeg-next)/Python (av, ffmpeg-python)/Go/Node — стандарт для любого media pipeline.Bindings for C++/Rust (ffmpeg-next)/Python (av, ffmpeg-python)/Go/Node — the standard for any media pipeline.
Фундаментальные C-библиотеки, линкуемые практически из любого языка напрямую или через более высокоуровневые обёртки.Fundamental C libraries, linked from practically any language directly or through higher-level wrappers.
Используется в Chrome/Flutter — родное ядро C++, доступен из JS через CanvasKit (WASM), есть Python-обёртки.Used in Chrome/Flutter — a native C++ core, available from JS via CanvasKit (WASM), with Python wrappers too.
Сами по себе спецификации, не библиотеки одного языка — доступны через биндинги из C++/Rust/Go/Python/JS(WebGL/WebGPU).Specifications in their own right, not single-language libraries — accessible via bindings from C++/Rust/Go/Python/JS (WebGL/WebGPU).
OpenBLAS/Intel MKL — под капотом NumPy, Eigen и почти любого ML-стека в любом языке рано или поздно вызывается одна из реализаций.OpenBLAS/Intel MKL — underneath NumPy, Eigen, and almost any ML stack in any language, one of these implementations eventually gets called.
Биндинги везде, где есть сигнальная обработка — C++/Rust/Python (pyFFTW)/Go, эталон по скорости среди FFT-библиотек.Bindings wherever signal processing happens — C++/Rust/Python (pyFFTW)/Go, the speed benchmark among FFT libraries.
Обучил модель в Python (PyTorch/TF), экспортировал в ONNX, инферишь из C++/Rust/Go/JS по одному и тому же графу вычислений.Train a model in Python (PyTorch/TF), export to ONNX, run inference from C++/Rust/Go/JS on the same computation graph.
Тот же движок, что и у Python PyTorch, но без интерпретатора — путь к low-latency инференсу в hot path.The same engine as Python PyTorch, but without the interpreter — a path to low-latency inference on the hot path.
Спроектирован кроссплатформенным изначально — SDK на C++/Rust/Go/Python/JS с единым протоколом OTLP.Designed cross-platform from the start — SDKs for C++/Rust/Go/Python/JS sharing one OTLP protocol.
Официальные клиенты для всех перечисленных языков — единый формат экспозиции метрик, который Prometheus скрейпит одинаково откуда угодно.Official clients for every language listed here — one metrics-exposition format that Prometheus scrapes identically from anywhere.
Не библиотека, а тулинг — именно он генерирует код для всех языков из одной .proto-схемы, стоит помнить отдельно от формата.Tooling, not a library — the piece that generates code for every language from one .proto schema, worth keeping distinct from the format itself.
Rust компилируется в него нативно лучше всех, C++ через Emscripten, Go тоже может — способ шарить один и тот же код (например парсер протокола) между backend и frontend без дублирования.Rust compiles into it most natively, C++ via Emscripten, Go can too — a way to share the same code (e.g. a protocol parser) between backend and frontend without duplicating it.
статус и оговоркаstatus and caveat
Это каркас: 12 категорий и 42 библиотеки зафиксированы, страницы ещё не написаны. Критерий попадания сюда — библиотека одинаково узнаваема и используется минимум в трёх из пяти языков этой базы (C++/Rust/Go/Python/JS), а не биндинг-другой ради полноты. Aeron и SBE сознательно не включены — формально есть Java/C++/.NET клиенты, но родное ядро и сообщество остаются Java-центричными, это не тот же класс кроссплатформенности, что у Protobuf/Arrow/gRPC.This is a skeleton: 12 categories and 42 libraries are locked in, pages not yet written. The bar for inclusion here is that a library is equally recognizable and used in at least three of this base's five languages (C++/Rust/Go/Python/JS), not just having a binding or two for completeness's sake. Aeron and SBE are deliberately left out — they technically have Java/C++/.NET clients, but their native core and community remain Java-centric, which isn't the same class of cross-platform reach as Protobuf/Arrow/gRPC.