From eb82b785b41614401db040267963a655bf76a04e Mon Sep 17 00:00:00 2001
From: Landon Curt Noll
These IOCCC Rules are version 29.00 2025-11-19.
+These IOCCC Rules are version 29.01 2025-11-19.
Be sure to read the IOCCC guidelines.
This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.
@@ -550,6 +550,7 @@ to be the SAME file. If you are preparing your submission on a sensitive filesystem, ensure that your submission will work on a case insensitive filesystem.The remarks.md and Makefile are explained in more detail in the Guidelines.
See IOCCC markdown guidelines.
See Rule 17 Packaging.
Your submission MUST NOT modify the filenames or content of any of
@@ -558,6 +559,14 @@ data files. To modify files, your program can make a copy or you can
use the Makefile to setup working copies. Any working copies MUST be
cleaned up by the Makefile clobber target, so as to restore the
directory to its original state.
Your submission MUST NOT create or modify directories and files
+ABOVE the current directory with the exception of the /tmp and the
+/var/tmp directories as long as the directory name or filename does
+NOT start with “.” (dot).
The Makefile clobber target MUST be restore your submission into
+original form, including the removal of any created files and directories.
Your code should be able to run under a +SUS environment.
I am NOT a Rule, I am a free(void *human); ‼️
while (!(ioccc(rule(you(are(number(6)))))) {
@@ -598,13 +607,13 @@ and
Rule 9 No hands
Entries requiring human interaction to be initially compiled are NOT
permitted. However, see the guidelines. Each entry MUST automated the
-its build process using bash, gmake, gcc, clang, under a SUS
-environment.
+its build process using bash, gmake, gcc, clang, under a
+SUS environment.
Note references to gmake can be any GNU Make compatible tool.
See Rule 17 Building.
Rule 10 Privileges
Programs that require special privileges (setuid(2), setgid(2),
-super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED.
+super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED.
We do NOT guarantee these functions will behave as you expect on our
test platforms. If your program needs special permissions you MUST
document this fact and explain why it is needed in your submission’s
@@ -669,12 +678,14 @@ modified data files. Don’t assume that git tool chain is installe
i.e., do NOT expect git clean -f to work.
The Makefile MUST use a syntax that is compatible with
bash(1) and GNU make(1). You are encouraged to use SHELL= bash in your Makefile; please add a space between the = and
-the value. Assume that commands commonly found in
-Single UNIX Specification
-environments and systems are available in the search $PATH.
-Avoid command options that aren’t part of
-SUS,
-such as GNU long name options --example or extensions like grep -P.
+the value such as:
+SHELL= bash
+Assume that commands commonly found in Single UNIX
+Specification
+environments and systems are available in the search
+$PATH. Avoid command options that aren’t part of
+SUS, such as
+GNU long name options --example or extensions like grep -P.
Do NOT assume that . (current directory) is in the $PATH environment variable.
See Rule 4 Files.
Rule 16 Anonymous
@@ -713,7 +724,8 @@ toolkit to are HIGHLY LIKELY to be REJECTED! B
that you are using the latest tools from the
mkiocccentry toolkit
GitHub repo.
-In summary it is best to use mkioccentry(1) to package your submission, rather than roll-it-by-hand.
+In summary: it is best to use mkioccentry(1) to package your submission,
+rather than roll-it-by-hand.
See Rule 4 Files.
Rule 18 License
The entirety of your submission MUST be submitted under the following license:
diff --git a/next/rules.md b/next/rules.md
index bea2a7ceb..1be33666a 100644
--- a/next/rules.md
+++ b/next/rules.md
@@ -41,7 +41,7 @@ writing by [contacting the judges](../contact.html).
Rules version
-------------
-These IOCCC Rules are version **29.00 2025-11-19**.
+These IOCCC Rules are version **29.01 2025-11-19**.
Be sure to read the [IOCCC guidelines](guidelines.html).
@@ -157,6 +157,8 @@ a case insensitive filesystem.
The `remarks.md` and `Makefile` are explained in more detail in the Guidelines.
+See [IOCCC markdown guidelines](../markdown.html).
+
See [Rule 17 Packaging](rules.html#rule-17-packaging).
@@ -170,6 +172,17 @@ use the Makefile to setup working copies. Any working copies **MUST** be
cleaned up by the `Makefile` `clobber` target, so as to restore the
directory to its original state.
+Your submission **MUST NOT** create or modify directories and files
+ABOVE the current directory with the exception of the `/tmp` and the
+`/var/tmp` directories as long as the directory name or filename does
+**NOT** start with "." (dot).
+
+The `Makefile` `clobber` target **MUST** be restore your submission into
+original form, including the removal of any created files and directories.
+
+Your code should be able to run under a
+[SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
+
Rule 6 Free
-----------
@@ -235,8 +248,8 @@ Rule 9 No hands
Entries requiring human interaction to be initially compiled are **NOT**
permitted. However, see the guidelines. Each entry **MUST** automated the
-its build process using `bash`, `gmake`, `gcc`, `clang`, under a [SUS
-environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
+its build process using `bash`, `gmake`, `gcc`, `clang`, under a
+[SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
Note references to `gmake` can be any GNU Make compatible tool.
@@ -247,7 +260,7 @@ Rule 10 Privileges
------------------
Programs that require special privileges (setuid(2), setgid(2),
-super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED.
+super-user, special owner, special group, etc.) are **HIGHLY DISCOURAGED**.
We do **NOT** guarantee these functions will behave as you expect on our
test platforms. If your program needs special permissions you **MUST**
document this fact and explain why it is needed in your submission’s
@@ -341,12 +354,16 @@ i.e., do **NOT** expect `git clean -f` to work.
The `Makefile` **MUST** use a syntax that is compatible with
`bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL=
bash` in your `Makefile`; please add a space between the `=` and
-the value. Assume that commands commonly found in
-[Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
-environments and systems are available in the search `$PATH`.
-Avoid command options that aren't part of
-[SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification),
-such as GNU long name options `--example` or extensions like `grep -P`.
+the value such as:
+
+ SHELL= bash
+
+Assume that commands commonly found in [Single UNIX
+Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
+environments and systems are available in the search
+`$PATH`. Avoid command options that aren't part of
+[SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification), such as
+GNU long name options `--example` or extensions like `grep -P`.
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable.
@@ -402,7 +419,8 @@ that you are using the latest tools from the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
GitHub repo.
-In summary it is best to use `mkioccentry(1)` to package your submission, rather than roll-it-by-hand.
+In summary: it is best to use `mkioccentry(1)` to package your submission,
+rather than roll-it-by-hand.
See [Rule 4 Files](rules.html#rule-4-files).