zig-clap
zig
zig-clap | zig | |
---|---|---|
3 | 845 | |
978 | 35,264 | |
- | 1.6% | |
7.7 | 10.0 | |
13 days ago | 3 days ago | |
Zig | Zig | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
zig-clap
-
After a day of programming in Zig
Zig and Rust both promote explicit error handling, however their mechanisms are different. Rust uses Result enums, while Zig uses a (global) error set type (though similar to an enum) and error propagation. Similarly, Rust uses the Option enum for optional types, while Zig uses a type modifier (?T). Both offer modern, syntactic sugar to handle those (call()? and if let Some(value) = optional {} in Rust, try call() and if (optional) |value| {} in Zig). Since Rust uses the standard library to implement error handling and options, users have the possibility to extend those systems which is quite powerful. However, I like the approach Zig takes in providing those things as language features. While their approach fits well into the C universe, I dislike that there is no pragmatic way to add more context to an error (but well, no allocations). Libraries like [clap](https://github.com/Hejsil/zig-clap) solve this by implementing a diagnostics mechanism.
-
Is it too early to use Zig for CLI tooling ideas?
It's somewhat early, but there are libraries like https://github.com/Hejsil/zig-clap that can make writing CLIs a bit easier.
-
Docco for printing, getting input, cmdline args?
Command line args: std.process or the zig-clap library
zig
- Zon – object notation like JSON in Zig
- Linux Syscall Support
-
Zig is everything I want C to be
> will that function also get to return a u8?
No, the main function (the entry point of the entire program) is special cased. Have a look at the source code. There you can see the it's calling the user defined main function and handling its return value / error.
https://github.com/ziglang/zig/blob/2d888a8e639856e8cb6e4c6f...
> Also, what happened to argv/argc?
You can access argv with std.os.argv which is a slice of null terminated strings. It's better to go with std.process.argsAlloc though (requires an allocation but works on all supported platforms).
-
Introduction to Zig (a project-based book)
I'm a bit hesistant to mentally invest in Zig, given the maintainers choice to directly develop against a mostly undocumented NT-API instead of the Win32 API.
[1]: https://github.com/ziglang/zig/issues/1840
-
Huly – Open-Source All-in-One Project Management Platform
Interestingly, Huly is also the sponsor of the Zig programming language[1].
[1]: https://ziglang.org/
-
Pledging $300k to the Zig Software Foundation
> And there's also the aliasing issue
Plans to address this were shared just last week: https://github.com/ziglang/zig/issues/5973#issuecomment-2380...
-
One must imagine Sisyphus writing a new JS framework
You crave the simplicity of C, but miss modern features and a nice build system? You got Zig
-
The Python Package Index Should Get Rid of Its Training Wheels
I raise you https://github.com/ziglang/zig/issues/20875
It is not entirely clear what any of this means, and in any case, it keeps changing all the time.
-
Don't defer Close() on writable files
Arguably, one should call `flush()` on the file first. Resource allocation must always succeed; otherwise a lot of invariants break. This is why Zig's close method[0] ignores errors (with the exception of `EBADF`).
[0]: https://github.com/ziglang/zig/blob/fb0028a0d7b43a2a5dd05f07...
- Zig: Prefer depending on NtDll rather than kernel32 or other higher level DLLs
What are some alternatives?
zig-args - Simple-to-use argument parser with struct-based config
Nim - Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
known-folders - Provides access to well-known folders across several operating systems
Odin - Odin Programming Language
sdk - TinyVG software development kit
v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
zig-rocca-s - An implementation of the ROCCA-S encryption scheme.
rust - Empowering everyone to build reliable and efficient software.
mach-gpu-dawn - Google's Dawn WebGPU implementation, cross-compiled with Zig into a single static library
go - The Go programming language
zig-range - A range function to loop over an index without an extra variable.
ssr-proxy-js - A Server-Side Rendering Proxy focused on customization and flexibility!