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:
Landon Curt Noll committed 2025-12-01 02:27:06 -08:00
1 parent eda2531e4d
commit 75387360d0
5 files changed
+524 -224

No files matched your search

+143 -80
View File
@@ -480,20 +480,36 @@ granted provided this copyright and notice are included in its entirety
and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="rules-version">Rules Version</h2>
<p>These IOCCC Rules are version <strong>29.11 2025-11-30</strong>.</p>
<p>These IOCCC Rules are version <strong>29.12 2025-12-01</strong>.</p>
<p class="leftbar">
The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC.
</p>
<p class="leftbar">
Because the <strong>IOCCC29</strong> rules was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked.
</p>
<p>Reminder: be SURE to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<div id="rule0">
<h2 id="rule-0---dates">Rule 0 - Dates</h2>
</div>
<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 <a href="../faq.html#pending">pending state</a> on <code>2025-12-03 20:25:12.045045 UTC</code>,
allowing people to <a href="register.html">register for the IOCCC</a>.</p>
<p>This contest will enter the <a href="../faq.html#open">open state</a> on <code>2025-12-15 18:21:24.273033 UTC</code>,
allowing people to <a href="submit.html">upload submissions</a>.</p>
<p>This contest will enter the <a href="../faq.html#judging">judging state</a> on <code>2026-03-13 17:19:23.293137 UTC</code>,
when people will no longer be allowed to upload submissions.</p>
<p class="leftbar">
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 class="leftbar">
This contest will enter the <a href="../faq.html#pending">pending state</a> on <code>2025-12-03 20:25:12.045045 UTC</code>,
allowing people to <a href="register.html">register for the IOCCC</a>.
</p>
<p class="leftbar">
This contest will enter the <a href="../faq.html#open">open state</a> on <code>2025-12-15 18:21:24.273033 UTC</code>,
allowing people to <a href="submit.html">upload submissions</a>.
</p>
<p class="leftbar">
This contest will enter the <a href="../faq.html#judging">judging state</a> on <code>2026-03-13 17:19:23.293137 UTC</code>,
when people will no longer be allowed to upload submissions.
</p>
<p>The above <strong>dates and times may change <em>AT ANY TIME</em></strong> until the <a href="../status.html">contest status</a> is <strong>open</strong>.</p>
<p>The above timestamps are in “<em>YYYY-MM-DD HH:MM:SS.micros UTC</em>” format.</p>
<p class="leftbar">
The above timestamps are in “<em>YYYY-MM-DD HH:MM:SS.micros UTC</em>” format.
</p>
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<p>See
FAQ on “<a href="../faq.html#feedback">How can I comment or make a suggestion on IOCCC rules, guidelines and tools?</a>”.</p>
@@ -502,7 +518,9 @@ FAQ on “<a href="../faq.html#feedback">How can I comment or make a suggestion
<h2 id="rule-1---c-program">Rule 1 - C program</h2>
</div>
</div>
<p>Your submission <strong>MUST</strong> be a C program.</p>
<p class="leftbar">
Your submission <strong>MUST</strong> be a C program.
</p>
<p>See the <a href="guidelines.html#guidelines-for-rule-1---c-program">Guidelines for Rule 1 - C program</a>.</p>
<div id="rule2">
<div id="rule2-size-restrictions">
@@ -560,56 +578,68 @@ temporary password, which you <strong>MUST</strong> change within 14 days.</p>
<h2 id="rule-4---required-files">Rule 4 - Required files</h2>
</div>
</div>
<p>Your submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
<p class="leftbar">
Your submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
<code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>, the latter two of which are
generated by <code>mkiocccentry(1)</code>. See <a href="#rule17-mkiocccentry">Rule 17 -
Use mkiocccentry</a>.</p>
<p>At a <strong>minimum</strong> the following requirements apply. Additional requirements
Use mkiocccentry</a>.
</p>
<p class="leftbar">
At a <strong>minimum</strong> the following requirements apply. Additional requirements
may be imposed by <code>mkiocccentry(1)</code> updates that have yet to be listed
below.</p>
<p><strong>NOTE</strong>: <code>mkiocccentry(1)</code> will reject any directory which has prohibited
files.</p>
<p><strong>NOTE</strong>: by ‘top directory’ we mean the directory with <code>prog.c</code>, <code>Makefile</code>,
<code>remarks.md</code> and the <code>mkiocccentry(1)</code> generated files <code>.auth.json</code> and
<code>.info.json</code> and <strong>NOT</strong> the <code>topdir</code> arg to <code>mkiocccentry(1)</code>.</p>
<ul>
<li><p><code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by <code>mkiocccenty(1)</code>
below:
</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* <code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by <code>mkiocccenty(1)</code>
when packing a submission. When <code>chksubmit(1)</code> is run on the submission
directory <strong>ALL</strong> tests must pass and if there is <strong>ANY</strong> problem with these
JSON files or if either is missing it will fail. See <a href="#rule17-mkiocccentry">Rule 17 - use
mkiocccentry</a>.</p></li>
<li><p>The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
mkiocccentry</a>.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
have a file size <strong>greater than 0</strong> and <strong>MUST</strong> have content. Note that
<code>mkiocccentry(1)</code> will check for file <strong>size</strong> but will <strong>NOT</strong> check for
content.</p></li>
<li><p>Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
content.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
compiles your code, the executable (if applicable) <strong>MUST</strong> be called <code>prog</code>.
The <code>Makefile</code> may compile your source code into other filenames as well, if you
want.</p></li>
<li><p>As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in your <strong>top</strong>
directory.</p></li>
<li><p>Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p></li>
<li><p>Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory: <code>prog.orig.c</code>,
<code>README.md</code> or <code>index.html</code> as those files are reserved by the IOCCC.</p></li>
<li><p>Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file
The <code>Makefile</code> may compile your source code into other filenames as well, if you want.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in your <strong>top</strong> directory.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory: <code>prog.orig.c</code>,
<code>README.md</code> or <code>index.html</code> as those files are reserved by the IOCCC.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file
that matches a file glob pattern form <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code>
as those files are reserved by IOCCC.</p></li>
<li><p>Your submission may <strong>ONLY</strong> contain files and directories. Other file
types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.</p></li>
<li><p><strong>All</strong> directories <strong>MUST</strong> have permission mode of <strong>0755</strong>. All files
as those files are reserved by IOCCC.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>ONLY</strong> contain files and directories. Other file
types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* <strong>All</strong> directories <strong>MUST</strong> have permission mode of <strong>0755</strong>. All files
<strong>MUST</strong> have the file mode of <strong>0444</strong>, EXCEPT for files that
end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p></li>
<li><p>All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.
We recommend that markdown files observe our
<a href="../markdown.html">IOCCC markdown guidelines</a>.</p></li>
<li><p>All filenames are treated as case insensitive. For example, <code>REMARKS.MD</code>,
end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* All filenames are treated as case insensitive. For example, <code>REMARKS.MD</code>,
and <code>Remarks.md</code>, and <code>remarks.md</code> are considered by <code>mkiocccenty(1)</code>
to be the <strong>SAME</strong> file. When preparing a submission on a case
sensitive filesystem, ensure that the submission will work on
a case insensitive filesystem.</p></li>
</ul>
a case insensitive filesystem.</p>
<p class="leftbar">
<strong>NOTE</strong>: by ‘top directory’ we mean the directory with <code>prog.c</code>, <code>Makefile</code>,
<code>remarks.md</code> and the <code>mkiocccentry(1)</code> generated files <code>.auth.json</code> and
<code>.info.json</code> and <strong>NOT</strong> the <code>topdir</code> arg to <code>mkiocccentry(1)</code>.
</p>
<p class="leftbar">
<strong>NOTE</strong>: <code>mkiocccentry(1)</code> will reject any directory which has prohibited files.
</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="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
@@ -635,8 +665,10 @@ directories and as long as the directory name or filename does <strong>NOT</stro
with a <code>.</code> (dot)).</p>
<p>The <code>Makefile</code> <code>clobber</code> target <strong>MUST</strong> restore your submission to its
original form, including the removal of any created files and directories.</p>
<p>Your code should be able to run under a
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
<p class="leftbar">
Your code should be able to run under a
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.
</p>
<div id="rule6">
<div id="rule6-free-rule">
<h2 id="rule-6---free-rule">Rule 6 - Free Rule</h2>
@@ -652,12 +684,16 @@ original form, including the removal of any created files and directories.</p>
<h2 id="rule-7---original-work">Rule 7 - Original Work</h2>
</div>
</div>
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you
<p class="leftbar">
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
owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by others, you
<strong>MUST</strong> detail that ownership, i.e., who owns what, and document the permission
you obtained from them in your <code>remarks.md</code> file.</p>
<p>You are permitted to use tools to write your code.</p>
you obtained from them in your <code>remarks.md</code> file.
</p>
<p class="leftbar">
You are permitted to use tools to write your code.
</p>
<p>See <a href="rules.html#rule16-anonymous-judging">Rule 16 - Anonymous Judging</a>,
and
<a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
@@ -670,13 +706,15 @@ and
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>
submission.</p>
<p>Each account has ten (<strong>10.000</strong>) submission slots (<strong>0..9)</strong>. Each submission
<p class="leftbar">
Each account has ten (<strong>10.000</strong>) submission slots (<strong>0..9)</strong>. 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,
and resubmit. In order to avoid potential packaging errors, it is <strong>highly
recommended</strong> to use <code>mkiocccentry(1)</code>, <strong>AND</strong> 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>
validate your submission.
</p>
<p>See
<a href="rules.html#rule3-register">Rule 3 - Registering for the IOCCC</a>,
<a href="rules.html#rule15-gnu-makefile">Rule 15 - GNU Makefile</a>,
@@ -772,27 +810,32 @@ win, then you are encouraged to mention this in your <code>remarks.md</code> fil
<h2 id="rule-15---gnu-makefile">Rule 15 - GNU Makefile</h2>
</div>
</div>
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. It’s highly recommended
<p class="leftbar">
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
it to <code>Makefile</code>. The primary target of the <code>Makefile</code> <strong>MUST</strong> be <code>prog</code> and
the source file is <code>prog.c</code>. The C compiler and preprocessor <strong>MUST</strong> be
invoked using <code>${CC}</code> and <code>${CPP}</code> macros respectively.</p>
invoked using <code>${CC}</code> and <code>${CPP}</code> macros respectively.
</p>
<p>The <code>clobber</code> target <strong>MUST</strong> clean and restore the submission directory tree to
its original state, such as removing temporary files or any modified data files.
Don’t assume that <code>git</code> tool chain is installed, i.e. do <strong>NOT</strong> expect <code>git clean -f</code> to work. To be clear: do <strong>NOT</strong> use <code>git</code> to clean out files as this
can cause problems in the winner repo!</p>
<p>The <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with
<p class="leftbar">
The <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with
<code>bash(1)</code> and GNU <code>make(1)</code>. You are encouraged to use <code>SHELL= bash</code> in your <code>Makefile</code>; please add a space between the <code>=</code> and
the value such as:</p>
the value such as:
</p>
<pre><code> SHELL= bash</code></pre>
<p>Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
<p class="leftbar">
Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
Specification</a>
environments and systems are available in the search
<code>$PATH</code>. Avoid command options that aren’t part of
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">SUS</a>, such as
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
variable.</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 variable.</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>
@@ -820,37 +863,55 @@ may result in the submission being disqualified</em></strong>.</p>
<p>The files, directories, and paths <strong>MUST</strong> conform to the limits imposed by
<code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their names, count, path
length, directory tree depth, and permissions.</p>
<p>The submission tree may have at most <strong>13</strong> directories and maximum
<p class="leftbar">
The submission tree may have at most <strong>13</strong> directories and maximum
directory depths of <strong>4</strong>. The maximum number of files, excluding
<code>prog.c</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>,
<code>.info.json</code> and <code>.auth.json</code> is <strong>31</strong>. And the maximum file-path
component is <strong>38</strong> and maximum path length is <strong>60</strong>.</p>
component is <strong>38</strong> and maximum path length is <strong>60</strong>.
</p>
<p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball (i.e., tarball compressed by <code>xz(1)</code>)
as constructed by <code>mkiocccentry(1)</code>, which <strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.</p>
<p>The tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball, and any supplementary tarballs
you provide <strong>MUST</strong> also be <strong>v7 format</strong>.</p>
<p>The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong> be
less than <code>27651*1024</code> (<strong>28314624</strong>) bytes.</p>
<p>The submission <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball filename
<strong>MUST</strong> pass all <code>fnamchk(1)</code> checks as well.</p>
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code> <strong>OR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.</p>
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
minimum required version of <code>chksubmit(1)</code>.</p>
<p>Submissions may <strong>NOT</strong> use a <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
<p class="leftbar">
The submission <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball filename
<strong>MUST</strong> pass all <code>fnamchk(1)</code> checks as well.
</p>
<p class="leftbar">
You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code> <strong>OR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.
</p>
<p class="leftbar">
The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
minimum required version of <code>chksubmit(1)</code>.
</p>
<p class="leftbar">
Submissions may <strong>NOT</strong> use a <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a> command line options that
are labelled as “<strong>for TESTING purposes</strong>”, <strong>OR</strong> labelled as “<strong>for the use by
the IOCCC judges only</strong>”, in their respective man pages.</p>
<p>Submissions may <strong>ONLY</strong> use <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
the IOCCC judges only</strong>”, in their respective man pages.
</p>
<p class="leftbar">
Submissions may <strong>ONLY</strong> use <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a> command lines that confirm
to the command’s <code>-h</code> “<em>print help message</em>”, again notwithstanding the options
for testing and the IOCCC judges.</p>
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule2-size">Rule 2 - Size</a>
checks performed by <code>iocccsize(1)</code>.</p>
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
<code>mkiocccentry(1)</code> generates.</p>
<p>Any submission that fails to pass the checks performed by the minimum required
for testing and the IOCCC judges.
</p>
<p class="leftbar">
The <code>prog.c</code> file should pass the <a href="rules.html#rule2-size">Rule 2 - Size</a>
checks performed by <code>iocccsize(1)</code>.
</p>
<p class="leftbar">
The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
<code>mkiocccentry(1)</code> generates.
</p>
<p class="leftbar">
Any submission that fails to pass the checks performed by the minimum required
version of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
<strong>WILL be rejected</strong>!</p>
<strong>WILL be rejected</strong>!
</p>
<p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>.</p>
<p>See the
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>
@@ -864,9 +925,11 @@ FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how
<div id="rule19">
<h2 id="rule-19---prime">Rule 19 - Prime</h2>
</div>
<p>This 19th rule, while prime, is reserved for future abuse 😁.
<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>
below this rule in future contests.
</p>
<p>See <a href="rules.html#rule6-free-rule">Rule 6 - Free Rule</a>.</p>
<h2 id="further-reading">Further Reading</h2>
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further commentary on these rules.</p>