checkpoint rules version 29.04 2025-11-20

Switched to "#" (hash) for headings in `rules.md`.

Added "-" (dash) after the rule number and before the
rule keyword.

Adjusted links rules elsewhere according to the above.

Ran `make quick_www` to perform the above.
This commit is contained in:
Landon Curt Noll committed 2025-11-20 16:16:50 -08:00
1 parent 5021fa611b
commit ee2f499839
15 files changed
+305 -326

No files matched your search

+29 -29
View File
@@ -570,12 +570,12 @@ may change from contest to contest.</p>
</ul>
<p>Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>,
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>,
especially as <code>mkiocccentry(1)</code> does a
great number of things that are required, and it also runs many checks, and if
any of those checks fail, you are at a very great risk of having your submission
rejected for violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
<p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>.</p>
<p><strong>IMPORTANT NOTE</strong>: the tools that require other tools, <code>mkiocccentry(1)</code> and
@@ -626,7 +626,7 @@ index.html</a>:
<p class="leftbar">
<blockquote>
<p><strong>IMPORTANT HINT</strong>: Only 3 of the 23 <strong>IOCCC28 winners</strong> came close to the
<a href="rules.html#rule-2-size">Rule 2 Size</a> limit.
<a href="rules.html#rule-2---size">Rule 2 - Size</a> limit.
Large code size isn’t
everything. :-) Those submitting to future contents should <strong>take a careful
note</strong> of that fact.</p>
@@ -638,7 +638,7 @@ note</strong> of that fact.</p>
the IOCCC size
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.</p>
<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#rule-2---size">Rule 2 - Size</a>, use the <code>iocccentry(1)</code> tool.
For example:</p>
<pre><code> iocccsize prog.c</code></pre>
<p>The IOCCC size tool algorithm can be summarized as follows:</p>
@@ -666,7 +666,7 @@ BESM-6, and 2503 is a decimal anagram of 2053.</p>
<p>Take note that this secondary limit imposed by the IOCCC size tool
obviates some of the need to <code>#define</code> C reserved words in an effort
to get around the size limits of
<a href="rules.html#rule-2-size">Rule 2 Size</a>.</p>
<a href="rules.html#rule-2---size">Rule 2 - Size</a>.</p>
<p>Yes Virginia, <strong>that is a hint</strong>!</p>
<p>The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.</p>
<p class="leftbar">
@@ -774,7 +774,7 @@ misleading comments and variable names might be a <strong>VERY GOOD START</stron
to a great submission!</p>
<p>Jump to: <a href="#">top</a></p>
<h1 id="mkiocccentry"><code>mkiocccentry</code></h1>
<p><a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>
<p><a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>
(the <code>mkiocccentry(1)</code> rule) states that
you <strong>REALLY SHOULD</strong> use the <code>mkiocccentry(1)</code> tool to package your submission tarball.</p>
<p>See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
@@ -825,7 +825,7 @@ then you will have to specify the options (such as paths) for the tools that are
<p>Make sure you have
the latest version of of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
so that you do not violate
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>
by mistake.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="mkiocccentry-synopsis">
@@ -853,7 +853,7 @@ for even more information.</p>
execute one or more additional tools.</p>
<h2 id="iocccsize"><code>iocccsize</code></h2>
<p><code>mkiocccentry(1)</code> 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, if you wish, as
issues (such as <a href="rules.html#rule-2---size">Rule 2 - Size</a>) that you may ignore, if you wish, as
noted above.</p>
<p>In other words, you no longer need to run <code>iocccsize</code> manually. However, the
checks described above are still made but through the <code>mkiocccentry(1)</code> tool itself.</p>
@@ -934,7 +934,7 @@ do install</em> the libraries from their respective repos, it/they will <strong>
used</strong> when compiling the <code>mkiocccentry</code> tools. This is important to
make sure that you’re using the correct versions, which is also verified by
<code>chksubmit</code> (in the JSON files created by <code>mkiocccentry(1)</code>). See
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
<p class="leftbar">
We <strong>HIGHLY</strong> recommend you install the <code>mkiocccentry</code> toolkit, however.
</p>
@@ -968,7 +968,7 @@ page. You might just find a fun option if you do either of these!</p>
<p>Of course, as <code>txzchk</code> does not extract the tarball, it is possible that if you
manually package your submission tarball and/or find and exploit a missing
check, you could still be violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
<div id="extra-files">
<h2 id="including-optional-and-extra-files">Including optional and extra files</h2>
</div>
@@ -984,7 +984,7 @@ file</em>. The non-extra files are considered <em>free files</em>.
<p class="leftbar">
Of course any dot file that is not <code>.auth.json</code> and <code>.info.json</code> will result in
a violation of
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>,
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>,
regardless of its depth.
</p>
<p>If you use an optional filename for something other than their intended use
@@ -1016,12 +1016,12 @@ The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent thi
do the same like:</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<p>See
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>
and also the
FAQ on “<a href="../faq.html#max-files">maximum number of files</a>”.</p>
<p>If you do not follow these points, you
are at a great risk of violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
<p><strong>NOTE</strong>: if you want to include a test-suite that requires a lot of files,
please suggest this in your <code>remarks.md</code> and if your submission wins it can
be done. In other words you should NOT use a tarball for a test-suite unless you
@@ -1036,7 +1036,7 @@ FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.</p>
<p>As an important part of its algorithm, <a href="#txzchk">txzchk(1)</a> directly executes
<code>fnamchk(1)</code>. If the filename is invalid (or the filename does not match the
directory name of the tarball) then it is an <strong>error</strong> and you risk violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.
Nevertheless, you can run the tool manually,
should you wish to.</p>
<p>For more information on <code>fnamchk</code> and how to manually validate your submission
@@ -1044,7 +1044,7 @@ tarball filename, see the
FAQ on “<a href="../faq.html#fnamchk">fnamchk</a>”.</p>
<p>It is extremely unlikely that <code>fnamchk(1)</code> reporting an invalid filename is a
bug in <code>fnamchk(1)</code> and as such, ignoring such an issue risks violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>
which is a big risk. Of course, using <code>mkiocccentry(1)</code>
would prevent this from happening as it would not create such a file anyway. If
<code>mkiocccentry(1)</code> was used it would rather suggest a bug in one of the tools and
@@ -1058,7 +1058,7 @@ your submission rejected if you package your own tarball, and there are <strong>
problems</strong>. For instance, if <code>chksubmit(1)</code> found a problem in your <code>.info.json</code>
file, the <code>mkiocccentry(1)</code> tool would not package it. But if you were to package
it manually, you would be violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.
But even if
everything checks out OK you should <strong>NOT</strong> assume that everything <strong>IS</strong> OK.</p>
<div id="bugs">
@@ -1275,7 +1275,7 @@ somehow, <code>txzchk(1)</code> will flag it as an error. When the judges run <c
on the uploaded submission compressed tarball, if anything is wrong, for
instance if you “sneak in” any dot files or dot directories, the submission
<strong>WILL BE REJECTED</strong> for violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
<p>You may use whatever tools you need to develop your submission, including the
use of <code>git(1)</code> or <code>gh(1)</code>, just be sure that your submission code and your
submission Makefile don’t depend on such tools.</p>
@@ -1523,7 +1523,7 @@ large data files to get around the source code size limit.</p>
<p class="leftbar">
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
<a href="rules.html#rule-2-size">Rule 2 Size</a>.
<a href="rules.html#rule-2---size">Rule 2 - Size</a>.
This isn’t to say that another highly compact and obfuscated
replacement of <code>init(8)</code> would not be an interesting submission.
</p>
@@ -1541,7 +1541,7 @@ and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one submission. See the
<a href="rules.html">IOCCC rules</a>
for details (in particular,
<a href="rules.html#rule-8-submission">Rule 8 Submission</a>).</p>
<a href="rules.html#rule-8---submission">Rule 8 - Submission</a>).</p>
<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
<a href="../years.html#1994">1994</a>.</p>
@@ -1649,7 +1649,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.
<code>-lcurses</code>) and not ncurses (i.e. <code>-lncurses</code>).
</p>
<p><a href="rules.html#rule-13-newlines">Rule 13 Newlines</a>
<p><a href="rules.html#rule-13---newlines">Rule 13 - Newlines</a>
no longer discourages the use of UTF-8
characters in C code.</p>
<p>It is a very good idea to, in your <code>remarks.md</code> file, tell us why you
@@ -1681,14 +1681,14 @@ Submitting source code that uses the contents of
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">iocccsize.c</a>,
<em>unless</em> you are <a href="../authors.html#Anthony_C_Howe">Anthony C Howe</a>, might run the
risk of violating
<a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
<a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a>.</p>
<p>The IOCCC submission tarball validator source is not an original work,
unless you are <a href="../authors.html#Cody_Boone_Ferguson">Cody Boone Ferguson</a>, in
which case it is original! :-) Submitting source code that uses the contents of
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c">txzchk.c</a>,
<em>unless</em> you are <a href="../authors.html#Cody_Boone_Ferguson">Cody Boone Ferguson</a>, might
run the risk of violating
<a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
<a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a>.</p>
<p>In addition to the above tools, none of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
tools</a>, <em>including, <strong>but not
limited</strong></em> to
@@ -1711,7 +1711,7 @@ are original! :-) Submitting source code that uses the content of any of these t
library, <em>unless</em> you are <a href="../authors.html#Cody_Boone_Ferguson">Cody Boone
Ferguson</a> or <a href="http://www.isthe.com/chongo/index.html">Landon Curt
Noll</a>, might run the risk of violating
<a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
<a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a>.</p>
<p>And unless you are <a href="https://en.wikipedia.org/wiki/Landon_Curt_Noll">Landon Curt Noll</a>,
the code in
<a href="https://github.com/ioccc-src/mkiocccentry/tree/master/dbg">dbg</a> and
@@ -1719,8 +1719,8 @@ the code in
not original works. Submitting source code that uses the contents of those
libraries, <em>unless</em> you <a href="https://en.wikipedia.org/wiki/Landon_Curt_Noll">Landon Curt Noll</a>,
might run the risk of violating
<a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
<p><a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>
<a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a>.</p>
<p><a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a>
does not prohibit you from writing your own
obfuscated versions of these tools, unless of course you are <a href="http://www.isthe.com/chongo/index.html">Landon Curt
Noll</a>, in which case you <em>probably</em>
@@ -1730,7 +1730,7 @@ However, <strong><em>if</em></strong> you do write your own version, you <strong
tools’ algorithms.</p>
<p>Even so, we do not recommend you try and submit a JSON parser due to
the fact it will likely exceed
<a href="rules.html#rule-2-size">Rule 2 Size</a>
<a href="rules.html#rule-2---size">Rule 2 - Size</a>
and because you likely can’t beat <a href="https://github.com/westes/flex">flex</a> and
<a href="https://www.gnu.org/software/bison/">bison</a> in obfuscation. This isn’t to
say that <a href="https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec">the so-called JSON spec</a> is not
@@ -1738,7 +1738,7 @@ obfuscated, but unless you have some really clever way to compact and
obfuscate a JSON parser more than <a href="https://github.com/westes/flex">flex</a> and
<a href="https://www.gnu.org/software/bison/">bison</a> you will likely not win, either
because of the
<a href="rules.html#rule-2-size">Rule 2 Size</a>
<a href="rules.html#rule-2---size">Rule 2 - Size</a>
or because it is not
as obfuscated as the <a href="https://github.com/westes/flex">flex</a> and <a href="https://www.gnu.org/software/bison/">bison</a>
generated code of
@@ -1820,7 +1820,7 @@ character tab stop.</p>
when forming your submission’s <code>remarks.md</code> file. And if your submission
contains additional markdown files, please follow those same guidelines for
those files. See also
<a href="rules.html#rule-4-files">Rule 4 Files</a>,
<a href="rules.html#rule-4---files">Rule 4 - Files</a>,
and the
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
@@ -2041,7 +2041,7 @@ submission that abuses the <a href="guidelines.html">IOCCC guidelines</a> in an
or that stretches the contest <a href="rules.html">rules</a> that while legal, it
nevertheless goes against the <strong>intent</strong> of the <a href="rules.html">rules</a>.</p>
<p>Nevertheless, see
<a href="rules.html#rule-10-privileges">Rule 10 Privileges</a>.</p>
<a href="rules.html#rule-10---privileges">Rule 10 - Privileges</a>.</p>
<p>In the end, we traditionally pick one submission as ‘<strong>best</strong>’. Sometimes such
a submission simply far exceeds any of the other submissions. More often, the
‘<strong>best</strong>’ is picked because it does well in a number of categories.</p>
+29 -29
View File
@@ -159,12 +159,12 @@ See FAQs regarding:
Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of
violating
[Rule 17 Packaging](rules.html#rule-17-packaging),
[Rule 17 - Packaging](rules.html#rule-17---packaging),
especially as `mkiocccentry(1)` does a
great number of things that are required, and it also runs many checks, and if
any of those checks fail, you are at a very great risk of having your submission
rejected for violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
[Rule 17 - Packaging](rules.html#rule-17---packaging).
We **STRONGLY** recommend you **do** install the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry).
@@ -225,7 +225,7 @@ index.html](../2024/index.html):
<p class="leftbar">
> **IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the
[Rule 2 Size](rules.html#rule-2-size) limit.
[Rule 2 - Size](rules.html#rule-2---size) limit.
Large code size isn't
everything. :-) Those submitting to future contents should **take a careful
note** of that fact.
@@ -239,7 +239,7 @@ the IOCCC size
[Rule 2b Next Size](rules.html#rule-2b-net-size).
To check your code against
[Rule 2 Size](rules.html#rule-2-size), use the `iocccentry(1)` tool.
[Rule 2 - Size](rules.html#rule-2---size), use the `iocccentry(1)` tool.
For example:
``` <!---sh-->
@@ -276,7 +276,7 @@ BESM-6, and 2503 is a decimal anagram of 2053.
Take note that this secondary limit imposed by the IOCCC size tool
obviates some of the need to `#define` C reserved words in an effort
to get around the size limits of
[Rule 2 Size](rules.html#rule-2-size).
[Rule 2 - Size](rules.html#rule-2---size).
Yes Virginia, **that is a hint**!
@@ -417,7 +417,7 @@ Jump to: [top](#)
# `mkiocccentry`
</div>
[Rule 17 Packaging](rules.html#rule-17-packaging)
[Rule 17 - Packaging](rules.html#rule-17---packaging)
(the `mkiocccentry(1)` rule) states that
you **REALLY SHOULD** use the `mkiocccentry(1)` tool to package your submission tarball.
@@ -482,7 +482,7 @@ then you will have to specify the options (such as paths) for the tools that are
Make sure you have
the latest version of of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
so that you do not violate
[Rule 17 Packaging](rules.html#rule-17-packaging)
[Rule 17 - Packaging](rules.html#rule-17---packaging)
by mistake.
@@ -527,7 +527,7 @@ execute one or more additional tools.
</div>
`mkiocccentry(1)` 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, if you wish, as
issues (such as [Rule 2 - Size](rules.html#rule-2---size)) that you may ignore, if you wish, as
noted above.
In other words, you no longer need to run `iocccsize` manually. However, the
@@ -631,7 +631,7 @@ do install_ the libraries from their respective repos, it/they will **not be
used** when compiling the `mkiocccentry` tools. This is important to
make sure that you're using the correct versions, which is also verified by
`chksubmit` (in the JSON files created by `mkiocccentry(1)`). See
[Rule 17 Packaging](rules.html#rule-17-packaging)!
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
<p class="leftbar">
We **HIGHLY** recommend you install the `mkiocccentry` toolkit, however.
@@ -678,7 +678,7 @@ page. You might just find a fun option if you do either of these!
Of course, as `txzchk` does not extract the tarball, it is possible that if you
manually package your submission tarball and/or find and exploit a missing
check, you could still be violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
[Rule 17 - Packaging](rules.html#rule-17---packaging).
<div id="extra-files">
## Including optional and extra files
@@ -698,7 +698,7 @@ file_. The non-extra files are considered _free files_.
<p class="leftbar">
Of course any dot file that is not `.auth.json` and `.info.json` will result in
a violation of
[Rule 17 Packaging](rules.html#rule-17-packaging),
[Rule 17 - Packaging](rules.html#rule-17---packaging),
regardless of its depth.
</p>
@@ -741,13 +741,13 @@ do the same like:
```
See
[Rule 17 Packaging](rules.html#rule-17-packaging)
[Rule 17 - Packaging](rules.html#rule-17---packaging)
and also the
FAQ on "[maximum number of files](../faq.html#max-files)".
If you do not follow these points, you
are at a great risk of violating
[Rule 17 Packaging](rules.html#rule-17-packaging)!
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
**NOTE**: if you want to include a test-suite that requires a lot of files,
please suggest this in your `remarks.md` and if your submission wins it can
@@ -768,7 +768,7 @@ Jump to: [top](#)
As an important part of its algorithm, [txzchk&lpar;1&rpar;](#txzchk) directly executes
`fnamchk(1)`. If the filename is invalid (or the filename does not match the
directory name of the tarball) then it is an **error** and you risk violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
[Rule 17 - Packaging](rules.html#rule-17---packaging).
Nevertheless, you can run the tool manually,
should you wish to.
@@ -778,7 +778,7 @@ FAQ on "[fnamchk](../faq.html#fnamchk)".
It is extremely unlikely that `fnamchk(1)` reporting an invalid filename is a
bug in `fnamchk(1)` and as such, ignoring such an issue risks violating
[Rule 17 Packaging](rules.html#rule-17-packaging)
[Rule 17 - Packaging](rules.html#rule-17---packaging)
which is a big risk. Of course, using `mkiocccentry(1)`
would prevent this from happening as it would not create such a file anyway. If
`mkiocccentry(1)` was used it would rather suggest a bug in one of the tools and
@@ -793,7 +793,7 @@ your submission rejected if you package your own tarball, and there are **ANY
problems**. For instance, if `chksubmit(1)` found a problem in your `.info.json`
file, the `mkiocccentry(1)` tool would not package it. But if you were to package
it manually, you would be violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
[Rule 17 - Packaging](rules.html#rule-17---packaging).
But even if
everything checks out OK you should **NOT** assume that everything **IS** OK.
@@ -1099,7 +1099,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
instance if you "sneak in" any dot files or dot directories, the submission
**WILL BE REJECTED** for violating
[Rule 17 Packaging](rules.html#rule-17-packaging)!
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
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
@@ -1436,7 +1436,7 @@ large data files to get around the source code size limit.
<p class="leftbar">
We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC,
if nothing else because that code is likely to exceed
[Rule 2 Size](rules.html#rule-2-size).
[Rule 2 - Size](rules.html#rule-2---size).
This isn't to say that another highly compact and obfuscated
replacement of `init(8)` would not be an interesting submission.
</p>
@@ -1455,7 +1455,7 @@ and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one submission. See the
[IOCCC rules](rules.html)
for details (in particular,
[Rule 8 Submission](rules.html#rule-8-submission)).
[Rule 8 - Submission](rules.html#rule-8---submission)).
We suggest that you avoid trying for the '**smallest self-replicating**'
source. The smallest, a [zero byte entry](../1994/smr/index.html), won in
@@ -1600,7 +1600,7 @@ If you do `#include <curses.h>` make **CERTAIN** you link in curses (i.e.
`-lcurses`) and not ncurses (i.e. `-lncurses`).
</p>
[Rule 13 Newlines](rules.html#rule-13-newlines)
[Rule 13 - Newlines](rules.html#rule-13---newlines)
no longer discourages the use of UTF-8
characters in C code.
@@ -1638,7 +1638,7 @@ Submitting source code that uses the contents of
[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c),
_unless_ you are [Anthony C Howe](../authors.html#Anthony_C_Howe), might run the
risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
[Rule 7 - Original Work](rules.html#rule-7---original-work).
The IOCCC submission tarball validator source is not an original work,
unless you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), in
@@ -1646,7 +1646,7 @@ which case it is original! :-) Submitting source code that uses the contents of
[txzchk.c](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c),
_unless_ you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), might
run the risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
[Rule 7 - Original Work](rules.html#rule-7---original-work).
In addition to the above tools, none of the [mkiocccentry
tools](https://github.com/ioccc-src/mkiocccentry), _including, **but not
@@ -1670,7 +1670,7 @@ are original! :-) Submitting source code that uses the content of any of these
library, _unless_ you are [Cody Boone
Ferguson](../authors.html#Cody_Boone_Ferguson) or [Landon Curt
Noll](http://www.isthe.com/chongo/index.html), might run the risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
[Rule 7 - Original Work](rules.html#rule-7---original-work).
And unless you are [Landon Curt Noll](https://en.wikipedia.org/wiki/Landon_Curt_Noll),
the code in
@@ -1679,9 +1679,9 @@ the code in
not original works. Submitting source code that uses the contents of those
libraries, _unless_ you [Landon Curt Noll](https://en.wikipedia.org/wiki/Landon_Curt_Noll),
might run the risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
[Rule 7 - Original Work](rules.html#rule-7---original-work).
[Rule 7 Original Work](rules.html#rule-7-original-work)
[Rule 7 - Original Work](rules.html#rule-7---original-work)
does not prohibit you from writing your own
obfuscated versions of these tools, unless of course you are [Landon Curt
Noll](http://www.isthe.com/chongo/index.html), in which case you _probably_
@@ -1692,7 +1692,7 @@ tools' algorithms.
Even so, we do not recommend you try and submit a JSON parser due to
the fact it will likely exceed
[Rule 2 Size](rules.html#rule-2-size)
[Rule 2 - Size](rules.html#rule-2---size)
and because you likely can't beat [flex](https://github.com/westes/flex) and
[bison](https://www.gnu.org/software/bison/) in obfuscation. This isn't to
say that [the so-called JSON spec](https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec) is not
@@ -1700,7 +1700,7 @@ obfuscated, but unless you have some really clever way to compact and
obfuscate a JSON parser more than [flex](https://github.com/westes/flex) and
[bison](https://www.gnu.org/software/bison/) you will likely not win, either
because of the
[Rule 2 Size](rules.html#rule-2-size)
[Rule 2 - Size](rules.html#rule-2---size)
or because it is not
as obfuscated as the [flex](https://github.com/westes/flex) and [bison](https://www.gnu.org/software/bison/)
generated code of
@@ -1794,7 +1794,7 @@ character tab stop.
when forming your submission's `remarks.md` file. And if your submission
contains additional markdown files, please follow those same guidelines for
those files. See also
[Rule 4 Files](rules.html#rule-4-files),
[Rule 4 - Files](rules.html#rule-4---files),
and the
FAQ on "[markdown](../faq.html#markdown)".
@@ -2071,7 +2071,7 @@ or that stretches the contest [rules](rules.html) that while legal, it
nevertheless goes against the **intent** of the [rules](rules.html).
Nevertheless, see
[Rule 10 Privileges](rules.html#rule-10-privileges).
[Rule 10 - Privileges](rules.html#rule-10---privileges).
In the end, we traditionally pick one submission as '**best**'. Sometimes such
+45 -44
View File
@@ -473,17 +473,17 @@ mastodon feed</a> page and/or mastodon
app from time to time to view IOCCC mastodon updates.</p>
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
<h2 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h2>
<h1 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h1>
<p>Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.</p>
<p>All Rights Reserved. Permission for personal, education or non-profit use is
granted provided this 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.03 2025-11-19</strong>.</p>
<p>These IOCCC Rules are version <strong>29.04 2025-11-20</strong>.</p>
<p>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>
<h2 id="rule-0---dates">Rule 0 - Dates</h2>
</div>
<p>This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.</p>
<p>This contest will enter the open state on ${OPEN_DATE_TIME} UTC.</p>
@@ -491,11 +491,11 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
<p>The above dates are subject to change until the contest is officially open.</p>
<p><strong>NOTE</strong>: As of this draft, the above dates are TBD (to be determined).</p>
<div id="rule1">
<h2 id="rule-1-program">Rule 1 Program</h2>
<h2 id="rule-1---program">Rule 1 - Program</h2>
</div>
<p>Your submission <strong>MUST</strong> be a C program.</p>
<div id="rule2">
<h2 id="rule-2-size">Rule 2 Size</h2>
<h2 id="rule-2---size">Rule 2 - Size</h2>
</div>
<p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong>
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
@@ -504,19 +504,19 @@ and
During development this can be checked using <code>iocccsize(1)</code>:</p>
<p>iocccsize prog.c</p>
<div id="rule2a">
<h3 id="rule-2a-gross-size">Rule 2a Gross Size</h3>
<h3 id="rule-2a---gross-size">Rule 2a - Gross Size</h3>
</div>
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
exceed <strong>4993</strong> bytes.</p>
<div id="rule2b">
<h3 id="rule-2b-net-size">Rule 2b Net Size</h3>
<h3 id="rule-2b---net-size">Rule 2b - Net Size</h3>
</div>
<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
tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST
NOT</strong> exceed <strong>2503</strong>.</p>
<div id="rule3">
<h2 id="rule-3-register">Rule 3 Register</h2>
<h2 id="rule-3---register">Rule 3 - Register</h2>
</div>
<p>You <strong>MUST</strong> register, using a valid email address, in order to submit
entries to the IOCCC. You may register while the contest is <strong>pending</strong> or <strong>open</strong>.</p>
@@ -530,9 +530,9 @@ register and submit your entries; <strong>DO NOT WAIT UNTIL THE FINAL DAYS</stro
to register! The judges are <strong>NOT</strong> responsible for delayed or lost
email or for those who wait until the last minute to try to register!</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="rules.html#rule-8-submission">Rule 8 Submission</a>.</p>
<p>See <a href="rules.html#rule-8---submission">Rule 8 - Submission</a>.</p>
<div id="rule4">
<h2 id="rule-4-files">Rule 4 Files</h2>
<h2 id="rule-4---files">Rule 4 - Files</h2>
</div>
<p>The 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 last two <strong>MUST</strong> be
@@ -568,9 +568,9 @@ sensitive filesystem, ensure that your submission will work on
a case insensitive filesystem.</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#rule-17-packaging">Rule 17 Packaging</a>.</p>
<p>See <a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
<div id="rule5">
<h2 id="rule-5-purity">Rule 5 Purity</h2>
<h2 id="rule-5---purity">Rule 5 - Purity</h2>
</div>
<p>Your submission <strong>MUST NOT</strong> modify the filenames or content of any of
your original submission, such as <code>prog.c</code>, <code>Makefile</code>, or any supplied
@@ -587,15 +587,15 @@ 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>
<div id="rule6">
<h2 id="rule-6-free">Rule 6 Free</h2>
<h2 id="rule-6---free">Rule 6 - Free</h2>
</div>
<p>I am <strong>NOT</strong> a Rule, I am a <code>free(void *human);</code> ‼️</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(!(</span>ioccc<span class="op">(</span>rule<span class="op">(</span>you<span class="op">(</span>are<span class="op">(</span>number<span class="op">(</span><span class="dv">6</span><span class="op">))))))</span> <span class="op">{</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> ha<span class="op">();</span> ha<span class="op">();</span> ha<span class="op">();</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span></code></pre></div>
<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">
<h2 id="rule-7-original-work">Rule 7 Original Work</h2>
<h2 id="rule-7---original-work">Rule 7 - Original Work</h2>
</div>
<p>In short: You wrote it, you own it, and its an original work.</p>
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, or you <strong>MUST</strong>
@@ -612,9 +612,9 @@ analysis tools, machine learning tools, natural language models, code
copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we encourage you to
describe what tools and how you used those tools, in your <code>remarks.md</code> file.</p>
<p>See <a href="rules.html#rule-16-anonymous">Rule 16 Anonymous</a>.</p>
<p>See <a href="rules.html#rule-16---anonymous">Rule 16 - Anonymous</a>.</p>
<div id="rule8">
<h2 id="rule-8-submission">Rule 8 Submission</h2>
<h2 id="rule-8---submission">Rule 8 - Submission</h2>
</div>
<p>The Submit Server will only accept submissions from those who have
registered and only while the contest is open.</p>
@@ -625,21 +625,21 @@ 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>.</p>
<p>See
<a href="rules.html#rule-3-register">Rule 3 Register</a>,
<a href="rules.html#rule-15-building">Rule 15 Building</a>,
<a href="rules.html#rule-3---register">Rule 3 - Register</a>,
<a href="rules.html#rule-15---building">Rule 15 - Building</a>,
and
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
<div id="rule9">
<h2 id="rule-9-no-hands">Rule 9 No hands</h2>
<h2 id="rule-9---no-hands">Rule 9 - No hands</h2>
</div>
<p>Entries requiring human interaction to be initially compiled are <strong>NOT</strong>
permitted. However, see the guidelines. Each entry <strong>MUST</strong> automated the
its build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code>, <code>clang</code>, under a
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
<p>Note references to <code>gmake</code> can be any GNU Make compatible tool.</p>
<p>See <a href="rules.html#rule-15-building">Rule 15 Building</a>.</p>
<p>See <a href="rules.html#rule-15---building">Rule 15 - Building</a>.</p>
<div id="rule10">
<h2 id="rule-10-privileges">Rule 10 Privileges</h2>
<p>Rule 10 - Privileges</p>
</div>
<p>Programs that require special privileges (setuid(2), setgid(2),
super-user, special owner, special group, etc.) are <strong>HIGHLY DISCOURAGED</strong>.
@@ -651,11 +651,11 @@ document this fact and explain why it is needed in your submission’s
have these permissions, you will also have to explain this, because these
bits are <strong>NOT</strong> allowed in submissions and those bits will <strong>NOT</strong> be copied by
<code>mkiocccentry(1)</code>.</p>
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>,
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>,
and
<a href="rules.html#rule-5-purity">Rule 5 Purity</a>.</p>
<a href="rules.html#rule-5---purity">Rule 5 - Purity</a>.</p>
<div id="rule11">
<h2 id="rule-11-abuse">Rule 11 Abuse</h2>
<h2 id="rule-11---abuse">Rule 11 - Abuse</h2>
</div>
<p>Legal abuse of the rules is somewhat encouraged, but comes with risks.
A submission that, in the opinion of the Judges, violates the rules <strong>WILL
@@ -675,11 +675,11 @@ version, please indicate that in your <code>remarks.md</code> file of your non-r
abusing version so that the Judges don’t think you uploaded a duplicate
into a wrong slot by mistake.</p>
<div id="rule12">
<h2 id="rule-12-utf-8">Rule 12 UTF-8</h2>
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
</div>
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the IOCCC.</p>
<div id="rule13">
<h2 id="rule-13-newlines">Rule 13 Newlines</h2>
<h2 id="rule-13---newlines">Rule 13 - Newlines</h2>
</div>
<p>Any C source that fails to compile because lines contain carriage-returns
(CTRL+M, <code>\r</code>) in particular as part of DOS/Windows style newlines might
@@ -694,7 +694,7 @@ need to do this, please document that in your <code>remarks.md</code> file and i
your compiler complains about this, document this too and update your
<code>Makefile</code> to account for this.</p>
<div id="rule14">
<h2 id="rule-14-resubmit">Rule 14 Resubmit</h2>
<h2 id="rule-14---resubmit">Rule 14 - Resubmit</h2>
</div>
<p>Submissions that are substantially similar to previous winning IOCCC
entries are discouraged.</p>
@@ -704,7 +704,7 @@ enhance and 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 sometimes helps.</p>
<div id="rule15">
<h2 id="rule-15-building">Rule 15 Building</h2>
<h2 id="rule-15---building">Rule 15 - Building</h2>
</div>
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. Its recommended
that you copy and rename the <code>Makefile.example</code> as template. The primary
@@ -726,9 +726,9 @@ environments and systems are available in the search
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">SUS</a>, such as
GNU long name options <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#rule-4-files">Rule 4 Files</a>.</p>
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>.</p>
<div id="rule16">
<h2 id="rule-16-anonymous">Rule 16 Anonymous</h2>
<h2 id="rule-16---anonymous">Rule 16 - Anonymous</h2>
</div>
<p>Your source code, data files, remarks, and program output <strong>MUST NOT</strong>
identify the author(s) of your code (unless you are <strong>Peter Honeyman</strong>
@@ -739,7 +739,7 @@ a past winner, you <strong>MUST NOT</strong> reveal your identity deliberately o
accident anywhere in your submission. <strong><em>Failure to comply may result
in the submission being disqualified.</em></strong></p>
<div id="rule17">
<h2 id="rule-17-packaging">Rule 17 Packaging</h2>
<h2 id="rule-17---packaging">Rule 17 - Packaging</h2>
</div>
<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
@@ -758,7 +758,7 @@ filename <strong>MUST</strong> pass all <code>fnamchk(1)</code> checks. You may
created by the <code>-d</code> or <code>-s</code> seed options of <code>mkiocccentry(1)</code>.</p>
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
current version of <code>chksubmit(1)</code>.</p>
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2-size">Rule 2 Size</a>
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2---size">Rule 2 - Size</a>
size 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>
@@ -769,27 +769,28 @@ that you are using the latest tools from the
GitHub repo.</p>
<p>In summary: it is best to use <code>mkioccentry(1)</code> to package your submission,
rather than roll-it-by-hand.</p>
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>.</p>
<div id="rule18">
<h2 id="rule-18-license">Rule 18 License</h2>
<h2 id="rule-18---license">Rule 18 - License</h2>
</div>
<p>The entirety of your submission <strong>MUST</strong> be submitted under the following license:</p>
<p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></p>
<p>See <a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
<p>See <a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a>.</p>
<div id="rule19">
<h2 id="rule-19-prime">Rule 19 Prime</h2>
<h2 id="rule-19---prime">Rule 19 - Prime</h2>
</div>
<p>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>
<p>See <a href="rules.html#rule-6-free">Rule 6 Free</a>.</p>
<p>See <a href="rules.html#rule-6---free">Rule 6 - Free</a>.</p>
<h2 id="further-reading">Further Reading</h2>
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further
commentary on The Rules.</p>
<p>Read the
<a href="https://www.ioccc.org/quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>
for an overview of how to enter the contest.</p>
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further commentary on The Rules.</p>
<p>See also the <a href="../faq.html">FAQ</a>.</p>
<p>Consider joining our Discord
server for discussions about The Rules, questions for the Judges, and
<code>C</code> in general.</p>
<p>Consider joining the <a href="https://discord.com/invite/Wa42Qujwnw">IOCCC Discord Server</a>
for discussions about The Rules, questions for the Judges, and <code>C</code> in general.</p>
<p>Leonid A. Broukhis
chongo (Landon Curt Noll) /\cc/\
<!-- AFTER: last line of markdown file: next/rules.md --></p>
+48 -70
View File
@@ -27,8 +27,7 @@ app from time to time to view IOCCC mastodon updates.
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
29th International Obfuscated C Code Contest Official Rules
------------------------------------------------------------
# 29th International Obfuscated C Code Contest Official Rules
Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.
@@ -38,17 +37,15 @@ and remains unaltered. All other uses **MUST** receive prior permission in
writing by [contacting the judges](../contact.html).
Rules version
-------------
## Rules version
These IOCCC Rules are version **29.03 2025-11-19**.
These IOCCC Rules are version **29.04 2025-11-20**.
Be sure to read the [IOCCC guidelines](guidelines.html).
<div id="rule0">
Rule 0 Dates
------------
## Rule 0 - Dates
</div>
This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.
@@ -63,16 +60,14 @@ The above dates are subject to change until the contest is officially open.
<div id="rule1">
Rule 1 Program
---------------
## Rule 1 - Program
</div>
Your submission **MUST** be a C program.
<div id="rule2">
Rule 2 Size
-----------
## Rule 2 - Size
</div>
`Rule 2` requires that your submission satisfy **BOTH**
@@ -84,7 +79,7 @@ During development this can be checked using `iocccsize(1)`:
iocccsize prog.c
<div id="rule2a">
### Rule 2a Gross Size
### Rule 2a - Gross Size
</div>
The overall maximum size of your `prog.c` program source **MUST NOT**
@@ -92,7 +87,7 @@ exceed **4993** bytes.
<div id="rule2b">
### Rule 2b Net Size
### Rule 2b - Net Size
</div>
When the filename of your program source (i.e., `prog.c`) is given as a
@@ -102,8 +97,7 @@ NOT** exceed **2503**.
<div id="rule3">
Rule 3 Register
---------------
## Rule 3 - Register
</div>
You **MUST** register, using a valid email address, in order to submit
@@ -122,12 +116,11 @@ email or for those who wait until the last minute to try to register!
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
See [Rule 8 Submission](rules.html#rule-8-submission).
See [Rule 8 - Submission](rules.html#rule-8---submission).
<div id="rule4">
Rule 4 Files
------------
## Rule 4 - Files
</div>
The submission **MUST** include at least these files: `Makefile`, `prog.c`,
@@ -177,12 +170,11 @@ The `remarks.md` and `Makefile` are explained in more detail in the Guidelines.
See [IOCCC markdown guidelines](../markdown.html).
See [Rule 17 Packaging](rules.html#rule-17-packaging).
See [Rule 17 - Packaging](rules.html#rule-17---packaging).
<div id="rule5">
Rule 5 Purity
-------------
## Rule 5 - Purity
</div>
Your submission **MUST NOT** modify the filenames or content of any of
@@ -205,8 +197,7 @@ Your code should be able to run under a
<div id="rule6">
Rule 6 Free
-----------
## Rule 6 - Free
</div>
I am **NOT** a Rule, I am a `free(void *human);` ‼️
@@ -217,12 +208,11 @@ I am **NOT** a Rule, I am a `free(void *human);` ‼️
}
```
See [Rule 19 Prime](rules.html#rule-19-prime).
See [Rule 19 - Prime](rules.html#rule-19---prime).
<div id="rule7">
Rule 7 Original Work
--------------------
## Rule 7 - Original Work
</div>
In short: You wrote it, you own it, and its an original work.
@@ -243,12 +233,11 @@ copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we encourage you to
describe what tools and how you used those tools, in your `remarks.md` file.
See [Rule 16 Anonymous](rules.html#rule-16-anonymous).
See [Rule 16 - Anonymous](rules.html#rule-16---anonymous).
<div id="rule8">
Rule 8 Submission
-----------------
## Rule 8 - Submission
</div>
The Submit Server will only accept submissions from those who have
@@ -263,15 +252,14 @@ and resubmit. In order to avoid potential packaging errors, it is **highly
recommended** to use `mkiocccentry(1)`.
See
[Rule 3 Register](rules.html#rule-3-register),
[Rule 15 Building](rules.html#rule-15-building),
[Rule 3 - Register](rules.html#rule-3---register),
[Rule 15 - Building](rules.html#rule-15---building),
and
[Rule 17 Packaging](rules.html#rule-17-packaging).
[Rule 17 - Packaging](rules.html#rule-17---packaging).
<div id="rule9">
Rule 9 No hands
----------------
## Rule 9 - No hands
</div>
Entries requiring human interaction to be initially compiled are **NOT**
@@ -281,12 +269,11 @@ its build process using `bash`, `gmake`, `gcc`, `clang`, under a
Note references to `gmake` can be any GNU Make compatible tool.
See [Rule 15 Building](rules.html#rule-15-building).
See [Rule 15 - Building](rules.html#rule-15---building).
<div id="rule10">
Rule 10 Privileges
------------------
Rule 10 - Privileges
</div>
Programs that require special privileges (setuid(2), setgid(2),
@@ -301,14 +288,13 @@ have these permissions, you will also have to explain this, because these
bits are **NOT** allowed in submissions and those bits will **NOT** be copied by
`mkiocccentry(1)`.
See [Rule 4 Files](rules.html#rule-4-files),
See [Rule 4 - Files](rules.html#rule-4---files),
and
[Rule 5 Purity](rules.html#rule-5-purity).
[Rule 5 - Purity](rules.html#rule-5---purity).
<div id="rule11">
Rule 11 Abuse
-------------
## Rule 11 - Abuse
</div>
Legal abuse of the rules is somewhat encouraged, but comes with risks.
@@ -334,16 +320,14 @@ into a wrong slot by mistake.
<div id="rule12">
Rule 12 UTF-8
-------------
## Rule 12 - UTF-8
</div>
Use of UTF-8 is supported by `C89` standard and its updates and so too by the IOCCC.
<div id="rule13">
Rule 13 Newlines
----------------
## Rule 13 - Newlines
</div>
Any C source that fails to compile because lines contain carriage-returns
@@ -362,8 +346,7 @@ your compiler complains about this, document this too and update your
<div id="rule14">
Rule 14 Resubmit
----------------
## Rule 14 - Resubmit
</div>
Submissions that are substantially similar to previous winning IOCCC
@@ -377,8 +360,7 @@ didn't previously win, then you are encouraged to mention this in your
<div id="rule15">
Rule 15 Building
----------------
## Rule 15 - Building
</div>
The `Makefile` **MUST** adhere to GNU Makefile syntax. Its recommended
@@ -408,12 +390,11 @@ GNU long name options `--example` or extensions like `grep -P`.
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable.
See [Rule 4 Files](rules.html#rule-4-files).
See [Rule 4 - Files](rules.html#rule-4---files).
<div id="rule16">
Rule 16 Anonymous
-----------------
## Rule 16 - Anonymous
</div>
Your source code, data files, remarks, and program output **MUST NOT**
@@ -427,8 +408,7 @@ in the submission being disqualified.***
<div id="rule17">
Rule 17 Packaging
-----------------
## Rule 17 - Packaging
</div>
The files, directories, and paths **MUST** conform to the limits imposed by
@@ -453,7 +433,7 @@ created by the `-d` or `-s` seed options of `mkiocccentry(1)`.
The unpacked submission directory **MUST** pass the checks performed by the
current version of `chksubmit(1)`.
The `prog.c` file **MUST** pass the [Rule 2 Size](rules.html#rule-2-size)
The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule-2---size)
size checks performed by `iocccsize(1)`.
The `.auth.json` and `.info.json` files **MUST** be compatible with what
@@ -468,45 +448,43 @@ GitHub repo.
In summary: it is best to use `mkioccentry(1)` to package your submission,
rather than roll-it-by-hand.
See [Rule 4 Files](rules.html#rule-4-files).
See [Rule 4 - Files](rules.html#rule-4---files).
<div id="rule18">
Rule 18 License
---------------
## Rule 18 - License
</div>
The entirety of your submission **MUST** be submitted under the following license:
[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)
See [Rule 7 Original Work](rules.html#rule-7-original-work).
See [Rule 7 - Original Work](rules.html#rule-7---original-work).
<div id="rule19">
Rule 19 Prime
-------------
## Rule 19 - Prime
</div>
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.
See [Rule 6 Free](rules.html#rule-6-free).
See [Rule 6 - Free](rules.html#rule-6---free).
Further Reading
---------------
## Further Reading
Please read the [Guidelines](guidelines.html) next for further
commentary on The Rules.
Read the
[Entering the IOCCC: the bare minimum you need to know](https://www.ioccc.org/quick-start.html#enter)
for an overview of how to enter the contest.
Please read the [Guidelines](guidelines.html) next for further commentary on The Rules.
See also the [FAQ](../faq.html).
Consider joining our Discord
server for discussions about The Rules, questions for the Judges, and
`C` in general.
Consider joining the [IOCCC Discord Server](https://discord.com/invite/Wa42Qujwnw)
for discussions about The Rules, questions for the Judges, and `C` in general.
Leonid A. Broukhis
chongo (Landon Curt Noll) /\\cc/\\
+3 -3
View File
@@ -518,7 +518,7 @@ the file selection step.</p>
<li>the status of the submission</li>
<li>the filename, which will be in the correct format, assuming you used
<code>mkiocccentry(1)</code> which is <strong>HIGHLY</strong> recommended so that you do not break
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>!</li>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</li>
<li>the file length, which <code>txzchk(1)</code> will also verify (the file itself and the
tarball listing).</li>
<li>the upload date.</li>
@@ -576,7 +576,7 @@ To see any status updates, you should logout and log back in later.</p>
<p>… or <strong>ANY</strong> other error then you <strong>MUST FIX</strong> your submission, repackage your
tarball with <code>mkiocccentry</code> and upload to the same slot again! If you do not fix
this your submission <strong>WILL BE REJECTED</strong> for violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
<p>If the format test went well, then you will see:</p>
<blockquote>
<p><strong>Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.</strong></p>
@@ -586,7 +586,7 @@ rules or that everything is OK once the tarball is extracted; it simply means
the tests performed by the tools passed. If you find a flaw in a tool and
abuse it and the tests pass then you stand a significant chance of having your
submission rejected for violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>,
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>,
even if the tests passed.</p>
<p>For details on <code>txzchk</code>, see the
FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.</p>
+3 -3
View File
@@ -87,7 +87,7 @@ And in the slot it will give you important details like:
- the status of the submission
- the filename, which will be in the correct format, assuming you used
`mkiocccentry(1)` which is **HIGHLY** recommended so that you do not break
[Rule 17 Packaging](rules.html#rule-17-packaging)!
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
- the file length, which `txzchk(1)` will also verify (the file itself and the
tarball listing).
- the upload date.
@@ -158,7 +158,7 @@ Or:
... or **ANY** other error then you **MUST FIX** your submission, repackage your
tarball with `mkiocccentry` and upload to the same slot again! If you do not fix
this your submission **WILL BE REJECTED** for violating
[Rule 17 Packaging](rules.html#rule-17-packaging)!
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
If the format test went well, then you will see:
@@ -169,7 +169,7 @@ rules or that everything is OK once the tarball is extracted; it simply means
the tests performed by the tools passed. If you find a flaw in a tool and
abuse it and the tests pass then you stand a significant chance of having your
submission rejected for violating
[Rule 17 Packaging](rules.html#rule-17-packaging),
[Rule 17 - Packaging](rules.html#rule-17---packaging),
even if the tests passed.
For details on `txzchk`, see the