# 0.14.0 is one month out

**URL:** <https://ziggit.dev/t/0-14-0-is-one-month-out/7934>\
**Category:** News\
**Created:** [January 17, 2025, 12:03pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934 "2025-01-17T12:03:46Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![andrewrk](https://ziggit.dev/user_avatar/ziggit.dev/andrewrk/32/7011_2.png) [@andrewrk](https://ziggit.dev/u/andrewrk)\
**Post date:** [January 17, 2025, 12:03pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/1 "2025-01-17T12:03:46Z")

</div>

Great time to upgrade and make sure your projects’ issues get addressed before the tag is cut!

[https://ziglang.org/news/what-to-expect-from-release-month/](https://ziglang.org/news/what-to-expect-from-release-month/)

---

<div class="post-metadata">

**Author:** ![tgirod](https://ziggit.dev/user_avatar/ziggit.dev/tgirod/32/3744_2.png) [@tgirod](https://ziggit.dev/u/tgirod)\
**Post date:** [January 17, 2025, 6:13pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/2 "2025-01-17T18:13:45Z")

</div>

Damn, I haven’t heard of _Infected Mushroom_ for ages 🤩

---

<div class="post-metadata">

**Author:** ![IntegratedQuantum](https://ziggit.dev/user_avatar/ziggit.dev/integratedquantum/32/782_2.png) [@IntegratedQuantum](https://ziggit.dev/u/IntegratedQuantum)\
**Post date:** [January 17, 2025, 8:07pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/3 "2025-01-17T20:07:56Z")

</div>

Apart from the initial shock  
 ![Screenshot at 2025-01-17 20-59-59](https://ziggit.dev/uploads/default/original/2X/e/e39115894c60fb33e07e05993ccd6f379fdb959e.png)  
upgrading went smoothly for me (I just had to fix 7 lines, the error was duplicated by comptime)

---

<div class="post-metadata">

**Author:** ![andrewrk](https://ziggit.dev/user_avatar/ziggit.dev/andrewrk/32/7011_2.png) [@andrewrk](https://ziggit.dev/u/andrewrk)\
**Post date:** [January 17, 2025, 9:18pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/4 "2025-01-17T21:18:27Z")

</div>

That’s a tricky one. Arguably those errors should be deduplicated based on AST node, but sometimes it _is_ handy to get multiple errors for different comptime instantiations.

---

<div class="post-metadata">

**Author:** ![ajoino](https://ziggit.dev/user_avatar/ziggit.dev/ajoino/32/3120_2.png) [@ajoino](https://ziggit.dev/u/ajoino)\
**Post date:** [January 17, 2025, 10:24pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/5 "2025-01-17T22:24:26Z")

</div>

Is there a changelog out? I looked around but couldn’t find any.

---

<div class="post-metadata">

**Author:** ![slonik-az](https://ziggit.dev/letter_avatar_proxy/v4/letter/s/ebca7d/32.png) [@slonik-az](https://ziggit.dev/u/slonik-az)\
**Post date:** [January 17, 2025, 11:16pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/7 "2025-01-17T23:16:11Z")

</div>

> [@ajoino](#):
>
> Is there a changelog out? I looked around but couldn’t find any.

Wait until February 17-th.

---

<div class="post-metadata">

**Author:** ![squeek502](https://ziggit.dev/user_avatar/ziggit.dev/squeek502/32/409_2.png) [@squeek502](https://ziggit.dev/u/squeek502)\
**Post date:** [January 18, 2025, 2:04am UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/8 "2025-01-18T02:04:57Z")

</div>

> [@ajoino](#):
>
> Is there a changelog out? I looked around but couldn’t find any.

You can get a preview of it by looking at the merged PRs with the `release notes` label:

[https://github.com/ziglang/zig/pulls?q=is%3Apr+label%3A"release+notes"+merged%3A\>2024-06-06](https://github.com/ziglang/zig/pulls?q=is%3Apr+label%3A%22release+notes%22+merged%3A%3E2024-06-06)

---

<div class="post-metadata">

**Author:** ![msw](https://ziggit.dev/user_avatar/ziggit.dev/msw/32/2986_2.png) [@msw](https://ziggit.dev/u/msw)\
**Post date:** [January 18, 2025, 9:40am UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/9 "2025-01-18T09:40:22Z")

</div>

my only stumbling block was a tab character being present in a struct declaration. “expected type expression found invalid token” without any pointer what that invalid token might be. I ended up running `expand(1)` on the source after finding an issue on gh et voila …

Aside of that, I find build changes such as dropping `b.host` (after it had been deprecated) or changing defineCMacro (in receiver, name and fn signature) to be discoverable hard. I’ll peruse squeek’s merge PR list and see if that would’ve helped me … and I can just say that I didn’t find this. I’m getting better at using the tools at my disposal to tackle such upgrade problems, yet find it needlessly abrasive. I suppose a “_living_” changelog with those upgrade howtos like last time would be nice to have.

---

<div class="post-metadata">

**Author:** ![jmc](https://ziggit.dev/user_avatar/ziggit.dev/jmc/32/38_2.png) [@jmc](https://ziggit.dev/u/jmc)\
**Post date:** [January 18, 2025, 1:55pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/10 "2025-01-18T13:55:01Z")

</div>

> Jakub decided to move on to other things

😢

---

<div class="post-metadata">

**Author:** ![chrboesch](https://ziggit.dev/user_avatar/ziggit.dev/chrboesch/32/438_2.png) [@chrboesch](https://ziggit.dev/u/chrboesch)\
**Post date:** [January 18, 2025, 2:42pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/11 "2025-01-18T14:42:53Z")

</div>

But still in Zig. 🙂

---

<div class="post-metadata">

**Author:** ![floooh](https://ziggit.dev/user_avatar/ziggit.dev/floooh/32/2989_2.png) [@floooh](https://ziggit.dev/u/floooh)\
**Post date:** [January 18, 2025, 3:17pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/12 "2025-01-18T15:17:15Z")

</div>

Btw, last Zig nightly causes a very mysterious CI pipeline fail in sokol-zig, and only on Windows (e.g. the zig compiler just fails silently with exit code 116 - scroll to the top to see the problem):

> <https://github.com/floooh/sokol-zig/actions/runs/12844941840/job/35818484401>

…but it looks like only one of the samples have that error (which makes it even a bit more scary).

I haven’t investigated yet, just writing this here because it looks like the Zig-project CI is green on Windows (so probably not a known issue yet).

PS: a followup build with exactly the same Zig version worked, and I also cannot reproduce on my Windows laptop. I’ll keep an eye on it.

---

<div class="post-metadata">

**Author:** ![andrewrk](https://ziggit.dev/user_avatar/ziggit.dev/andrewrk/32/7011_2.png) [@andrewrk](https://ziggit.dev/u/andrewrk)\
**Post date:** [January 18, 2025, 9:16pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/13 "2025-01-18T21:16:39Z")

</div>

Hmm that’s a great point. The purpose of the release notes are to help make these changes more discoverable, but it defeats the purpose if I suggest to try upgrading a month in advance, doesn’t it?

🤔

---

<div class="post-metadata">

**Author:** ![chrboesch](https://ziggit.dev/user_avatar/ziggit.dev/chrboesch/32/438_2.png) [@chrboesch](https://ziggit.dev/u/chrboesch)\
**Post date:** [January 18, 2025, 10:17pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/14 "2025-01-18T22:17:51Z")

</div>

A little. On the other hand, you can of course just try out whether or how far the compiler runs. But that depends on the type and size of the project. So a bullet point list of what has changed in this regard would be beneficial.

---

<div class="post-metadata">

**Author:** ![chung-leong](https://ziggit.dev/user_avatar/ziggit.dev/chung-leong/32/999_2.png) [@chung-leong](https://ziggit.dev/u/chung-leong)\
**Post date:** [January 19, 2025, 1:14am UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/15 "2025-01-19T01:14:04Z")

</div>

I’m seeing quite a number of problems caused by the loss of anonymous structs. The following is in the build file of [ziglua](https://github.com/natecraddock/ziglua):

```zig
    const lib_opts = .{
        .name = "lua",
        .target = target,
        .optimize = optimize,
        .version = switch (lang) {
            .lua51 => std.SemanticVersion{ .major = 5, .minor = 1, .patch = 5 },
            .lua52 => std.SemanticVersion{ .major = 5, .minor = 2, .patch = 4 },
            .lua53 => std.SemanticVersion{ .major = 5, .minor = 3, .patch = 6 },
            .lua54 => std.SemanticVersion{ .major = 5, .minor = 4, .patch = 6 },
            else => unreachable,
        },
    };
    const lib = if (shared)
        b.addSharedLibrary(lib_opts)
    else
        b.addStaticLibrary(lib_opts);

```

No good way of fixing this aside from replicating the struct. `addSharedLibrary()` and `addStaticLibrary()` accept different `structs` so you can’t just add a type to `lib_opts`. You can set the type of `lib_opts` based on `shared` either since it’s is runtime.

---

<div class="post-metadata">

**Author:** ![castholm](https://ziggit.dev/user_avatar/ziggit.dev/castholm/32/1330_2.png) [@castholm](https://ziggit.dev/u/castholm)\
**Post date:** [January 19, 2025, 1:19am UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/16 "2025-01-19T01:19:53Z")

</div>

Try using this trick, I’ve used it to great success:

```zig
const lib: *std.Build.Step.Compile = switch (shared) {
    inline else => |x| switch (x) {
        true => std.Build.addSharedLibrary,
        false => std.Build.addStaticLibrary,
    }(b, .{
        .name = "lua",
        .target = target,
        .optimize = optimize,
        // ...
    }),
};

```

Though I would probably prefer if there was a `b.addLibrary(link_mode, options)` function.

---

<div class="post-metadata">

**Author:** ![zig-robotics](https://ziggit.dev/user_avatar/ziggit.dev/zig-robotics/32/4272_2.png) [@zig-robotics](https://ziggit.dev/u/zig-robotics)\
**Post date:** [January 19, 2025, 5:54pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/17 "2025-01-19T17:54:56Z")

</div>

`b.addXLibrary()` is just a thin wrapper around `std.Build.Step.Compile.create()`. You can get the equivalent to what you’re after by hitting that directly. I use this whenever creating a library:

```zig
    const linkage = b.option(std.builtin.LinkMode, "linkage", "Specify static or dynamic linkage") orelse .dynamic;
    var lib = std.Build.Step.Compile.create(b, .{
        .root_module = .{
            .target = target,
            .optimize = optimize,
            .pic = if (linkage == .dynamic) true else null,
        },
        .name = "mylib",
        .kind = .lib,
        .linkage = linkage,
    });

```

Note that this is all 0.13 still as I haven’t started porting my projects, but this appears to still be the case in master. Have a look at the addStaticLibrary vs addSharedLibrary functions to convince yourself this is equivalent:

> <https://github.com/ziglang/zig/blob/master/lib/std/Build.zig#L946-L974>

---

<div class="post-metadata">

**Author:** ![mlugg](https://ziggit.dev/user_avatar/ziggit.dev/mlugg/32/437_2.png) [@mlugg](https://ziggit.dev/u/mlugg)\
**Post date:** [January 20, 2025, 1:02am UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/18 "2025-01-20T01:02:44Z")

</div>

This seems like an indication of a flawed build system API. Feel free to open an issue proposing combining `addStaticLibrary` with `addSharedLibrary` if you can’t find an existing one.

---

<div class="post-metadata">

**Author:** ![floooh](https://ziggit.dev/user_avatar/ziggit.dev/floooh/32/2989_2.png) [@floooh](https://ziggit.dev/u/floooh)\
**Post date:** [January 21, 2025, 6:21pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/19 "2025-01-21T18:21:43Z")

</div>

…and it just happened again (the Windows compiler ‘crash’ on Github CI). Wrote a ticket now: [Random(?) compiler error codes on Windows CI runners (seen error codes 5 and 116 so far) · Issue #22567 · ziglang/zig · GitHub](https://github.com/ziglang/zig/issues/22567)

---

<div class="post-metadata">

**Author:** ![andrewrk](https://ziggit.dev/user_avatar/ziggit.dev/andrewrk/32/7011_2.png) [@andrewrk](https://ziggit.dev/u/andrewrk)\
**Post date:** [January 21, 2025, 6:57pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/20 "2025-01-21T18:57:29Z")

</div>

thanks! appreciate the report.

---

<div class="post-metadata">

**Author:** ![JPL](https://ziggit.dev/letter_avatar_proxy/v4/letter/j/a9adbd/32.png) [@JPL](https://ziggit.dev/u/JPL)\
**Post date:** [February 28, 2025, 8:28pm UTC](https://ziggit.dev/t/0-14-0-is-one-month-out/7934/21 "2025-02-28T20:28:18Z")

</div>

All my projects go through except the doc

[Next page](https://ziggit.dev/t/0-14-0-is-one-month-out/7934.md?page=2)
