andrewrk posts
Announcing the Zig Software Foundation on Saturday, July 11th
Dear patrons,Today I bring you exciting news. Thanks to your ongoing support, this past year I was able to start the Zig Software Foundation as a 501(c)(3) non-profit organization, dedicated to advancing the Zig programming language project, improving the open-source ecosystem of high quality software libraries, growing a diverse and international community of programmers, and providing education and guidance to students.Tomorrow (Saturday, July 11th), on Twitch, is the public debut of the ZSF. It will be entertainment and celebration of the pr...
Why I'm donating $150/month to the musl libc project
Hello patrons,I thought that you should know I've decided to donate $150/month to musl libc, a project that has been instrumental in Zig's development. Read the blog post to learn more. As an open source project receiving funding via donations, I think it's important to, in turn, support those projects which Zig depends on.Thanks for your support!
January 2018 in Review
Here's everything that happened in January 2018. You can alternately read this on my personal blog.LLVM 6 ReadinessLLVM 6.0.0rc2 was just announced on the mailing list. It's scheduled to be released on February 21, and Zig is ready. I plan to have Zig release 0.2.0 one week after LLVM 6 comes out. We already have all tests passing with debug builds of LLVM 6 in the llvm6 branch, but that extra week is for a bug-stomping rampage.After that, all the 0.3.0 milestone issues get postponed to 0.4.0, and all the 0.2.0 milestone issues get move...
December 2017 in Review
Here's everything that happened in December 2017.You can alternately read this on my personal blog: http://andrewkelley.me/post/zig-december-2017-in-review.htmlenum tag typesYou can now specify the tag type for an enum (#305):<code>const Small2 = enum (u2) { One, Two,};</code>If you specify the tag type for an enum, you can put it in a packed struct:<code>const A = enum (u3) { One, Two, Three, Four, One2, Two2, Three2, Four2,};const B = enum (u3) { One3, Two3, Three3, Four3, One23, Two23, Three23, Four23,};const C = enum (u2) { One4, Two4, ...
We launched the first beta!
Thank you deeply to all my supporters. After some weeks of hard work finishing up the first release, users can now download Zig 0.1.1 from the download page.
printf is no special case
In C, compile-time checked arguments for printf is special-case functionality built into the compiler.Zig's compile-time features allow enough expressiveness that we can implement a more efficient printf and do the argument checking all in the standard library - no special-case code in the compiler.Read about it more here.
Hello World kernel written in Zig
Part of making a system programming language is programming a system!This is why I am creating a demo project called ClashOS . This is a work-in-progress arcade-game-as-an-operating-system that runs on the Raspberry Pi 3.The project is already causing me to make countless bug fixes and usability improvements to the compiler. So far I've been able to express everything in Zig directly - with some inline assembly - but no separate assembly files needed.Further, because of Zig's cross compilation support I did not need to build a different...

