2024-09-14 20:18:27 -07:00
# NATS.c
This is the [NATS C client library][nats.c], packaged for [Zig ](https://ziglang.org/ ).
## Status
This library only explicitly supports Linux, macOS, and Windows operating systems. Building for other platforms is currently untested, so your mileage may vary.
## Zig Bindings
The following projects provide Zig language bindings to the NATS.c library:
- [`epicyclic-dev/nats-client` ][epicyclic-dev-bindings]
## Usage
First, update your `build.zig.zon` :
```sh
# Initialize a `zig build` project if you haven't already
zig init
2024-10-14 19:23:42 -06:00
# replace <refname> with the version you want to use, e.g. 3.8.2+1
2024-09-14 20:18:27 -07:00
zig fetch --save git+https://github.com/allyourcodebase/nats.c.git#< refname >
```
You can then import `nats_c` in your `build.zig` with:
```zig
const nats_c_dep = b.dependency("nats_c", .{
.target = target,
.optimize = optimize,
2024-09-15 20:06:51 -07:00
.@"enable-libsodium" = true, // Use libsodium for optimized implementations of some signing routines
2024-09-14 20:18:27 -07:00
.@"enable-tls" = true, // enable SSL/TLS support
.@"force-host-verify" = true, // force hostname verification for TLS connections
.@"enable-streaming" = true, // build with support for NATS streaming extensions
});
your_exe.linkLibrary(nats_c_dep.artifact("nats_c"));
```
## Dependencies
2024-09-15 20:06:51 -07:00
The NATS.c library has optional dependencies:
2024-09-14 20:18:27 -07:00
2024-09-15 20:31:17 -07:00
- [`libressl 3.9.2` ][libressl] when building with `enable-tls`
- [`protobuf-c 1.5.0` ][protobuf-c] when building with `enable-streaming`
2024-10-14 19:23:42 -06:00
- [`libsodium stable branch` ][libsodium] when building with `enable-libsodium`
2024-09-14 20:18:27 -07:00
These dependencies are currently automatically retrieved and compiled as static libraries by the Zig build system.
## Version Support Matrix
2024-10-14 19:23:42 -06:00
| Refname | NATS.c Version | Zig `0.12.x` | Zig `0.13.x` | Zig `0.14.0-dev` |
|-----------|----------------|--------------|--------------|------------------|
| `3.8.2+1` | `3.8.2+1` | ✅ | ✅ | ✅ |
2024-09-14 20:18:27 -07:00
[nats.c]: https://github.com/nats-io/nats.c
[libressl]: https://github.com/allyourcodebase/libressl
[protobuf-c]: https://github.com/allyourcodebase/protobuf-c
2024-09-15 20:06:51 -07:00
[libsodium]: https://github.com/jedisct1/libsodium
2024-09-14 20:18:27 -07:00
[epicyclic-dev-bindings]: https://github.com/epicyclic-dev/nats-client