aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md102
1 files changed, 102 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2e49f83
--- /dev/null
+++ b/README.md
@@ -0,0 +1,102 @@
+# 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.
+
+Some exercises need to be "run" (compiled and executed):
+
+```bash
+zig run exercises/01_hello.zig
+```
+
+Some exercises need to be tested:
+
+```bash
+zig test exercises/02_hello_test.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
+* [ ] Hello tests
+* [ ] Assignment
+* [ ] Arrays
+* [ ] If
+* [ ] While
+* [ ] For
+* [ ] Functions
+* [ ] Defer
+* [ ] Errors
+* [ ] Switch
+* [ ] Runtime safety
+* [ ] 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/).