64 karma · joined November 16, 2011
You can use defer keyword to free right after allocating and it won't be called until the function/program completes. You can use debug or testing allocators to ensure no memory is left unfree'd or double free'd. The std lib has a large selection of custom allocators that you can use depending on your needs. One great one is an "Arena Allocator" which is just a linked-list of allocations that can be free'd at one time, versus tracking all these individual allocations. And if none of these allocators fit your needs, the interface to define one is pretty easy to implement. https://ziglang.org/documentation/0.7.1/#Choosing-an-Allocat...
"I'm not mutating or holding onto anything I'm not meant to"
Not really sure Zig can help you with this one. With great power comes great responsibility, or something like that.
"that I've accounted for every exception that I can result from a given call"
Zig does not have exceptions, but it does have error types which functions can return. From the function definition you usually can determine all the errors that can possibly be returned, unless the function definer use'd the catch all ! error type. Regardless, it is still much better than regular exceptions because
- you know by the function def that an error could be thrown, the compiler forces the caller to account for a possible error by "unwrapping" the return value
- an error happening just passes back a different type to the caller and in combination with the above, you can never "miss" an error https://ziglang.org/documentation/0.7.1/#Errors
Also Zig switch statements without an else ensure you handle every possible value so if you forget to handle one possible error (based on the type), it will throw a compile error. https://ziglang.org/documentation/0.7.1/#toc-Exhaustive-Swit...
0.5.0 Documentation https://ziglang.org/documentation/0.5.0/#Introduction
root std library https://github.com/ziglang/zig/tree/master/lib/std
examples of writing and reading to a file https://github.com/ziglang/zig/blob/master/lib/std/event/fs....
There are also a ton of projects that the creator has done with Zig, you can check those out for more examples as well.
https://github.com/andrewrk?utf8=%E2%9C%93&tab=repositories&...
Looks like he has an advent of code repo too.
Any examples of this being used for something non-trivial? I'm generally curious because I figured Golang would be a no-go due to the GC...
For the past couple years I've been using http://www.backloggery.com/ to keep track of what I am playing.
I can't fully understand why I find this so funny but I am just falling out of my seat laughing.
While I find this extremely comical, I am excited to see the consequences of this for desktop linux. The way I see it, the more people who use linux the better it will become :).
edit: here it is http://lifehacker.com/5963726/netflix-finally-comes-to-ubunt...
Cool idea though!
This open graph search will be great for marketing purposes, and a silly tool for us users. I guarantee there are going to be some serious consequences of companies/governments having the power to instantly search and sort billion's of users' data. And maybe you'll say that some great findings can come from this search; maybe we can learn more about humans and societies with this tool? Maybe, but I believe the cost outweighs the benefits.
This graph search is just the last straw. It is terrifying the repercussions this search engine could have, and I believe this blog post shows some great examples.
but regardless of my question, looks good man
What a stacked dev group as well!!
Edit: Hmm a question, does the game use your hardware? Or is it rendered elsewhere?