aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-05-05Fixed example syntax for inline elseArnon1-1/+1
2023-05-04Merge branch 'main' of github.com:ratfactor/ziglingsDave Gauer5-140/+213
2023-05-04Ex 001 remove ancient script reference + wordingDave Gauer1-7/+7
2023-05-04test: remove obsolete comment in the heal functionManlio Perillo1-2/+2
Remove the comment about using POSIX patch variant, since we now use the -s option.
2023-05-04test: fix doc-commentsManlio Perillo1-7/+7
CheckStep, FailStep, fail, HealStep and heal incorrectly used a normal comment, instead of a doc-comment. Additionally, improve the documentation for FailStep and HealStep.
2023-05-04test: improve test case 1 and 2Manlio Perillo1-11/+12
In test case 1 and 2, remove the `i` variable and use `ex.number()` instead. In test case 2, when checking the exercise output from stderr, also check that stdout is empty and vice versa.
2023-05-04Merge pull request #265 from Arya-Elfren/methods-clarificationDave Gauer1-19/+18
Clarify the methods syntax sugar & a bit more
2023-05-04Merge pull request #264 from Arya-Elfren/float-clarificationDave Gauer1-8/+11
Clarify `f16` maths - closes #204
2023-05-03Merge branch 'ratfactor:main' into testingChris Boesch1-81/+116
2023-05-03Merge pull request #279 from perillo/refactor-zigling-step-2Chris Boesch1-81/+116
Refactor ZiglingStep
2023-05-03Added new flag 'run_test' to support test steps for test exercises.Chris Boesch2-0/+19
Also created a simple exercise '102_testing' to test the new flag. After the new build system is ready, we skip the exercise in the flow to finish the actual testing exercise.
2023-05-03build: improve coding style in ZiglingStepManlio Perillo1-26/+45
- Use an anonymous struct when initializing std.Build.Step. - Rename the builder parameter in the create method to b - Avoid lines too long Additionally: - In the run method, rename output to raw_output in order to make the next variable names shorter. - In the compile method, rename zig_file to path.
2023-05-03build: use @panic("OOM") instead of unreachableManlio Perillo1-9/+9
The code in ZiglingStep copied the error handling used in std.Build in the past. Use @panic("OOM") when the error is caused by the allocator failing to allocate memory.
2023-05-03build: improve the exercise output checkManlio Perillo1-5/+5
Make the error message consistent with the one in std.Build.RunStep, using the "=" character instead of "-" and correctly aligning the text.
2023-05-03build: don't use @This() in ZiglingStepManlio Perillo1-5/+5
Use ZiglingStep, instead. This is consistent with the coding style in std.Build.
2023-05-03build: remove ZiglingStep.builder fieldManlio Perillo1-8/+6
It is not necessary, since the builder is available in self.step.owner.
2023-05-03build: use Child.exec in ZiglingStep.runManlio Perillo1-30/+17
Update the run method to use Child.exec, instead of Child.spawn followed by Child.wait. This simplifies the code.
2023-05-03build: fix incorrect error handling in ZiglingStep.compileManlio Perillo1-1/+10
When handling the error from the eval method, some possible errors are ignored. The make method will only print the exercise hint and the help message. Print the unexpected error message, in the else prong. Note that FileNotFound can also be considered unexpected.
2023-05-03build: remove the ZiglingStep.makeInternal methodManlio Perillo1-14/+36
Rename the doCompile method to compile and add the run method. The two methods are now called from the make method. Add the help method, since the error handling of compile and run methods are now separate. Remove the obsolete comment for the compile method.
2023-05-02Merge pull request #275 from perillo/heal-only-in-testChris Boesch3-32/+68
Heal only in test
2023-05-02Added Ex 101 "for loops part 5" (Closes #271)Dave Gauer3-0/+128
Also gave a shot at explaining data-oriented design, a Zig "hot topic" ever since the red Hawaiian shirt talk(s).
2023-05-02Restore unit testsManlio Perillo2-21/+20
2023-05-02test: don't run heal during configuration phaseManlio Perillo1-11/+48
In order to simplify the code, the heal function is called during the configuration phase, thus resulting in the function being always called when the build.zig file is run. This behavior unfortunately causes a serious issue when the user fix a broken exercise and, during the next step, the heal function tries to heal the fixed exercise resulting in GNU patch assuming an attempt to reverse a patch, waiting for input from the terminal. Run the heal function from the new HealStep step, so that it is called only during tests. Rename the outdir constant to work_path, for consistency with build.zig. Fixes #272
2023-05-01Merge pull request #273 from chrboesch/patch_errorChris Boesch1-2/+3
cli tests removed to solve 272
2023-05-01comment for the issue addedChris Boesch1-0/+1
2023-05-01 unit tests temporarily disabledChris Boesch1-18/+18
2023-05-01cli tests removed to solve 272Chris Boesch1-2/+2
2023-05-01Merge pull request #270 from perillo/improve-exercise-typeChris Boesch4-523/+508
Improve the Exercise type
2023-05-01build: don't override the top level stepsManlio Perillo1-6/+0
When running `zig build -Dn=n`, the install and uninstall steps where overridden in order to improve the description. In recent version of Zig this is no longer allowed.
2023-05-01build: rename Exercise.baseName to nameManlio Perillo2-7/+15
The name "baseName" is confusing, since it refers to the UNIX basename command, and not to the basename function in some programming languages including Zig. Use the std.fs.path.stem function to remove the file extension, instead of slicing. Remove the use of the assertion, since it is no longer necessary. Instead, add a check to ensure that the exercise must be a Zig source file in the validate_exercises function. Update the validate_exercises function to check the last exercise, too.
2023-05-01build: add the Exercise.addExecutable methodManlio Perillo3-23/+21
Currently addExecutable is called 3 times, unnecessarily making the code more complex. The method takes as argument the path to the exercises directory. Additionally, use the new std.Build.ExecutableOptions.link_libc field. The new field was added in ziglang/zig@adc9b77d5f on 2023-04-13. Update the required Zig compiler version. Note that I added the **current** zig version to the changelog, since the reason for the change is known only to the person updating the version.
2023-05-01build: rename the Exercise.C field to link_libcManlio Perillo1-6/+6
The name "C" does not follow the naming conventions for container fields.
2023-05-01build: reduce code duplication when setting the work pathManlio Perillo1-16/+22
Currently, the code for defining the path to the exercises directory is duplicate 4 times. Add the constants `healed_path` and `work_path`, and use work_path instead of the duplicated if expression. Update ZiglingStep to take `work_path` instead of `use_healed` as argument. Reduce code length by using `join` instead of `std.fs.path.join` and replace the use of a slice with a tuple. Additionally, in case of an error from the `join` function, use @panic instead of unreachable. Document why the special branch, when the exercises are healed by the eowyn script, has been disabled.
2023-05-01build: remove the Exercise.async fieldManlio Perillo2-21/+0
The stage1 C++ compiler is gone forever. Remove the custom support and documentation for the old stage1 compiler in build.zig and README.md.
2023-05-01build: move exercises at the end of the fileManlio Perillo1-464/+464
The exercises slice takes about 460 lines, making it hard to read the source code of build.zig. Closes #225
2023-04-30Added Ex. 100 fourth for (as foretold in #261)Dave Gauer3-0/+70
2023-04-30Oops, capitalization in ex016.Dave Gauer1-1/+1
2023-04-30Renamed 095 to "for3" to match feature sequenceDave Gauer3-1/+1
So 100 will be the next in line.
2023-04-30Updating 095 patch to match, natch!Dave Gauer1-1/+1
2023-04-30Updating wording in 'for' exercisesDave Gauer3-46/+65
This is in preparation for another dive into 'for' in an upcoming Exercise 100. Also reformatted 095 for 65 columns and some wording.
2023-04-29Merge pull request #269 from perillo/fix-windows-deadlockChris Boesch4-50/+12
Fix deadlock on Windows
2023-04-29eowyn.sh: remove checking formatting one file at a timeManlio Perillo1-6/+1
This avoids unnecessary output. Also remove the comment, since the message to stdout makes it unnecessary.
2023-04-29test: make the patch command silentManlio Perillo1-1/+1
The POSIX standard says that the patch command should not use stdout, but GNU patch writes the message: patching file patches/healed/xxx.zig (read from exercises/xxx.zig). Add the -s flag to suppress these messages. Note that the heal function from test/tests.zig is called when running `zig build -Dhealed` because it is executed in the configure phase.
2023-04-29test: fix deadlock on windows when running testsManlio Perillo1-1/+0
The deadlock was caused by setting stdout behavior to ignore, when spawning the patch command. When the patch command writes to devnull it causes some errors and a deadlock. The cause of the bug is probably Zig using `\Device\Null` from `ntdll` while git-bash uses `NUL` from `kernel32`.
2023-04-29workflows: remove the custom windows only jobsManlio Perillo2-42/+10
Restore the job matrix to run on linux, macos and windows. Remove lines with extra whitespace. Improve the documentation of the Eowyn workflow. Remove the single quoting of the workflow names.
2023-04-29Update README.mdChris Boesch1-0/+1
2023-04-28Merge pull request #268 from chrboesch/mainChris Boesch2-2/+0
Switched back to bash on Windows
2023-04-28switched back to bash on windowsChris Boesch1-1/+0
2023-04-28switched back to bash on windowsChris Boesch1-1/+0
2023-04-28060 - remove `@as()`Arya-Elfren1-6/+8