zf
zig-clap
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.
zf
-
Is it too early to use Zig for CLI tooling ideas?
You can absolutely make CLI tools, but be prepared for breaking changes in the language with every release. I've been working on a fuzzy finder zf for a couple of years now, and with each Zig release there are a few things to fix. It's not a ton of work, but it is something to be aware of.
- Zf: Command line fuzzy finder that prioritizes matches on filenames
-
Zig's Curious Multi-Sequence for Loops
I’ve absolutely had satisfaction with my several personal projects written in Zig. And based on an imperfect measurement (GitHub stars) I have also had moderate success in making something useful. It’s a terminal fuzzy finder [0]. I also maintain a Zig Lua bindings package [1], and I’m working on a port of an old Macintosh game [2].
Zig is exactly what I want out of a language though, so take my opinion with a grain of salt :)
[0]: https://github.com/natecraddock/zf
[1]: https://github.com/natecraddock/ziglua
[2]: https://github.com/natecraddock/open-reckless-drivin
-
nvim-bqf v0.3.0 has been released.
This looks awesome! As someone who is already pretty invested in trouble.nvim and native integrations with Telescope and GitSigns (to name just two), what do you feel are the selling points? I wonder how you see integrations evolving too? In example, I use zf via telescope-zf-native.nvim over fzf and have had to do little to let other plugins fallback into that.
-
telescope-zf-native.nvim - filename focused fuzzy finding
I have long preferred the strictness of the fzy algorithm over fzf for fuzzy finding both in my shell and in neovim. But there are things about fzy that have bothered me (like the inability to narrow down results with space-delimited query terms). So I have been working on zf and libzf (written in Zig if you care about that sort of thing) for the shell and integration with neovim.
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
What are some alternatives?
telescope-fzf-native.nvim - FZF sorter for telescope written in c
zig-args - Simple-to-use argument parser with struct-based config
fzy - :mag: A simple, fast fuzzy finder for the terminal
known-folders - Provides access to well-known folders across several operating systems
telescope-zf-native.nvim - native telescope bindings to zf for sorting results
mach-gpu-dawn - Google's Dawn WebGPU implementation, cross-compiled with Zig into a single static library
Odin - Odin Programming Language
zig-range - A range function to loop over an index without an extra variable.
zig-cli - A simple package for building command line apps in Zig
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
nvim-pqf
zig-rocca-s - An implementation of the ROCCA-S encryption scheme.