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
8 changes: 4 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jobs:
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: mlugg/setup-zig@v2
with:
version: 0.15.2
version: 0.16.0
- name: Build all examples
run: zig build

Expand All @@ -35,9 +35,9 @@ jobs:
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: mlugg/setup-zig@v2
with:
version: 0.15.2
version: 0.16.0
- name: Build all examples
run: zig build test --summary all
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@


## Installing
Compatible Zig Version: `0.15.2`
Compatible Zig Version: `0.16.0`

Compatible [tardy](https://github.com/tardy-org/tardy) Version is `v0.3.1` and [secsock](https://github.com/tardy-org/secsock) `v0.1.1`
Compatible [tardy](https://github.com/tardy-org/tardy) Version is `v0.3.2` and [secsock](https://github.com/tardy-org/secsock) `v0.1.2`

Latest Release: `0.3.1`
Latest Release: `0.3.2`
```
zig fetch --save git+https://github.com/tardy-org/zzz#v0.3.1
zig fetch --save git+https://github.com/tardy-org/zzz#v0.3.2
```

You can then add the dependency in your `build.zig` file:
Expand Down
10 changes: 5 additions & 5 deletions build.zig.zon
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@
.name = .zzz,
.fingerprint = 0xc3273dca261a7ae0,
.version = "0.3.1",
.minimum_zig_version = "0.15.2",
.minimum_zig_version = "0.16.0",
.dependencies = .{
.tardy = .{
.url = "git+https://github.com/tardy-org/tardy?ref=v0.3.1#f36525f9b36159bb9196ccb1734a67b55ba2c1ca",
.hash = "tardy-0.3.1-69wrgn77AwCO0ma2a0hOPgreoJogu-uYWlcgo2TgkgBO",
.url = "https://github.com/tardy-org/tardy/archive/refs/tags/v0.3.2.tar.gz",
.hash = "tardy-0.3.2-69wrgkTEBQCi4u4sNr63s5V2TzHXw3iLkkiGXVMGhupi",
},
.secsock = .{
.url = "git+https://github.com/tardy-org/secsock?ref=0.1.1#c70d26cdf6ce7c23967b1b86c3f129c93f1b0e1c",
.hash = "secsock-0.1.1-p0qurVNGAQCyOjL0v1wE89Y5VPCqkQY5O3SirlKtP7BC",
.url = "https://github.com/tardy-org/secsock/archive/refs/tags/v0.1.2.tar.gz",
.hash = "secsock-0.1.2-p0qurcxIAQBc3niJem-RKYS6YrcuyAY2aELeoBB0aQdy",
},
},
.paths = .{
Expand Down
2 changes: 1 addition & 1 deletion docs/getting_started.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ zzz is a networking framework (HTTP) that allows for modularity and flexibility
For this guide, we will assume that you are running on a supported platform.
This is the current latest release.

`zig fetch --save git+https://github.com/mookums/zzz#v0.3.1`
`zig fetch --save git+https://github.com/mookums/zzz#v0.3.2`

## Hello, World!
We can write a quick example that serves out "Hello, World" responses to any client that connects to the server. This example is derived from the one that is provided within the `examples/basic` directory.
Expand Down
14 changes: 5 additions & 9 deletions examples/basic/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,20 @@ fn base_handler(ctx: *const Context, _: void) !Respond {
});
}

pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{ .thread_safe = true }) = .init;
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .auto });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .auto });
defer t.deinit();

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Route.init("/").get({}, base_handler).layer(),
}, .{});
defer router.deinit(allocator);
defer router.deinit(init.gpa);

// create socket for tardy
var socket: Socket = try .init(.{
var socket: Socket = try .init(init.io, .{
.tcp = .{ .host = host, .port = port },
});
defer socket.close_blocking();
Expand Down
14 changes: 5 additions & 9 deletions examples/cookies/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,20 @@ fn base_handler(ctx: *const Context, _: void) !Respond {
});
}

pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{ .thread_safe = true }) = .init;
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .single });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .single });
defer t.deinit();

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Route.init("/").get({}, base_handler).layer(),
}, .{});
defer router.deinit(allocator);
defer router.deinit(init.gpa);

// create socket for tardy
var socket: Socket = try .init(.{ .tcp = .{ .host = host, .port = port } });
var socket: Socket = try .init(init.io, .{ .tcp = .{ .host = host, .port = port } });
defer socket.close_blocking();
try socket.bind();
try socket.listen(4096);
Expand Down
14 changes: 5 additions & 9 deletions examples/form/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -76,24 +76,20 @@ fn generate_handler(ctx: *const Context, _: void) !Respond {
});
}

pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{ .thread_safe = true }) = .init;
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .auto });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .auto });
defer t.deinit();

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Route.init("/").get({}, base_handler).layer(),
Route.init("/generate").get({}, generate_handler).post({}, generate_handler).layer(),
}, .{});
defer router.deinit(allocator);
defer router.deinit(init.gpa);

var socket: Socket = try .init(.{ .tcp = .{ .host = host, .port = port } });
var socket: Socket = try .init(init.io, .{ .tcp = .{ .host = host, .port = port } });
defer socket.close_blocking();
try socket.bind();
try socket.listen(4096);
Expand Down
25 changes: 13 additions & 12 deletions examples/fs/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -36,34 +36,35 @@ fn base_handler(ctx: *const Context, _: void) !Respond {
}

// Test With: http://localhost:9862/index.html
pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{ .thread_safe = true }) = .{
.backing_allocator = std.heap.smp_allocator,
};
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .auto });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .auto });
defer t.deinit();

const static_dir: Dir = .from_std(try std.fs.cwd().openDir("examples/fs/static", .{}));
const static_dir: Dir = .from_std(try std.Io.Dir.cwd().openDir(
init.io,
"examples/fs/static",
.{},
));

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Compression(.{ .gzip = .{} }),
Route.init("/").get({}, base_handler).layer(),
FsDir.serve("/", static_dir),
}, .{});
defer router.deinit(allocator);
defer router.deinit(init.gpa);

const EntryParams = struct {
router: *const Router,
socket: Socket,
};

var socket: Socket = try .init(.{ .tcp = .{ .host = host, .port = port } });
var socket: Socket = try .init(
init.io,
.{ .tcp = .{ .host = host, .port = port } },
);
defer socket.close_blocking();
try socket.bind();
try socket.listen(256);
Expand Down
8 changes: 4 additions & 4 deletions examples/middleware/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -55,20 +55,20 @@ fn failing_middleware(next: *Next, _: void) !Respond {
return error.FailingMiddleware;
}

pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{}) = .init;
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .single });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .single });
defer t.deinit();

const num: i8 = 12;

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Middleware.init({}, passing_middleware).layer(),
Route.init("/").get(num, root_handler).layer(),
Middleware.init({}, failing_middleware).layer(),
Expand All @@ -82,7 +82,7 @@ pub fn main() !void {
socket: Socket,
};

var socket: Socket = try .init(.{ .tcp = .{ .host = host, .port = port } });
var socket: Socket = try .init(init.io, .{ .tcp = .{ .host = host, .port = port } });
defer socket.close_blocking();
try socket.bind();
try socket.listen(256);
Expand Down
14 changes: 5 additions & 9 deletions examples/sse/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -22,30 +22,26 @@ fn sse_handler(ctx: *const Context, _: void) !Respond {

while (true) {
sse.send(.{ .data = "hello from handler!" }) catch break;
try Timer.delay(ctx.runtime, .{ .seconds = 1 });
try Timer.delay(ctx.runtime, .{ .nanoseconds = 1 * std.time.ns_per_s });
}

return .responded;
}

pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{}) = .init;
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .single });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .single });
defer t.deinit();

const router: Router = try .init(allocator, &.{
const router: Router = try .init(init.gpa, &.{
Route.init("/").embed_file(.{ .mime = .HTML }, @embedFile("./index.html")).layer(),
Route.init("/stream").get({}, sse_handler).layer(),
}, .{});

// create socket for tardy
var socket: Socket = try .init(.{ .tcp = .{ .host = host, .port = port } });
var socket: Socket = try .init(init.io, .{ .tcp = .{ .host = host, .port = port } });
defer socket.close_blocking();
try socket.bind();
try socket.listen(256);
Expand Down
18 changes: 6 additions & 12 deletions examples/tls/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -38,36 +38,30 @@ fn root_handler(ctx: *const Context, _: void) !Respond {
});
}

pub fn main() !void {
pub fn main(init: std.process.Init) !void {
const host: []const u8 = "0.0.0.0";
const port: u16 = 9862;

var gpa: std.heap.DebugAllocator(.{ .thread_safe = true }) = .{
.backing_allocator = std.heap.smp_allocator,
};
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .auto });
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .auto });
defer t.deinit();

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Route.init("/").get({}, root_handler).layer(),
Compression(.{ .gzip = .{} }),
Route.init("/embed/pico.min.css").embed_file(
.{ .mime = .CSS },
@embedFile("embed/pico.min.css"),
).layer(),
}, .{});
defer router.deinit(allocator);
defer router.deinit(init.gpa);

// create socket for tardy
var socket: Socket = try .init(.{ .tcp = .{ .host = host, .port = port } });
var socket: Socket = try .init(init.io, .{ .tcp = .{ .host = host, .port = port } });
defer socket.close_blocking();
try socket.bind();
try socket.listen(1024);

var bearssl: secsock.BearSSL = .init(allocator);
var bearssl: secsock.BearSSL = .init(init.gpa);
defer bearssl.deinit();
try bearssl.add_cert_chain(
"CERTIFICATE",
Expand Down
17 changes: 7 additions & 10 deletions examples/unix/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -25,27 +25,24 @@ pub fn root_handler(ctx: *const Context, _: void) !Respond {
}

// Test With: curl --unix-socket /tmp/zzz.sock http://localhost/
pub fn main() !void {
var gpa: std.heap.DebugAllocator(.{ .thread_safe = true }) = .init;
const allocator = gpa.allocator();
defer _ = gpa.deinit();

var t: Tardy = try .init(allocator, .{ .threading = .auto });
pub fn main(init: std.process.Init) !void {
var t: Tardy = try .init(init.gpa, init.io, .{ .threading = .auto });
defer t.deinit();

var router: Router = try .init(allocator, &.{
var router: Router = try .init(init.gpa, &.{
Route.init("/").get({}, root_handler).layer(),
}, .{});
defer router.deinit(allocator);
defer router.deinit(init.gpa);

const EntryParams = struct {
router: *const Router,
socket: Socket,
};

var socket: Socket = try .init(.{ .unix = "/tmp/zzz.sock" });
defer std.fs.deleteFileAbsolute("/tmp/zzz.sock") catch unreachable;
var socket: Socket = try .init(init.io, .{ .unix = "/tmp/zzz.sock" });
defer std.Io.Dir.deleteDirAbsolute(init.io, "/tmp/zzz.sock") catch unreachable;
defer socket.close_blocking();

try socket.bind();
try socket.listen(256);

Expand Down
Loading
Loading