Home
Softono
zenoh-go

zenoh-go

Open source Go
34
Stars
10
Forks
0
Issues
10
Watchers
1 week
Last Commit

About zenoh-go

Go-lang API for zenoh

Platforms

Web Self-hosted

Languages

Go

CI Discussion Discord License License

Eclipse Zenoh

The Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.

Zenoh (pronounce /zeno/) unifies data in motion, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

Check the website zenoh.io and the roadmap for more detailed information.


Zenoh Go Binding

This repository contains the Go bindings for Zenoh.

Dependencies

Before building and running the examples, you need to have the following dependencies installed:

  • Zenoh-C: The C implementation of the Zenoh protocol.

Installing Zenoh-C

Zenoh-C is included as a git submodule. It must be built and installed before building the Go examples, with unstable API support enabled (-DZENOHC_BUILD_WITH_UNSTABLE_API=ON).

You can also follow the upstream instructions in the Zenoh-C repository.

Building the Examples

This project includes several examples located in the examples directory. Each example is in a subdirectory prefixed with z_. You can build all the examples using the provided Makefile.

The Go bindings use CGo and need the installed Zenoh-C headers and libraries on the include/link path. Run the commands below in order from the repository root.

Build All Examples

# 1. Initialize and update the zenoh-c submodule
git submodule init
git submodule update

# 2. Configure and build zenoh-c; install into ./build/ (gitignored)
mkdir -p build && cd build
cmake ../zenoh-c \
  -DZENOHC_BUILD_WITH_UNSTABLE_API=ON \
  -DCMAKE_INSTALL_PREFIX="$PWD"
cmake --build . --target install --config Release
cd ..

# 3. Point CGo at the installed zenoh-c, then build all examples
export CGO_CFLAGS="-I$(pwd)/build/include"
export CGO_LDFLAGS="-L$(pwd)/build/lib"
export LD_LIBRARY_PATH="$(pwd)/build/lib"
make all

Zenoh-C is installed under build/ (build/include, build/lib).

Build a Specific Example

To build a specific example, use the example's name. For instance, to build the z_pub example:

make z_pub

Running the Examples

After building the examples, you can run them from the bin directory. Description of each example can be found here.

Run a Specific Example

To run a specific example, navigate to the bin directory and execute the binary. For example, to run the z_pub example:

./bin/z_pub

Run Examples Directly with go run

You can also run the examples directly using go run without building the binaries. For example, to run the z_sub example:

go run examples/z_pub/z_pub.go

Project Structure

  • examples/: This directory contains all the example subdirectories. Each example has its own subdirectory prefixed with z_.
  • bin/: This directory will contain the compiled binaries for the examples.
  • build/: Local install prefix for zenoh-c (headers and libraries) after building the submodule.

Makefile

The provided Makefile includes the following targets:

  • all: Builds all the examples.
  • fmt: Formats the source code using go fmt.
  • clean: Cleans up all generated binaries.

Makefile Usage

  • Build all binaries: make all
  • Build specific binary: make <example_name>
  • Format the source code: make fmt
  • Clean up binaries: make clean