From d32beac025282d970b8faa5bd908509c7ae542e6 Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Mon, 3 Jul 2023 15:27:21 -0700 Subject: [PATCH] update to zig 0.11.0-dev.3886+0c1bfe271 --- README.md | 2 +- src/Watch.zig | 14 ++++---------- src/config.zig | 2 +- src/interface.zig | 2 +- src/main-lib.zig | 8 ++++---- src/main.zig | 14 +++++++------- 6 files changed, 18 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index fb65d06..77e6434 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ tied to Linux, the file watcher module uses inotify and friends and will not work outside that OS. PRs are welcome. The system is built with a pre-release version of zig, currently zig version -[0.11.0-dev.3312+ab37ab33c](https://github.com/marler8997/zig-unofficial-releases#0110-dev3312ab37ab33c-summary). +[0.11.0-dev.3886+0c1bfe271](https://github.com/marler8997/zig-unofficial-releases#0110-dev38860c1bfe271-summary). This version has web server in the standard library, so it is useful. To achieve the lowest latency possible, this server loads dynamic libraries diff --git a/src/Watch.zig b/src/Watch.zig index 51ab6d1..aab7ff4 100644 --- a/src/Watch.zig +++ b/src/Watch.zig @@ -145,17 +145,11 @@ pub fn startWatch(self: *Self) void { var ptr: [*]u8 = &event_buf; const end_ptr = ptr + bytes_read; - while (@ptrToInt(ptr) < @ptrToInt(end_ptr)) { - const ev = @ptrCast( - *const std.os.linux.inotify_event, - @alignCast(@alignOf(*const std.os.linux.inotify_event), ptr), - ); + while (@intFromPtr(ptr) < @intFromPtr(end_ptr)) { + const ev = @as(*const std.os.linux.inotify_event, @ptrCast(@alignCast(ptr))); // Read next event from inotify - ptr = @alignCast( - @alignOf(std.os.linux.inotify_event), - ptr + @sizeOf(std.os.linux.inotify_event) + ev.len, - ); + ptr = ptr + @sizeOf(std.os.linux.inotify_event) + ev.len; self.processInotifyEvent(ev, ptr - ev.len); } } @@ -213,7 +207,7 @@ fn processInotifyEvent(self: Self, ev: *const std.os.linux.inotify_event, name_p // TODO: This should be a std.mem.sliceTo(@ptrCast([*:0]u8, name_ptr), ev.len); // and returning from C without a sentinal, we can use the same call, like this: // std.mem.sliceTo(@ptrCast([*]u8, name_ptr), len); - const name = std.mem.span(@ptrCast([*:0]u8, name_ptr)); + const name = std.mem.span(@as([*:0]u8, @ptrCast(name_ptr))); log.debug("MOVED_TO({d}/{d}): {s}", .{ name.len, ev.len, name }); for (self.dir_wds) |dir| { if (ev.wd == dir.wd) { diff --git a/src/config.zig b/src/config.zig index 4fdad63..a36082c 100644 --- a/src/config.zig +++ b/src/config.zig @@ -26,7 +26,7 @@ pub const ParsedConfig = struct { pub fn deinit(self: *SelfConfig) void { for (self.key_value_map.keys(), self.key_value_map.values()) |k, v| { // StringArrayHashMap assumes []const u8, but what we've allocated is null terminated - self.config_allocator.free(@ptrCast([:0]const u8, k)); // this is also the key in value_key_map + self.config_allocator.free(@as([:0]const u8, @ptrCast(k))); // this is also the key in value_key_map self.config_allocator.free(v); } diff --git a/src/interface.zig b/src/interface.zig index 34a0110..43160e9 100644 --- a/src/interface.zig +++ b/src/interface.zig @@ -57,7 +57,7 @@ pub const ZigRequestHandler = *const fn (std.mem.Allocator, ZigRequest, ZigRespo /// the handleRequest helper below, you must use zigInit or otherwise /// set the interface allocator in your own version of zigInit pub fn zigInit(parent_allocator: *anyopaque) callconv(.C) void { - allocator = @ptrCast(*std.mem.Allocator, @alignCast(@alignOf(*std.mem.Allocator), parent_allocator)); + allocator = @ptrCast(@alignCast(parent_allocator)); } pub fn toZigHeader(header: Header) ZigHeader { diff --git a/src/main-lib.zig b/src/main-lib.zig index 23e2b45..7ae8a82 100644 --- a/src/main-lib.zig +++ b/src/main-lib.zig @@ -86,15 +86,15 @@ test "handle_request" { var aa = arena.allocator(); interface.zigInit(&aa); var headers: []interface.Header = @constCast(&[_]interface.Header{.{ - .name_ptr = @ptrCast([*:0]u8, @constCast("GET".ptr)), + .name_ptr = @ptrCast(@constCast("GET".ptr)), .name_len = 3, - .value_ptr = @ptrCast([*:0]u8, @constCast("GET".ptr)), + .value_ptr = @ptrCast(@constCast("GET".ptr)), .value_len = 3, }}); var req = interface.Request{ - .method = @ptrCast([*:0]u8, @constCast("GET".ptr)), + .method = @ptrCast(@constCast("GET".ptr)), .method_len = 3, - .content = @ptrCast([*:0]u8, @constCast("GET".ptr)), + .content = @ptrCast(@constCast("GET".ptr)), .content_len = 3, .headers = headers.ptr, .headers_len = 1, diff --git a/src/main.zig b/src/main.zig index 5168d33..4993ec0 100644 --- a/src/main.zig +++ b/src/main.zig @@ -171,7 +171,7 @@ fn getExecutor(requested_path: []const u8, headers: std.http.Headers) !*Executor const serve_fn = std.c.dlsym(executor.library.?, SERVE_FN_NAME); if (serve_fn == null) return error.CouldNotLoadSymbolServe; - executor.serveFn = @ptrCast(serveFn, serve_fn.?); + executor.serveFn = @ptrCast(serve_fn.?); loadOptionalSymbols(executor); return executor; } @@ -216,10 +216,10 @@ fn executorIsMatch(match_data: []const u8, requested_path: []const u8, headers: /// different in each case so we can't combine those two. fn loadOptionalSymbols(executor: *Executor) void { if (std.c.dlsym(executor.library.?, "request_deinit")) |s| { - executor.requestDeinitFn = @ptrCast(requestDeinitFn, s); + executor.requestDeinitFn = @ptrCast(s); } if (std.c.dlsym(executor.library.?, "zigInit")) |s| { - executor.zigInitFn = @ptrCast(zigInitFn, s); + executor.zigInitFn = @ptrCast(s); } } @@ -255,7 +255,7 @@ fn executorChanged(watch: usize) void { @panic("System unstable: Error after library open and cannot close"); return; } - executor.serveFn = @ptrCast(serveFn, symbol); + executor.serveFn = @ptrCast(symbol); loadOptionalSymbols(executor); } } @@ -380,7 +380,7 @@ pub fn main() !void { var server_thread_count = if (std.os.getenv("SERVER_THREAD_COUNT")) |count| try std.fmt.parseInt(usize, count, 10) else switch (builtin.mode) { - .Debug => std.math.min(4, try std.Thread.getCpuCount()), + .Debug => @min(4, try std.Thread.getCpuCount()), else => try std.Thread.getCpuCount(), }; switch (builtin.mode) { @@ -505,14 +505,14 @@ fn processRequest(allocator: *std.mem.Allocator, server: *std.http.Server, write response_bytes = f.response; res.transfer_encoding = .{ .content_length = response_bytes.len }; try res.headers.append("connection", "close"); - try writer.print(" {d} ttfb {d:.3}ms", .{ @enumToInt(res.status), @intToFloat(f64, tm.read()) / std.time.ns_per_ms }); + try writer.print(" {d} ttfb {d:.3}ms", .{ @intFromEnum(res.status), @as(f64, @floatFromInt(tm.read())) / std.time.ns_per_ms }); if (builtin.is_test) writeToTestBuffers(response_bytes, &res); try res.do(); _ = try res.writer().writeAll(response_bytes); try res.finish(); try writer.print(" {d} ttlb {d:.3}ms", .{ response_bytes.len, - @intToFloat(f64, tm.read()) / std.time.ns_per_ms, + @as(f64, @floatFromInt(tm.read())) / std.time.ns_per_ms, }); }