ziglings/README.md

95 lines
2 KiB
Markdown
Raw Normal View History

# ziglings
Welcome to `ziglings`. This project contains a series of incomplete exercises.
By completing the exercises, you learn how to read and write
[Zig](https://ziglang.org/)
code.
This project was directly inspired by the brilliant and fun
[rustlings](https://github.com/rust-lang/rustlings)
project for the [Rust](https://www.rust-lang.org/) language.
## Getting Started
_Note: This currently uses a shell (Bash) script to automate the "game". A
future update may remove this requirement. See TODO below._
Install the [master release](https://ziglang.org/download/) of the Zig compiler.
Verify the installation and version of `zig` like so:
```bash
$ zig version
0.7.1+<some hexadecimal string>
```
Clone this repository with Git:
```bash
git clone https://github.com/ratfactor/ziglings
cd ziglings
```
Then run the `ziglings` script and follow the instructions to begin!
```bash
./ziglings
```
## Manual Usage
If you can't (or don't want to) use the script, you can manually verify each
exercise with the Zig compiler:
```bash
2021-02-03 22:22:49 +01:00
zig run 01_hello.zig
```
## TODO
Contributions are very welcome! I'm writing this to teach myself and to create
the learning resource I wished for. There will be tons of room for improvement:
* Wording of explanations
* Idiomatic usage of Zig
* Additional exercises
* Re-write the `ziglings` script using the Zig build system (???)
Planned exercises:
* [x] Hello world (main needs to be public)
* [x] Importing standard library
* [x] Assignment
2021-01-04 02:34:26 +01:00
* [x] Arrays
2021-01-06 01:26:02 +01:00
* [x] Strings
2021-01-08 23:53:22 +01:00
* [x] If
2021-01-10 17:46:42 +01:00
* [x] While
2021-01-19 01:21:18 +01:00
* [x] For
2021-01-22 23:42:03 +01:00
* [x] Functions
2021-01-31 23:48:34 +01:00
* [x] Errors
* [x] Defer
* [x] Switch
* [ ] Unreachable
* [ ] Pointers
* [ ] Pointer sized integers
* [ ] Multi pointers
* [ ] Slices
* [ ] Enums
* [ ] Structs
* [ ] Unions
* [ ] Integer rules
* [ ] Floats
* [ ] Labelled blocks
* [ ] Labelled loops
* [ ] Loops as expressions
* [ ] Optionals
* [ ] Comptime
* [ ] Inline loops
* [ ] Anonymous structs
* [ ] Sentinel termination
* [ ] Vectors
* [ ] Imports
The initial topics for these exercises were unabashedly cribbed from
[ziglearn.org](https://ziglearn.org/).