--- title: "BabelQueue 1.0 is here — polyglot queues, simplified" description: "All six SDKs — PHP, Python, Go, Node.js, Java and .NET — are now published at 1.0.0, with a SemVer-stable API and one frozen wire envelope." source: https://babelqueue.com/blog/babelqueue-1-0/ pubDate: 2026-06-07T00:00:00.000Z --- BabelQueue reaches **1.0.0** today — across the **entire ecosystem**, all at once. A message produced in one language is now consumed natively in another, over the broker you already run, with a public API you can build on. ## What "1.0" means here Two independent promises: - **A SemVer-stable public API.** Every SDK is `1.0.0`. Breaking changes now require a MAJOR bump and follow a deprecation policy — so you can pin and upgrade with confidence. - **A frozen wire envelope.** The on-the-wire format stays at `schema_version: 1`. A `v1` producer is readable by every `v1` consumer, in any language, indefinitely. These are deliberately separate: your package versions can move independently while the bytes on the queue stay stable. ## Six SDKs, one envelope Every language ships a framework-agnostic **core** plus thin **framework adapters**: - **PHP** — `babelqueue/php-sdk`, with **Laravel** and **Symfony** adapters - **Python** — `babelqueue`, with **Celery** and **Django** adapters - **Go** — `babelqueue-go`, with **Redis** and **RabbitMQ** transport modules - **Node.js** — `@babelqueue/core`, with **BullMQ** and **NestJS** adapters - **Java** — `com.babelqueue:babelqueue-core`, with a **Spring Boot** adapter - **.NET** — `BabelQueue.Core`, with a **MassTransit** adapter Every one of them vendors and passes the same cross-SDK conformance suite, so two SDKs producing the same logical message emit byte-comparable envelopes. ## The idea, in one line Don't change your broker — change only the serialization. BabelQueue replaces language-specific serialization (like PHP's `serialize()`) with a strict, minimal JSON envelope and routes by a **URN** instead of a class name: ```json { "job": "urn:babel:orders:created", "trace_id": "7b3f9c2a-e41d-4f88-9b2a-1c0d5e6f7a8b", "data": { "order_id": 1042 }, "meta": { "id": "…", "queue": "orders", "lang": "php", "schema_version": 1, "created_at": 1749132727000 }, "attempts": 0 } ``` A built-in `trace_id` flows across every hop and language, so an end-to-end trace is one query away. ## Get started Producing your first polyglot message is a single call: ```php BabelQueue::publish('urn:babel:orders:created', ['order_id' => 1042]); ``` Pick your stack on the [ecosystem](/#ecosystem), read the [wire contract](/docs/spec/1.x/envelope/), or jump straight into a driver's docs. Thanks to everyone who tested the pre-1.0 builds. One envelope, every language.