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>