From 3b5678815f010bd016ca561e4672d2d83271cb2e Mon Sep 17 00:00:00 2001 From: Dave Gauer Date: Wed, 23 Dec 2020 12:02:35 -0500 Subject: Initial commit with readme, script, and hello world Absolutely minimum viable stuff. --- README.md | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 README.md (limited to 'README.md') 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+ +``` + +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/). -- cgit v1.2.3-ZIG