Zig
Edited: Monday 4 May 2026

Zig

Resources

Things that doesn’t make sense at the first look

Semicolons (;) I thought we’re past this

1const std = @import("std");
2
3pub fn main(init: std.process.Init) !void {
4    try std.Io.File.stdout().writeStreamingAll(init.io, "Hello, World!\n");
5}

vs. without semicolons:

1const std = @import("std")
2
3pub fn main(init: std.process.Init) !void {
4    try std.Io.File.stdout().writeStreamingAll(init.io, "Hello, World!\n")
5}

The empty parenthesis after main in this example don’t have any function. they’re not grouping any params.

1pub fn main() void {
2    std.debug.print("Hello, {s}!\n", .{"World"});
3}

vs. without ():

1pub fn main void {
2    std.debug.print("Hello, {s}!\n", .{"World"});
3}

and the .{} also, feels like unnecessary clutter.

1pub fn main() void {
2    std.debug.print("Hello, {s}!\n", .{"World"});
3}

vs. without .{}:

1pub fn main() void {
2    std.debug.print("Hello, {s}!\n", "World");
3}

Minor quirks

  • it uses // for comments instead of #, now Zig lost the opportunity to have a #!/usr/bin/env zig I guess
  • The colon in const one_plus_one: i32 = 1 + 1; after the variable name doesn’t make sense too, just cluttering the line, it could have been: const one_plus_one i32 = 1 + 1

Journal

  • 4 May 2026 — just curious as I started using Ghostty terminal
  • nothing about this language is exciting so far