Dylan Green
Dylan Green

Posted on

Zig Projects: An Ideas Discussion

There have been a number of great projects to come about from the Zig community, despite being long before an actual release. This intrigues people like myself, who work in the software development industry for a living (current student myself, graduating next year) and have experience working with many libraries for multiple languages. However, a new language emerging with a lot of potential presents unique opportunities to become contributors, either to the project itself, or to the software that buds from the new language or framework when it finally does become usable in production.

Seeing as Zig is approaching the point where major changes to the language itself that would break existing code are highly unlikely, now seems to be an ideal time to begin learning and developing prototypes that could be used by many, should they be maintained and upgraded consistently. Some great projects I already bumped into include web server libraries, many game development tools, SIMD libraries, kernels, bootloaders, and a plethora of CLD tools. Seeing as a lot of these are experimental, I thought a discussion on Zig News could serve as a good way to connect and share ideas with one another for prototype projects that could become useful in the near future.

Game development is a big one it seems, but to branch off, what kinds of tools and libraries does the community believe are essential? What kinds of projects do you believe are going to be most popular with Zig? Seeing as the language seems to take a modern approach to issues in C (ex: functions with the same name, but different functions are not allowed in C outright. They often require "tricks" with preprocessors and includes to work), I'm expecting Zig to serve as a good C replacement for newer lower-level projects that require speed. The standard library intrigues me too. At the time of writing, I know it's on a backburner because the language is still in development and has to be stabilized.

To put it simply: What projects does community believe are missing from the Zig ecosystem that are going to be important to have?

Top comments (6)

kristoff profile image
Loris Cro

There's a very long list for sure. Off of the top of my head:

  • More learning materials aimed at different personas (eg people that know C vs people that know Rust vs people that know Python, Go, etc vs game devs vs embedded devs).
  • Demo / template project for how to get started doing X (ios app, android app, embedded stuff, game dev, ...)
  • Data structure implementations!
  • Commonly needed building blocks, like parsers, web servers, etc (either pure Zig or C wrapper as a starting point)
  • More leaning materials / template projects / integrations specifically dedicated to using Zig as a toolchain rather than a language.

From a more social perspective:

  • Meetups! Need for nations to shift from "pandemic" into "endemic" gears first, though.
  • Edutainment like videos and podcasts
  • More livecoding on twitch
  • More communities centered on a topic (eg Zig Embedded Group)
  • (once the official pkg manager is released) package index services

Also more talks for Zig SHOWTIME plz :^)

dylangtech profile image
Dylan Green

These are all really good suggestions!

Funny story: I checked to see if something like your idea for data structure implementations (the easiest option on the list in my opinion) already exists on GitHub, and it's strange..... I found that someone updated an old project with this purpose, that was inactive, for the first time in ages, following this post. I think we're being watched 👀

In all seriousness, I do wonder what the standard library will cover once the project is in the position to make a library that won't risk breaking during language development. If it's anything like .NET, it won't leave anything out haha.

Learning material and common applications and tools seem like my speed most of all, so I'll give it some thought! Thank you!

kristoff profile image
Loris Cro

We don't know yet how the Zig standard library should look like, but we normally lean toward lean solutions (no pun intended). Regardless, in a low level programming language like Zig, there's a lot of space for different implementations of the same general data structure.

Thread Thread
yanwenjiepy profile image

The standard library should be succinct but powerful, providing only a common and better solution, and users can implement their own solutions as they need. We don't want it to be bloated, but equally we don't want it to be spartan.

dude_the_builder profile image
  • Regular Expressions: I think this is what made Perl and the Unix tools grep, sed, awk, etc. super popular and useful.
  • Web server / client: This is what has made Go so extremely popular as the Cloud-native and Microservices language of choice. Their HTTP implementation is ingeniously designed to make it truly upgradable when new versions of HTTP come out. It's impressive how they could go from HTTP/1.1 to 2 and 3 without practically touching the public API. With this in place, come the next level killer apps in the form of web frameworks.
  • Code analysis / suggestions: Rust's Clippy is impressive in its code analysis capabilities, when to collapse nested ifs, when you're comparing floats for equality, etc.
  • Fuzzing for tests.
  • Benchmark suites with cool graphs.
  • Profilers with cool graphs.
  • Improved editor plugins, syntax highlighting, snippets, templates, etc.
himujjal profile image
Himujjal Upadhyaya

A set of projects that come right off my head:

  1. A terminal UI framework based upon HTML/CSS. Or a terminal UI framework from scratch like pdcurses
  2. A PostCSS alternative in Zig. With support for WebAssembly plugins.
  3. A SASS->CSS compiler
  4. A TypeScript->JS Compiler without type-checking
  5. A Svelte compiler (Let's do this before Rust!)
  6. A VueJS compiler

These are the topics that I have. I am working on 4 and 5 at the moment. So. lol