Live data from Hacker News

Zig 0.15.1

ziglang.org

1–10 of 18 posts

Re: Zig 0.15.1

#3

Seems like a lot of changes to be a .1 release, no? Really excited for I/O as an interface!

Those were all changes in 0.15.0, but we snuck a few bugfix PRs in for a quick patch release before Andrew finished writing the release notes ;)

Re: Zig 0.15.1

#5
Excellent news. Will be very interesting how the debugging experience will improve with scheduling, recording of io and reversal computing between io.

Re: Zig 0.15.1

#7
Can anyone sell me on learning Zig vs Rust? Not for work, just some personal projects I thought about doing in Go but decided learning Rust instead might be fun.

Re: Zig 0.15.1

#8

Seems like a lot of changes to be a .1 release, no? Really excited for I/O as an interface!

0.15.0 was effectively skipped: https://github.com/ziglang/www.ziglang.org/commit/1be0f80b15...

yeah, some jerk filed a windows https bug after the release had been tagged

Re: Zig 0.15.1

#9
post #7

Can anyone sell me on learning Zig vs Rust? Not for work, just some personal projects I thought about doing in Go but decided learning Rust instead might be fun.

Try a few different languages to see what fits your style. I'm a fan of both Rust and Zig, but I've been really enjoying Zig lately.

Rust has a cool concept called ownership to prevent memory bugs. This means you have to learn new ideas like lifetimes. For instance, an array doesn't just hold objects; it has a lifetime of its own, so you can only store references that will last at least as long as the array. It's most useful IMHO for programs with many independent lifetimes because it makes writing memory-safe code much easier. It really leans into the concept RAII which comes from C++. You implement types and define what it means to create, copy, "move" and destroy them.

Zig on the other hand feels incredibly lightweight. It's like C, but with way fewer pitfalls and better tools. For instance, tts default DebugAllocator tracks memory leaks at runtime, which is good enough for many situations and makes the language less complex to work with. It is common in Zig to pass Allocators, which makes you think more about pooling allocations and simpler allocation strategies. I think learning low level concepts like memory management, pointers, memory layout, interfacing with the OS etc. is easier is fantastic in Zig.

Re: Zig 0.15.1

#10
post #7

Can anyone sell me on learning Zig vs Rust? Not for work, just some personal projects I thought about doing in Go but decided learning Rust instead might be fun.

Very roughly, Zig is much closer to Go in terms of philosophy of language design, where as Rust is much closer to Go in terms of the kind of software people write with it.

Go and Zig are both aggressively small and portable languages, and e.g. prefer explicit `defer` where Rust would handle cleanup implicitly. Unlike Zig, Go and Rust are both widely used and mature ~tier-1 languages with a deep bench of native libraries. However, there's a deep gulf between their philosophies. Go values a shallow learning curve and making code easy to write, whereas Rust values expressivness and making it hard to write bad code. This is not to say that you can't write Good Software in Go or make money with Rust code. However, the languages tend to attract distinct groups of programmers, and there's a reason flamewars crop up between their proponents with unusual regularity.

Zig is notable for targeting C's niches of having lots of structural flexibility in memory management, being good at calling C code, and building C programs. C is the native language of most truly powerful interfaces (operating systems, graphics, cryptography, databases, other programming languages, device drivers, low-level networking, etc.), and programs primarily concerned with interfacing with such things tend to be better off written in C. Working with C code is in the happy path for Zig, while other mainstream programming languages demand significant specialized expertise or wrapper libraries (1). Wrapper libraries aren't always available, are almost always less useful than the original, and only save you /some/ build headaches. This makes Zig a candidate in many situations where C - and /maybe/ C++ - are the only real competition.

In short:

If your interest is learning new ways to think about writing programs, Rust will give you a more distinct perspective than Zig. Like Go, there will be lots of libraries and guides to help you out.

If your interest is in learning to write a kind of program you couldn't in Go and think "closer to the metal", Zig is likely better suited to task.

(1): This isn't nearly as true for C++, but there's still enough impeadence mismatch between idiomatic C and C++ to invite interfacing bugs and wrapper libraries.

Post reply on HN