diff --git a/src/ztracy.zig b/src/ztracy.zig
index aa83f66..128ff29 100644
--- a/src/ztracy.zig
+++ b/src/ztracy.zig
@@ -41,7 +41,7 @@ const tracy_stub = struct {
         }
     };
 
-    pub inline fn SetThreadName(name: [*:0]const u8) void {
+    pub inline fn SetThreadName(comptime name: [*:0]const u8) void {
         _ = name;
     }
 
@@ -49,7 +49,7 @@ const tracy_stub = struct {
         _ = src;
         return .{};
     }
-    pub inline fn ZoneN(comptime src: Src, name: [*:0]const u8) ZoneCtx {
+    pub inline fn ZoneN(comptime src: Src, comptime name: [*:0]const u8) ZoneCtx {
         _ = src;
         _ = name;
         return .{};
@@ -59,7 +59,7 @@ const tracy_stub = struct {
         _ = color;
         return .{};
     }
-    pub inline fn ZoneNC(comptime src: Src, name: [*:0]const u8, color: u32) ZoneCtx {
+    pub inline fn ZoneNC(comptime src: Src, comptime name: [*:0]const u8, color: u32) ZoneCtx {
         _ = src;
         _ = name;
         _ = color;
@@ -70,7 +70,7 @@ const tracy_stub = struct {
         _ = depth;
         return .{};
     }
-    pub inline fn ZoneNS(comptime src: Src, name: [*:0]const u8, depth: i32) ZoneCtx {
+    pub inline fn ZoneNS(comptime src: Src, comptime name: [*:0]const u8, depth: i32) ZoneCtx {
         _ = src;
         _ = name;
         _ = depth;
@@ -82,7 +82,7 @@ const tracy_stub = struct {
         _ = depth;
         return .{};
     }
-    pub inline fn ZoneNCS(comptime src: Src, name: [*:0]const u8, color: u32, depth: i32) ZoneCtx {
+    pub inline fn ZoneNCS(comptime src: Src, comptime name: [*:0]const u8, color: u32, depth: i32) ZoneCtx {
         _ = src;
         _ = name;
         _ = color;
@@ -123,42 +123,42 @@ const tracy_stub = struct {
         _ = depth;
     }
 
-    pub inline fn AllocN(ptr: ?*const anyopaque, size: usize, name: [*:0]const u8) void {
+    pub inline fn AllocN(ptr: ?*const anyopaque, size: usize, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = size;
         _ = name;
     }
-    pub inline fn FreeN(ptr: ?*const anyopaque, name: [*:0]const u8) void {
+    pub inline fn FreeN(ptr: ?*const anyopaque, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = name;
     }
-    pub inline fn SecureAllocN(ptr: ?*const anyopaque, size: usize, name: [*:0]const u8) void {
+    pub inline fn SecureAllocN(ptr: ?*const anyopaque, size: usize, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = size;
         _ = name;
     }
-    pub inline fn SecureFreeN(ptr: ?*const anyopaque, name: [*:0]const u8) void {
+    pub inline fn SecureFreeN(ptr: ?*const anyopaque, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = name;
     }
-    pub inline fn AllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn AllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = size;
         _ = depth;
         _ = name;
     }
-    pub inline fn FreeNS(ptr: ?*const anyopaque, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn FreeNS(ptr: ?*const anyopaque, depth: c_int, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = depth;
         _ = name;
     }
-    pub inline fn SecureAllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn SecureAllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = size;
         _ = depth;
         _ = name;
     }
-    pub inline fn SecureFreeNS(ptr: ?*const anyopaque, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn SecureFreeNS(ptr: ?*const anyopaque, depth: c_int, comptime name: [*:0]const u8) void {
         _ = ptr;
         _ = depth;
         _ = name;
@@ -167,14 +167,14 @@ const tracy_stub = struct {
     pub inline fn Message(text: []const u8) void {
         _ = text;
     }
-    pub inline fn MessageL(text: [*:0]const u8) void {
+    pub inline fn MessageL(comptime text: [*:0]const u8) void {
         _ = text;
     }
     pub inline fn MessageC(text: []const u8, color: u32) void {
         _ = text;
         _ = color;
     }
-    pub inline fn MessageLC(text: [*:0]const u8, color: u32) void {
+    pub inline fn MessageLC(comptime text: [*:0]const u8, color: u32) void {
         _ = text;
         _ = color;
     }
@@ -182,7 +182,7 @@ const tracy_stub = struct {
         _ = text;
         _ = depth;
     }
-    pub inline fn MessageLS(text: [*:0]const u8, depth: c_int) void {
+    pub inline fn MessageLS(comptime text: [*:0]const u8, depth: c_int) void {
         _ = text;
         _ = depth;
     }
@@ -191,20 +191,20 @@ const tracy_stub = struct {
         _ = color;
         _ = depth;
     }
-    pub inline fn MessageLCS(text: [*:0]const u8, color: u32, depth: c_int) void {
+    pub inline fn MessageLCS(comptime text: [*:0]const u8, color: u32, depth: c_int) void {
         _ = text;
         _ = color;
         _ = depth;
     }
 
     pub inline fn FrameMark() void {}
-    pub inline fn FrameMarkNamed(name: [*:0]const u8) void {
+    pub inline fn FrameMarkNamed(comptime name: [*:0]const u8) void {
         _ = name;
     }
-    pub inline fn FrameMarkStart(name: [*:0]const u8) void {
+    pub inline fn FrameMarkStart(comptime name: [*:0]const u8) void {
         _ = name;
     }
-    pub inline fn FrameMarkEnd(name: [*:0]const u8) void {
+    pub inline fn FrameMarkEnd(comptime name: [*:0]const u8) void {
         _ = name;
     }
     pub inline fn FrameImage(image: ?*const anyopaque, width: u16, height: u16, offset: u8, flip: c_int) void {
@@ -215,20 +215,20 @@ const tracy_stub = struct {
         _ = flip;
     }
 
-    pub inline fn FiberEnter(name: [*:0]const u8) void {
+    pub inline fn FiberEnter(comptime name: [*:0]const u8) void {
         _ = name;
     }
     pub inline fn FiberLeave() void {}
 
-    pub inline fn PlotF(name: [*:0]const u8, val: f64) void {
+    pub inline fn PlotF(comptime name: [*:0]const u8, val: f64) void {
         _ = name;
         _ = val;
     }
-    pub inline fn PlotU(name: [*:0]const u8, val: u64) void {
+    pub inline fn PlotU(comptime name: [*:0]const u8, val: u64) void {
         _ = name;
         _ = val;
     }
-    pub inline fn PlotI(name: [*:0]const u8, val: i64) void {
+    pub inline fn PlotI(comptime name: [*:0]const u8, val: i64) void {
         _ = name;
         _ = val;
     }
@@ -309,27 +309,19 @@ const tracy_full = struct {
         }
     };
 
-    inline fn initZone(comptime src: Src, name: ?[*:0]const u8, color: u32, depth: c_int) ZoneCtx {
+    inline fn initZone(comptime src: Src, comptime name: ?[*:0]const u8, comptime color: u32, comptime depth: c_int) ZoneCtx {
         // Tracy uses pointer identity to identify contexts.
         // The `src` parameter being comptime ensures that
         // each zone gets its own unique global location for this
         // struct.
         const static = struct {
-            var loc: c.___tracy_source_location_data = undefined;
-
-            // Ensure that a unique struct type is generated for each unique `src`. See
-            // https://github.com/ziglang/zig/issues/18816
-            comptime {
-                // https://github.com/ziglang/zig/issues/19274
-                _ = @sizeOf(@TypeOf(src));
-            }
-        };
-        static.loc = .{
-            .name = name,
-            .function = src.fn_name.ptr,
-            .file = src.file.ptr,
-            .line = src.line,
-            .color = color,
+            const loc: c.___tracy_source_location_data = .{
+                .name = name,
+                .function = src.fn_name.ptr,
+                .file = src.file.ptr,
+                .line = src.line,
+                .color = color,
+            };
         };
 
         const zone = if (has_callstack_support)
@@ -345,32 +337,32 @@ const tracy_full = struct {
         }
     }
 
-    pub inline fn SetThreadName(name: [*:0]const u8) void {
+    pub inline fn SetThreadName(comptime name: [*:0]const u8) void {
         c.___tracy_set_thread_name(name);
     }
 
     pub inline fn Zone(comptime src: Src) ZoneCtx {
         return initZone(src, null, 0, callstack_depth);
     }
-    pub inline fn ZoneN(comptime src: Src, name: [*:0]const u8) ZoneCtx {
+    pub inline fn ZoneN(comptime src: Src, comptime name: [*:0]const u8) ZoneCtx {
         return initZone(src, name, 0, callstack_depth);
     }
     pub inline fn ZoneC(comptime src: Src, color: u32) ZoneCtx {
         return initZone(src, null, color, callstack_depth);
     }
-    pub inline fn ZoneNC(comptime src: Src, name: [*:0]const u8, color: u32) ZoneCtx {
+    pub inline fn ZoneNC(comptime src: Src, comptime name: [*:0]const u8, color: u32) ZoneCtx {
         return initZone(src, name, color, callstack_depth);
     }
     pub inline fn ZoneS(comptime src: Src, depth: i32) ZoneCtx {
         return initZone(src, null, 0, depth);
     }
-    pub inline fn ZoneNS(comptime src: Src, name: [*:0]const u8, depth: i32) ZoneCtx {
+    pub inline fn ZoneNS(comptime src: Src, comptime name: [*:0]const u8, depth: i32) ZoneCtx {
         return initZone(src, name, 0, depth);
     }
     pub inline fn ZoneCS(comptime src: Src, color: u32, depth: i32) ZoneCtx {
         return initZone(src, null, color, depth);
     }
-    pub inline fn ZoneNCS(comptime src: Src, name: [*:0]const u8, color: u32, depth: i32) ZoneCtx {
+    pub inline fn ZoneNCS(comptime src: Src, comptime name: [*:0]const u8, color: u32, depth: i32) ZoneCtx {
         return initZone(src, name, color, depth);
     }
 
@@ -431,56 +423,56 @@ const tracy_full = struct {
         }
     }
 
-    pub inline fn AllocN(ptr: ?*const anyopaque, size: usize, name: [*:0]const u8) void {
+    pub inline fn AllocN(ptr: ?*const anyopaque, size: usize, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_alloc_callstack_named(ptr, size, callstack_depth, 0, name);
         } else {
             c.___tracy_emit_memory_alloc_named(ptr, size, 0, name);
         }
     }
-    pub inline fn FreeN(ptr: ?*const anyopaque, name: [*:0]const u8) void {
+    pub inline fn FreeN(ptr: ?*const anyopaque, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_free_callstack_named(ptr, callstack_depth, 0, name);
         } else {
             c.___tracy_emit_memory_free_named(ptr, 0, name);
         }
     }
-    pub inline fn SecureAllocN(ptr: ?*const anyopaque, size: usize, name: [*:0]const u8) void {
+    pub inline fn SecureAllocN(ptr: ?*const anyopaque, size: usize, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_alloc_callstack_named(ptr, size, callstack_depth, 1, name);
         } else {
             c.___tracy_emit_memory_alloc_named(ptr, size, 1, name);
         }
     }
-    pub inline fn SecureFreeN(ptr: ?*const anyopaque, name: [*:0]const u8) void {
+    pub inline fn SecureFreeN(ptr: ?*const anyopaque, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_free_callstack_named(ptr, callstack_depth, 1, name);
         } else {
             c.___tracy_emit_memory_free_named(ptr, 1, name);
         }
     }
-    pub inline fn AllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn AllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_alloc_callstack_named(ptr, size, depth, 0, name);
         } else {
             c.___tracy_emit_memory_alloc_named(ptr, size, 0, name);
         }
     }
-    pub inline fn FreeNS(ptr: ?*const anyopaque, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn FreeNS(ptr: ?*const anyopaque, depth: c_int, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_free_callstack_named(ptr, depth, 0, name);
         } else {
             c.___tracy_emit_memory_free_named(ptr, 0, name);
         }
     }
-    pub inline fn SecureAllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn SecureAllocNS(ptr: ?*const anyopaque, size: usize, depth: c_int, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_alloc_callstack_named(ptr, size, depth, 1, name);
         } else {
             c.___tracy_emit_memory_alloc_named(ptr, size, 1, name);
         }
     }
-    pub inline fn SecureFreeNS(ptr: ?*const anyopaque, depth: c_int, name: [*:0]const u8) void {
+    pub inline fn SecureFreeNS(ptr: ?*const anyopaque, depth: c_int, comptime name: [*:0]const u8) void {
         if (has_callstack_support) {
             c.___tracy_emit_memory_free_callstack_named(ptr, depth, 1, name);
         } else {
@@ -491,20 +483,20 @@ const tracy_full = struct {
     pub inline fn Message(text: []const u8) void {
         c.___tracy_emit_message(text.ptr, text.len, callstack_depth);
     }
-    pub inline fn MessageL(text: [*:0]const u8, color: u32) void {
+    pub inline fn MessageL(comptime text: [*:0]const u8, color: u32) void {
         c.___tracy_emit_messageL(text, color, callstack_depth);
     }
     pub inline fn MessageC(text: []const u8, color: u32) void {
         c.___tracy_emit_messageC(text.ptr, text.len, color, callstack_depth);
     }
-    pub inline fn MessageLC(text: [*:0]const u8, color: u32) void {
+    pub inline fn MessageLC(comptime text: [*:0]const u8, color: u32) void {
         c.___tracy_emit_messageLC(text, color, callstack_depth);
     }
     pub inline fn MessageS(text: []const u8, depth: c_int) void {
         const inner_depth: c_int = if (has_callstack_support) depth else 0;
         c.___tracy_emit_message(text.ptr, text.len, inner_depth);
     }
-    pub inline fn MessageLS(text: [*:0]const u8, depth: c_int) void {
+    pub inline fn MessageLS(comptime text: [*:0]const u8, depth: c_int) void {
         const inner_depth: c_int = if (has_callstack_support) depth else 0;
         c.___tracy_emit_messageL(text, inner_depth);
     }
@@ -512,7 +504,7 @@ const tracy_full = struct {
         const inner_depth: c_int = if (has_callstack_support) depth else 0;
         c.___tracy_emit_messageC(text.ptr, text.len, color, inner_depth);
     }
-    pub inline fn MessageLCS(text: [*:0]const u8, color: u32, depth: c_int) void {
+    pub inline fn MessageLCS(comptime text: [*:0]const u8, color: u32, depth: c_int) void {
         const inner_depth: c_int = if (has_callstack_support) depth else 0;
         c.___tracy_emit_messageLC(text, color, inner_depth);
     }
@@ -520,33 +512,33 @@ const tracy_full = struct {
     pub inline fn FrameMark() void {
         c.___tracy_emit_frame_mark(null);
     }
-    pub inline fn FrameMarkNamed(name: [*:0]const u8) void {
+    pub inline fn FrameMarkNamed(comptime name: [*:0]const u8) void {
         c.___tracy_emit_frame_mark(name);
     }
-    pub inline fn FrameMarkStart(name: [*:0]const u8) void {
+    pub inline fn FrameMarkStart(comptime name: [*:0]const u8) void {
         c.___tracy_emit_frame_mark_start(name);
     }
-    pub inline fn FrameMarkEnd(name: [*:0]const u8) void {
+    pub inline fn FrameMarkEnd(comptime name: [*:0]const u8) void {
         c.___tracy_emit_frame_mark_end(name);
     }
     pub inline fn FrameImage(image: ?*const anyopaque, width: u16, height: u16, offset: u8, flip: c_int) void {
         c.___tracy_emit_frame_image(image, width, height, offset, flip);
     }
 
-    pub inline fn FiberEnter(name: [*:0]const u8) void {
+    pub inline fn FiberEnter(comptime name: [*:0]const u8) void {
         c.___tracy_fiber_enter(name);
     }
     pub inline fn FiberLeave() void {
         c.___tracy_fiber_leave();
     }
 
-    pub inline fn PlotF(name: [*:0]const u8, val: f64) void {
+    pub inline fn PlotF(comptime name: [*:0]const u8, val: f64) void {
         c.___tracy_emit_plot(name, val);
     }
-    pub inline fn PlotU(name: [*:0]const u8, val: u64) void {
+    pub inline fn PlotU(comptime name: [*:0]const u8, val: u64) void {
         c.___tracy_emit_plot(name, @as(f64, @floatFromInt(val)));
     }
-    pub inline fn PlotI(name: [*:0]const u8, val: i64) void {
+    pub inline fn PlotI(comptime name: [*:0]const u8, val: i64) void {
         c.___tracy_emit_plot(name, @as(f64, @floatFromInt(val)));
     }
     pub inline fn AppInfo(text: []const u8) void {