1
0
Fork 0
mirror of https://github.com/ratfactor/ziglings synced 2024-05-11 04:36:04 +02:00

Compare commits

...

7 Commits

Author SHA1 Message Date
Manlio Perillo 0d70a56943
Merge 9b0bf26e8d into 27b5d3b55f 2023-09-01 16:33:52 -07:00
Chris Boesch 27b5d3b55f
Merge pull request #357 from ratfactor/check_patches
Fixed some broken patches
2023-08-27 19:21:42 +02:00
Chris Boesch fca59c258b Fixed some broken patches 2023-08-27 19:11:21 +02:00
Chris Boesch b209cc3f49
Merge pull request #356 from juergenhoetzel/code-point-size
Add example for Unicode Code point literal > 255

Thanks! đŸ˜„
2023-08-27 18:57:50 +02:00
Chris Boesch 6f34f7ad0e
Update README.md
Advanced usage line 'zig build -Dn=x start' deleted, because of https://github.com/ratfactor/ziglings/issues/355
2023-08-27 18:55:54 +02:00
Juergen Hoetzel 9fce9bd57f Add example for Unicode Code point literal > 255
Only Basic Latin and Latin-1 Supplement code points fit into a single
byte.
2023-08-27 12:33:33 +02:00
Manlio Perillo 9b0bf26e8d Add the find-zig-release-branch.sh tool
The tool is used to find the latest commit, from the HEAD in date order,
that is compatible with the specified Zig compiler.

The commit found can be used as a base for a branch that can be used by
users that can only install a released version of Zig, e.g. v0.10.1.
2023-05-05 19:08:53 +02:00
6 changed files with 78 additions and 7 deletions

View File

@ -114,12 +114,10 @@ Version-0.11.0-dev.4246+71dfce31b
## Advanced Usage
It can be handy to check just a single exercise or _start_ from a
single exercise:
It can be handy to check just a single exercise:
```
zig build -Dn=19
zig build -Dn=19 start
```
You can also run without checking for correctness:

View File

@ -6,7 +6,8 @@
// const a2: u8 = 0x41; // hexadecimal
// const a3: u8 = 0o101; // octal
// const a4: u8 = 0b1000001; // binary
// const a5: u8 = 'A'; // UTF-8 code point literal
// const a5: u8 = 'A'; // ASCII code point literal
// const a6: u16 = 'È€'; // Unicode code points can take up to 21 bits
//
// You can also place underscores in numbers to aid readability:
//

View File

@ -1,4 +1,4 @@
92c92
91c91
< ???.zap(???);
---
> heat_ray.zap(alien);

View File

@ -1,4 +1,4 @@
22,24c22,24
23,25c23,25
< 0o131, // octal
< 0b1101000, // binary
< 0x66, // hex

View File

@ -1,4 +1,4 @@
43c43
46c46
< const shuttle_weight: f16 = 907.18 * 2200;
---
> const shuttle_weight: f32 = 907.18 * 2200.0;

View File

@ -0,0 +1,72 @@
#!/bin/sh
# Find the latest commit that is compatible with a specified Zig version, like
# 0.10.1.
#
# The zig executable can be set using the ZIG_EXE environment variable.
#
# This script will clone the ziglings repository to the path specified by the
# first parameter, that is required. Commits are processed in date order.
# Heals all the exercises.
heal() {
if [ ! -d exercises ]
then
echo "Must be run from the project root directory."
exit 1
fi
mkdir -p patches/healed
for original in exercises/*.zig; do
name=$(basename "$original" .zig)
patch_name="patches/patches/$name.patch"
output="patches/healed/$name.zig"
if [ -f "$patch_name" ]; then
patch -i "$patch_name" -o "$output" -s "$original"
else
printf "Cannot heal %s: no patch found\n" "$name"
fi
done
}
# Configure input parameters.
if [ -z "$ZIG_EXE" ]; then
echo '$ZIG_EXE is required'
exit 1
fi
work_path="$1"
if [ -z "$work_path" ] ; then
echo "The work_path parameter is required and must be a directory"
exit 1
elif [ ! -d "$work_path" ]; then
printf "%s does not exist\n" "$work_path"
exit 1
fi
# Clone ziglings repository.
cd "$work_path" || exit 1
echo "Cloning into 'ziglings'"
git clone -q https://github.com/ratfactor/ziglings.git ziglings || exit 1
# Find a commit compatible with the specified Zig version.
cd ziglings || exit 1
for commit in $(git log --date-order --pretty=format:"%H"); do
git checkout --detach -q "$commit"
printf "\nTesting commit %s\n" "$commit"
heal
# Some versions exits with exit code 0 instead of 1, if version check fails.
sed -i 's/exit(0)/exit(1)/g' build.zig
"$ZIG_EXE" build -Dhealed
zig_ret=$?
git restore build.zig
if [ "$zig_ret" -eq 0 ]; then
printf "Find working commit: %s\n" "$commit"
exit 0
fi
done