Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 48 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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.
Expand All @@ -40,6 +47,12 @@ These examples send and receive in one process so both endpoints remain connecte
<details open>
<summary>Rust</summary>

Run in your Cargo project. Requires Rust 1.87 or later.

```sh
cargo add cloudtoid-interprocess
```

```rust
use cloudtoid_interprocess::{Options, Publisher, Subscriber};

Expand All @@ -58,6 +71,17 @@ Endpoints close when dropped. Use `recv()` to wait indefinitely or `recv_timeout
<details>
<summary>C / C++</summary>

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 <interprocess.h>

Expand Down Expand Up @@ -88,6 +112,12 @@ Timeouts are milliseconds; free returned buffers with `cip_buffer_free`.
<details>
<summary>Python</summary>

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

Expand All @@ -103,6 +133,12 @@ Context managers close endpoints. Timeouts are seconds; `receive()` waits indefi
<details>
<summary>Node.js / TypeScript</summary>

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';

Expand All @@ -128,6 +164,12 @@ CommonJS `require` is also supported. Async receive accepts an optional `AbortSi
<details>
<summary>Go</summary>

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

Expand Down
15 changes: 15 additions & 0 deletions src/c/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions src/go/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down
10 changes: 10 additions & 0 deletions src/node/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
10 changes: 10 additions & 0 deletions src/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
10 changes: 10 additions & 0 deletions src/rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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> {
Expand Down
2 changes: 2 additions & 0 deletions src/website/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
15 changes: 15 additions & 0 deletions src/website/assets/cloudtoid-black-blue.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions src/website/assets/cloudtoid-white-blue.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src/website/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}')
Loading