improve rules & guidelines
Added a number of change bars to the rules & guidelines. Recommend recommend that all markdown files in your submission observe [IOCCC markdown guidelines](../markdown.html). Made use of "_..._" consistent in the rules & guidelines. Updated some the fun guidelines. Performed some whitespace cleanup in the rules & guidelines. Changed IOCCC Rules to version **29.12 2025-12-01**. Changed IOCCC Guidelines to version **29.04 2025-12-01** Ran `make quick_www` to perform the above.
This commit is contained in:
1 parent
eda2531e4d
commit
75387360d0
5 files changed
+524
-224
No files matched your search
+86
-19
@@ -39,7 +39,15 @@ writing by [contacting the judges](../contact.html).
|
||||
|
||||
## Rules Version
|
||||
|
||||
These IOCCC Rules are version **29.11 2025-11-30**.
|
||||
These IOCCC Rules are version **29.12 2025-12-01**.
|
||||
|
||||
<p class="leftbar">
|
||||
The <span style='font-size:28px;'><b>|</b></span> symbol indicates an **change** from the previous IOCCC.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Because the **IOCCC29** rules was a substantial rewrite, only **important changes** from **IOCCC28** have been marked.
|
||||
</p>
|
||||
|
||||
Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
|
||||
|
||||
@@ -48,20 +56,30 @@ Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
|
||||
## Rule 0 - Dates
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
This IOCCC runs from `2025-12-03 20:25:12.045045 UTC` to `2026-03-13 17:19:23.293137 UTC`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This contest will enter the [pending state](../faq.html#pending) on `2025-12-03 20:25:12.045045 UTC`,
|
||||
allowing people to [register for the IOCCC](register.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This contest will enter the [open state](../faq.html#open) on `2025-12-15 18:21:24.273033 UTC`,
|
||||
allowing people to [upload submissions](submit.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This contest will enter the [judging state](../faq.html#judging) on `2026-03-13 17:19:23.293137 UTC`,
|
||||
when people will no longer be allowed to upload submissions.
|
||||
</p>
|
||||
|
||||
The above **dates and times may change _AT ANY TIME_** until the [contest status](../status.html) is **open**.
|
||||
|
||||
<p class="leftbar">
|
||||
The above timestamps are in "_YYYY-MM-DD HH:MM:SS.micros UTC_" format.
|
||||
</p>
|
||||
|
||||
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
|
||||
|
||||
@@ -75,7 +93,9 @@ FAQ on "[How can I comment or make a suggestion on IOCCC rules, guidelines and t
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
Your submission **MUST** be a C program.
|
||||
</p>
|
||||
|
||||
See the [Guidelines for Rule 1 - C program](guidelines.html#guidelines-for-rule-1---c-program).
|
||||
|
||||
@@ -159,70 +179,83 @@ See [Guidelines for Rule 3 - Register for the IOCCC](guidelines.html#guideline-3
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
Your submission **MUST** include at least these files: `Makefile`, `prog.c`,
|
||||
`remarks.md`,`.info.json`, and `.auth.json`, the latter two of which are
|
||||
generated by `mkiocccentry(1)`. See [Rule 17 -
|
||||
Use mkiocccentry](#rule17-mkiocccentry).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
At a **minimum** the following requirements apply. Additional requirements
|
||||
may be imposed by `mkiocccentry(1)` updates that have yet to be listed
|
||||
below.
|
||||
|
||||
**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited
|
||||
files.
|
||||
|
||||
**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`,
|
||||
`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and
|
||||
`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`.
|
||||
|
||||
below:
|
||||
</p>
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* `.info.json` and `.auth.json` **MUST** be generated by `mkiocccenty(1)`
|
||||
when packing a submission. When `chksubmit(1)` is run on the submission
|
||||
directory **ALL** tests must pass and if there is **ANY** problem with these
|
||||
JSON files or if either is missing it will fail. See [Rule 17 - use
|
||||
mkiocccentry](#rule17-mkiocccentry).
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json` **MUST**
|
||||
have a file size **greater than 0** and **MUST** have content. Note that
|
||||
`mkiocccentry(1)` will check for file **size** but will **NOT** check for
|
||||
content.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submitted source code **MUST** be called `prog.c`. When the `Makefile`
|
||||
compiles your code, the executable (if applicable) **MUST** be called `prog`.
|
||||
The `Makefile` may compile your source code into other filenames as well, if you
|
||||
want.
|
||||
The `Makefile` may compile your source code into other filenames as well, if you want.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* As `prog`, `prog.alt`, `prog.alt.o`, `prog.o` may be created by your
|
||||
`Makefile`, your submission **MUST NOT** include those files in your **top**
|
||||
directory.
|
||||
`Makefile`, your submission **MUST NOT** include those files in your **top** directory.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **NOT** have any file that starts with `COPYING`,
|
||||
`COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **NOT** have in the **top** directory: `prog.orig.c`,
|
||||
`README.md` or `index.html` as those files are reserved by the IOCCC.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **NOT** have in the **top** directory any file
|
||||
that matches a file glob pattern form `[0-9][0-9][0-9][0-9]_*.tar.bz2`
|
||||
as those files are reserved by IOCCC.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **ONLY** contain files and directories. Other file
|
||||
types such as symlinks, sockets etc. are **NOT** allowed.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* **All** directories **MUST** have permission mode of **0755**. All files
|
||||
**MUST** have the file mode of **0444**, EXCEPT for files that
|
||||
end in `.sh` which must have a mode of **0555**.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* All files that end in `.md` **MUST** be in markdown format.
|
||||
We recommend that markdown files observe our
|
||||
[IOCCC markdown guidelines](../markdown.html).
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* All filenames are treated as case insensitive. For example, `REMARKS.MD`,
|
||||
and `Remarks.md`, and `remarks.md` are considered by `mkiocccenty(1)`
|
||||
to be the **SAME** file. When preparing a submission on a case
|
||||
sensitive filesystem, ensure that the submission will work on
|
||||
a case insensitive filesystem.
|
||||
|
||||
<p class="leftbar">
|
||||
**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`,
|
||||
`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and
|
||||
`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited files.
|
||||
</p>
|
||||
|
||||
The `remarks.md` and `Makefile` are explained in more detail in the Guidelines.
|
||||
|
||||
See [IOCCC markdown guidelines](../markdown.html).
|
||||
@@ -259,8 +292,10 @@ with a `.` (dot)).
|
||||
The `Makefile` `clobber` target **MUST** restore your submission to its
|
||||
original form, including the removal of any created files and directories.
|
||||
|
||||
<p class="leftbar">
|
||||
Your code should be able to run under a
|
||||
[SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="rule6">
|
||||
@@ -285,13 +320,17 @@ See [Rule 19 - Prime](rules.html#rule-19---prime).
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
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
|
||||
owner(s) to its use. If you submit **ANY** content that is owned by others, you
|
||||
**MUST** detail that ownership, i.e., who owns what, and document the permission
|
||||
you obtained from them in your `remarks.md` file.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
You are permitted to use tools to write your code.
|
||||
</p>
|
||||
|
||||
See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging),
|
||||
and
|
||||
@@ -310,6 +349,7 @@ registered and **ONLY** while the contest is open.
|
||||
The submit server places a total size limit of **3999971** bytes **PER**
|
||||
submission.
|
||||
|
||||
<p class="leftbar">
|
||||
Each account has ten (**10.000**) submission slots (**0..9)**. Each submission
|
||||
slot should be annotated by the server as to whether its was received,
|
||||
processed, malformed, etc. Please take note of any errors, rectify,
|
||||
@@ -317,6 +357,7 @@ and resubmit. In order to avoid potential packaging errors, it is **highly
|
||||
recommended** to use `mkiocccentry(1)`, **AND** to check from time to time the
|
||||
status on the submit server, to see if any tests run by the server failed to
|
||||
validate your submission.
|
||||
</p>
|
||||
|
||||
See
|
||||
[Rule 3 - Registering for the IOCCC](rules.html#rule3-register),
|
||||
@@ -446,11 +487,13 @@ win, then you are encouraged to mention this in your `remarks.md` file as this
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** adhere to GNU Makefile syntax. It's highly recommended
|
||||
that you copy the [Makefile.example](Makefile.example) as a template, renaming
|
||||
it to `Makefile`. The primary target of the `Makefile` **MUST** be `prog` and
|
||||
the source file is `prog.c`. The C compiler and preprocessor **MUST** be
|
||||
invoked using `${CC}` and `${CPP}` macros respectively.
|
||||
</p>
|
||||
|
||||
The `clobber` target **MUST** clean and restore the submission directory tree to
|
||||
its original state, such as removing temporary files or any modified data files.
|
||||
@@ -458,23 +501,27 @@ Don't assume that `git` tool chain is installed, i.e. do **NOT** expect `git
|
||||
clean -f` to work. To be clear: do **NOT** use `git` to clean out files as this
|
||||
can cause problems in the winner repo!
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** use a syntax that is compatible with
|
||||
`bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL=
|
||||
bash` in your `Makefile`; please add a space between the `=` and
|
||||
the value such as:
|
||||
</p>
|
||||
|
||||
``` <!---makefile-->
|
||||
SHELL= bash
|
||||
```
|
||||
|
||||
<p class="leftbar">
|
||||
Assume that commands commonly found in [Single UNIX
|
||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||
environments and systems are available in the search
|
||||
`$PATH`. Avoid command options that aren't part of
|
||||
[SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification), such as
|
||||
GNU long name options (such as `--example`) or extensions like `grep -P`.
|
||||
</p>
|
||||
|
||||
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment
|
||||
variable.
|
||||
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable.
|
||||
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files).
|
||||
|
||||
@@ -514,11 +561,13 @@ The files, directories, and paths **MUST** conform to the limits imposed by
|
||||
`mkiocccentry(1)`, including but **NOT** limited, to their names, count, path
|
||||
length, directory tree depth, and permissions.
|
||||
|
||||
<p class="leftbar">
|
||||
The submission tree may have at most **13** directories and maximum
|
||||
directory depths of **4**. The maximum number of files, excluding
|
||||
`prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`, `try.alt.sh`,
|
||||
`.info.json` and `.auth.json` is **31**. And the maximum file-path
|
||||
component is **38** and maximum path length is **60**.
|
||||
</p>
|
||||
|
||||
The submission **MUST** be a `.txz` compressed tarball (i.e., tarball compressed by `xz(1)`)
|
||||
as constructed by `mkiocccentry(1)`, which **MUST** be within **[1..3999971]** bytes in size.
|
||||
@@ -529,34 +578,50 @@ you provide **MUST** also be **v7 format**.
|
||||
The sum of all file lengths, after unpacking from the tarball, **MUST** be
|
||||
less than `27651*1024` (**28314624**) bytes.
|
||||
|
||||
<p class="leftbar">
|
||||
The submission **MUST** pass all `txzchk(1)` checks, and the tarball filename
|
||||
**MUST** pass all `fnamchk(1)` checks as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
You may **NOT** submit a tarball created by the `-d`, `-e` **OR** by the `-s
|
||||
seed` options of `mkiocccentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The unpacked submission directory **MUST** pass the checks performed by the
|
||||
minimum required version of `chksubmit(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Submissions may **NOT** use a [mkiocccentry
|
||||
toolkit](https://github.com/ioccc-src/mkiocccentry) command line options that
|
||||
are labelled as "**for TESTING purposes**", **OR** labelled as "**for the use by
|
||||
the IOCCC judges only**", in their respective man pages.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Submissions may **ONLY** use [mkiocccentry
|
||||
toolkit](https://github.com/ioccc-src/mkiocccentry) command lines that confirm
|
||||
to the command's `-h` "_print help message_", again notwithstanding the options
|
||||
for testing and the IOCCC judges.
|
||||
</p>
|
||||
|
||||
The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule2-size)
|
||||
<p class="leftbar">
|
||||
The `prog.c` file should pass the [Rule 2 - Size](rules.html#rule2-size)
|
||||
checks performed by `iocccsize(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.auth.json` and `.info.json` files **MUST** be compatible with what
|
||||
`mkiocccentry(1)` generates.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Any submission that fails to pass the checks performed by the minimum required
|
||||
version of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
**WILL be rejected**!
|
||||
</p>
|
||||
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files).
|
||||
|
||||
@@ -581,9 +646,11 @@ See [Rule 7 - Original Work](rules.html#rule-7---original-work).
|
||||
## Rule 19 - Prime
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
This 19th rule, while prime, is reserved for future abuse 😁.
|
||||
Additional rules, both humorous and otherwise, may be added
|
||||
below this rule in future contests.
|
||||
</p>
|
||||
|
||||
See [Rule 6 - Free Rule](rules.html#rule6-free-rule).
|
||||
|
||||
|
||||
Reference in new issue
Block a user