> There are few things in life that I am more serious about than this. I dedicate ~48 hours/week to my dayjob, and ~50h/week to Zig building Mach and running zigmonthly.org. After three years of aggressively pushing for progress in this exact way, I have no plans to slow down anytime soon.
This is really awesome work, and if keeping this pace works for you all the better. But I just wanted to encourage you to keep any eye on that, and to make sure that you're not pushing yourself beyond what you're able or willing to put into it. I know many members of the open source community can struggle with that balance, and that many of those people would also rather you building stuff like this for 1/5n hours a week for the next 25 years than n hours a week for 5 years and burn out your interest or capacity. Thanks again for building this project, really cool to see!
Just wanted to say I love the style of your blog (especially the little diagrams), and am looking forward to future posts in the ECS series.
Also, I've played around with the mach-glfw-vulkan-example project (https://github.com/hexops/mach-glfw-vulkan-example) and really enjoyed using it to learn about Vulkan, so thank you for your part in that!
I think you make a good case for WebGPU, and am excited to look through the resources you shared – and the future of mach!
Also, I wasn't able to cross-compile to aarch64, because it does not seem to recognize `-Ddawn-from-source=true`, and I wasn't able to figure out where to put the `Options.from_source = true`:
motiejus ~/code/mach/gpu $ zig build -Ddawn-from-source=true -Dtarget=aarch64-linux-musl
error: gpu-dawn binaries for aarch64-linux.3.16...5.10.81-gnu.2.19 not available.
error: -> open an issue: https://github.com/hexops/mach/issues
error: -> build from source (takes 5-15 minutes):
error: use -Ddawn-from-source=true or set `Options.from_source = true`
error: the following build command failed with exit code 1:
/home/motiejus/code/mach/gpu/zig-cache/o/a1cea9683aaa7b7e7a533b8f6e40e10f/build /home/motiejus/code/zig-linux-x86_64-0.10.0-dev.896+e620b692c/zig /home/motiejus/code/mach/gpu /home/motiejus/code/mach/gpu/zig-cache /home/motiejus/.cache/zig -Ddawn-from-source=true -Dtarget=aarch64-linux-musl
motiejus ~/code/mach/gpu $
I'm super productive in Zig, I really like the language.
Documentation is lacking, so you're going to be reading the stdlib code. There are bugs. The current focus is on building the new stage2 compiler (going from C++ -> Zig implementation) so there are things that need attention that don't get it, yet.
I would not suggest anyone learn C first if they don't have systems programming experience. I'd go for Zig, Rust (or Go, if you just want to dip your toes into the land of pointers) and depending on how comfortable you feel. If you start with one and find it super frustrating, try another, the difference between them is huge. You might personally feel more productive in one, leading to you learning more.
Same here. As a compiled language, I find Zig super productive.
There's neither "magic" nor an accumulation of abstraction layers. As a result, when there's a bug in my code, I can quickly understand what's going on and how to fix it. This is very refreshing.
Zig appeals to me for its philosophy, simplicity, community and cross-platform build tools. The main reason I haven't already adopted it is the lack of docs/educational material that has made getting started pretty rough for a frontend dev. A lot of the existing docs seem to start with the assumption that you're a lifelong C hacker who is already comfortable with manual memory management, libc, allocators, linking and all the rest, and that you're coming to Zig to gain quality of life improvements over C.
I've dabbled with Rust/Go and found the docs/books much more accessible. But I didn't end up feeling an affinity for either language quite the same as Zig. (For Rust it was the complexity/readability and sluggish compile/dev loop; for Go it was the feeling that it wasn't really empowering me to do much that I couldn't already do quite comfortably with TypeScript/Deno, or stretching me to understand lower-level programming the way I'd hoped.)
Thank you for zigmonthly.org and for Mach! I just sponsored you on GitHub. It's encouraging to hear buzz around Zig and see it being used for fun things. I'm tempted to persevere with Zig and write docs/guides pitched at those outside the traditional systems programming realm as I gain confidence with it.
Super excited for Zig to make low-level coding more accessible to people outside the usual group of lifelong C hackers, as you said! That's one of the reasons I am betting on it.
Check out https://zig.news too, it's where a ton of people are writing learning material / little tutorials on things.
Happy to answer any questions about Mach (or my experience working with Zig.)