From 476bb9139f2f075161bac49796a2c627a8af0394 Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:43:52 -0700 Subject: [PATCH 1/7] Use official Cloudtoid branding on the website --- src/website/README.md | 2 ++ src/website/assets/cloudtoid-black-blue.svg | 15 +++++++++++++++ src/website/assets/cloudtoid-white-blue.svg | 17 +++++++++++++++++ src/website/build.py | 2 +- src/website/index.html | 4 ++-- src/website/style.css | 7 ++++++- 6 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 src/website/assets/cloudtoid-black-blue.svg create mode 100644 src/website/assets/cloudtoid-white-blue.svg diff --git a/src/website/README.md b/src/website/README.md index caad9e4..682a9d7 100644 --- a/src/website/README.md +++ b/src/website/README.md @@ -8,3 +8,5 @@ python3 -m http.server --directory src/website/dist ``` The Website workflow validates the static build on pull requests and main. The public site at cloudtoid.com uses Sites hosting; `.openai/hosting.json` identifies it. Keep registry availability and the preview/release notice accurate when publishing packages. + +The header and footer use the official blue wordmarks from [cloudtoid/assets](https://github.com/cloudtoid/assets/tree/master/logos), served locally. The black and white variants follow the selected color theme. diff --git a/src/website/assets/cloudtoid-black-blue.svg b/src/website/assets/cloudtoid-black-blue.svg new file mode 100644 index 0000000..5cbc57b --- /dev/null +++ b/src/website/assets/cloudtoid-black-blue.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/website/assets/cloudtoid-white-blue.svg b/src/website/assets/cloudtoid-white-blue.svg new file mode 100644 index 0000000..60236a3 --- /dev/null +++ b/src/website/assets/cloudtoid-white-blue.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/website/build.py b/src/website/build.py index b70fc11..24c4b92 100644 --- a/src/website/build.py +++ b/src/website/build.py @@ -6,6 +6,6 @@ output.mkdir(exist_ok=True) for name in ('index.html', 'style.css', 'site.js', 'theme.js'): shutil.copyfile(root / name, output / name) -for name in ('benchmarks', 'vendor'): +for name in ('assets', 'benchmarks', 'vendor'): shutil.copytree(root / name, output / name, dirs_exist_ok=True) print(f'Built {output}') diff --git a/src/website/index.html b/src/website/index.html index e666a06..733b0c5 100644 --- a/src/website/index.html +++ b/src/website/index.html @@ -11,7 +11,7 @@ -
cloudtoid / interprocess
+
CloudtoidCloudtoid / interprocess
@@ -80,7 +80,7 @@

Send + receive

PROTOCOL V3

Open source.
Documented in full.

Inspect the memory layout, atomic ordering, resource lifetime, and crash recovery. Build on an MIT-licensed implementation with tests across every publisher/subscriber language pair.

Built for volatile queues on one machine. For durable jobs, add application-level acknowledgements and persistence.

Read the protocol
- + diff --git a/src/website/style.css b/src/website/style.css index 1019c2f..2678c01 100644 --- a/src/website/style.css +++ b/src/website/style.css @@ -49,7 +49,7 @@ strong { font-weight: 650; } .section { padding-top: 76px; padding-bottom: 76px; } .eyebrow { font: 500 12px/1.6 var(--mono); letter-spacing: 1.2px; margin: 0 0 20px; color: var(--muted); } .status-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--blue); margin-right: 8px; } -.brand { font-size: 22px; font-weight: 750; letter-spacing: -.7px; white-space: nowrap; } +.brand { display: inline-flex; align-items: center; gap: 10px; font-size: 22px; font-weight: 750; letter-spacing: -.7px; white-space: nowrap; } .brand span { font: 14px var(--mono); color: var(--muted); letter-spacing: -.5px; } header { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 84px; border-bottom: 1px solid var(--line); } nav { display: flex; gap: 26px; align-items: center; font-size: 14px; } @@ -374,3 +374,8 @@ footer .brand { color: var(--blue); } pre { padding: 22px 16px; font-size: 12px; } .open-inner { padding-top: 45px; padding-bottom: 45px; } } + +.brand img { display: block; width: 145px; height: 28px; object-fit: contain; } +.brand .brand-dark { display: none; } +[data-theme="dark"] .brand .brand-light { display: none; } +[data-theme="dark"] .brand .brand-dark { display: block; } From 5de8a65d16afac4147937998ca3038bb894c571e Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:46:35 -0700 Subject: [PATCH 2/7] Replace outdated native preview notice with release links --- src/website/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/website/index.html b/src/website/index.html index 733b0c5..490a163 100644 --- a/src/website/index.html +++ b/src/website/index.html @@ -75,7 +75,7 @@

Send + receive

01

Keep allocations out
of the hot path.

Preallocate queue storage and reuse receive buffers. The measured .NET send-and-receive path allocates 0 bytes per operation, reducing garbage-collection pressure.

02

Move bytes with
very little work.

Native 64-bit atomic reservations and coalesced wakeups keep coordination lean. Send your existing binary format without a required serializer or wire protocol.

03

Keep the operating
cost small.

No additional messaging service, broker machine, or per-message license fee. Run your processes on the same host and choose how much memory the queue uses.

-

LANGUAGE INTERFACES

One queue.
Six language interfaces.

Rust, C, Python, Node.js, Go, and .NET can exchange messages through the same open v3 protocol. Pick the right language for each process.

.NET v3 is available on NuGet. The new native packages are in preview and can be built from source.

Read the Rust guide →
+

LANGUAGE INTERFACES

One queue.
Six language interfaces.

Rust, C, Python, Node.js, Go, and .NET can exchange messages through the same open v3 protocol. Pick the right language for each process.

Available now: .NET on NuGet, Rust on crates.io, Node.js on npm, Go, and the C SDK. Python is available from source.

Read the Rust guide →

PROTOCOL V3

Open source.
Documented in full.

Inspect the memory layout, atomic ordering, resource lifetime, and crash recovery. Build on an MIT-licensed implementation with tests across every publisher/subscriber language pair.

Built for volatile queues on one machine. For durable jobs, add application-level acknowledgements and persistence.

Read the protocol
From 2563e4d751f5f17caa8fba48d0d110d8d496e3ea Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:47:37 -0700 Subject: [PATCH 3/7] Restore package version badges and document released native packages --- README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 846c243..8e098ad 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,13 @@ [Website](https://cloudtoid.com) · [Languages and packages](#languages) · [Quick start](#quick-start) · [Performance](#performance) · [Protocol v3](docs/protocol.md) +[![NuGet](https://img.shields.io/nuget/v/Cloudtoid.Interprocess?label=NuGet)](https://www.nuget.org/packages/Cloudtoid.Interprocess) +[![Rust](https://img.shields.io/crates/v/cloudtoid-interprocess?label=Rust)](https://crates.io/crates/cloudtoid-interprocess) +[![C FFI](https://img.shields.io/crates/v/cloudtoid-interprocess-ffi?label=C%20FFI)](https://crates.io/crates/cloudtoid-interprocess-ffi) +[![npm](https://img.shields.io/npm/v/@cloudtoid/interprocess?label=npm)](https://www.npmjs.com/package/@cloudtoid/interprocess) +[![Go](https://img.shields.io/github/v/tag/cloudtoid/interprocess?filter=src%2Fgo%2Fv*&label=Go)](https://pkg.go.dev/github.com/cloudtoid/interprocess/src/go/v3) +[![C SDK](https://img.shields.io/github/v/release/cloudtoid/interprocess?filter=native-v*&label=C%20SDK)](https://github.com/cloudtoid/interprocess/releases/latest) + [![Native core](https://github.com/cloudtoid/interprocess/actions/workflows/native.yml/badge.svg)](https://github.com/cloudtoid/interprocess/actions/workflows/native.yml) [![Interoperability](https://github.com/cloudtoid/interprocess/actions/workflows/interop.yml/badge.svg)](https://github.com/cloudtoid/interprocess/actions/workflows/interop.yml) [![License: MIT][LicenseBadge]][License] @@ -20,15 +27,15 @@ Interprocess is used internally by Microsoft. ## Languages -.NET v3 is available on NuGet. The Rust, C, Python, Node.js, and Go packages are in preview; use their source build guides below. +.NET, Rust, Node.js, Go, and the C SDK are released and available to install. Python is available from source; publishing to PyPI is pending. | Language | Package | Setup and API guide | | --- | --- | --- | -| Rust | `cloudtoid-interprocess` (Cargo) | [Rust core](src/rust/README.md) | -| C / C++ | C SDK; `cloudtoid-interprocess-ffi` (Cargo) | [C ABI, headers, and shared library](src/c/README.md) | -| Python | `cloudtoid-interprocess` (PyPI); import `cloudtoid_interprocess` | [Python 3.9+](src/python/README.md) | -| Node.js | `@cloudtoid/interprocess` (npm) | [Node.js 18+, JavaScript and TypeScript](src/node/README.md) | -| Go | `github.com/cloudtoid/interprocess/src/go/v3` | [Go 1.24+, cgo, and the C SDK](src/go/README.md) | +| Rust | [`cloudtoid-interprocess`](https://crates.io/crates/cloudtoid-interprocess) (Cargo) | [Rust core](src/rust/README.md) | +| C / C++ | [C SDK](https://github.com/cloudtoid/interprocess/releases/latest); [`cloudtoid-interprocess-ffi`](https://crates.io/crates/cloudtoid-interprocess-ffi) (Cargo) | [C ABI, headers, and shared library](src/c/README.md) | +| Python | Source build (PyPI pending); import `cloudtoid_interprocess` | [Python 3.9+](src/python/README.md) | +| Node.js | [`@cloudtoid/interprocess`](https://www.npmjs.com/package/@cloudtoid/interprocess) (npm) | [Node.js 18+, JavaScript and TypeScript](src/node/README.md) | +| Go | [`github.com/cloudtoid/interprocess/src/go/v3`](https://pkg.go.dev/github.com/cloudtoid/interprocess/src/go/v3) | [Go 1.24+, cgo, and the C SDK](src/go/README.md) | | .NET | [`Cloudtoid.Interprocess`][NuGet] (NuGet) | [.NET 10+, C# and dependency injection](src/dotnet/README.md) | Rust supplies the native engine; C, Python, Node.js, and Go use that engine. .NET has its own managed implementation of the same protocol. Node's platform binaries are companion `@cloudtoid/interprocess-*` packages; applications use the main package. From 6ff9e8dd460e7f962cc7139663877a352e591bf3 Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:49:35 -0700 Subject: [PATCH 4/7] Document installation commands for all language interfaces --- README.md | 35 +++++++++++++++++++++++++++++++++++ src/c/README.md | 15 +++++++++++++++ src/go/README.md | 10 ++++++++++ src/node/README.md | 10 ++++++++++ src/python/README.md | 10 ++++++++++ src/rust/README.md | 10 ++++++++++ src/website/index.html | 2 +- src/website/site.js | 28 ++++++++++++++++++++++++++++ src/website/style.css | 4 ++++ 9 files changed, 123 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e098ad..3e052b0 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,12 @@ These examples send and receive in one process so both endpoints remain connecte
Rust +Run in your Cargo project. Requires Rust 1.87 or later. + +```sh +cargo add cloudtoid-interprocess +``` + ```rust use cloudtoid_interprocess::{Options, Publisher, Subscriber}; @@ -65,6 +71,17 @@ Endpoints close when dropped. Use `recv()` to wait indefinitely or `recv_timeout
C / C++ +macOS Apple Silicon example, using the GitHub CLI. For other platforms, choose darwin-x64, linux-arm64, linux-x64, or win32-x64 in both archive names. See the C guide for Windows setup. + +```sh +gh release download native-v3.0.1 --repo cloudtoid/interprocess --pattern "*-darwin-arm64.tar.gz" +mkdir -p cloudtoid-sdk +tar -xzf cloudtoid-interprocess-3.0.1-darwin-arm64.tar.gz -C cloudtoid-sdk --strip-components=1 +export PKG_CONFIG_PATH="$PWD/cloudtoid-sdk/lib/pkgconfig:$PKG_CONFIG_PATH" +``` + +[Complete C SDK setup](src/c/README.md). + ```c #include @@ -95,6 +112,12 @@ Timeouts are milliseconds; free returned buffers with `cip_buffer_free`.
Python +PyPI publishing is pending. Run in an activated Python 3.9+ virtual environment with Git, Rust, and a native linker installed. + +```sh +python -m pip install "git+https://github.com/cloudtoid/interprocess.git@native-v3.0.1#subdirectory=src/python" +``` + ```python from cloudtoid_interprocess import Publisher, Subscriber @@ -110,6 +133,12 @@ Context managers close endpoints. Timeouts are seconds; `receive()` waits indefi
Node.js / TypeScript +Run in your Node.js project. Requires Node.js 18 or later; platform binaries install automatically. + +```sh +npm install @cloudtoid/interprocess +``` + ```js import { Publisher, Subscriber } from '@cloudtoid/interprocess'; @@ -135,6 +164,12 @@ CommonJS `require` is also supported. Async receive accepts an optional `AbortSi
Go +Install the C SDK first ([C guide](src/c/README.md)), then run in your Go module. Requires Go 1.24+, cgo enabled, a C compiler, and pkg-config. + +```sh +go get github.com/cloudtoid/interprocess/src/go/v3@latest +``` + ```go package main diff --git a/src/c/README.md b/src/c/README.md index 3348844..9ed566b 100644 --- a/src/c/README.md +++ b/src/c/README.md @@ -2,6 +2,21 @@ The C ABI exposes the shared Rust engine to C/C++ and other native callers. It interoperates with .NET protocol v3. +## Install the prebuilt SDK + +macOS Apple Silicon example, using the GitHub CLI. For other platforms, choose darwin-x64, linux-arm64, linux-x64, or win32-x64 in both archive names. See the C guide for Windows setup. + +```sh +gh release download native-v3.0.1 --repo cloudtoid/interprocess --pattern "*-darwin-arm64.tar.gz" +mkdir -p cloudtoid-sdk +tar -xzf cloudtoid-interprocess-3.0.1-darwin-arm64.tar.gz -C cloudtoid-sdk --strip-components=1 +export PKG_CONFIG_PATH="$PWD/cloudtoid-sdk/lib/pkgconfig:$PKG_CONFIG_PATH" +``` + +On Windows, extract the `win32-x64` archive and set `PKG_CONFIG_PATH` to its `lib/pkgconfig` directory. Add its `lib` directory to `PATH` for the DLL. Go on Windows also requires a cgo-compatible C compiler and pkg-config. + +## Build from source + From the repository root, with Rust and CMake installed: ```sh diff --git a/src/go/README.md b/src/go/README.md index 51b4376..db13599 100644 --- a/src/go/README.md +++ b/src/go/README.md @@ -4,6 +4,16 @@ Shared-memory byte queues backed by the same Rust core as the C, Python, and Nod Install the [C SDK](../c/README.md), make its `pkgconfig` directory available through `PKG_CONFIG_PATH`, and, on Windows, add its DLL directory to `PATH`. On Unix, pkg-config embeds the installed library directory as a runtime search path. This package requires cgo, a C compiler, and `pkg-config`. +## Install + +Install the C SDK first (see the C guide), then run in your Go module. Requires Go 1.24+, cgo enabled, a C compiler, and pkg-config. + +```sh +go get github.com/cloudtoid/interprocess/src/go/v3@latest +``` + +## Example + ```go import "github.com/cloudtoid/interprocess/src/go/v3" diff --git a/src/node/README.md b/src/node/README.md index 41b9a9d..ecfd8cd 100644 --- a/src/node/README.md +++ b/src/node/README.md @@ -2,6 +2,16 @@ Exchange bytes directly with Rust, C, Python, Go, and .NET processes through fast shared-memory queues. +## Install + +Run in your Node.js project. Requires Node.js 18 or later; platform binaries install automatically. + +```sh +npm install @cloudtoid/interprocess +``` + +## Example + ```js const { Publisher, Subscriber } = require('@cloudtoid/interprocess'); const subscriber = new Subscriber('example', 65536); diff --git a/src/python/README.md b/src/python/README.md index 893a11a..c2e3a5e 100644 --- a/src/python/README.md +++ b/src/python/README.md @@ -2,6 +2,16 @@ Fast shared-memory byte queues. Exchange messages directly with Rust, C, Go, Node.js, and .NET processes using the same v3 queue. +## Install + +PyPI publishing is pending. Run in an activated Python 3.9+ virtual environment with Git, Rust, and a native linker installed. + +```sh +python -m pip install "git+https://github.com/cloudtoid/interprocess.git@native-v3.0.1#subdirectory=src/python" +``` + +## Example + ```python from cloudtoid_interprocess import Publisher, Subscriber diff --git a/src/rust/README.md b/src/rust/README.md index 7903ad5..e9c9bec 100644 --- a/src/rust/README.md +++ b/src/rust/README.md @@ -2,6 +2,16 @@ Fast shared-memory byte queues for processes on the same machine. Exchange messages with Rust, C, Python, Node.js, Go, and .NET using the open v3 protocol. +## Install + +Run in your Cargo project. Requires Rust 1.87 or later. + +```sh +cargo add cloudtoid-interprocess +``` + +## Example + ```rust use cloudtoid_interprocess::{Options, Publisher, Subscriber}; fn main() -> Result<(), cloudtoid_interprocess::Error> { diff --git a/src/website/index.html b/src/website/index.html index 490a163..436b57d 100644 --- a/src/website/index.html +++ b/src/website/index.html @@ -76,7 +76,7 @@

Send + receive

LANGUAGE INTERFACES

One queue.
Six language interfaces.

Rust, C, Python, Node.js, Go, and .NET can exchange messages through the same open v3 protocol. Pick the right language for each process.

Available now: .NET on NuGet, Rust on crates.io, Node.js on npm, Go, and the C SDK. Python is available from source.

Read the Rust guide →
-
+
Install

PROTOCOL V3

Open source.
Documented in full.

Inspect the memory layout, atomic ordering, resource lifetime, and crash recovery. Build on an MIT-licensed implementation with tests across every publisher/subscriber language pair.

Built for volatile queues on one machine. For durable jobs, add application-level acknowledgements and persistence.

Read the protocol
diff --git a/src/website/site.js b/src/website/site.js index 2d26690..f9a8aca 100644 --- a/src/website/site.js +++ b/src/website/site.js @@ -1,3 +1,29 @@ +const installation = { + "Rust": [ + "Run in your Cargo project. Requires Rust 1.87 or later.", + "cargo add cloudtoid-interprocess" + ], + "Node.js": [ + "Run in your Node.js project. Requires Node.js 18 or later; platform binaries install automatically.", + "npm install @cloudtoid/interprocess" + ], + ".NET": [ + "Run in your .NET project. Requires .NET 10 or later and a 64-bit process.", + "dotnet add package Cloudtoid.Interprocess" + ], + "Python": [ + "PyPI publishing is pending. Run in an activated Python 3.9+ virtual environment with Git, Rust, and a native linker installed.", + "python -m pip install \"git+https://github.com/cloudtoid/interprocess.git@native-v3.0.1#subdirectory=src/python\"" + ], + "Go": [ + "Install the C SDK first (see the C guide), then run in your Go module. Requires Go 1.24+, cgo enabled, a C compiler, and pkg-config.", + "go get github.com/cloudtoid/interprocess/src/go/v3@latest" + ], + "C": [ + "macOS Apple Silicon example, using the GitHub CLI. For other platforms, choose darwin-x64, linux-arm64, linux-x64, or win32-x64 in both archive names. See the C guide for Windows setup.", + "gh release download native-v3.0.1 --repo cloudtoid/interprocess --pattern \"*-darwin-arm64.tar.gz\"\nmkdir -p cloudtoid-sdk\ntar -xzf cloudtoid-interprocess-3.0.1-darwin-arm64.tar.gz -C cloudtoid-sdk --strip-components=1\nexport PKG_CONFIG_PATH=\"$PWD/cloudtoid-sdk/lib/pkgconfig:$PKG_CONFIG_PATH\"" + ] +}; const examples = { Rust: ['rust', `let options = Options::new("work", 65536); let subscriber = Subscriber::open(&options)?; @@ -59,6 +85,8 @@ const code = document.querySelector('#example code'); function select(tab, focus = false) { tabs.forEach(t => { t.setAttribute('aria-selected', String(t === tab)); t.tabIndex = t === tab ? 0 : -1; }); const language = tab.dataset.language, [folder, source] = examples[language]; + document.querySelector('#install-note').textContent = installation[language][0]; + document.querySelector('#install-command').textContent = installation[language][1]; const grammar = { node: 'javascript', dotnet: 'csharp' }[folder] || folder; code.innerHTML = hljs.highlight(source, { language: grammar }).value; document.querySelector('#example').setAttribute('aria-label', `${language} example`); diff --git a/src/website/style.css b/src/website/style.css index 2678c01..3978e5d 100644 --- a/src/website/style.css +++ b/src/website/style.css @@ -379,3 +379,7 @@ footer .brand { color: var(--blue); } .brand .brand-dark { display: none; } [data-theme="dark"] .brand .brand-light { display: none; } [data-theme="dark"] .brand .brand-dark { display: block; } + +.installation { padding: 20px 24px; border-bottom: 1px solid var(--line); } +.installation p { margin: 6px 0 12px; color: var(--muted); font-size: 14px; } +.installation pre { margin: 0; padding: 12px; font-size: 14px; overflow-x: auto; } From 6bf2a92d3a491379fd806638e41339f5e8fc874b Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:51:00 -0700 Subject: [PATCH 5/7] Add a bright green cloud favicon --- src/website/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/website/index.html b/src/website/index.html index 436b57d..7f8dca1 100644 --- a/src/website/index.html +++ b/src/website/index.html @@ -5,6 +5,7 @@ Cloudtoid Interprocess — Fast queues across processes and languages + From 40f2e16f7fddf6e043ca87397a2cdf8d7d33670e Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:53:09 -0700 Subject: [PATCH 6/7] Give the cloud favicon a vivid gradient and motion accents --- src/website/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/website/index.html b/src/website/index.html index 7f8dca1..8131472 100644 --- a/src/website/index.html +++ b/src/website/index.html @@ -5,7 +5,7 @@ Cloudtoid Interprocess — Fast queues across processes and languages - + From 9226572ecdadcc14c965a32e90ca4e6217a5f67e Mon Sep 17 00:00:00 2001 From: Pedram Rezaei Date: Mon, 14 Sep 2026 13:53:44 -0700 Subject: [PATCH 7/7] Fill the green cloud favicon with sparkling dots --- src/website/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/website/index.html b/src/website/index.html index 8131472..df10b0f 100644 --- a/src/website/index.html +++ b/src/website/index.html @@ -5,7 +5,7 @@ Cloudtoid Interprocess — Fast queues across processes and languages - +