Releases: udem-dlteam/pnut
pnut-1.1
Version 1.1 release of pnut 🥜
This release was made on commit b659eb1f7f5d026cdc50f9163e7f7c30cedbfdb2.
Short Changelog
- New pnut AWK backend (pnut-awk): #228
- More robust C code annotations, include documentation in annotated shell scripts: #222 and #238
- Reduce size of pnut-sh's inline printf: #229
Release Files
The precompiled pnut-sh.sh corresponds to the minimal version of pnut-sh. The precompiled pnut-exe.sh corresponds to the minimal version of pnut-exe (i386 Linux). Both scripts can bootstrap the fully featured pnut-exe executable, which can in turn bootstrap more complete compilers such as TCC.
Annotated shell files
Pnut-sh has an option to include the original C source code as comments in the generated shell script. The C source code is included verbatim (with conditional cpp lines removed), and is interleaved with the generated shell code. This script can extract the original C source code from itself using the -C <filename> option, which outputs C code that can be used to rebootstrap the compiler. With pnut-sh.sh, this results in the exact same pnut-sh.sh file, while with pnut-exe.sh, an executable pnut-exe is obtained.
Release steps
To reproduce this release, run the following commands:
make pnut-sh.sh MINIMAL=1 ANNOTATE_C_CODE=0 # pnut-sh.sh
make pnut-sh.sh MINIMAL=1 ANNOTATE_C_CODE=1 # pnut-sh-annotated.sh
make pnut-exe.sh TARGET=Linux.i386 MINIMAL=1 ANNOTATE_C_CODE=0 # pnut-exe.sh
make pnut-exe.sh TARGET=Linux.i386 MINIMAL=1 ANNOTATE_C_CODE=1 # pnut-exe-annotated.sh
Stats
File sizes (LOC):
| Variant | min | annotated |
|---|---|---|
pnut-sh |
6133 | 12762 |
pnut-exe |
5681 | 12066 |
What's Changed
- Add NO_COLOR option to disable colored error messages by @laurenthuberdeau in #220
- Add SH_PROFILE_MEMORY option, and replace #include_shell with smarter #include by @laurenthuberdeau in #221
- Setup bootstrap environment, packaged as jammed.sh, with all-in-one utility tool by @laurenthuberdeau in #219
- Fix pnut-sh code annotation feature by @laurenthuberdeau in #222
- Delete attic directory by @laurenthuberdeau in #224
- Improve Makefile, move bootstrap scripts to Makefile by @laurenthuberdeau in #223
- Add final version of master's thesis by @laurenthuberdeau in #225
- Refactor run-tests.sh to support more targets by @laurenthuberdeau in #227
- Remove complex printf specifier from minimal pnut-sh.sh by @laurenthuberdeau in #229
- Add pnut-awk by @laurenthuberdeau in #228
- Document single-pass code generation by @laurenthuberdeau in #230
- Fix repl example, improve sha256sum examples by @laurenthuberdeau in #231
- Fix -D cli option with string value by @laurenthuberdeau in #233
- Fix M2-Planet build by @laurenthuberdeau in #235
- Remove printf from debug module by @laurenthuberdeau in #232
- Add minimal shell script to make and extract jam archive, and simple pager by @laurenthuberdeau in #234
- Analysis and benchmarks by @laurenthuberdeau in #236
- Add tests for portable libc, remove old test suite by @laurenthuberdeau in #237
- Self documented pnut-sh.sh and pnut-exe.sh by @laurenthuberdeau in #238
Full Changelog: pnut-sh-1.0...pnut-1.1
pnut-sh-1.0.sh
Version 1.0 release of pnut-sh.sh 🥜
The distributed version of pnut corresponds to the minimal version of pnut-sh, supporting the minimum set of features to get pnut-exe bootstrapped, fitting in only 6226 lines of shell code. From pnut-exe, more complete compilers such as TCC can then be bootstrapped.
The following pnut-sh.sh file has been audited, meaning every line was compared to the original C source code (total time: ~10h), and reproduced on 2 different machines. To reproduce the same file, run ./bootstrap-pnut-sh.sh --shell bash --minimal-pnut on commit dc43340bd8f3e4d109da7cdfd9b3664016986cf0.
Release for SLE2024 artifact
Merge pull request #96 from udem-dlteam/laurent/fix-make-artifact.sh Use --no-cache in make-artifact.sh