More work on rules, guidelines and FAQ

More links have to be checked as does formatting and other things. The
guidelines have had some typo fixes but more has to be done.
This commit is contained in:
Cody Boone Ferguson committed 2025-11-29 09:28:49 -08:00
1 parent 87d8c627a0
commit d49e2f2d9c
5 files changed
+307 -202

No files matched your search

+48 -48
View File
@@ -1,6 +1,6 @@
# IOCCC FAQ Table of Contents # IOCCC FAQ Table of Contents
This is FAQ version **29.01 2025-11-28**. This is FAQ version **29.02 2025-11-29**.
## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions) ## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions)
@@ -26,7 +26,7 @@ This is FAQ version **29.01 2025-11-28**.
- **Q 1.4**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a> - **Q 1.4**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a>
- **Q 1.5**: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a> - **Q 1.5**: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a>
- **Q 1.6**: <a class="normal" href="#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a> - **Q 1.6**: <a class="normal" href="#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a>
- **Q 1.7**: <a class="normal" href="#rule17">What are the details behind Rule 17 - Packaging?</a> - **Q 1.7**: <a class="normal" href="#rule17">What are the details behind Rule 17 - use mkiocccentry?</a>
- **Q 1.8**: <a class="normal" href="#uuid">How can I avoid re-entering my UUID to mkiocccentry?</a> - **Q 1.8**: <a class="normal" href="#uuid">How can I avoid re-entering my UUID to mkiocccentry?</a>
- **Q 1.9**: <a class="normal" href="#submission_dir">How can I avoid having to move or delete my submission directory for the same workdir?</a> - **Q 1.9**: <a class="normal" href="#submission_dir">How can I avoid having to move or delete my submission directory for the same workdir?</a>
- **Q 1.10**: <a class="normal" href="#download_submission">Can I download my submission tarball from the submit server?</a> - **Q 1.10**: <a class="normal" href="#download_submission">Can I download my submission tarball from the submit server?</a>
@@ -216,7 +216,7 @@ This toolkit is from the [mkiocccentry
repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you
use it to package your submission. Not doing so puts you at a great risk of use it to package your submission. Not doing so puts you at a great risk of
violating the [Rules](next/rules.html) and in particular violating the [Rules](next/rules.html) and in particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
Jump to: [top](#) Jump to: [top](#)
@@ -387,7 +387,7 @@ directory** will be created, with the name based on your IOCCC registration
username, which is **in the form of a UUID**, and submission number along with username, which is **in the form of a UUID**, and submission number along with
the timestamp; see the [rules](next/rules.html) for more details on this, and in the timestamp; see the [rules](next/rules.html) for more details on this, and in
particular particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
**IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and **IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and
`txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If `txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If
@@ -582,7 +582,7 @@ rounds; we look at the author name only if an entry wins. See the
- leaving the remark section empty (which would also indicate that you did not - leaving the remark section empty (which would also indicate that you did not
use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only
include whitespace you would still be violating include whitespace you would still be violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)).
Jump to: [top](#) Jump to: [top](#)
@@ -641,7 +641,7 @@ for more details.
See the See the
FAQ on "[Rule 17](#rule17)" FAQ on "[Rule 17](#rule17)"
and and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging) [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
itself. itself.
Do remember that if your submission requires different filenames, then you Do remember that if your submission requires different filenames, then you
@@ -858,12 +858,12 @@ itself is an extra file, meaning it counts **AS** an extra file.
This file does **NOT** need to pass the `txzchk(1)` tests; only your submission This file does **NOT** need to pass the `txzchk(1)` tests; only your submission
tarball needs to pass these tests. However see below if you do do this. tarball needs to pass these tests. However see below if you do do this.
Please pay careful attention to [Rule 17 - Packaging](next/rules.html#rule-17---packaging) and in Please pay careful attention to [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry) and in
particular the part about the maximum number of files per particular the part about the maximum number of files per
submission, which not only discusses the maximum submission, which not only discusses the maximum
number of files but also specific rules you must follow number of files but also specific rules you must follow
if you do include a tarball. Not following these points puts you at great risk if you do include a tarball. Not following these points puts you at great risk
of violating [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! of violating [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
Also, remember what the [guidelines](next/guidelines.html) say: Also, remember what the [guidelines](next/guidelines.html) say:
@@ -902,7 +902,7 @@ Jump to: [top](#)
<div id="rule17"> <div id="rule17">
### Q 1.7: What are details behind Rule 17 - Packaging? ### Q 1.7: What are details behind Rule 17 - Use mkiocccentry?
</div> </div>
@@ -925,7 +925,7 @@ contains **IMPORTANT** tools and libraries such as:
- `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`) - `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`)
The above mentioned tools will help you verify that your submission The above mentioned tools will help you verify that your submission
conforms to [Rule 17 - Packaging](next/rules.html#rule-17---packaging). Each of these tool has a `-h` conforms to [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry). Each of these tool has a `-h`
option that provides command line help. For additional details of each tool, see option that provides command line help. For additional details of each tool, see
its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html). its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html).
@@ -988,7 +988,7 @@ for help.
The `remarks.md` **MUST** be a **non**-empty file in markdown format The `remarks.md` **MUST** be a **non**-empty file in markdown format
(`mkiocccentry(1)` only checks the file size but if you do not have any text in (`mkiocccentry(1)` only checks the file size but if you do not have any text in
it you still risk violating this rule). See also it you still risk violating this rule). See also
[Rule 17 - Packaging](next/rules.html#rule-17---packaging) [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
and our and our
FAQ on "[remarks.md](#remarks_md)", FAQ on "[remarks.md](#remarks_md)",
our our
@@ -1096,7 +1096,7 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories
`-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e. `-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e.
`0444`). If any file or directory does not have the correct permissions, your `0444`). If any file or directory does not have the correct permissions, your
submission **WILL** be rejected for violating submission **WILL** be rejected for violating
[Rule 17 - Packaging](next/rules.html#rule17)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17)!
After `mkiocccentry(1)` creates the directories and copies the files with these After `mkiocccentry(1)` creates the directories and copies the files with these
modes, it also verifies them after the fact and if they are not correct it is an modes, it also verifies them after the fact and if they are not correct it is an
@@ -1124,7 +1124,7 @@ there should be no problem but if you were to package things manually it is
possible there could be a problem and this poses a big risk of violating possible there could be a problem and this poses a big risk of violating
[Rule 4 - Files](next/rules.html#rule-4---files) [Rule 4 - Files](next/rules.html#rule-4---files)
or or
[Rule 17 - Packaging](next/rules.html#rule17). [Rule 17 - Use mkiocccentry](next/rules.html#rule17).
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
@@ -1136,7 +1136,7 @@ These checks **MUST PASS**. If they do not you stand a significant chance of
having your submission rejected for violating having your submission rejected for violating
[Rule 4 - Files](next/rules.html#rule-4---files) [Rule 4 - Files](next/rules.html#rule-4---files)
or or
[Rule 17 - Packaging](next/rules.html#rule17). [Rule 17 - Use mkiocccentry](next/rules.html#rule17).
<div id="max-files"> <div id="max-files">
#### Maximum number of files per submission #### Maximum number of files per submission
@@ -1179,7 +1179,7 @@ The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
**IMPORTANT**: where **IMPORTANT**: where
[Rule 4 - Files](next/rules.html#rule-4---files), [Rule 4 - Files](next/rules.html#rule-4---files),
and and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
and the tools from the latest and the tools from the latest
release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
conflict, the [IOCCC judges](judges.html) will use their best judgment which conflict, the [IOCCC judges](judges.html) will use their best judgment which
@@ -1222,7 +1222,7 @@ FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)".
At the risk of stating the obvious: submissions that violate At the risk of stating the obvious: submissions that violate
[Rule 4 - Files](next/rules.html#rule-4---files), [Rule 4 - Files](next/rules.html#rule-4---files),
or or
[Rule 17 - Packaging](next/rules.html#rule-17---packaging) [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
**WILL BE REJECTED**, so **BE SURE** to use the latest release of the **WILL BE REJECTED**, so **BE SURE** to use the latest release of the
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test
your submission's xz compressed tarball. Do **NOT** assume you have the most your submission's xz compressed tarball. Do **NOT** assume you have the most
@@ -1594,7 +1594,7 @@ somehow, `txzchk(1)` will flag it as an error. When the judges run `txzchk(1)`
on the uploaded submission compressed tarball, if anything is wrong, for on the uploaded submission compressed tarball, if anything is wrong, for
instance if you "sneak in" any dot files or dot directories, the submission instance if you "sneak in" any dot files or dot directories, the submission
**WILL BE REJECTED** for violating **WILL BE REJECTED** for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
You may use whatever tools you need to develop your submission, including the You may use whatever tools you need to develop your submission, including the
use of `git(1)` or `gh(1)`, just be sure that your submission code and your use of `git(1)` or `gh(1)`, just be sure that your submission code and your
@@ -2212,7 +2212,7 @@ the judges **ONLY**; use of this option to validate your submission puts you at
a great risk of violating a great risk of violating
[Rule 4 - Files](next/rules.html#rule-4---files), [Rule 4 - Files](next/rules.html#rule-4---files),
or or
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!).
As an example, if your submission directory is As an example, if your submission directory is
`00000000-0000-4000-0000-000000000000-3/` then you should run the following `00000000-0000-4000-0000-000000000000-3/` then you should run the following
@@ -2241,7 +2241,7 @@ FAQ on "[.info.json](#info_json)"
as well as as well as
[Rule 4 - Files](next/rules.html#rule-4---files), [Rule 4 - Files](next/rules.html#rule-4---files),
and and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging) [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
for more information. for more information.
**NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you **NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you
@@ -2336,12 +2336,12 @@ In order of the file's contents we describe each required field, below:
* The IOCCC contestant ID used as a username in the form of **in the form of * The IOCCC contestant ID used as a username in the form of **in the form of
a UUID** and submission number; see the [Rules](next/rules.html) for more details a UUID** and submission number; see the [Rules](next/rules.html) for more details
on this, and in particular on this, and in particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
**NOTE:** if the contest ID is **NOT** in this format then `fnamchk` will **NOTE:** if the contest ID is **NOT** in this format then `fnamchk` will
report it as an **error** and your submission **WILL BE** rejected for report it as an **error** and your submission **WILL BE** rejected for
violating violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `tarball` (double quoted string) - `tarball` (double quoted string)
* The xz compressed tarball filename. * The xz compressed tarball filename.
@@ -2349,10 +2349,10 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for **IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for
this to be valid. If there is a mismatch you stand a great risk of having this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
Moreover, it is possible that `txzchk` will report a problem through Moreover, it is possible that `txzchk` will report a problem through
`fnamchk(1)` which also puts you at great risk of violating `fnamchk(1)` which also puts you at great risk of violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). The [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry). The
`txzchk(1)` tool will use the output of `fnamchk` to `txzchk(1)` tool will use the output of `fnamchk` to
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
validate your filename, or if you have the wrong directory name in the validate your filename, or if you have the wrong directory name in the
@@ -2367,7 +2367,7 @@ In order of the file's contents we describe each required field, below:
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `author_count` (number) - `author_count` (number)
* How many authors this submission has. * How many authors this submission has.
@@ -2432,7 +2432,7 @@ author(s) of the submission:
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
**NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not. **NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not.
@@ -2519,7 +2519,7 @@ reported invalid by `chksubmit(1)`, your submission will almost certainly be
rejected for violating the [Rules](next/rules.html) and in particular rejected for violating the [Rules](next/rules.html) and in particular
[Rule 4 - Files](next/rules.html#rule-4---files), [Rule 4 - Files](next/rules.html#rule-4---files),
and and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
An obvious example where `chksubmit(1)` would fail to validate `.auth.json` is if An obvious example where `chksubmit(1)` would fail to validate `.auth.json` is if
there is a mismatch of type in the JSON file with what is expected, for there is a mismatch of type in the JSON file with what is expected, for
@@ -2531,7 +2531,7 @@ that must be established as valid by `chksubmit(1)`) your submission would be
rejected for violating rejected for violating
[Rule 4 - Files](next/rules.html#rule-4---files), [Rule 4 - Files](next/rules.html#rule-4---files),
and and
[Rule 17 - Packaging](next/rules.html#rule-17---packaging) [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
and in particular and in particular
because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other
things too). things too).
@@ -2655,7 +2655,7 @@ In order of the file's contents we describe each required field, below:
* The IOCCC contestant ID used as a username in the form of **in the form of * The IOCCC contestant ID used as a username in the form of **in the form of
a UUID** and submission number; see the [rules](next/rules.html) for more details a UUID** and submission number; see the [rules](next/rules.html) for more details
on this, and in particular on this, and in particular
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `submit_slot` (number) - `submit_slot` (number)
* The submission number. * The submission number.
@@ -2666,7 +2666,7 @@ In order of the file's contents we describe each required field, below:
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `title` (double quoted string) - `title` (double quoted string)
* A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in * A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in
@@ -2676,7 +2676,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission **IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `abstract` (double quoted string) - `abstract` (double quoted string)
* A one line summary of your submission, with a length of 1 **THROUGH** * A one line summary of your submission, with a length of 1 **THROUGH**
@@ -2688,7 +2688,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if your abstract is 0 in length or > the maximum abstract length you **IMPORTANT:** if your abstract is 0 in length or > the maximum abstract length you
stand a great risk of having your submission rejected for violating stand a great risk of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `tarball` (double quoted string) - `tarball` (double quoted string)
* The xz compressed tarball filename. * The xz compressed tarball filename.
@@ -2696,10 +2696,10 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for **IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for
this to be valid. If there is a mismatch you stand a great risk of having this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
Moreover, it is possible that `txzchk` will report a problem through Moreover, it is possible that `txzchk` will report a problem through
`fnamchk(1)` which also puts you at great risk of violating `fnamchk(1)` which also puts you at great risk of violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
The `txzchk(1)` tool will use the output of `fnamchk` to The `txzchk(1)` tool will use the output of `fnamchk` to
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
validate your filename, or if you have the wrong directory name in the validate your filename, or if you have the wrong directory name in the
@@ -2734,7 +2734,7 @@ In order of the file's contents we describe each required field, below:
calculated size is **NOT** calculated size is **NOT**
violated but this is `true` then you stand a good chance of having your violated but this is `true` then you stand a good chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `rule_2a_mismatch` (boolean) - `rule_2a_mismatch` (boolean)
* `true` if * `true` if
@@ -2752,7 +2752,7 @@ In order of the file's contents we describe each required field, below:
calculated size is **NOT** calculated size is **NOT**
violated but this is `true` then you stand a good chance of having your violated but this is `true` then you stand a good chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
- `highbit_warning` (boolean) - `highbit_warning` (boolean)
* `true` if `iocccsize` detects a high bit (unescaped octets with the high * `true` if `iocccsize` detects a high bit (unescaped octets with the high
@@ -2780,7 +2780,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file has no problems and this is `true` then **IMPORTANT:** if the `Makefile` file has no problems and this is `true` then
you stand a good chance of having your submission rejected for violating you stand a good chance of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2791,7 +2791,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:**: if the `Makefile` file does **NOT** have an `all` rule then **IMPORTANT:**: if the `Makefile` file does **NOT** have an `all` rule then
you stand a good chance of having your submission rejected for violating you stand a good chance of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2803,7 +2803,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this
boolean is `true` then you stand a good chance of having your boolean is `true` then you stand a good chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2815,7 +2815,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this
boolean is `true` then you stand a good chance of having your submission boolean is `true` then you stand a good chance of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2827,7 +2827,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this
boolean is `true` then you stand a good chance of having your submission boolean is `true` then you stand a good chance of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2839,7 +2839,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this
boolean is `true` then you stand a good chance of having your submission boolean is `true` then you stand a good chance of having your submission
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2865,7 +2865,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a **IMPORTANT:** if this is **NOT** the case you stand a
great chance of having your submission rejected for violating great chance of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `auth_JSON` (double quoted string) - `auth_JSON` (double quoted string)
* This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in * This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in
@@ -2878,7 +2878,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `c_src` (double quoted string) - `c_src` (double quoted string)
* This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in * This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in
@@ -2888,7 +2888,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `Makefile` (double quoted string) - `Makefile` (double quoted string)
* This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in * This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in
@@ -2901,7 +2901,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
- `remarks` (double quoted string) - `remarks` (double quoted string)
* This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in * This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in
@@ -2914,7 +2914,7 @@ The `mkiocccentry(1)` tool will write it in this order:
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
The `manifest` **array** also **OPTIONALLY** has one or more of the field: The `manifest` **array** also **OPTIONALLY** has one or more of the field:
@@ -2927,7 +2927,7 @@ The `manifest` **array** also **OPTIONALLY** has one or more of the field:
filenames are not unique, not POSIX plus + safe chars only, if they are the filenames are not unique, not POSIX plus + safe chars only, if they are the
wrong permission and various other things. In these cases you stand a great wrong permission and various other things. In these cases you stand a great
risk of having your submission rejected for violating risk of having your submission rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)! [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
On the other hand, **ONLY** `mkiocccentry` will On the other hand, **ONLY** `mkiocccentry` will
verify that the files exist and can be read; `txzchk(1)` will **NOT** do verify that the files exist and can be read; `txzchk(1)` will **NOT** do
this for you as it only **LISTS** the tarball: it does **NOT** extract it. this for you as it only **LISTS** the tarball: it does **NOT** extract it.
@@ -2991,7 +2991,7 @@ out of range (see above for list). Two more examples would be if a field is
missing or if an unknown filed is in the file. In these cases (and any others missing or if an unknown filed is in the file. In these cases (and any others
that must be established as valid by `chksubmit`) your submission would be that must be established as valid by `chksubmit`) your submission would be
rejected for violating rejected for violating
[Rule 17 - Packaging](next/rules.html#rule-17---packaging), [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry),
and in particular and in particular
because `chksubmit` would not validate the `.info.json` file. because `chksubmit` would not validate the `.info.json` file.
+99 -66
View File
@@ -483,7 +483,7 @@ and remains unaltered. All other uses must receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p> writing by <a href="../contact.html">contacting the judges</a>.</p>
<h1 id="ioccc-guidelines-version">IOCCC Guidelines version</h1> <h1 id="ioccc-guidelines-version">IOCCC Guidelines version</h1>
<p class="leftbar"> <p class="leftbar">
These IOCCC guidelines are version <strong>29.00 2025-11-28</strong>. These IOCCC guidelines are version <strong>29.01 2025-11-29</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC. The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC.
@@ -491,23 +491,24 @@ The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>ch
<p class="leftbar"> <p class="leftbar">
Because the <strong>IOCCC29</strong> guidelines was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked. Because the <strong>IOCCC29</strong> guidelines was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked.
</p> </p>
<p>Be sure to read the <a href="guidelines.html">IOCCC rules</a>.</p> <p>Be sure to read the <a href="rules.html">IOCCC rules</a>.</p>
<div id="guideline2"> <div id="guideline2">
<div id="guideline-2---size"> <div id="guideline-2---size">
<h1 id="guidelines-for-rule-2---size">Guidelines for <a href="rules.html#rule-2---size">Rule 2 - Size</a></h1> <div id="guideline2-size">
<h1 id="guidelines-for-rule-2---size-restrictions">Guidelines for <a href="rules.html#rule2-size-restrictions">Rule 2 - Size restrictions</a></h1>
</div>
</div> </div>
</div> </div>
<p class="leftbar"> <p class="leftbar">
You should pay attention to our observations on You should pay attention to our observations on
<a href="../2024/index.html#code-size-and-rule-2">code size and Rule 2 remarks for IOCCC28</a>. <a href="../2024/index.html#code-size-and-rule-2">code size and Rule 2 remarks for IOCCC28</a>.
</p> </p>
<p>Your submission must satisfy <strong>BOTH</strong> the maximum size <p>Your submission must satisfy <strong>BOTH</strong> the
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a> <a href="rules.html#rule2a-gross-size">Rule 2a Gross Size</a>
<strong>AND</strong> <strong>AND</strong>
the IOCCC size <a href="rules.html#rule2b-net-size">Rule 2b Net Size</a> rules.</p>
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.</p>
<p>To check your code against <p>To check your code against
<a href="rules.html#rule-2---size">Rule 2 - Size</a>, use the <code>iocccentry(1)</code> tool. <a href="rules.html#rule2-size">Rule 2 - Size restrictions</a>, use the <code>iocccentry(1)</code> tool.
For example:</p> For example:</p>
<pre><code> iocccsize prog.c</code></pre> <pre><code> iocccsize prog.c</code></pre>
<p>The IOCCC size tool algorithm can be summarized as follows:</p> <p>The IOCCC size tool algorithm can be summarized as follows:</p>
@@ -523,24 +524,25 @@ counted by the IOCCC size tool.</p>
</blockquote> </blockquote>
<p>In cases where the above summary and the algorithm implemented by <p>In cases where the above summary and the algorithm implemented by
the IOCCC size tool <code>iocccsize(1)</code> conflict, the algorithm implemented the IOCCC size tool <code>iocccsize(1)</code> conflict, the algorithm implemented
by the current version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC judges</a>.</p> by the minimum required version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC
judges</a>.</p>
<p>Make sure <code>iocccsize</code> does not flag any issues with your <code>prog.c</code>.</p> <p>Make sure <code>iocccsize</code> does not flag any issues with your <code>prog.c</code>.</p>
<p>There a much less need to <code>#define</code> C reserved words in an effort <p>There a much less need to <code>#define</code> C reserved words in an effort
to get around the size limits of to get around the size limits of
<a href="rules.html#rule-2---size">Rule 2 - Size</a> <a href="rules.html#rule2-size">Rule 2 - Size restrictions</a>
because of the <code>iocccsize(1)</code> algorithm.</p> because of the <code>iocccsize(1)</code> algorithm.</p>
<p>Yes Virginia, <strong>the previous guideline sentence is an important hint</strong>!</p> <p>Yes Virginia, <strong>the previous guideline sentence is an important hint</strong>!</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="guideline3"> <div id="guideline3">
<div id="guideline-3---register"> <div id="guideline-3---register">
<h1 id="guidelines-for-rule-3---register">Guidelines for <a href="rules.html#rule-3---register">Rule 3 - Register</a></h1> <h1 id="guidelines-for-rule-3---register-for-the-contest">Guidelines for <a href="rules.html#rule3-register">Rule 3 - Register for the contest</a></h1>
</div> </div>
</div> </div>
<p>See FAQ on “<a href="../faq.html#author_handle_faq">What is an author handle?</a>”.</p> <p>See FAQ on “<a href="../faq.html#author_handle_faq">What is an author handle?</a>”.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="guideline7"> <div id="guideline7">
<div id="guideline-7---original-work"> <div id="guideline-7---original-work">
<h1 id="guidelines-for-rule-7---original-work">Guidelines for <a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a></h1> <h1 id="guidelines-for-rule-7---original-work">Guidelines for <a href="rules.html#rule7-original-work">Rule 7 - Original Work</a></h1>
</div> </div>
</div> </div>
<p>While it is <strong>NOT</strong> required, you are allowed to use tools or services such as:</p> <p>While it is <strong>NOT</strong> required, you are allowed to use tools or services such as:</p>
@@ -548,11 +550,11 @@ because of the <code>iocccsize(1)</code> algorithm.</p>
<li>Code generators</li> <li>Code generators</li>
<li>Static and runtime code analysis tools</li> <li>Static and runtime code analysis tools</li>
<li>Machine learning tools</li> <li>Machine learning tools</li>
<li>natural language models</li> <li>Natural language models</li>
<li>Large language models (LLMs)</li> <li>Large language models (LLMs)</li>
<li>Code copilot tools</li> <li>Code copilot tools</li>
<li>So called “<em>AI services</em>”</li> <li>So called “<em>AI services</em>”</li>
<li>etc.</li> <li>Etc.</li>
</ul> </ul>
<p>The IOCCC has a rich history of remarkable winning entries created by <p>The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code.</p> authors who skillfully employed various techniques to develop their code.</p>
@@ -563,7 +565,7 @@ how you used such tools</strong> in your <code>remarks.md</code> file.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="guideline11"> <div id="guideline11">
<div id="guideline-11---abuse"> <div id="guideline-11---abuse">
<h1 id="guidelines-for-rule-11---abuse">Guidelines for <a href="rules.html#rule-11---abuse">Rule 11 - Abuse</a></h1> <h1 id="guidelines-for-rule-11---legal-rule-abuse">Guidelines for <a href="rules.html#rule11-legal-rule-abuse">Rule 11 - Legal rule abuse</a></h1>
</div> </div>
</div> </div>
<p>We try to avoid limiting creativity in our <a href="rules.html">IOCCC rules</a> so <p>We try to avoid limiting creativity in our <a href="rules.html">IOCCC rules</a> so
@@ -571,7 +573,7 @@ we leave the contest open for creative rule interpretation.</p>
<p>We do realize that there are holes in the <a href="rules.html">IOCCC rules</a>, and invite <p>We do realize that there are holes in the <a href="rules.html">IOCCC rules</a>, and invite
submitters to attempt to exploit them.</p> submitters to attempt to exploit them.</p>
<p>We sometime award ‘<strong>Best abuse of the rules</strong>’ or ‘<strong>Worst abuse of the rules</strong>’, <p>We sometime award ‘<strong>Best abuse of the rules</strong>’ or ‘<strong>Worst abuse of the rules</strong>’,
or some variation to a submission that creatively attempts to exploit a holes in the or some variation, to a submission that creatively attempts to exploit a holes in the
<a href="rules.html">IOCCC rules</a>.</p> <a href="rules.html">IOCCC rules</a>.</p>
<p>When we do need to plug a hole in the <a href="rules.html">IOCCC rules</a> or <p>When we do need to plug a hole in the <a href="rules.html">IOCCC rules</a> or
<a href="guidelines.html">IOCCC guidelines</a>, we will attempt to use a very small plug, <a href="guidelines.html">IOCCC guidelines</a>, we will attempt to use a very small plug,
@@ -590,7 +592,8 @@ opinion of the <a href="../judges.html">IOCCC judges</a>, <strong>WILL</strong>
disqualified. <strong><em>RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!</em></strong> If you disqualified. <strong><em>RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!</em></strong> If you
have a submission that might otherwise be interesting, you might want to have a submission that might otherwise be interesting, you might want to
submit two versions; one that does not abuse the <a href="rules.html">IOCCC rules</a> and one that submit two versions; one that does not abuse the <a href="rules.html">IOCCC rules</a> and one that
does.</p> does, making sure to note in the one that does not abuse the rules that this is
another version, so that the judges do not assume you uploaded it by mistake.</p>
<p>If you intend to abuse the <a href="rules.html">IOCCC rules</a>, <p>If you intend to abuse the <a href="rules.html">IOCCC rules</a>,
indicate so in your <code>remarks.md</code> file. You <strong>MUST</strong> try to justify indicate so in your <code>remarks.md</code> file. You <strong>MUST</strong> try to justify
why you consider your rule abuse to be allowed under the why you consider your rule abuse to be allowed under the
@@ -600,9 +603,9 @@ As there is no guarantee that you will succeed, you might consider
submitting an alternate version that conforms to the submitting an alternate version that conforms to the
<a href="rules.html">IOCCC rules</a>.</p> <a href="rules.html">IOCCC rules</a>.</p>
<p>If you do bypass the <code>mkiocccentry(1)</code> warnings about <p>If you do bypass the <code>mkiocccentry(1)</code> warnings about
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a> <a href="rules.html#rule-2a-gross-size">Rule 2a - Gross Size</a>
and/or about and/or about
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a> <a href="rules.html#rule-2b-net-size">Rule 2b - Net Size</a>
or any other or any other
rule and submit a submission anyway, you <strong>MUST</strong> try to justify why the IOCCC rule and submit a submission anyway, you <strong>MUST</strong> try to justify why the IOCCC
<a href="../judges.html">IOCCC judges</a> should not reject your submission due to a rule <a href="../judges.html">IOCCC judges</a> should not reject your submission due to a rule
@@ -634,7 +637,7 @@ This is one of the reasons why the <a href="rules.html">IOCCC rules</a> and
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="guideline15"> <div id="guideline15">
<div id="guideline-15---building"> <div id="guideline-15---building">
<h1 id="guidelines-for-rule-15---building">Guidelines for <a href="rules.html#rule-15---building">Rule 15 - Building</a></h1> <h1 id="guidelines-for-rule-15---gnu-makefile">Guidelines for <a href="rules.html#rule15-gnu-makefile">Rule 15 - GNU Makefile</a></h1>
</div> </div>
</div> </div>
<p>You may use git, or services such as <a href="https://www.github.com">GitHub</a> <p>You may use git, or services such as <a href="https://www.github.com">GitHub</a>
@@ -648,13 +651,18 @@ an <strong>IDE</strong> will be rejected.</p>
environments, and commonly found on systems that reasonably conform to the environments, and commonly found on systems that reasonably conform to the
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a> <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>
in the building and compiling of your submission.</p> in the building and compiling of your submission.</p>
<p>Your Makefile <strong>MUST</strong> be compatible with GNU <code>make</code> and we suggest you use
<a href="Makefile.example">Makefile.example</a> as a template, renamed as Makefile of
course.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="guideline17"> <div id="guideline17">
<div id="guideline-17---packaging"> <div id="guideline-17---packaging">
<h1 id="guidelines-for-rule-17---packaging">Guidelines for <a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a></h1> <div id="guideline17-mkiocccentry">
<h1 id="guidelines-for-rule-17---use-mkiocccentry">Guidelines for <a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a></h1>
</div> </div>
</div> </div>
<p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the </div>
<p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the most recent release of
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
as use of using older versions of the mkiocccentry toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>!</p> as use of using older versions of the mkiocccentry toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>!</p>
<p>If you submit your own JSON files (other than <code>.auth.json</code> and <p>If you submit your own JSON files (other than <code>.auth.json</code> and
@@ -671,13 +679,13 @@ file</em>.
The non-extra files (<code>prog.c</code>, <code>prog.alt.c</code>, The non-extra files (<code>prog.c</code>, <code>prog.alt.c</code>,
<code>try.sh</code>, <code>try.alt.sh</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>.auth.json</code> and <code>.info.json</code>) <code>try.sh</code>, <code>try.alt.sh</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>.auth.json</code> and <code>.info.json</code>)
are considered <em>free files</em>, and to not count towards the are considered <em>free files</em>, and to not count towards the
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a> <a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>
limit of <strong>31</strong> <em>extra files</em>. limit of <strong>31</strong> <em>extra files</em>.
</p> </p>
<p>If you use an optional filename for something other than their intended use <p>If you use an optional filename for something other than their intended use
in order to get past the file limit, we will consider that an abuse of rules.</p> in order to get past the file limit, we will consider that an abuse of rules.</p>
<p>Your tarball does <strong>NOT</strong> reveal who you are! For this reason, the tarball <p>The <code>mkiocccentry</code> generated tarball does <strong>NOT</strong> reveal who you are! For this
<strong>MUST</strong> be a <strong>v7 format</strong> tarball.</p> reason, the tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball.</p>
<p>You should NOT use a tarball as an <em>extra file</em> for a test-suite unless you <p>You should NOT use a tarball as an <em>extra file</em> for a test-suite unless you
have a very good reason for this: if you do include a tarball as an <em>extra file</em>, have a very good reason for this: if you do include a tarball as an <em>extra file</em>,
then you <strong>MUST</strong> specify why in your <code>remarks.md</code> file.</p> then you <strong>MUST</strong> specify why in your <code>remarks.md</code> file.</p>
@@ -687,13 +695,23 @@ said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove
and your submission doesn’t require the test-suite to be available to run, and your submission doesn’t require the test-suite to be available to run,
then in your <code>remarks.md</code> a URL where such a test-suite may be downloaded from then in your <code>remarks.md</code> a URL where such a test-suite may be downloaded from
and how to use the test-suite to test your submission.</p> and how to use the test-suite to test your submission.</p>
<p>See FAQ on “<a href="../faq.html#try_scripts">What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</a>”.</p> <p>If you <strong>DO</strong> include a tarball then make sure it uses the v7 format. See the
<p>See FAQ on “<a href="../faq.html#auth_json">What is a <code>.auth.json</code> file?</a>”.</p> FAQ on “<a href="../faq.html#extra-files">extra files</a>”
<p>See FAQ on “<a href="../faq.html#info_json">What is a <code>.info.json</code> file?</a>”.</p> for details on how to make a v7 tarball.</p>
<p>See FAQ on “<a href="../faq.html#chksubmit">How can I validate my submission directory?</a>”.</p> <p>See the
<p>See FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p> FAQ on “<a href="../faq.html#try_scripts">What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</a>”.</p>
<p>See FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p> <p>See the
<p>See FAQ on “<a href="../faq.html#rule17">What are the details behind Rule 17 - Packaging?</a>”.</p> FAQ on “<a href="../faq.html#auth_json">What is a <code>.auth.json</code> file?</a>”.</p>
<p>See the
FAQ on “<a href="../faq.html#info_json">What is a <code>.info.json</code> file?</a>”.</p>
<p>See the
FAQ on “<a href="../faq.html#chksubmit">How can I validate my submission directory?</a>”.</p>
<p>See the
FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p>
<p>See the
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
<p>See the
FAQ on “<a href="../faq.html#rule17">What are the details behind Rule 17 - Use mkiocccentry?</a>”.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="mkiocccentry"> <div id="mkiocccentry">
<div id="mkiocccentry_toolkit"> <div id="mkiocccentry_toolkit">
@@ -706,7 +724,7 @@ use the <strong>most recent version</strong> of the
submissions that package using older versions of the submissions that package using older versions of the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
are <strong>LIKELY</strong> to be <strong>REJECTED</strong>!</p> are <strong>LIKELY</strong> to be <strong>REJECTED</strong>!</p>
<p>You <strong>REALLY SHOULD</strong> use latest <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> <p>You <strong>REALLY SHOULD</strong> use the latest <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
to package your own submission.</p> to package your own submission.</p>
<p>The <code>mkiocccentry(1)</code> tool runs a number of checks by way of these <p>The <code>mkiocccentry(1)</code> tool runs a number of checks by way of these
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
@@ -723,7 +741,7 @@ in the <code>txzchk(1)</code> man page.</p>
<p>Do <strong>NOT</strong> use <code>fnamchk(1)</code> command line options that are labeled “<strong>for TESTING purposes</strong>” <p>Do <strong>NOT</strong> use <code>fnamchk(1)</code> command line options that are labeled “<strong>for TESTING purposes</strong>”
in the <code>fnamchk(1)</code> man page.</p> in the <code>fnamchk(1)</code> man page.</p>
<p>Do <strong>NOT</strong> use <code>chkentry(1)</code> command line options that are labeled “<strong>for the use by the IOCCC judges only</strong>” <p>Do <strong>NOT</strong> use <code>chkentry(1)</code> command line options that are labeled “<strong>for the use by the IOCCC judges only</strong>”
in the <code>chkentry(1)</code> man page.</p> in the <code>chksubmit(1)</code> (or <code>chkentry(1)</code>) man page(s).</p>
<p>To view <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> man pages, <p>To view <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> man pages,
while your current directory is the top of the source tree:</p> while your current directory is the top of the source tree:</p>
<pre><code> man soup/man/man1/mkiocccentry.1 <pre><code> man soup/man/man1/mkiocccentry.1
@@ -736,32 +754,35 @@ while your current directory is the top of the source tree:</p>
<p>So that you do not have to repeatedly answer all the <code>mkiocccentry(1)</code> questions, <p>So that you do not have to repeatedly answer all the <code>mkiocccentry(1)</code> questions,
use <code>mkiocccentry -a answers ...</code> to create a file containing the answers you first give, use <code>mkiocccentry -a answers ...</code> to create a file containing the answers you first give,
that will allow you to later use <code>mkiocccentry -i answers ...</code> to reuse those same answers.</p> that will allow you to later use <code>mkiocccentry -i answers ...</code> to reuse those same answers.</p>
<p>The <code>mkiocccentry -A answers ..</code> does the same thing except that the <strong>answers file will be overwritten</strong>.</p> <p>The <code>mkiocccentry -A answers ...</code> does the same thing except that the <strong>answers file will be overwritten</strong>.</p>
<p>The <code>mkiocccentry -i answers ..</code> will still be required to confirm “<em>Yes/No</em>” questions.</p> <p>The <code>mkiocccentry -i answers ...</code> will still be required to confirm “<em>Yes/No</em>” questions.</p>
<p>Use <code>mkiocccentry -Y -i answers ..</code> to force a yes answers with <strong>great caution</strong> <p>Use <code>mkiocccentry -Y -i answers ..</code> to force a yes answers with <strong>great caution</strong>
because it might force a yes answer to something you do <strong>NOT</strong> want.</p> because it might force a yes answer to something you do <strong>NOT</strong> want, such as a
change in your code that violates a detected rule.</p>
<p>To help with not having to repeatedly enter a UUID, put your UUID into a file and use <p>To help with not having to repeatedly enter a UUID, put your UUID into a file and use
<code>mkiocccentry -u uuidfile ..</code>, or use <code>mkiocccentry -U UUID ..</code> to give the <code>UUID</code> <code>mkiocccentry -u uuidfile ...</code>, or use <code>mkiocccentry -U UUID ...</code> to give the <code>UUID</code>
on the command line.</p> on the command line.</p>
<p>If you wish to <strong>test</strong> that your submission passes the <code>mkiocccentry(1)</code> tests <p>If you wish to <strong>test</strong> that your submission passes the <code>mkiocccentry(1)</code> tests
without having to type in in answers each time, you can use the <code>-d</code> or <code>-s seed</code> without having to type in in answers each time, you can use the <code>-d</code> or <code>-s seed</code>
option to <code>mkiocccentry</code> for the tool to pseudo-randomly create answers for you. option to <code>mkiocccentry</code> for the tool to pseudo-randomly create answers for you.
For example:</p> For example:</p>
<pre><code> mkiocccentry -d workdir topdir</code></pre> <pre><code> mkiocccentry -d workdir topdir</code></pre>
<p>Do <strong>NOT</strong> submit a tarball formed by <code>mkiocccentry -d ..</code>, <strong>NOR</strong> by <code>mkiocccentry -s seed ..</code>!</p> <p>Do <strong>NOT</strong> submit a tarball formed by <code>mkiocccentry -d ..</code> <strong>OR</strong> by
<code>mkiocccentry -s seed ..</code> <strong>OR</strong> by using the <code>test</code> UUID!</p>
<p>The <code>mkiocccentry(1)</code> tool creates an <code>xz(1)</code> compressed <strong>v7 format</strong> tarball using a <code>tar(1)</code> <p>The <code>mkiocccentry(1)</code> tool creates an <code>xz(1)</code> compressed <strong>v7 format</strong> tarball using a <code>tar(1)</code>
command of the form:</p> command of the form:</p>
<pre><code> cd workdir/UUID-slot_num &amp;&amp; tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num</code></pre> <pre><code> cd workdir/UUID-slot_num &amp;&amp; tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num</code></pre>
<p>In many places the <code>mkiocccentry(1)</code> tool will prompt you to verify what you input, allowing you to <p>In many places the <code>mkiocccentry(1)</code> tool will prompt you to verify what you input, allowing you to
correct details as you go along.</p> correct details as you go along.</p>
<p>Pressing the “<em>enter key</em>” <code>mkiocccentry(1)</code> tool prompts will allow you to proceed with a default, <p>Pressing the “<em>enter key</em>” at the <code>mkiocccentry(1)</code> tool prompts will allow you
however make sure the default is the <strong>CORRECT</strong> answer.</p> to proceed with a default, however make sure the default is the <strong>CORRECT</strong>
answer.</p>
<p>The <code>mkiocccentry(1)</code> tool will use code from <code>iocccsize(1)</code> which detects a number of <p>The <code>mkiocccentry(1)</code> tool will use code from <code>iocccsize(1)</code> which detects a number of
issues (such as <a href="rules.html#rule-2---size">Rule 2 - Size</a>) that you may ignore, issues (such as <a href="rules.html#rule2-size">Rule 2 - Size</a>) that you may ignore,
however ignoring such issues <strong>comes with a significant level of risk!</strong></p> however ignoring such issues <strong>comes with a significant level of risk!</strong></p>
<p>Once the tarball is packaged it will <p>Once the tarball is packaged it will
run <code>txzchk(1)</code>, which will also run <code>fnamchk(1)</code>, as part of its algorithm.</p> run <code>txzchk(1)</code>, which will also run <code>fnamchk(1)</code>, as part of its algorithm.</p>
<p>The use of <code>mkiocccentry -W ...</code> is <strong>highly discouraged</strong> as this may ignore <p>The use of <code>mkiocccentry -W ....</code> is <strong>highly discouraged</strong> as this may ignore
warnings about a problem that may cause your submission to be <strong>REJECTED!</strong>”</p> warnings about a problem that may cause your submission to be <strong>REJECTED!</strong>”</p>
<p>If <code>mkiocccentry</code> encounters an <strong>error</strong>, the program will exit and the xz <p>If <code>mkiocccentry</code> encounters an <strong>error</strong>, the program will exit and the xz
compressed tarball <strong>will NOT be formed</strong>: this is a <strong>feature, not a bug</strong>!</p> compressed tarball <strong>will NOT be formed</strong>: this is a <strong>feature, not a bug</strong>!</p>
@@ -778,7 +799,7 @@ and <code>fnamchk(1)</code> (<code>mkiocccentry -F fnamchk ..</code>).</p>
<p>The <code>mkiocccentry(1)</code> tool will ignore any directory tree with a directory name that begins with a “.” (dot).</p> <p>The <code>mkiocccentry(1)</code> tool will ignore any directory tree with a directory name that begins with a “.” (dot).</p>
<p>The <code>mkiocccentry(1)</code> tool will all files that begin with <code>COPYING</code>, <code>COPYRIGHT</code>, and <code>LICENSE</code>, regardless <p>The <code>mkiocccentry(1)</code> tool will all files that begin with <code>COPYING</code>, <code>COPYRIGHT</code>, and <code>LICENSE</code>, regardless
of filename case.</p> of filename case.</p>
<p>The <code>mkiocccentry(1)</code> tool will any of the following files if they are found directly under <p>The <code>mkiocccentry(1)</code> tool will reject any of the following files if they are found directly under
the top level directory (<code>topdir</code>):</p> the top level directory (<code>topdir</code>):</p>
<ul> <ul>
<li>README.md</li> <li>README.md</li>
@@ -791,10 +812,13 @@ the top level directory (<code>topdir</code>):</p>
</ul> </ul>
<p>The files listed in the above list are allowed to exist in sub-directories: just <strong>NOT</strong> directly under <p>The files listed in the above list are allowed to exist in sub-directories: just <strong>NOT</strong> directly under
the top level directory (<code>topdir</code>).</p> the top level directory (<code>topdir</code>).</p>
<p>The <code>mkiocccentry(1)</code> tool evaluates all filenames and directory names in a case independent way: <p>The <code>mkiocccentry(1)</code> tool evaluates all filenames and directory names in a case
this <code>FOO</code>, <code>Foo</code>, and <code>foo</code> are treated as the <strong>SAME</strong> file even if your filesystem doesn’t.</p> independent way: thus <code>FOO</code>, <code>Foo</code>, and <code>foo</code> are considered the <strong>SAME</strong> file
<p>Having two or more filenames that differ only by case <strong>WILL</strong> lead to problems because of the previous statement.</p> even if your filesystem doesn’t do the same.</p>
<p>When the <code>mkiocccentry(1)</code> tool ignores a file, that file is <strong>NOT</strong> included as part of your submission.</p> <p>Having two or more filenames that differ only by case <strong>WILL</strong> lead to problems
because of the previous statement.</p>
<p>When the <code>mkiocccentry(1)</code> tool ignores a file, that file is <strong>NOT</strong> included as
part of your submission.</p>
<p>When the <code>mkiocccentry(1)</code> tool ignores a directory, that directory, <p>When the <code>mkiocccentry(1)</code> tool ignores a directory, that directory,
and everything under that directory is <strong>NOT</strong> included as part of and everything under that directory is <strong>NOT</strong> included as part of
your submission.</p> your submission.</p>
@@ -804,19 +828,28 @@ that is normally considered to be a regular file, such as a directory
named <code>Makefile</code>, <code>prog.alt.c</code>, <code>prog.c</code>, <code>remarks.md</code>, <code>try.alt.sh</code>, named <code>Makefile</code>, <code>prog.alt.c</code>, <code>prog.c</code>, <code>remarks.md</code>, <code>try.alt.sh</code>,
or <code>try.sh</code> is <strong>NOT</strong> a good idea and will likely cause the or <code>try.sh</code> is <strong>NOT</strong> a good idea and will likely cause the
<code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p> <code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p>
<p>The required <code>Makefile</code>, <code>remarks.md</code> file may <strong>NOT</strong> be an empty file.</p> <p>The required <code>Makefile</code> and <code>remarks.md</code> files may <strong>NOT</strong> be empty. This
<p>If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exits and is an empty file, does not mean just 0 bytes but also that it <strong>MUST</strong> have <strong>content</strong>, and
the <code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p> content that is relevant (e.g. a Makefile with just comments is <strong>NOT</strong>
<p>If the <code>mkiocccentry(1)</code> tool encounters anything that isn’t a file, isn’t a directory, allowed). However, with the exception of the <code>Makefile</code>, the <code>mkiocccentry(1)</code>
and isn’t a symlink (which the tool ignores), the <code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p> tool will <strong>ONLY</strong> check file size.</p>
<p>See FAQ on “<a href="../faq.html#mkiocccentry_bugs">How do I report bugs in an <code>mkiocccentry</code> tool?</a>”.</p> <p>If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exists and is an empty file,
<p>See <a href="rules.html#rule-11---abuse">Rule 11 - Abuse</a> for warnings about ignoring <code>mkiocccentry(1)</code> tool warnings.</p> the <code>mkiocccentry(1)</code> tool will abort with a <strong>fatal error</strong>.</p>
<p>See FAQ on “<a href="../faq.html#fnamchk">What is the <code>fnamchk</code> tool?</a>”.</p> <p>If the <code>mkiocccentry(1)</code> tool encounters anything that isn’t a file, isn’t a
<p>See FAQ on “<a href="../faq.html#about_mkiocccentry">What is mkiocccentry in simple terms?</a>”.</p> directory, and isn’t a symlink (which the tool ignores), the <code>mkiocccentry(1)</code>
<p>See FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it</a>”.</p> tool to abort with a <strong>fatal error</strong>.</p>
<p>See
FAQ on “<a href="../faq.html#mkiocccentry_bugs">How do I report bugs in an <code>mkiocccentry</code> tool?</a>”.</p>
<p>See <a href="rules.html#rule11-legal-rulea-abuse">Rule 11 - Legal rule abuse</a> for warnings about ignoring <code>mkiocccentry(1)</code> tool warnings.</p>
<p>See
FAQ on “<a href="../faq.html#fnamchk">What is the <code>fnamchk</code> tool?</a>”.</p>
<p>See
FAQ on “<a href="../faq.html#about_mkiocccentry">What is mkiocccentry in simple terms?</a>”.</p>
<p>See
FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it</a>”.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="general"> <div id="general">
<h1 id="general-overall-guidelines">General Overall Guidelines</h1> <h1 id="general-guidelines">General Guidelines</h1>
</div> </div>
<p>These <a href="guidelines.html">guideline</a> are <strong>hints</strong> and <strong>suggestions</strong>, <strong>NOT</strong> <a href="rules.html">IOCCC rules</a>.</p> <p>These <a href="guidelines.html">guideline</a> are <strong>hints</strong> and <strong>suggestions</strong>, <strong>NOT</strong> <a href="rules.html">IOCCC rules</a>.</p>
<p>While submissions that violate <a href="guidelines.html">guideline</a> are allowed, <p>While submissions that violate <a href="guidelines.html">guideline</a> are allowed,
@@ -1082,7 +1115,7 @@ and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one submission. See the Remember, you can submit more than one submission. See the
<a href="rules.html">IOCCC rules</a> <a href="rules.html">IOCCC rules</a>
for details (in particular, for details (in particular,
<a href="rules.html#rule-8---submission">Rule 8 - Submission</a>).</p> <a href="rules.html#rule8-submitting-requirements">Rule 8 - Submitting requirements</a>).</p>
<p>We suggest that you avoid trying for the ‘<strong>smallest self-replicating</strong>’ <p>We suggest that you avoid trying for the ‘<strong>smallest self-replicating</strong>’
source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in
<a href="../years.html#1994">1994</a>.</p> <a href="../years.html#1994">1994</a>.</p>
@@ -1169,7 +1202,7 @@ or Linux curses.</p>
If you do <code>#include &lt;curses.h&gt;</code> make <strong>CERTAIN</strong> you link in curses (i.e. If you do <code>#include &lt;curses.h&gt;</code> make <strong>CERTAIN</strong> you link in curses (i.e.
<code>-lcurses</code>) and not ncurses (i.e. <code>-lncurses</code>). <code>-lcurses</code>) and not ncurses (i.e. <code>-lncurses</code>).
</p> </p>
<p><a href="rules.html#rule-13---newlines">Rule 13 - Newlines</a> <p><a href="rules.html#rule12-utf8">Rule 12 - UTF-8</a>
no longer discourages the use of UTF-8 no longer discourages the use of UTF-8
characters in C code.</p> characters in C code.</p>
<p>It is a very good idea to, in your <code>remarks.md</code> file, tell us why you <p>It is a very good idea to, in your <code>remarks.md</code> file, tell us why you
@@ -1260,7 +1293,7 @@ character tab stop.</p>
when forming your submission’s <code>remarks.md</code> file. And if your submission when forming your submission’s <code>remarks.md</code> file. And if your submission
contains additional markdown files, please follow those same guidelines for contains additional markdown files, please follow those same guidelines for
those files. See also those files. See also
<a href="rules.html#rule-4---files">Rule 4 - Files</a>, <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>,
and the and the
FAQ on “<a href="../faq.html#markdown">markdown</a>”.</p> FAQ on “<a href="../faq.html#markdown">markdown</a>”.</p>
<p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain <p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain
@@ -1276,14 +1309,14 @@ is a <strong>hint</strong>. :-)</p>
<p>The reason for the times of day are so that key IOCCC events are <strong>calculated</strong> <p>The reason for the times of day are so that key IOCCC events are <strong>calculated</strong>
to be a <strong>fun</strong>ctional UTC time. :-)</p> to be a <strong>fun</strong>ctional UTC time. :-)</p>
<p>At least 2 of several reasons for selecting the prime, 2503, for <p>At least 2 of several reasons for selecting the prime, 2503, for
<a href="rules.html#rule-2b---net-size">Rule 2b - Net Size</a> <a href="rules.html#rule2b-net-size">Rule 2b - Net Size</a>
may be found on the <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>.</p> may be found on the <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>.</p>
<p>The 2503 value for <a href="rules.html#rule-2b---net-size">Rule 2b - Net</a> is a decimal anagram <p>The 2503 value for <a href="rules.html#rule2b-net-size">Rule 2b - Net Size</a> is a decimal anagram
of the number of the kernel disk pack of one of the judge’s <a href="https://en.wikipedia.org/wiki/BESM-6">BESM-6</a>.</p> of the number of the kernel disk pack of one of the judge’s <a href="https://en.wikipedia.org/wiki/BESM-6">BESM-6</a>.</p>
<p>There may or may not be fewer than 2^7+1 reasons why these <a href="guidelines.html">IOCCC <p>There may or may not be fewer than 2^7+1 reasons why these <a href="guidelines.html">IOCCC
guidelines</a> seem obfuscated.</p> guidelines</a> seem obfuscated.</p>
<p>Excessively “<em>dotty”</em> use of the <code>chksubmit(1)</code> or <code>chkentry(1)</code> commands suggests that <p>Excessively “<em>dotty”</em> use of the <code>chksubmit(1)</code> or <code>chkentry(1)</code> commands suggests that
either like silly things, or that you”<em>RTFS”</em> with some level of care.</p> either you like silly things, or that you”<em>RTFS”</em> with some level of care.</p>
<p>Some people might question what actually constitutes a valid JSON file, given <p>Some people might question what actually constitutes a valid JSON file, given
the state of the “<em>so-called</em>” JSON spec.. :-)</p> the state of the “<em>so-called</em>” JSON spec.. :-)</p>
<p>We prefer programs that do not require a fish license: crayons and <p>We prefer programs that do not require a fish license: crayons and
@@ -1359,7 +1392,7 @@ Please try to avoid this specific individual <em>guideline</em>, if it at all po
<p class="leftbar"> <p class="leftbar">
We do not recommend submitting <a href="https://systemd.io">systemd</a> source code to the IOCCC, We do not recommend submitting <a href="https://systemd.io">systemd</a> source code to the IOCCC,
if nothing else because that code is likely to exceed if nothing else because that code is likely to exceed
<a href="rules.html#rule-2---size">Rule 2 - Size</a>. <a href="rules.html#rule2-size">Rule 2 - Size</a>.
This isn’t to say that another highly compact and obfuscated This isn’t to say that another highly compact and obfuscated
replacement of <code>init(8)</code> would not be an interesting submission. replacement of <code>init(8)</code> would not be an interesting submission.
</p> </p>
+101 -66
View File
@@ -41,7 +41,7 @@ writing by [contacting the judges](../contact.html).
# IOCCC Guidelines version # IOCCC Guidelines version
<p class="leftbar"> <p class="leftbar">
These IOCCC guidelines are version **29.00 2025-11-28**. These IOCCC guidelines are version **29.01 2025-11-29**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -52,12 +52,14 @@ The <span style='font-size:28px;'><b>&verbar;</b></span> symbol indicates an **c
Because the **IOCCC29** guidelines was a substantial rewrite, only **important changes** from **IOCCC28** have been marked. Because the **IOCCC29** guidelines was a substantial rewrite, only **important changes** from **IOCCC28** have been marked.
</p> </p>
Be sure to read the [IOCCC rules](guidelines.html). Be sure to read the [IOCCC rules](rules.html).
<div id="guideline2"> <div id="guideline2">
<div id="guideline-2---size"> <div id="guideline-2---size">
# Guidelines for [Rule 2 - Size](rules.html#rule-2---size) <div id="guideline2-size">
# Guidelines for [Rule 2 - Size restrictions](rules.html#rule2-size-restrictions)
</div>
</div> </div>
</div> </div>
@@ -66,14 +68,13 @@ You should pay attention to our observations on
[code size and Rule 2 remarks for IOCCC28](../2024/index.html#code-size-and-rule-2). [code size and Rule 2 remarks for IOCCC28](../2024/index.html#code-size-and-rule-2).
</p> </p>
Your submission must satisfy **BOTH** the maximum size Your submission must satisfy **BOTH** the
[Rule 2a Gross Size](rules.html#rule-2a-gross-size) [Rule 2a Gross Size](rules.html#rule2a-gross-size)
**AND** **AND**
the IOCCC size [Rule 2b Net Size](rules.html#rule2b-net-size) rules.
[Rule 2b Next Size](rules.html#rule-2b-net-size).
To check your code against To check your code against
[Rule 2 - Size](rules.html#rule-2---size), use the `iocccentry(1)` tool. [Rule 2 - Size restrictions](rules.html#rule2-size), use the `iocccentry(1)` tool.
For example: For example:
``` <!---sh--> ``` <!---sh-->
@@ -95,13 +96,14 @@ counted by the IOCCC size tool.
In cases where the above summary and the algorithm implemented by In cases where the above summary and the algorithm implemented by
the IOCCC size tool `iocccsize(1)` conflict, the algorithm implemented the IOCCC size tool `iocccsize(1)` conflict, the algorithm implemented
by the current version of `iocccsize(1)` is preferred by the [IOCCC judges](../judges.html). by the minimum required version of `iocccsize(1)` is preferred by the [IOCCC
judges](../judges.html).
Make sure `iocccsize` does not flag any issues with your `prog.c`. Make sure `iocccsize` does not flag any issues with your `prog.c`.
There a much less need to `#define` C reserved words in an effort There a much less need to `#define` C reserved words in an effort
to get around the size limits of to get around the size limits of
[Rule 2 - Size](rules.html#rule-2---size) [Rule 2 - Size restrictions](rules.html#rule2-size)
because of the `iocccsize(1)` algorithm. because of the `iocccsize(1)` algorithm.
Yes Virginia, **the previous guideline sentence is an important hint**! Yes Virginia, **the previous guideline sentence is an important hint**!
@@ -112,7 +114,7 @@ Jump to: [top](#)
<div id="guideline3"> <div id="guideline3">
<div id="guideline-3---register"> <div id="guideline-3---register">
# Guidelines for [Rule 3 - Register](rules.html#rule-3---register) # Guidelines for [Rule 3 - Register for the contest](rules.html#rule3-register)
</div> </div>
</div> </div>
@@ -124,7 +126,7 @@ Jump to: [top](#)
<div id="guideline7"> <div id="guideline7">
<div id="guideline-7---original-work"> <div id="guideline-7---original-work">
# Guidelines for [Rule 7 - Original Work](rules.html#rule-7---original-work) # Guidelines for [Rule 7 - Original Work](rules.html#rule7-original-work)
</div> </div>
</div> </div>
@@ -133,11 +135,11 @@ While it is **NOT** required, you are allowed to use tools or services such as:
* Code generators * Code generators
* Static and runtime code analysis tools * Static and runtime code analysis tools
* Machine learning tools * Machine learning tools
* natural language models * Natural language models
* Large language models (LLMs) * Large language models (LLMs)
* Code copilot tools * Code copilot tools
* So called "_AI services_" * So called "_AI services_"
* etc. * Etc.
The IOCCC has a rich history of remarkable winning entries created by The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code. authors who skillfully employed various techniques to develop their code.
@@ -155,7 +157,7 @@ Jump to: [top](#)
<div id="guideline11"> <div id="guideline11">
<div id="guideline-11---abuse"> <div id="guideline-11---abuse">
# Guidelines for [Rule 11 - Abuse](rules.html#rule-11---abuse) # Guidelines for [Rule 11 - Legal rule abuse](rules.html#rule11-legal-rule-abuse)
</div> </div>
</div> </div>
@@ -166,7 +168,7 @@ We do realize that there are holes in the [IOCCC rules](rules.html), and invite
submitters to attempt to exploit them. submitters to attempt to exploit them.
We sometime award '**Best abuse of the rules**' or '**Worst abuse of the rules**', We sometime award '**Best abuse of the rules**' or '**Worst abuse of the rules**',
or some variation to a submission that creatively attempts to exploit a holes in the or some variation, to a submission that creatively attempts to exploit a holes in the
[IOCCC rules](rules.html). [IOCCC rules](rules.html).
When we do need to plug a hole in the [IOCCC rules](rules.html) or When we do need to plug a hole in the [IOCCC rules](rules.html) or
@@ -190,7 +192,8 @@ opinion of the [IOCCC judges](../judges.html), **WILL** be
disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you
have a submission that might otherwise be interesting, you might want to have a submission that might otherwise be interesting, you might want to
submit two versions; one that does not abuse the [IOCCC rules](rules.html) and one that submit two versions; one that does not abuse the [IOCCC rules](rules.html) and one that
does. does, making sure to note in the one that does not abuse the rules that this is
another version, so that the judges do not assume you uploaded it by mistake.
If you intend to abuse the [IOCCC rules](rules.html), If you intend to abuse the [IOCCC rules](rules.html),
indicate so in your `remarks.md` file. You **MUST** try to justify indicate so in your `remarks.md` file. You **MUST** try to justify
@@ -202,9 +205,9 @@ submitting an alternate version that conforms to the
[IOCCC rules](rules.html). [IOCCC rules](rules.html).
If you do bypass the `mkiocccentry(1)` warnings about If you do bypass the `mkiocccentry(1)` warnings about
[Rule 2a Gross Size](rules.html#rule-2a-gross-size) [Rule 2a - Gross Size](rules.html#rule-2a-gross-size)
and/or about and/or about
[Rule 2b Next Size](rules.html#rule-2b-net-size) [Rule 2b - Net Size](rules.html#rule-2b-net-size)
or any other or any other
rule and submit a submission anyway, you **MUST** try to justify why the IOCCC rule and submit a submission anyway, you **MUST** try to justify why the IOCCC
[IOCCC judges](../judges.html) should not reject your submission due to a rule [IOCCC judges](../judges.html) should not reject your submission due to a rule
@@ -243,7 +246,7 @@ Jump to: [top](#)
<div id="guideline15"> <div id="guideline15">
<div id="guideline-15---building"> <div id="guideline-15---building">
# Guidelines for [Rule 15 - Building](rules.html#rule-15---building) # Guidelines for [Rule 15 - GNU Makefile](rules.html#rule15-gnu-makefile)
</div> </div>
</div> </div>
@@ -261,17 +264,23 @@ environments, and commonly found on systems that reasonably conform to the
[Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
in the building and compiling of your submission. in the building and compiling of your submission.
Your Makefile **MUST** be compatible with GNU `make` and we suggest you use
[Makefile.example](Makefile.example) as a template, renamed as Makefile of
course.
Jump to: [top](#) Jump to: [top](#)
<div id="guideline17"> <div id="guideline17">
<div id="guideline-17---packaging"> <div id="guideline-17---packaging">
# Guidelines for [Rule 17 - Packaging](rules.html#rule-17---packaging) <div id="guideline17-mkiocccentry">
# Guidelines for [Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry)
</div>
</div> </div>
</div> </div>
We **STRONGLY** recommend you **do** install the We **STRONGLY** recommend you **do** install the most recent release of
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
as use of using older versions of the mkiocccentry toolkit to are **HIGHLY LIKELY** to be **REJECTED**! as use of using older versions of the mkiocccentry toolkit to are **HIGHLY LIKELY** to be **REJECTED**!
@@ -292,15 +301,15 @@ file_.
The non-extra files (`prog.c`, `prog.alt.c`, The non-extra files (`prog.c`, `prog.alt.c`,
`try.sh`, `try.alt.sh`, `remarks.md`, `Makefile`, `.auth.json` and `.info.json`) `try.sh`, `try.alt.sh`, `remarks.md`, `Makefile`, `.auth.json` and `.info.json`)
are considered _free files_, and to not count towards the are considered _free files_, and to not count towards the
[Rule 17 - Packaging](rules.html#rule-17---packaging) [Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry)
limit of **31** _extra files_. limit of **31** _extra files_.
</p> </p>
If you use an optional filename for something other than their intended use If you use an optional filename for something other than their intended use
in order to get past the file limit, we will consider that an abuse of rules. in order to get past the file limit, we will consider that an abuse of rules.
Your tarball does **NOT** reveal who you are! For this reason, the tarball The `mkiocccentry` generated tarball does **NOT** reveal who you are! For this
**MUST** be a **v7 format** tarball. reason, the tarball **MUST** be a **v7 format** tarball.
You should NOT use a tarball as an _extra file_ for a test-suite unless you You should NOT use a tarball as an _extra file_ for a test-suite unless you
have a very good reason for this: if you do include a tarball as an _extra file_, have a very good reason for this: if you do include a tarball as an _extra file_,
@@ -314,19 +323,30 @@ and your submission doesn't require the test-suite to be available to run,
then in your `remarks.md` a URL where such a test-suite may be downloaded from then in your `remarks.md` a URL where such a test-suite may be downloaded from
and how to use the test-suite to test your submission. and how to use the test-suite to test your submission.
See FAQ on "[What should I do with the `try.sh` and `try.alt.sh` scripts?](../faq.html#try_scripts)". If you **DO** include a tarball then make sure it uses the v7 format. See the
FAQ on "[extra files](../faq.html#extra-files)"
for details on how to make a v7 tarball.
See FAQ on "[What is a `.auth.json` file?](../faq.html#auth_json)". See the
FAQ on "[What should I do with the `try.sh` and `try.alt.sh` scripts?](../faq.html#try_scripts)".
See FAQ on "[What is a `.info.json` file?](../faq.html#info_json)". See the
FAQ on "[What is a `.auth.json` file?](../faq.html#auth_json)".
See FAQ on "[How can I validate my submission directory?](../faq.html#chksubmit)". See the
FAQ on "[What is a `.info.json` file?](../faq.html#info_json)".
See FAQ on "[What permissions may my files be and what if I need different permissions?](../faq.html#file_perms)". See the
FAQ on "[How can I validate my submission directory?](../faq.html#chksubmit)".
See FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)". See the
FAQ on "[What permissions may my files be and what if I need different permissions?](../faq.html#file_perms)".
See FAQ on "[What are the details behind Rule 17 - Packaging?](../faq.html#rule17)". See the
FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)".
See the
FAQ on "[What are the details behind Rule 17 - Use mkiocccentry?](../faq.html#rule17)".
Jump to: [top](#) Jump to: [top](#)
@@ -345,7 +365,7 @@ submissions that package using older versions of the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
are **LIKELY** to be **REJECTED**! are **LIKELY** to be **REJECTED**!
You **REALLY SHOULD** use latest [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) You **REALLY SHOULD** use the latest [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
to package your own submission. to package your own submission.
The `mkiocccentry(1)` tool runs a number of checks by way of these The `mkiocccentry(1)` tool runs a number of checks by way of these
@@ -365,7 +385,7 @@ Do **NOT** use `fnamchk(1)` command line options that are labeled "**for TESTING
in the `fnamchk(1)` man page. in the `fnamchk(1)` man page.
Do **NOT** use `chkentry(1)` command line options that are labeled "**for the use by the IOCCC judges only**" Do **NOT** use `chkentry(1)` command line options that are labeled "**for the use by the IOCCC judges only**"
in the `chkentry(1)` man page. in the `chksubmit(1)` (or `chkentry(1)`) man page(s).
To view [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) man pages, To view [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) man pages,
while your current directory is the top of the source tree: while your current directory is the top of the source tree:
@@ -385,15 +405,16 @@ So that you do not have to repeatedly answer all the `mkiocccentry(1)` questions
use `mkiocccentry -a answers ...` to create a file containing the answers you first give, use `mkiocccentry -a answers ...` to create a file containing the answers you first give,
that will allow you to later use `mkiocccentry -i answers ...` to reuse those same answers. that will allow you to later use `mkiocccentry -i answers ...` to reuse those same answers.
The `mkiocccentry -A answers ..` does the same thing except that the **answers file will be overwritten**. The `mkiocccentry -A answers ...` does the same thing except that the **answers file will be overwritten**.
The `mkiocccentry -i answers ..` will still be required to confirm "_Yes/No_" questions. The `mkiocccentry -i answers ...` will still be required to confirm "_Yes/No_" questions.
Use `mkiocccentry -Y -i answers ..` to force a yes answers with **great caution** Use `mkiocccentry -Y -i answers ..` to force a yes answers with **great caution**
because it might force a yes answer to something you do **NOT** want. because it might force a yes answer to something you do **NOT** want, such as a
change in your code that violates a detected rule.
To help with not having to repeatedly enter a UUID, put your UUID into a file and use To help with not having to repeatedly enter a UUID, put your UUID into a file and use
`mkiocccentry -u uuidfile ..`, or use `mkiocccentry -U UUID ..` to give the `UUID` `mkiocccentry -u uuidfile ...`, or use `mkiocccentry -U UUID ...` to give the `UUID`
on the command line. on the command line.
If you wish to **test** that your submission passes the `mkiocccentry(1)` tests If you wish to **test** that your submission passes the `mkiocccentry(1)` tests
@@ -405,7 +426,8 @@ For example:
mkiocccentry -d workdir topdir mkiocccentry -d workdir topdir
``` ```
Do **NOT** submit a tarball formed by `mkiocccentry -d ..`, **NOR** by `mkiocccentry -s seed ..`! Do **NOT** submit a tarball formed by `mkiocccentry -d ..` **OR** by
`mkiocccentry -s seed ..` **OR** by using the `test` UUID!
The `mkiocccentry(1)` tool creates an `xz(1)` compressed **v7 format** tarball using a `tar(1)` The `mkiocccentry(1)` tool creates an `xz(1)` compressed **v7 format** tarball using a `tar(1)`
command of the form: command of the form:
@@ -417,17 +439,18 @@ command of the form:
In many places the `mkiocccentry(1)` tool will prompt you to verify what you input, allowing you to In many places the `mkiocccentry(1)` tool will prompt you to verify what you input, allowing you to
correct details as you go along. correct details as you go along.
Pressing the "_enter key_" `mkiocccentry(1)` tool prompts will allow you to proceed with a default, Pressing the "_enter key_" at the `mkiocccentry(1)` tool prompts will allow you
however make sure the default is the **CORRECT** answer. to proceed with a default, however make sure the default is the **CORRECT**
answer.
The `mkiocccentry(1)` tool will use code from `iocccsize(1)` which detects a number of The `mkiocccentry(1)` tool will use code from `iocccsize(1)` which detects a number of
issues (such as [Rule 2 - Size](rules.html#rule-2---size)) that you may ignore, issues (such as [Rule 2 - Size](rules.html#rule2-size)) that you may ignore,
however ignoring such issues **comes with a significant level of risk!** however ignoring such issues **comes with a significant level of risk!**
Once the tarball is packaged it will Once the tarball is packaged it will
run `txzchk(1)`, which will also run `fnamchk(1)`, as part of its algorithm. run `txzchk(1)`, which will also run `fnamchk(1)`, as part of its algorithm.
The use of `mkiocccentry -W ...` is **highly discouraged** as this may ignore The use of `mkiocccentry -W ....` is **highly discouraged** as this may ignore
warnings about a problem that may cause your submission to be **REJECTED!**" warnings about a problem that may cause your submission to be **REJECTED!**"
If `mkiocccentry` encounters an **error**, the program will exit and the xz If `mkiocccentry` encounters an **error**, the program will exit and the xz
@@ -451,7 +474,7 @@ The `mkiocccentry(1)` tool will ignore any directory tree with a directory name
The `mkiocccentry(1)` tool will all files that begin with `COPYING`, `COPYRIGHT`, and `LICENSE`, regardless The `mkiocccentry(1)` tool will all files that begin with `COPYING`, `COPYRIGHT`, and `LICENSE`, regardless
of filename case. of filename case.
The `mkiocccentry(1)` tool will any of the following files if they are found directly under The `mkiocccentry(1)` tool will reject any of the following files if they are found directly under
the top level directory (`topdir`): the top level directory (`topdir`):
* README.md * README.md
@@ -465,12 +488,15 @@ the top level directory (`topdir`):
The files listed in the above list are allowed to exist in sub-directories: just **NOT** directly under The files listed in the above list are allowed to exist in sub-directories: just **NOT** directly under
the top level directory (`topdir`). the top level directory (`topdir`).
The `mkiocccentry(1)` tool evaluates all filenames and directory names in a case independent way: The `mkiocccentry(1)` tool evaluates all filenames and directory names in a case
this `FOO`, `Foo`, and `foo` are treated as the **SAME** file even if your filesystem doesn't. independent way: thus `FOO`, `Foo`, and `foo` are considered the **SAME** file
even if your filesystem doesn't do the same.
Having two or more filenames that differ only by case **WILL** lead to problems because of the previous statement. Having two or more filenames that differ only by case **WILL** lead to problems
because of the previous statement.
When the `mkiocccentry(1)` tool ignores a file, that file is **NOT** included as part of your submission. When the `mkiocccentry(1)` tool ignores a file, that file is **NOT** included as
part of your submission.
When the `mkiocccentry(1)` tool ignores a directory, that directory, When the `mkiocccentry(1)` tool ignores a directory, that directory,
and everything under that directory is **NOT** included as part of and everything under that directory is **NOT** included as part of
@@ -484,30 +510,39 @@ named `Makefile`, `prog.alt.c`, `prog.c`, `remarks.md`, `try.alt.sh`,
or `try.sh` is **NOT** a good idea and will likely cause the or `try.sh` is **NOT** a good idea and will likely cause the
`mkiocccentry(1)` tool to abort with a **fatal error**. `mkiocccentry(1)` tool to abort with a **fatal error**.
The required `Makefile`, `remarks.md` file may **NOT** be an empty file. The required `Makefile` and `remarks.md` files may **NOT** be empty. This
does not mean just 0 bytes but also that it **MUST** have **content**, and
content that is relevant (e.g. a Makefile with just comments is **NOT**
allowed). However, with the exception of the `Makefile`, the `mkiocccentry(1)`
tool will **ONLY** check file size.
If the optional file `try.alt.sh`, or `try.sh` exits and is an empty file, If the optional file `try.alt.sh`, or `try.sh` exists and is an empty file,
the `mkiocccentry(1)` tool to abort with a **fatal error**. the `mkiocccentry(1)` tool will abort with a **fatal error**.
If the `mkiocccentry(1)` tool encounters anything that isn't a file, isn't a directory, If the `mkiocccentry(1)` tool encounters anything that isn't a file, isn't a
and isn't a symlink (which the tool ignores), the `mkiocccentry(1)` tool to abort with a **fatal error**. directory, and isn't a symlink (which the tool ignores), the `mkiocccentry(1)`
tool to abort with a **fatal error**.
See FAQ on "[How do I report bugs in an `mkiocccentry` tool?](../faq.html#mkiocccentry_bugs)". See
FAQ on "[How do I report bugs in an `mkiocccentry` tool?](../faq.html#mkiocccentry_bugs)".
See [Rule 11 - Abuse](rules.html#rule-11---abuse) for warnings about ignoring `mkiocccentry(1)` tool warnings. See [Rule 11 - Legal rule abuse](rules.html#rule11-legal-rulea-abuse) for warnings about ignoring `mkiocccentry(1)` tool warnings.
See FAQ on "[What is the `fnamchk` tool?](../faq.html#fnamchk)". See
FAQ on "[What is the `fnamchk` tool?](../faq.html#fnamchk)".
See FAQ on "[What is mkiocccentry in simple terms?](../faq.html#about_mkiocccentry)". See
FAQ on "[What is mkiocccentry in simple terms?](../faq.html#about_mkiocccentry)".
See FAQ on "[What is the mkiocccentry tool, how do I obtain it and how do I use it](../faq.html#mkiocccentry)". See
FAQ on "[What is the mkiocccentry tool, how do I obtain it and how do I use it](../faq.html#mkiocccentry)".
Jump to: [top](#) Jump to: [top](#)
<div id="general"> <div id="general">
# General Overall Guidelines # General Guidelines
</div> </div>
These [guideline](guidelines.html) are **hints** and **suggestions**, **NOT** [IOCCC rules](rules.html). These [guideline](guidelines.html) are **hints** and **suggestions**, **NOT** [IOCCC rules](rules.html).
@@ -861,7 +896,7 @@ and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one submission. See the Remember, you can submit more than one submission. See the
[IOCCC rules](rules.html) [IOCCC rules](rules.html)
for details (in particular, for details (in particular,
[Rule 8 - Submission](rules.html#rule-8---submission)). [Rule 8 - Submitting requirements](rules.html#rule8-submitting-requirements)).
We suggest that you avoid trying for the '**smallest self-replicating**' We suggest that you avoid trying for the '**smallest self-replicating**'
source. The smallest, a [zero byte entry](../1994/smr/index.html), won in source. The smallest, a [zero byte entry](../1994/smr/index.html), won in
@@ -979,7 +1014,7 @@ If you do `#include <curses.h>` make **CERTAIN** you link in curses (i.e.
`-lcurses`) and not ncurses (i.e. `-lncurses`). `-lcurses`) and not ncurses (i.e. `-lncurses`).
</p> </p>
[Rule 13 - Newlines](rules.html#rule-13---newlines) [Rule 12 - UTF-8](rules.html#rule12-utf8)
no longer discourages the use of UTF-8 no longer discourages the use of UTF-8
characters in C code. characters in C code.
@@ -1084,7 +1119,7 @@ character tab stop.
when forming your submission's `remarks.md` file. And if your submission when forming your submission's `remarks.md` file. And if your submission
contains additional markdown files, please follow those same guidelines for contains additional markdown files, please follow those same guidelines for
those files. See also those files. See also
[Rule 4 - Files](rules.html#rule-4---files), [Rule 4 - Required files](rules.html#rule4-required-files),
and the and the
FAQ on "[markdown](../faq.html#markdown)". FAQ on "[markdown](../faq.html#markdown)".
@@ -1109,17 +1144,17 @@ The reason for the times of day are so that key IOCCC events are **calculated**
to be a **fun**ctional UTC time. :-) to be a **fun**ctional UTC time. :-)
At least 2 of several reasons for selecting the prime, 2503, for At least 2 of several reasons for selecting the prime, 2503, for
[Rule 2b - Net Size](rules.html#rule-2b---net-size) [Rule 2b - Net Size](rules.html#rule2b-net-size)
may be found on the ["Curios!" about 2503](https://t5k.org/curios/page.php/2503.html). may be found on the ["Curios!" about 2503](https://t5k.org/curios/page.php/2503.html).
The 2503 value for [Rule 2b - Net](rules.html#rule-2b---net-size) is a decimal anagram The 2503 value for [Rule 2b - Net Size](rules.html#rule2b-net-size) is a decimal anagram
of the number of the kernel disk pack of one of the judge's [BESM-6](https://en.wikipedia.org/wiki/BESM-6). of the number of the kernel disk pack of one of the judge's [BESM-6](https://en.wikipedia.org/wiki/BESM-6).
There may or may not be fewer than 2^7+1 reasons why these [IOCCC There may or may not be fewer than 2^7+1 reasons why these [IOCCC
guidelines](guidelines.html) seem obfuscated. guidelines](guidelines.html) seem obfuscated.
Excessively "_dotty"_ use of the `chksubmit(1)` or `chkentry(1)` commands suggests that Excessively "_dotty"_ use of the `chksubmit(1)` or `chkentry(1)` commands suggests that
either like silly things, or that you "_RTFS"_ with some level of care. either you like silly things, or that you "_RTFS"_ with some level of care.
Some people might question what actually constitutes a valid JSON file, given Some people might question what actually constitutes a valid JSON file, given
the state of the "_so-called_" JSON spec.. :-) the state of the "_so-called_" JSON spec.. :-)
@@ -1210,7 +1245,7 @@ We believe that Mark Twain's quote:
<p class="leftbar"> <p class="leftbar">
We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC, We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC,
if nothing else because that code is likely to exceed if nothing else because that code is likely to exceed
[Rule 2 - Size](rules.html#rule-2---size). [Rule 2 - Size](rules.html#rule2-size).
This isn't to say that another highly compact and obfuscated This isn't to say that another highly compact and obfuscated
replacement of `init(8)` would not be an interesting submission. replacement of `init(8)` would not be an interesting submission.
</p> </p>
+29 -11
View File
@@ -485,12 +485,12 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
<div id="rule0"> <div id="rule0">
<h2 id="rule-0---dates">Rule 0 - Dates</h2> <h2 id="rule-0---dates">Rule 0 - Dates</h2>
</div> </div>
<p>This IOCCC runs from <strong>2025-12-03 20:25:12.045045 UTC</strong> to <strong>2026-03-13 17:19:23.293137 UTC</strong>.</p> <p>This IOCCC runs from <code>2025-12-03 20:25:12.045045 UTC</code> to <code>2026-03-13 17:19:23.293137 UTC</code>.</p>
<p>This contest will enter the <strong>pending state</strong> on <strong>2025-12-03 20:25:12.045045 UTC</strong>, <p>This contest will enter the <strong>pending state</strong> on <code>2025-12-03 20:25:12.045045 UTC</code>,
allowing people to register for the IOCCC.</p> allowing people to register for the IOCCC.</p>
<p>This contest will enter the <strong>open state</strong> on <strong>2025-12-15 18:21:24.273033 UTC</strong>, <p>This contest will enter the <strong>open state</strong> on <code>2025-12-15 18:21:24.273033 UTC</code>,
allowing people to upload submissions to the <a href="https://submit.ioccc.org">IOCCC submit server</a>.</p> allowing people to upload submissions to the <a href="https://submit.ioccc.org">IOCCC submit server</a>.</p>
<p>This contest will enter the <strong>judging state</strong> on <strong>2026-03-13 17:19:23.293137 UTC</strong>, <p>This contest will enter the <strong>judging state</strong> on <code>2026-03-13 17:19:23.293137 UTC</code>,
when people will no longer be allowed to upload submissions.</p> when people will no longer be allowed to upload submissions.</p>
<p>Until the contest enters the <strong>open</strong> state, any or all <p>Until the contest enters the <strong>open</strong> state, any or all
of the above <strong>dates and times may change <em>AT ANY TIME</em></strong>!</p> of the above <strong>dates and times may change <em>AT ANY TIME</em></strong>!</p>
@@ -501,26 +501,34 @@ of the above <strong>dates and times may change <em>AT ANY TIME</em></strong>!</
</div> </div>
<p>Your submission <strong>MUST</strong> be a C program that does NOT <code>#include</code> data files.</p> <p>Your submission <strong>MUST</strong> be a C program that does NOT <code>#include</code> data files.</p>
<div id="rule2"> <div id="rule2">
<div id="rule2-size-restrictions">
<div id="rule2-size">
<h2 id="rule-2---size-restrictions">Rule 2 - Size restrictions</h2> <h2 id="rule-2---size-restrictions">Rule 2 - Size restrictions</h2>
</div> </div>
</div>
</div>
<p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong> <p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong>
<a href="rules.html#rule-2a-gross-size">Rule 2a &amp;lparen;Gross Size&amp;rparen;</a> <a href="rules.html#rule2a">Rule 2a (Gross Size)</a>
and and
<a href="rules.html#rule-2b-net-size">Rule 2b &amp;lparen;Net Size&amp;rparen;</a>. <a href="rules.html#rule2b">Rule 2b (Net Size)</a>.
During development this can be checked using <code>iocccsize(1)</code>:</p> During development this can be checked using <code>iocccsize(1)</code>:</p>
<pre><code> iocccsize prog.c</code></pre> <pre><code> iocccsize prog.c</code></pre>
<p>See the <a href="guidelines.html#guideline-2---size">Guidelines for Rule 2 - Size restrictions</a>.</p> <p>See the <a href="guidelines.html#guideline-2---size">Guidelines for Rule 2 - Size restrictions</a>.</p>
<div id="rule2a"> <div id="rule2a">
<div id="rule2a-gross-size">
<h3 id="rule-2a---gross-size">Rule 2a - Gross Size</h3> <h3 id="rule-2a---gross-size">Rule 2a - Gross Size</h3>
</div> </div>
</div>
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong> <p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
exceed <strong>4993</strong> bytes.</p> exceed <strong>4993</strong> bytes.</p>
<p><strong>NOTE</strong>: by default <code>iocccsize</code> will only report the rule 2b size, unless the <p><strong>NOTE</strong>: by default <code>iocccsize</code> will only report the rule 2b size, unless the
code surpasses the limit.</p> code surpasses the limit.</p>
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p> <p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<div id="rule2b"> <div id="rule2b">
<div id="rule2b-net-size">
<h3 id="rule-2b---net-size">Rule 2b - Net Size</h3> <h3 id="rule-2b---net-size">Rule 2b - Net Size</h3>
</div> </div>
</div>
<p>When the filename of your program source (i.e., <code>prog.c</code>) is given as a <p>When the filename of your program source (i.e., <code>prog.c</code>) is given as a
command line argument to the latest version of the official IOCCC size command line argument to the latest version of the official IOCCC size
tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST
@@ -529,7 +537,7 @@ NOT</strong> exceed <strong>2503</strong>.</p>
Use mkiocccentry</a>.</p> Use mkiocccentry</a>.</p>
<div id="rule3"> <div id="rule3">
<div id="rule3-register"> <div id="rule3-register">
<h2 id="rule-3---you-must-register-to-enter-the-contest">Rule 3 - You must register to enter the contest</h2> <h2 id="rule-3---register-for-the-contest">Rule 3 - Register for the contest</h2>
</div> </div>
</div> </div>
<p>You <strong>MUST</strong> register, using a valid email address, in order to submit <p>You <strong>MUST</strong> register, using a valid email address, in order to submit
@@ -603,7 +611,7 @@ a case insensitive filesystem.</p></li>
</ul> </ul>
<p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p> <p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p>
<p>See <a href="../markdown.html">IOCCC markdown guidelines</a>.</p> <p>See <a href="../markdown.html">IOCCC markdown guidelines</a>.</p>
<p>See <a href="rules.html#rule-17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p> <p>See <a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
<p>See the <p>See the
FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p> FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p>
<p>See the <a href="guidelines.html#mkiocccentry_toolkit">Guidelines on the mkiocccentry toolkit</a>.</p> <p>See the <a href="guidelines.html#mkiocccentry_toolkit">Guidelines on the mkiocccentry toolkit</a>.</p>
@@ -638,8 +646,10 @@ original form, including the removal of any created files and directories.</p>
}</code></pre> }</code></pre>
<p>See <a href="rules.html#rule-19---prime">Rule 19 - Prime</a>.</p> <p>See <a href="rules.html#rule-19---prime">Rule 19 - Prime</a>.</p>
<div id="rule7"> <div id="rule7">
<div id="rule7-original-work">
<h2 id="rule-7---original-work">Rule 7 - Original Work</h2> <h2 id="rule-7---original-work">Rule 7 - Original Work</h2>
</div> </div>
</div>
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you <p>You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you
do <strong>NOT</strong> own the work, then you <strong>MUST</strong> have permission from the original do <strong>NOT</strong> own the work, then you <strong>MUST</strong> have permission from the original
owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by others, you owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by others, you
@@ -649,8 +659,10 @@ you obtained from them in your <code>remarks.md</code> file.</p>
<p>See <a href="rules.html#rule-16-anonymous-judging">Rule 16 - Anonymous Judging</a>.</p> <p>See <a href="rules.html#rule-16-anonymous-judging">Rule 16 - Anonymous Judging</a>.</p>
<p>See <a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p> <p>See <a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
<div id="rule8"> <div id="rule8">
<div id="rule8-submitting-requirements">
<h2 id="rule-8---submitting-requirements">Rule 8 - Submitting requirements</h2> <h2 id="rule-8---submitting-requirements">Rule 8 - Submitting requirements</h2>
</div> </div>
</div>
<p>The submit server will accept submissions <strong>ONLY</strong> from those who have <p>The submit server will accept submissions <strong>ONLY</strong> from those who have
registered and <strong>ONLY</strong> while the contest is open.</p> registered and <strong>ONLY</strong> while the contest is open.</p>
<p>The submit server places a total size limit of <strong>3999971</strong> bytes <strong>PER</strong> <p>The submit server places a total size limit of <strong>3999971</strong> bytes <strong>PER</strong>
@@ -665,7 +677,7 @@ validate your submission.</p>
<p>Do <strong>NOT</strong> register more than one account!</p> <p>Do <strong>NOT</strong> register more than one account!</p>
<p>See <p>See
<a href="rules.html#rule3-register">Rule 3 - Registering for the IOCCC</a>, <a href="rules.html#rule3-register">Rule 3 - Registering for the IOCCC</a>,
<a href="rules.html#rule-15---building">Rule 15 - GNU Makefile compatibility</a>, <a href="rules.html#rule15-gnu-makefile">Rule 15 - GNU Makefile compatibility</a>,
and and
<a href="rules.html#rule-17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p> <a href="rules.html#rule-17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
<div id="rule9"> <div id="rule9">
@@ -699,8 +711,10 @@ bits are <strong>NOT</strong> allowed in submissions and those bits will <strong
and and
<a href="rules.html#rule5-modifying-files">Rule 5 - Do NOT modify files</a>.</p> <a href="rules.html#rule5-modifying-files">Rule 5 - Do NOT modify files</a>.</p>
<div id="rule11"> <div id="rule11">
<div id="rule11-legal-rule-abuse">
<h2 id="rule-11---legal-rule-abuse">Rule 11 - Legal rule abuse</h2> <h2 id="rule-11---legal-rule-abuse">Rule 11 - Legal rule abuse</h2>
</div> </div>
</div>
<p>Legal abuse of the rules is <strong>somewhat</strong> encouraged, but comes with risks. <p>Legal abuse of the rules is <strong>somewhat</strong> encouraged, but comes with risks.
A submission that, in the opinion of the Judges, <strong>violates</strong> the rules <strong>WILL A submission that, in the opinion of the Judges, <strong>violates</strong> the rules <strong>WILL
BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify
@@ -721,8 +735,10 @@ wrong slot by mistake.</p>
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule <p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule
abuse</a>.</p> abuse</a>.</p>
<div id="rule12"> <div id="rule12">
<div id="rule12-utf8">
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2> <h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
</div> </div>
</div>
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the <p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the
IOCCC.</p> IOCCC.</p>
<div id="rule13"> <div id="rule13">
@@ -751,7 +767,9 @@ improve your submission. If you do resubmit something that didn’t previously
win, then you are encouraged to mention this in your <code>remarks.md</code> file as this win, then you are encouraged to mention this in your <code>remarks.md</code> file as this
<strong>sometimes</strong> helps.</p> <strong>sometimes</strong> helps.</p>
<div id="rule15"> <div id="rule15">
<h2 id="rule-15---gnu-makefile-compatibility">Rule 15 - GNU Makefile compatibility</h2> <div id="rule15-gnu-makefile">
<h2 id="rule-15---gnu-makefile">Rule 15 - GNU Makefile</h2>
</div>
</div> </div>
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. It’s highly recommended <p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. It’s highly recommended
that you copy the <a href="Makefile.example">Makefile.example</a> as a template, renaming that you copy the <a href="Makefile.example">Makefile.example</a> as a template, renaming
@@ -774,7 +792,7 @@ environments and systems are available in the search
GNU long name options (such as <code>--example</code>) or extensions like <code>grep -P</code>.</p> GNU long name options (such as <code>--example</code>) or extensions like <code>grep -P</code>.</p>
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment <p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment
variable.</p> variable.</p>
<p>See <a href="rules.html#rule-4---files">Rule 4 - Required files</a>.</p> <p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>.</p>
<p>See FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p> <p>See FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
<p>See <a href="guidelines.html#guideline-15---building">Guidelines for Rule 15 - GNU Makefile compatibility</a>.</p> <p>See <a href="guidelines.html#guideline-15---building">Guidelines for Rule 15 - GNU Makefile compatibility</a>.</p>
<div id="rule16"> <div id="rule16">
+30 -11
View File
@@ -48,15 +48,16 @@ Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
## Rule 0 - Dates ## Rule 0 - Dates
</div> </div>
This IOCCC runs from **2025-12-03 20:25:12.045045 UTC** to **2026-03-13 17:19:23.293137 UTC**. This IOCCC runs from `2025-12-03 20:25:12.045045 UTC` to `2026-03-13
17:19:23.293137 UTC`.
This contest will enter the **pending state** on **2025-12-03 20:25:12.045045 UTC**, This contest will enter the **pending state** on `2025-12-03 20:25:12.045045 UTC`,
allowing people to register for the IOCCC. allowing people to register for the IOCCC.
This contest will enter the **open state** on **2025-12-15 18:21:24.273033 UTC**, This contest will enter the **open state** on `2025-12-15 18:21:24.273033 UTC`,
allowing people to upload submissions to the [IOCCC submit server](https://submit.ioccc.org). allowing people to upload submissions to the [IOCCC submit server](https://submit.ioccc.org).
This contest will enter the **judging state** on **2026-03-13 17:19:23.293137 UTC**, This contest will enter the **judging state** on `2026-03-13 17:19:23.293137 UTC`,
when people will no longer be allowed to upload submissions. when people will no longer be allowed to upload submissions.
Until the contest enters the **open** state, any or all Until the contest enters the **open** state, any or all
@@ -75,13 +76,17 @@ Your submission **MUST** be a C program that does NOT `#include` data files.
<div id="rule2"> <div id="rule2">
<div id="rule2-size-restrictions">
<div id="rule2-size">
## Rule 2 - Size restrictions ## Rule 2 - Size restrictions
</div> </div>
</div>
</div>
`Rule 2` requires that your submission satisfy **BOTH** `Rule 2` requires that your submission satisfy **BOTH**
[Rule 2a &lparen;Gross Size&rparen;](rules.html#rule-2a-gross-size) [Rule 2a &lpar;Gross Size&rpar;](rules.html#rule2a)
and and
[Rule 2b &lparen;Net Size&rparen;](rules.html#rule-2b-net-size). [Rule 2b &lpar;Net Size&rpar;](rules.html#rule2b).
During development this can be checked using `iocccsize(1)`: During development this can be checked using `iocccsize(1)`:
``` <!---sh--> ``` <!---sh-->
@@ -92,8 +97,10 @@ See the [Guidelines for Rule 2 - Size restrictions](guidelines.html#guideline-2-
<div id="rule2a"> <div id="rule2a">
<div id="rule2a-gross-size">
### Rule 2a - Gross Size ### Rule 2a - Gross Size
</div> </div>
</div>
The overall maximum size of your `prog.c` program source **MUST NOT** The overall maximum size of your `prog.c` program source **MUST NOT**
exceed **4993** bytes. exceed **4993** bytes.
@@ -105,8 +112,10 @@ See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#
<div id="rule2b"> <div id="rule2b">
<div id="rule2b-net-size">
### Rule 2b - Net Size ### Rule 2b - Net Size
</div> </div>
</div>
When the filename of your program source (i.e., `prog.c`) is given as a When the filename of your program source (i.e., `prog.c`) is given as a
command line argument to the latest version of the official IOCCC size command line argument to the latest version of the official IOCCC size
@@ -119,7 +128,7 @@ Use mkiocccentry](#rule17-mkiocccentry).
<div id="rule3"> <div id="rule3">
<div id="rule3-register"> <div id="rule3-register">
## Rule 3 - You must register to enter the contest ## Rule 3 - Register for the contest
</div> </div>
</div> </div>
@@ -218,7 +227,7 @@ The `remarks.md` and `Makefile` are explained in more detail in the Guidelines.
See [IOCCC markdown guidelines](../markdown.html). See [IOCCC markdown guidelines](../markdown.html).
See [Rule 17 - Use mkiocccentry](rules.html#rule-17-mkiocccentry). See [Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry).
See the See the
FAQ on "[What permissions may my files be and what if I need different permissions?](../faq.html#file_perms)". FAQ on "[What permissions may my files be and what if I need different permissions?](../faq.html#file_perms)".
@@ -270,8 +279,10 @@ See [Rule 19 - Prime](rules.html#rule-19---prime).
<div id="rule7"> <div id="rule7">
<div id="rule7-original-work">
## Rule 7 - Original Work ## Rule 7 - Original Work
</div> </div>
</div>
You, the author(s), **MUST** own the contents of your submission, **OR**, IF you You, the author(s), **MUST** own the contents of your submission, **OR**, IF you
do **NOT** own the work, then you **MUST** have permission from the original do **NOT** own the work, then you **MUST** have permission from the original
@@ -287,8 +298,10 @@ See [Guidelines for Rule 7 - Original Work](guidelines.html#guideline-7---origin
<div id="rule8"> <div id="rule8">
<div id="rule8-submitting-requirements">
## Rule 8 - Submitting requirements ## Rule 8 - Submitting requirements
</div> </div>
</div>
The submit server will accept submissions **ONLY** from those who have The submit server will accept submissions **ONLY** from those who have
registered and **ONLY** while the contest is open. registered and **ONLY** while the contest is open.
@@ -308,7 +321,7 @@ Do **NOT** register more than one account!
See See
[Rule 3 - Registering for the IOCCC](rules.html#rule3-register), [Rule 3 - Registering for the IOCCC](rules.html#rule3-register),
[Rule 15 - GNU Makefile compatibility](rules.html#rule-15---building), [Rule 15 - GNU Makefile compatibility](rules.html#rule15-gnu-makefile),
and and
[Rule 17 - Use mkiocccentry](rules.html#rule-17-mkiocccentry). [Rule 17 - Use mkiocccentry](rules.html#rule-17-mkiocccentry).
@@ -356,8 +369,10 @@ and
<div id="rule11"> <div id="rule11">
<div id="rule11-legal-rule-abuse">
## Rule 11 - Legal rule abuse ## Rule 11 - Legal rule abuse
</div> </div>
</div>
Legal abuse of the rules is **somewhat** encouraged, but comes with risks. Legal abuse of the rules is **somewhat** encouraged, but comes with risks.
A submission that, in the opinion of the Judges, **violates** the rules **WILL A submission that, in the opinion of the Judges, **violates** the rules **WILL
@@ -385,8 +400,10 @@ abuse](guidelines.html#guideline-11---abuse).
<div id="rule12"> <div id="rule12">
<div id="rule12-utf8">
## Rule 12 - UTF-8 ## Rule 12 - UTF-8
</div> </div>
</div>
Use of UTF-8 is supported by `C89` standard and its updates and so too by the Use of UTF-8 is supported by `C89` standard and its updates and so too by the
IOCCC. IOCCC.
@@ -426,7 +443,9 @@ win, then you are encouraged to mention this in your `remarks.md` file as this
<div id="rule15"> <div id="rule15">
## Rule 15 - GNU Makefile compatibility <div id="rule15-gnu-makefile">
## Rule 15 - GNU Makefile
</div>
</div> </div>
The `Makefile` **MUST** adhere to GNU Makefile syntax. It's highly recommended The `Makefile` **MUST** adhere to GNU Makefile syntax. It's highly recommended
@@ -459,7 +478,7 @@ GNU long name options (such as `--example`) or extensions like `grep -P`.
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment Do **NOT** assume that `.` (current directory) is in the `$PATH` environment
variable. variable.
See [Rule 4 - Required files](rules.html#rule-4---files). See [Rule 4 - Required files](rules.html#rule4-required-files).
See FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)". See FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)".