checkpoint rules version 29.00 2025-11-19.

This is a work in progress towards an improved rule set for **IOCCC29**.

Links to rules elsewhere on the site were modified as needed.
This commit is contained in:
Landon Curt Noll committed 2025-11-19 22:43:00 -08:00
1 parent 1be0e93dbf
commit ea37a9f559
17 files changed
+1068 -1722

No files matched your search

+3 -3
View File
@@ -77,7 +77,7 @@ become more skilled in the programming in the C language.
We were pleased to observe that while the [IOCCC size limit](../faq.html#size_rule_history) We were pleased to observe that while the [IOCCC size limit](../faq.html#size_rule_history)
increased by about 21%, we received many submissions that were well under the new increased by about 21%, we received many submissions that were well under the new
[Rule 2 size limit](../next/rules.html#rule2) including a fair number of quality [Rule 2 Size](../next/rules.html#rule-2-size) including a fair number of quality
small and medium sized submissions. Half of the **IOCCC28 winners** were less than small and medium sized submissions. Half of the **IOCCC28 winners** were less than
_2/3 of the size limit_, and 10 of the **IOCCC28 winners** were less than _2/3 of the size limit_, and 10 of the **IOCCC28 winners** were less than
_1/2 of the size limit_! _1/2 of the size limit_!
@@ -85,10 +85,10 @@ _1/2 of the size limit_!
**IMPORTANT NOTE**: The [IOCCC size limit](../faq.html#size_rule_history) increase for **IOCCC28** **IMPORTANT NOTE**: The [IOCCC size limit](../faq.html#size_rule_history) increase for **IOCCC28**
was the first size increase in over 10 years. Given the quality of submissions we received was the first size increase in over 10 years. Given the quality of submissions we received
that were well under the limit, we do **NOT** expect to change the that were well under the limit, we do **NOT** expect to change the
[Rule 2 size limit](../next/rules.html#rule2) for **at least another 10 years** (and likely longer). [Rule 2 Size](../next/rules.html#rule-2-size) for **at least another 10 years** (and likely longer).
**IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the [Rule **IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the [Rule
2 size limit](../next/rules.html#rule2). Large code size isn't everything. :-) 2 Size](../next/rules.html#rule-2-size). Large code size isn't everything. :-)
Those submitting to future contents should **take a careful note** of that fact. Those submitting to future contents should **take a careful note** of that fact.
+4 -4
View File
@@ -513,16 +513,16 @@ become more skilled in the programming in the C language.</p>
<h3 id="code-size-and-rule-2">Code size and Rule 2</h3> <h3 id="code-size-and-rule-2">Code size and Rule 2</h3>
<p>We were pleased to observe that while the <a href="../faq.html#size_rule_history">IOCCC size limit</a> <p>We were pleased to observe that while the <a href="../faq.html#size_rule_history">IOCCC size limit</a>
increased by about 21%, we received many submissions that were well under the new increased by about 21%, we received many submissions that were well under the new
<a href="../next/rules.html#rule2">Rule 2 size limit</a> including a fair number of quality <a href="../next/rules.html#rule-2-size">Rule 2 Size</a> including a fair number of quality
small and medium sized submissions. Half of the <strong>IOCCC28 winners</strong> were less than small and medium sized submissions. Half of the <strong>IOCCC28 winners</strong> were less than
<em>2/3 of the size limit</em>, and 10 of the <strong>IOCCC28 winners</strong> were less than <em>2/3 of the size limit</em>, and 10 of the <strong>IOCCC28 winners</strong> were less than
<em>1/2 of the size limit</em>!</p> <em>1/2 of the size limit</em>!</p>
<p><strong>IMPORTANT NOTE</strong>: The <a href="../faq.html#size_rule_history">IOCCC size limit</a> increase for <strong>IOCCC28</strong> <p><strong>IMPORTANT NOTE</strong>: The <a href="../faq.html#size_rule_history">IOCCC size limit</a> increase for <strong>IOCCC28</strong>
was the first size increase in over 10 years. Given the quality of submissions we received was the first size increase in over 10 years. Given the quality of submissions we received
that were well under the limit, we do <strong>NOT</strong> expect to change the that were well under the limit, we do <strong>NOT</strong> expect to change the
<a href="../next/rules.html#rule2">Rule 2 size limit</a> for <strong>at least another 10 years</strong> (and likely longer).</p> <a href="../next/rules.html#rule-2-size">Rule 2 Size</a> for <strong>at least another 10 years</strong> (and likely longer).</p>
<p><strong>IMPORTANT HINT</strong>: Only 3 of the 23 <strong>IOCCC28 winners</strong> came close to the <a href="../next/rules.html#rule2">Rule <p><strong>IMPORTANT HINT</strong>: Only 3 of the 23 <strong>IOCCC28 winners</strong> came close to the <a href="../next/rules.html#rule-2-size">Rule
2 size limit</a>. Large code size isn’t everything. :-) 2 Size</a>. Large code size isn’t everything. :-)
Those submitting to future contents should <strong>take a careful note</strong> of that fact.</p> Those submitting to future contents should <strong>take a careful note</strong> of that fact.</p>
<h3 id="rules-and-guidelines-for-this-contest">Rules and Guidelines for this contest</h3> <h3 id="rules-and-guidelines-for-this-contest">Rules and Guidelines for this contest</h3>
<p>Here are the final versions of the IOCCC rules and guidelines that were in <p>Here are the final versions of the IOCCC rules and guidelines that were in
+135 -66
View File
@@ -657,8 +657,8 @@
<p>This toolkit is from the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry <p>This toolkit is from the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
repo</a> and it is <strong>required</strong> that you repo</a> and it is <strong>required</strong> that you
use it to package your submission. Not doing so puts you at a great risk of use it to package your submission. Not doing so puts you at a great risk of
violating the <a href="next/rules.html">Rules</a> and in particular <a href="next/rules.html#rule17">Rule violating the <a href="next/rules.html">Rules</a> and in particular
17</a>.</p> <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="about_mkiocccentry"> <div id="about_mkiocccentry">
<h4 id="q-0.1.1-what-is-mkiocccentry-in-simple-terms">Q 0.1.1: What is <code>mkiocccentry</code> in simple terms?</h4> <h4 id="q-0.1.1-what-is-mkiocccentry-in-simple-terms">Q 0.1.1: What is <code>mkiocccentry</code> in simple terms?</h4>
@@ -772,7 +772,8 @@ is not a directory that can be written to. In <strong>this</strong> directory yo
directory</strong> will be created, with the name based on your IOCCC registration directory</strong> will be created, with the name based on your IOCCC registration
username, which is <strong>in the form of a UUID</strong>, and submission number along with username, which is <strong>in the form of a UUID</strong>, and submission number along with
the timestamp; see the <a href="next/rules.html">rules</a> for more details on this, and in the timestamp; see the <a href="next/rules.html">rules</a> for more details on this, and in
particular <a href="next/rules.html#rule17">Rule 17</a>.</p> particular
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<p><strong>IMPORTANT NOTE</strong>: the tools that require other tools, <code>mkiocccentry(1)</code> and <p><strong>IMPORTANT NOTE</strong>: the tools that require other tools, <code>mkiocccentry(1)</code> and
<code>txzchk(1)</code>, will, as of version <code>2.0.2 2025-03-11</code>, search under <code>$PATH</code>. If <code>txzchk(1)</code>, will, as of version <code>2.0.2 2025-03-11</code>, search under <code>$PATH</code>. If
you have an earlier version and you have not installed the tools and run the you have an earlier version and you have not installed the tools and run the
@@ -932,7 +933,8 @@ rounds; we look at the author name only if an entry wins. See the
<a href="next/guidelines.html">guidelines</a> <strong>AND</strong> <a href="next/rules.html">rules</a> if this is not clear!</li> <a href="next/guidelines.html">guidelines</a> <strong>AND</strong> <a href="next/rules.html">rules</a> if this is not clear!</li>
<li>leaving the remark section empty (which would also indicate that you did not <li>leaving the remark section empty (which would also indicate that you did not
use <code>mkiocccentry(1)</code>, as it requires it to not be of size 0, though if you only use <code>mkiocccentry(1)</code>, as it requires it to not be of size 0, though if you only
include whitespace you would still be violating <a href="next/rules.html#rule17">Rule 17</a>).</li> include whitespace you would still be violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>).</li>
</ul> </ul>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="try_scripts"> <div id="try_scripts">
@@ -975,10 +977,12 @@ FAQ on “<a href="#makefile">submission Makefile</a>”
for more details.</p> for more details.</p>
<p>See the <p>See the
FAQ on “<a href="#rule17">Rule 17</a>” FAQ on “<a href="#rule17">Rule 17</a>”
and <a href="next/rules.html#rule17">Rule 17</a> itself.</p> and
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>
itself.</p>
<p>Do remember that if your submission requires different filenames, then you <p>Do remember that if your submission requires different filenames, then you
<strong>MUST</strong> make a <strong>COPY</strong> of them in your <code>Makefile</code>. See also <a href="next/rules.html#rule11">Rule <strong>MUST</strong> make a <strong>COPY</strong> of them in your <code>Makefile</code>. See also
11</a>.</p> <a href="next/rules.html#rule-5-purity">Rule 5 Purity</a>.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<hr style="width:50%;text-align:left;margin-left:0"> <hr style="width:50%;text-align:left;margin-left:0">
<hr style="width:50%;text-align:left;margin-left:0"> <hr style="width:50%;text-align:left;margin-left:0">
@@ -1122,12 +1126,12 @@ level directory.</p>
itself is an extra file, meaning it counts <strong>AS</strong> an extra file. itself is an extra file, meaning it counts <strong>AS</strong> an extra file.
This file does <strong>NOT</strong> need to pass the <code>txzchk(1)</code> tests; only your submission This file does <strong>NOT</strong> need to pass the <code>txzchk(1)</code> tests; only your submission
tarball needs to pass these tests. However see below if you do do this.</p> tarball needs to pass these tests. However see below if you do do this.</p>
<p>Please pay careful attention to <a href="next/rules.html#rule17">Rule 17</a> and in <p>Please pay careful attention to <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a> and in
particular the part about the maximum number of files per particular the part about the maximum number of files per
submission, which not only discusses the maximum submission, which not only discusses the maximum
number of files but also specific rules you must follow number of files but also specific rules you must follow
if you do include a tarball. Not following these points puts you at great risk if you do include a tarball. Not following these points puts you at great risk
of violating <a href="next/rules.html#rule17">Rule 17</a>!</p> of violating <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>Also, remember what the <a href="next/guidelines.html">guidelines</a> say:</p> <p>Also, remember what the <a href="next/guidelines.html">guidelines</a> say:</p>
<blockquote> <blockquote>
<p><strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are! <p><strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are!
@@ -1170,7 +1174,7 @@ contains <strong>IMPORTANT</strong> tools and libraries such as:</p>
<li><code>chksubmit(1)</code> (which uses <code>jparse(3)</code> and is a wrapper to <code>chkentry(1)</code>)</li> <li><code>chksubmit(1)</code> (which uses <code>jparse(3)</code> and is a wrapper to <code>chkentry(1)</code>)</li>
</ul> </ul>
<p>The above mentioned tools will help you verify that your submission <p>The above mentioned tools will help you verify that your submission
conforms to <a href="next/rules.html#rule17">Rule 17</a>. Each of these tool has a <code>-h</code> conforms to <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>. Each of these tool has a <code>-h</code>
option that provides command line help. For additional details of each tool, see option that provides command line help. For additional details of each tool, see
its man page, and in some cases, the <a href="next/guidelines.html">IOCCC guidelines</a>.</p> its man page, and in some cases, the <a href="next/guidelines.html">IOCCC guidelines</a>.</p>
<p>The maximum number of <strong>extra files</strong> is 31. See the <p>The maximum number of <strong>extra files</strong> is 31. See the
@@ -1220,7 +1224,8 @@ for help.</p>
<p>The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in markdown format <p>The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in markdown format
(<code>mkiocccentry(1)</code> only checks the file size but if you do not have any text in (<code>mkiocccentry(1)</code> only checks the file size but if you do not have any text in
it you still risk violating this rule). See also it you still risk violating this rule). See also
<a href="next/rules.html#rule18">Rule 18</a> and our <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>
and our
FAQ on “<a href="#remarks_md">remarks.md</a>”, FAQ on “<a href="#remarks_md">remarks.md</a>”,
our our
FAQ on “<a href="#markdown">markdown</a>” FAQ on “<a href="#markdown">markdown</a>”
@@ -1312,13 +1317,17 @@ permissions and <code>mkiocccentry(1)</code> does this for you. In particular: d
<strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>); any file ending with <code>.sh</code> <strong>MUST</strong> be <strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>); any file ending with <code>.sh</code> <strong>MUST</strong> be
<code>-r-xr-xr-x</code> (i.e. <code>0555</code>); and all other files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e. <code>-r-xr-xr-x</code> (i.e. <code>0555</code>); and all other files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e.
<code>0444</code>). If any file or directory does not have the correct permissions, your <code>0444</code>). If any file or directory does not have the correct permissions, your
submission <strong>WILL</strong> be rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> submission <strong>WILL</strong> be rejected for violating
<a href="next/rules.html#rule17">Rule 17 Packaging</a>!</p>
<p>After <code>mkiocccentry(1)</code> creates the directories and copies the files with these <p>After <code>mkiocccentry(1)</code> creates the directories and copies the files with these
modes, it also verifies them after the fact and if they are not correct it is an modes, it also verifies them after the fact and if they are not correct it is an
<strong>error</strong>.</p> <strong>error</strong>.</p>
<p>If you do need different permissions, then see the <p>If you do need different permissions, then see the
FAQ on “<a href="#file_perms">file permissions</a>”. Also keep in mind FAQ on “<a href="#file_perms">file permissions</a>”. Also keep in mind
<a href="next/rules.html#rule4">Rule 4</a>, <a href="next/rules.html#rule5">Rule 5</a> and <a href="next/rules.html#rule21">Rule 21</a>.</p> <a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
<a href="next/rules.html#rule-5-purity">Rule 5 Purity</a>,
and
<a href="next/rules.html#rule-16-anonymous">Rule 16 Anonymous</a>.</p>
<p>The <code>txzchk(1)</code> tool will also verify file/directory permissions (and many other <p>The <code>txzchk(1)</code> tool will also verify file/directory permissions (and many other
things) for you, and so will <code>chksubmit(1)</code> (along with other checks on files and things) for you, and so will <code>chksubmit(1)</code> (along with other checks on files and
directories in your submission directory, including the two required JSON files, directories in your submission directory, including the two required JSON files,
@@ -1330,14 +1339,19 @@ page</a>.</p>
<p>The tarball filename <strong>MUST</strong> pass <code>fnamchk(1)</code>; the tool <code>txzchk(1)</code> <p>The tarball filename <strong>MUST</strong> pass <code>fnamchk(1)</code>; the tool <code>txzchk(1)</code>
will run <code>fnamchk(1)</code> as part of its algorithm. If you use <code>mkiocccentry(1)</code> will run <code>fnamchk(1)</code> as part of its algorithm. If you use <code>mkiocccentry(1)</code>
there should be no problem but if you were to package things manually it is there should be no problem but if you were to package things manually it is
possible there could be a problem and this poses a big risk of violating <a href="next/rules.html#rule17">Rule possible there could be a problem and this poses a big risk of violating
17</a>.</p> <a href="next/rules.html#rule-4-files">Rule 4 Files</a>
or
<a href="next/rules.html#rule17">Rule 17 Packaging</a>.</p>
<p>The <code>fnamchk(1)</code>, which <code>txzchk(1)</code> executes, will verify that the <p>The <code>fnamchk(1)</code>, which <code>txzchk(1)</code> executes, will verify that the
filename is correct. But if you do package your tarball manually, and you have a filename is correct. But if you do package your tarball manually, and you have a
mismatch in what is in the tarball and the name, <code>txzchk(1)</code> will flag the mismatch in what is in the tarball and the name, <code>txzchk(1)</code> will flag the
discrepancy as an error and exit with non-zero.</p> discrepancy as an error and exit with non-zero.</p>
<p>These checks <strong>MUST PASS</strong>. If they do not you stand a significant chance of <p>These checks <strong>MUST PASS</strong>. If they do not you stand a significant chance of
having your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> having your submission rejected for violating
<a href="next/rules.html#rule-4-files">Rule 4 Files</a>
or
<a href="next/rules.html#rule17">Rule 17 Packaging</a>.</p>
<div id="max-files"> <div id="max-files">
<h4 id="maximum-number-of-files-per-submission">Maximum number of files per submission</h4> <h4 id="maximum-number-of-files-per-submission">Maximum number of files per submission</h4>
</div> </div>
@@ -1366,7 +1380,11 @@ yourself.</p>
The <code>mkiocccentry(1)</code> tool uses the v7 format. For instance you might try:</p> The <code>mkiocccentry(1)</code> tool uses the v7 format. For instance you might try:</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre> <pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<hr style="width:50%;text-align:left;margin-left:0"> <hr style="width:50%;text-align:left;margin-left:0">
<p><strong>IMPORTANT</strong>: where <a href="next/rules.html#rule17">Rule 17</a> and the tools from the latest <p><strong>IMPORTANT</strong>: where
<a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
and
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.
and the tools from the latest
release of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> release of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
conflict, the <a href="judges.html">IOCCC judges</a> will use their best judgment which conflict, the <a href="judges.html">IOCCC judges</a> will use their best judgment which
is likely to favor <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> code.</p> is likely to favor <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> code.</p>
@@ -1399,8 +1417,11 @@ page</a>,
<strong>making sure to run <code>bug_report.sh</code></strong>. See the <a href="next/guidelines.html">guidelines</a> <strong>making sure to run <code>bug_report.sh</code></strong>. See the <a href="next/guidelines.html">guidelines</a>
for help here and also read our for help here and also read our
FAQ on “<a href="#mkiocccentry_bugs">mkiocccentry repo bugs</a>”.</p> FAQ on “<a href="#mkiocccentry_bugs">mkiocccentry repo bugs</a>”.</p>
<p>At the risk of stating the obvious: submissions that violate <a href="next/rules.html#rule17">Rule <p>At the risk of stating the obvious: submissions that violate
17</a> <strong>WILL BE REJECTED</strong>, so <strong>BE SURE</strong> to use the latest release of the <a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
or
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>
<strong>WILL BE REJECTED</strong>, so <strong>BE SURE</strong> to use the latest release of the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, to form and test <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, to form and test
your submission’s xz compressed tarball. Do <strong>NOT</strong> assume you have the most your submission’s xz compressed tarball. Do <strong>NOT</strong> assume you have the most
recent release without pulling or downloading via GitHub and do <strong>MAKE SURE</strong> you recent release without pulling or downloading via GitHub and do <strong>MAKE SURE</strong> you
@@ -1878,7 +1899,10 @@ two JSON files, <code>.auth.json</code> and <code>.info.json</code> as well as t
<code>Makefile</code> and <code>remarks.md</code> files along with all the other files listed in the <code>Makefile</code> and <code>remarks.md</code> files along with all the other files listed in the
<code>.info.json</code> manifest. (Okay there is an option to skip files but this is for <code>.info.json</code> manifest. (Okay there is an option to skip files but this is for
the judges <strong>ONLY</strong>; use of this option to validate your submission puts you at the judges <strong>ONLY</strong>; use of this option to validate your submission puts you at
a great risk of violating <a href="next/rules.html#rule17">Rule 17</a>!).</p> a great risk of violating
<a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
or
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!).</p>
<p>As an example, if your submission directory is <p>As an example, if your submission directory is
<code>00000000-0000-4000-0000-000000000000-3/</code> then you should run the following <code>00000000-0000-4000-0000-000000000000-3/</code> then you should run the following
command:</p> command:</p>
@@ -1897,7 +1921,11 @@ checks.</p>
FAQ on “<a href="#auth_json">.auth.json</a>” FAQ on “<a href="#auth_json">.auth.json</a>”
and the and the
FAQ on “<a href="#info_json">.info.json</a>” FAQ on “<a href="#info_json">.info.json</a>”
as well as <a href="next/rules.html#rule17">Rule 17</a> for more information.</p> as well as
<a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
and
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>
for more information.</p>
<p><strong>NOTE</strong>: the <code>chksubmit(1)</code> tool invokes <code>chkentry(1)</code> but as a contestant you <p><strong>NOTE</strong>: the <code>chksubmit(1)</code> tool invokes <code>chkentry(1)</code> but as a contestant you
do not need to worry about those details. One should use <code>chksubmit(1)</code> instead do not need to worry about those details. One should use <code>chksubmit(1)</code> instead
of <code>chkentry(1)</code> when validating a directory; <code>chkentry(1)</code> is for the judges of <code>chkentry(1)</code> when validating a directory; <code>chkentry(1)</code> is for the judges
@@ -1986,21 +2014,25 @@ to be valid. If this is not the case your submission <strong>WILL BE</strong> re
<ul> <ul>
<li>The IOCCC contestant ID used as a username in the form of <strong>in the form of <li>The IOCCC contestant ID used as a username in the form of <strong>in the form of
a UUID</strong> and submission number; see the <a href="next/rules.html">Rules</a> for more details a UUID</strong> and submission number; see the <a href="next/rules.html">Rules</a> for more details
on this, and in particular <a href="next/rules.html#rule17">Rule 17</a>.</li> on this, and in particular
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</li>
</ul> </ul>
<p><strong>NOTE:</strong> if the contest ID is <strong>NOT</strong> in this format then <code>fnamchk</code> will <p><strong>NOTE:</strong> if the contest ID is <strong>NOT</strong> in this format then <code>fnamchk</code> will
report it as an <strong>error</strong> and your submission <strong>WILL BE</strong> rejected for report it as an <strong>error</strong> and your submission <strong>WILL BE</strong> rejected for
violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p></li>
<li><p><code>tarball</code> (double quoted string)</p> <li><p><code>tarball</code> (double quoted string)</p>
<ul> <ul>
<li>The xz compressed tarball filename.</li> <li>The xz compressed tarball filename.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for <p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for
this to be valid. If there is a mismatch you stand a great risk of having this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>! your submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!
Moreover, it is possible that <code>txzchk</code> will report a problem through Moreover, it is possible that <code>txzchk</code> will report a problem through
<code>fnamchk(1)</code> which also puts you at great risk of violating <a href="next/rules.html#rule17">Rule <code>fnamchk(1)</code> which also puts you at great risk of violating
17</a>. <code>txzchk</code> will use the output of <code>fnamchk</code> to <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>. The
<code>txzchk(1)</code> tool will use the output of <code>fnamchk</code> to
obtain the correct directory <em>name</em> in the tarball; if <code>fnamchk</code> fails to obtain the correct directory <em>name</em> in the tarball; if <code>fnamchk</code> fails to
validate your filename, or if you have the wrong directory name in the validate your filename, or if you have the wrong directory name in the
tarball, this will be flaggd.</p></li> tarball, this will be flaggd.</p></li>
@@ -2013,7 +2045,8 @@ tarball, this will be flaggd.</p></li>
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a> <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p></li>
<li><p><code>author_count</code> (number)</p> <li><p><code>author_count</code> (number)</p>
<ul> <ul>
<li>How many authors this submission has.</li> <li>How many authors this submission has.</li>
@@ -2085,7 +2118,8 @@ the range of 1 <strong>THROUGH</strong> <code>MAX_AFFILIATION_LEN</code> (see
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a> <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<p><strong>NOTE:</strong> an <strong>affiliation</strong> does <strong>NOT</strong> have any affect on whether you will win or not.</p></li> <p><strong>NOTE:</strong> an <strong>affiliation</strong> does <strong>NOT</strong> have any affect on whether you will win or not.</p></li>
<li><p><code>past_winning_author</code> (boolean)</p> <li><p><code>past_winning_author</code> (boolean)</p>
<ul> <ul>
@@ -2169,8 +2203,10 @@ will use it on the submission directory as part of the judging process.</p>
<p>At the risk of stating the obvious, if your <code>.auth.json</code> file is invalid JSON or <p>At the risk of stating the obvious, if your <code>.auth.json</code> file is invalid JSON or
is reported invalid by <code>chksubmit(1)</code>, or if your submission directory is is reported invalid by <code>chksubmit(1)</code>, or if your submission directory is
reported invalid by <code>chksubmit(1)</code>, your submission will almost certainly be reported invalid by <code>chksubmit(1)</code>, your submission will almost certainly be
rejected for violating the <a href="next/rules.html">Rules</a> and in particular <a href="next/rules.html#rule17">Rule rejected for violating the <a href="next/rules.html">Rules</a> and in particular
17</a>.</p> <a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
and
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<p>An obvious example where <code>chksubmit(1)</code> would fail to validate <code>.auth.json</code> is if <p>An obvious example where <code>chksubmit(1)</code> would fail to validate <code>.auth.json</code> is if
there is a mismatch of type in the JSON file with what is expected, for there is a mismatch of type in the JSON file with what is expected, for
instance, if in <code>.auth.json</code> the <code>no_comment</code> that we chose to not comment on is instance, if in <code>.auth.json</code> the <code>no_comment</code> that we chose to not comment on is
@@ -2178,7 +2214,11 @@ not a string or is the wrong string. Another obvious example is when things are
out of range (see above for list). Two more examples would be if a field is out of range (see above for list). Two more examples would be if a field is
missing or if an unknown filed is in the file. In these cases (and any others missing or if an unknown filed is in the file. In these cases (and any others
that must be established as valid by <code>chksubmit(1)</code>) your submission would be that must be established as valid by <code>chksubmit(1)</code>) your submission would be
rejected for violating <a href="next/rules.html#rule17">Rule 17</a> and in particular rejected for violating
<a href="next/rules.html#rule-4-files">Rule 4 Files</a>,
and
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>
and in particular
because <code>chksubmit(1)</code> would not validate the <code>.auth.json</code> file (and maybe other because <code>chksubmit(1)</code> would not validate the <code>.auth.json</code> file (and maybe other
things too).</p> things too).</p>
<p>If you wish to <strong>verify</strong> that your <code>.auth.json</code> file is valid <strong>JSON</strong> then see the <p>If you wish to <strong>verify</strong> that your <code>.auth.json</code> file is valid <strong>JSON</strong> then see the
@@ -2296,7 +2336,8 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
<ul> <ul>
<li>The IOCCC contestant ID used as a username in the form of <strong>in the form of <li>The IOCCC contestant ID used as a username in the form of <strong>in the form of
a UUID</strong> and submission number; see the <a href="next/rules.html">rules</a> for more details a UUID</strong> and submission number; see the <a href="next/rules.html">rules</a> for more details
on this, and in particular <a href="next/rules.html#rule17">Rule 17</a>.</li> on this, and in particular
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</li>
</ul></li> </ul></li>
<li><p><code>submit_slot</code> (number)</p> <li><p><code>submit_slot</code> (number)</p>
<ul> <ul>
@@ -2307,7 +2348,8 @@ on this, and in particular <a href="next/rules.html#rule17">Rule 17</a>.</li>
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a> <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p></li>
<li><p><code>title</code> (double quoted string)</p> <li><p><code>title</code> (double quoted string)</p>
<ul> <ul>
<li>A short name (length &gt;= 1 <strong>THROUGH</strong> <code>MAX_TITLE_LEN</code>, defined in <li>A short name (length &gt;= 1 <strong>THROUGH</strong> <code>MAX_TITLE_LEN</code>, defined in
@@ -2316,7 +2358,8 @@ in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a
matches the regexp <code>[a-z0-9][a-z0-9_+-]*</code>.</li> matches the regexp <code>[a-z0-9][a-z0-9_+-]*</code>.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great risk of having your submission <p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great risk of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
<li><p><code>abstract</code> (double quoted string)</p> <li><p><code>abstract</code> (double quoted string)</p>
<ul> <ul>
<li>A one line summary of your submission, with a length of 1 <strong>THROUGH</strong> <li>A one line summary of your submission, with a length of 1 <strong>THROUGH</strong>
@@ -2326,33 +2369,37 @@ in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a
</ul> </ul>
<p>The <code>abstract</code> may not contain a <code>;</code> (semicolon), nor <code>&amp;</code> (ampersand), nor <code>,</code> (comma).</p> <p>The <code>abstract</code> may not contain a <code>;</code> (semicolon), nor <code>&amp;</code> (ampersand), nor <code>,</code> (comma).</p>
<p><strong>IMPORTANT:</strong> if your abstract is 0 in length or &gt; the maximum abstract length you <p><strong>IMPORTANT:</strong> if your abstract is 0 in length or &gt; the maximum abstract length you
stand a great risk of having your submission rejected for violating <a href="next/rules.html#rule17">Rule stand a great risk of having your submission rejected for violating
17</a>!</p></li> <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
<li><p><code>tarball</code> (double quoted string)</p> <li><p><code>tarball</code> (double quoted string)</p>
<ul> <ul>
<li>The xz compressed tarball filename.</li> <li>The xz compressed tarball filename.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for <p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for
this to be valid. If there is a mismatch you stand a great risk of having this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>! your submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!
Moreover, it is possible that <code>txzchk</code> will report a problem through Moreover, it is possible that <code>txzchk</code> will report a problem through
<code>fnamchk(1)</code> which also puts you at great risk of violating <a href="next/rules.html#rule17">Rule <code>fnamchk(1)</code> which also puts you at great risk of violating
17</a>. <code>txzchk</code> will use the output of <code>fnamchk</code> to <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.
The <code>txzchk(1)</code> tool will use the output of <code>fnamchk</code> to
obtain the correct directory <em>name</em> in the tarball; if <code>fnamchk</code> fails to obtain the correct directory <em>name</em> in the tarball; if <code>fnamchk</code> fails to
validate your filename, or if you have the wrong directory name in the validate your filename, or if you have the wrong directory name in the
tarball, this will be flaggd.</p></li> tarball, this will be flaggd.</p></li>
<li><p><code>rule_2a_size</code> (number)</p> <li><p><code>rule_2a_size</code> (number)</p>
<ul> <ul>
<li>The size calculated of <a href="next/rules.html#rule2a">Rule 2a</a>.</li> <li>The size calculated of <a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this violates <a href="next/rules.html#rule2a">Rule 2a</a> you stand a great <p><strong>IMPORTANT:</strong> if this violates <a href="next/rules.html#rule2a">Rule 2a</a> you stand a great
chance of having your submission rejected for violating the chance of having your submission rejected for violating the
<a href="next/rules.html">Rules</a>!</p></li> <a href="next/rules.html">Rules</a>!</p></li>
<li><p><code>rule_2b_size</code> (number)</p> <li><p><code>rule_2b_size</code> (number)</p>
<ul> <ul>
<li>The size calculated of <a href="next/rules.html#rule2b">Rule 2b</a>.</li> <li>The size calculated of <a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this violates <a href="next/rules.html#rule2b">Rule 2b</a> you stand a great <p><strong>IMPORTANT:</strong> if this violates
<a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>
you stand a great
chance of having your submission rejected for violating the chance of having your submission rejected for violating the
<a href="next/rules.html">Rules</a>!</p></li> <a href="next/rules.html">Rules</a>!</p></li>
<li><p><code>empty_override</code> (boolean)</p> <li><p><code>empty_override</code> (boolean)</p>
@@ -2361,30 +2408,41 @@ chance of having your submission rejected for violating the
</ul></li> </ul></li>
<li><p><code>rule_2a_override</code> (boolean)</p> <li><p><code>rule_2a_override</code> (boolean)</p>
<ul> <ul>
<li><code>true</code> if user overrides warning of <a href="next/rules.html#rule2a">Rule 2a</a> <li><code>true</code> if user overrides warning of
<a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
violation, else <code>false</code>.</li> violation, else <code>false</code>.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <a href="next/rules.html#rule2a">Rule 2a</a> calculated size is <strong>NOT</strong> <p><strong>IMPORTANT:</strong> if the
<a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
calculated size is <strong>NOT</strong>
violated but this is <code>true</code> then you stand a good chance of having your violated but this is <code>true</code> then you stand a good chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p></li>
<li><p><code>rule_2a_mismatch</code> (boolean)</p> <li><p><code>rule_2a_mismatch</code> (boolean)</p>
<ul> <ul>
<li><code>true</code> if <a href="next/rules.html#rule2a">Rule 2a</a> calculated size is not the <li><code>true</code> if
<a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
calculated size is not the
same as the file size.</li> same as the file size.</li>
</ul></li> </ul></li>
<li><p><code>rule_2b_override</code> (boolean)</p> <li><p><code>rule_2b_override</code> (boolean)</p>
<ul> <ul>
<li><code>true</code> if user overrides warning of <a href="next/rules.html#rule2b">Rule 2b</a> <li><code>true</code> if user overrides warning of
<a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>
violation, else <code>false</code>.</li> violation, else <code>false</code>.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <a href="next/rules.html#rule2b">Rule 2b</a> calculated size is <strong>NOT</strong> <p><strong>IMPORTANT:</strong> if the
<a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>
calculated size is <strong>NOT</strong>
violated but this is <code>true</code> then you stand a good chance of having your violated but this is <code>true</code> then you stand a good chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p></li>
<li><p><code>highbit_warning</code> (boolean)</p> <li><p><code>highbit_warning</code> (boolean)</p>
<ul> <ul>
<li><code>true</code> if <code>iocccsize</code> detects a high bit (unescaped octets with the high <li><code>true</code> if <code>iocccsize</code> detects a high bit (unescaped octets with the high
bit set - octet value &gt;= 128); see <a href="next/rules.html#rule13">Rule 13</a>, else bit set - octet value &gt;= 128); see
<code>false</code>.</li> <a href="next/rules.html#rule-12-utf-8">Rule 12 UTF-8</a>,
else <code>false</code>.</li>
</ul></li> </ul></li>
<li><p><code>nul_warning</code> (boolean)</p> <li><p><code>nul_warning</code> (boolean)</p>
<ul> <ul>
@@ -2411,7 +2469,7 @@ bit set - octet value &gt;= 128); see <a href="next/rules.html#rule13">Rule 13</
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file has no problems and this is <code>true</code> then <p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file has no problems and this is <code>true</code> then
you stand a good chance of having your submission rejected for violating you stand a good chance of having your submission rejected for violating
<a href="next/rules.html#rule17">Rule 17</a>!</p> <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>See the <p>See the
FAQ on “<a href="#makefile">Makefile</a>” FAQ on “<a href="#makefile">Makefile</a>”
for more information.</p></li> for more information.</p></li>
@@ -2421,7 +2479,7 @@ for more information.</p></li>
</ul> </ul>
<p><strong>IMPORTANT:</strong>: if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule then <p><strong>IMPORTANT:</strong>: if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule then
you stand a good chance of having your submission rejected for violating you stand a good chance of having your submission rejected for violating
<a href="next/rules.html#rule17">Rule 17</a>!</p> <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>See the <p>See the
FAQ on “<a href="#makefile">Makefile</a>” FAQ on “<a href="#makefile">Makefile</a>”
for more information.</p></li> for more information.</p></li>
@@ -2431,7 +2489,8 @@ for more information.</p></li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule and this <p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule and this
boolean is <code>true</code> then you stand a good chance of having your boolean is <code>true</code> then you stand a good chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>See the <p>See the
FAQ on “<a href="#makefile">Makefile</a>” FAQ on “<a href="#makefile">Makefile</a>”
for more information.</p></li> for more information.</p></li>
@@ -2441,7 +2500,8 @@ for more information.</p></li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>clean</code> rule and this <p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>clean</code> rule and this
boolean is <code>true</code> then you stand a good chance of having your submission boolean is <code>true</code> then you stand a good chance of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>See the <p>See the
FAQ on “<a href="#makefile">Makefile</a>” FAQ on “<a href="#makefile">Makefile</a>”
for more information.</p></li> for more information.</p></li>
@@ -2451,7 +2511,8 @@ for more information.</p></li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>clobber</code> rule and this <p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>clobber</code> rule and this
boolean is <code>true</code> then you stand a good chance of having your submission boolean is <code>true</code> then you stand a good chance of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>See the <p>See the
FAQ on “<a href="#makefile">Makefile</a>” FAQ on “<a href="#makefile">Makefile</a>”
for more information.</p></li> for more information.</p></li>
@@ -2461,7 +2522,8 @@ for more information.</p></li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>try</code> rule and this <p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>try</code> rule and this
boolean is <code>true</code> then you stand a good chance of having your submission boolean is <code>true</code> then you stand a good chance of having your submission
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p> rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p>See the <p>See the
FAQ on “<a href="#makefile">Makefile</a>” FAQ on “<a href="#makefile">Makefile</a>”
for more information.</p></li> for more information.</p></li>
@@ -2486,8 +2548,8 @@ FAQ on “<a href="#info_json">.info.json</a>”
for more information.</li> for more information.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a <p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a
great chance of having your submission rejected for violating <a href="next/rules.html#rule17">Rule great chance of having your submission rejected for violating
17</a>!</p></li> <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
<li><p><code>auth_JSON</code> (double quoted string)</p> <li><p><code>auth_JSON</code> (double quoted string)</p>
<ul> <ul>
<li>This <code>MUST</code> be <code>".auth.json"</code>, defined as <code>AUTH_JSON_FILENAME</code> in <li>This <code>MUST</code> be <code>".auth.json"</code>, defined as <code>AUTH_JSON_FILENAME</code> in
@@ -2499,7 +2561,8 @@ FAQ on “<a href="#auth_json">.auth.json</a>”
for more information.</li> for more information.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your <p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
<li><p><code>c_src</code> (double quoted string)</p> <li><p><code>c_src</code> (double quoted string)</p>
<ul> <ul>
<li>This <code>MUST</code> be <code>"prog.c"</code>, defined as <code>PROG_C_FILENAME</code> in <li>This <code>MUST</code> be <code>"prog.c"</code>, defined as <code>PROG_C_FILENAME</code> in
@@ -2508,7 +2571,8 @@ in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a
is your submission source code.</li> is your submission source code.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your <p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
<li><p><code>Makefile</code> (double quoted string)</p> <li><p><code>Makefile</code> (double quoted string)</p>
<ul> <ul>
<li>This <code>MUST</code> be <code>"Makefile"</code>, defined as <code>MAKEFILE_FILENAME</code> in <li>This <code>MUST</code> be <code>"Makefile"</code>, defined as <code>MAKEFILE_FILENAME</code> in
@@ -2520,7 +2584,8 @@ FAQ on “<a href="#makefile">Makefile</a>”
for more information.</li> for more information.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your <p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
<li><p><code>remarks</code> (double quoted string)</p> <li><p><code>remarks</code> (double quoted string)</p>
<ul> <ul>
<li>This <code>MUST</code> be <code>"remarks.md"</code>, defined as <code>REMARKS_FILENAME</code> in <li>This <code>MUST</code> be <code>"remarks.md"</code>, defined as <code>REMARKS_FILENAME</code> in
@@ -2532,7 +2597,8 @@ FAQ on “<a href="#remarks_md">remarks.md</a>”
for more information.</li> for more information.</li>
</ul> </ul>
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your <p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li> submission rejected for violating
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p></li>
</ul> </ul>
<p>The <code>manifest</code> <strong>array</strong> also <strong>OPTIONALLY</strong> has one or more of the field:</p> <p>The <code>manifest</code> <strong>array</strong> also <strong>OPTIONALLY</strong> has one or more of the field:</p>
<ul> <ul>
@@ -2544,8 +2610,9 @@ submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!<
and <code>chksubmit</code> will verify this for you; it is <strong>ALSO</strong> an <strong>error</strong> if the and <code>chksubmit</code> will verify this for you; it is <strong>ALSO</strong> an <strong>error</strong> if the
filenames are not unique, not POSIX plus + safe chars only, if they are the filenames are not unique, not POSIX plus + safe chars only, if they are the
wrong permission and various other things. In these cases you stand a great wrong permission and various other things. In these cases you stand a great
risk of having your submission rejected for violating <a href="next/rules.html#rule17">Rule risk of having your submission rejected for violating
17</a>! On the other hand, <strong>ONLY</strong> <code>mkiocccentry</code> will <a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!
On the other hand, <strong>ONLY</strong> <code>mkiocccentry</code> will
verify that the files exist and can be read; <code>txzchk(1)</code> will <strong>NOT</strong> do verify that the files exist and can be read; <code>txzchk(1)</code> will <strong>NOT</strong> do
this for you as it only <strong>LISTS</strong> the tarball: it does <strong>NOT</strong> extract it. this for you as it only <strong>LISTS</strong> the tarball: it does <strong>NOT</strong> extract it.
Even so, the <a href="judges.html">Judges</a> <strong>WILL</strong> extract the tarball and if a Even so, the <a href="judges.html">Judges</a> <strong>WILL</strong> extract the tarball and if a
@@ -2606,7 +2673,9 @@ not a string or is the wrong string. Another obvious example is when things are
out of range (see above for list). Two more examples would be if a field is out of range (see above for list). Two more examples would be if a field is
missing or if an unknown filed is in the file. In these cases (and any others missing or if an unknown filed is in the file. In these cases (and any others
that must be established as valid by <code>chksubmit</code>) your submission would be that must be established as valid by <code>chksubmit</code>) your submission would be
rejected for violating <a href="next/rules.html#rule17">Rule 17</a> and in particular rejected for violating
Rule 17 Packaging](next/rules.html#rule-17-packaging),
and in particular
because <code>chksubmit</code> would not validate the <code>.info.json</code> file.</p> because <code>chksubmit</code> would not validate the <code>.info.json</code> file.</p>
<p>If you wish to <strong>verify</strong> that your <code>.info.json</code> file is valid <strong>JSON</strong> then see the <p>If you wish to <strong>verify</strong> that your <code>.info.json</code> file is valid <strong>JSON</strong> then see the
FAQ on “<a href="#validating_json">validating JSON documents</a>”.</p> FAQ on “<a href="#validating_json">validating JSON documents</a>”.</p>
+136 -66
View File
@@ -214,8 +214,8 @@ Jump to: [top](#)
This toolkit is from the [mkiocccentry This toolkit is from the [mkiocccentry
repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you
use it to package your submission. Not doing so puts you at a great risk of use it to package your submission. Not doing so puts you at a great risk of
violating the [Rules](next/rules.html) and in particular [Rule violating the [Rules](next/rules.html) and in particular
17](next/rules.html#rule17). [Rule 17 Packaging](next/rules.html#rule-17-packaging).
Jump to: [top](#) Jump to: [top](#)
@@ -385,7 +385,8 @@ is not a directory that can be written to. In **this** directory your **submissi
directory** will be created, with the name based on your IOCCC registration directory** will be created, with the name based on your IOCCC registration
username, which is **in the form of a UUID**, and submission number along with username, which is **in the form of a UUID**, and submission number along with
the timestamp; see the [rules](next/rules.html) for more details on this, and in the timestamp; see the [rules](next/rules.html) for more details on this, and in
particular [Rule 17](next/rules.html#rule17). particular
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
**IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and **IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and
`txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If `txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If
@@ -574,7 +575,8 @@ rounds; we look at the author name only if an entry wins. See the
[guidelines](next/guidelines.html) **AND** [rules](next/rules.html) if this is not clear! [guidelines](next/guidelines.html) **AND** [rules](next/rules.html) if this is not clear!
- leaving the remark section empty (which would also indicate that you did not - leaving the remark section empty (which would also indicate that you did not
use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only
include whitespace you would still be violating [Rule 17](next/rules.html#rule17)). include whitespace you would still be violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)).
Jump to: [top](#) Jump to: [top](#)
@@ -632,11 +634,13 @@ for more details.
See the See the
FAQ on "[Rule 17](#rule17)" FAQ on "[Rule 17](#rule17)"
and [Rule 17](next/rules.html#rule17) itself. and
[Rule 17 Packaging](next/rules.html#rule-17-packaging)
itself.
Do remember that if your submission requires different filenames, then you Do remember that if your submission requires different filenames, then you
**MUST** make a **COPY** of them in your `Makefile`. See also [Rule **MUST** make a **COPY** of them in your `Makefile`. See also
11](next/rules.html#rule11). [Rule 5 Purity](next/rules.html#rule-5-purity).
Jump to: [top](#) Jump to: [top](#)
@@ -848,12 +852,12 @@ itself is an extra file, meaning it counts **AS** an extra file.
This file does **NOT** need to pass the `txzchk(1)` tests; only your submission This file does **NOT** need to pass the `txzchk(1)` tests; only your submission
tarball needs to pass these tests. However see below if you do do this. tarball needs to pass these tests. However see below if you do do this.
Please pay careful attention to [Rule 17](next/rules.html#rule17) and in Please pay careful attention to [Rule 17 Packaging](next/rules.html#rule-17-packaging) and in
particular the part about the maximum number of files per particular the part about the maximum number of files per
submission, which not only discusses the maximum submission, which not only discusses the maximum
number of files but also specific rules you must follow number of files but also specific rules you must follow
if you do include a tarball. Not following these points puts you at great risk if you do include a tarball. Not following these points puts you at great risk
of violating [Rule 17](next/rules.html#rule17)! of violating [Rule 17 Packaging](next/rules.html#rule-17-packaging)!
Also, remember what the [guidelines](next/guidelines.html) say: Also, remember what the [guidelines](next/guidelines.html) say:
@@ -915,7 +919,7 @@ contains **IMPORTANT** tools and libraries such as:
- `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`) - `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`)
The above mentioned tools will help you verify that your submission The above mentioned tools will help you verify that your submission
conforms to [Rule 17](next/rules.html#rule17). Each of these tool has a `-h` conforms to [Rule 17 Packaging](next/rules.html#rule-17-packaging). Each of these tool has a `-h`
option that provides command line help. For additional details of each tool, see option that provides command line help. For additional details of each tool, see
its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html). its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html).
@@ -977,7 +981,8 @@ for help.
The `remarks.md` **MUST** be a **non**-empty file in markdown format The `remarks.md` **MUST** be a **non**-empty file in markdown format
(`mkiocccentry(1)` only checks the file size but if you do not have any text in (`mkiocccentry(1)` only checks the file size but if you do not have any text in
it you still risk violating this rule). See also it you still risk violating this rule). See also
[Rule 18](next/rules.html#rule18) and our [Rule 17 Packaging](next/rules.html#rule-17-packaging)
and our
FAQ on "[remarks.md](#remarks_md)", FAQ on "[remarks.md](#remarks_md)",
our our
FAQ on "[markdown](#markdown)" FAQ on "[markdown](#markdown)"
@@ -1083,7 +1088,8 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories
**MUST** be `drwxr-xr-x` (i.e. `0755`); any file ending with `.sh` **MUST** be **MUST** be `drwxr-xr-x` (i.e. `0755`); any file ending with `.sh` **MUST** be
`-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e. `-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e.
`0444`). If any file or directory does not have the correct permissions, your `0444`). If any file or directory does not have the correct permissions, your
submission **WILL** be rejected for violating [Rule 17](next/rules.html#rule17)! submission **WILL** be rejected for violating
[Rule 17 Packaging](next/rules.html#rule17)!
After `mkiocccentry(1)` creates the directories and copies the files with these After `mkiocccentry(1)` creates the directories and copies the files with these
modes, it also verifies them after the fact and if they are not correct it is an modes, it also verifies them after the fact and if they are not correct it is an
@@ -1091,7 +1097,10 @@ modes, it also verifies them after the fact and if they are not correct it is an
If you do need different permissions, then see the If you do need different permissions, then see the
FAQ on "[file permissions](#file_perms)". Also keep in mind FAQ on "[file permissions](#file_perms)". Also keep in mind
[Rule 4](next/rules.html#rule4), [Rule 5](next/rules.html#rule5) and [Rule 21](next/rules.html#rule21). [Rule 4 Files](next/rules.html#rule-4-files),
[Rule 5 Purity](next/rules.html#rule-5-purity),
and
[Rule 16 Anonymous](next/rules.html#rule-16-anonymous).
The `txzchk(1)` tool will also verify file/directory permissions (and many other The `txzchk(1)` tool will also verify file/directory permissions (and many other
things) for you, and so will `chksubmit(1)` (along with other checks on files and things) for you, and so will `chksubmit(1)` (along with other checks on files and
@@ -1105,8 +1114,11 @@ page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug
The tarball filename **MUST** pass `fnamchk(1)`; the tool `txzchk(1)` The tarball filename **MUST** pass `fnamchk(1)`; the tool `txzchk(1)`
will run `fnamchk(1)` as part of its algorithm. If you use `mkiocccentry(1)` will run `fnamchk(1)` as part of its algorithm. If you use `mkiocccentry(1)`
there should be no problem but if you were to package things manually it is there should be no problem but if you were to package things manually it is
possible there could be a problem and this poses a big risk of violating [Rule possible there could be a problem and this poses a big risk of violating
17](next/rules.html#rule17). [Rule 4 Files](next/rules.html#rule-4-files)
or
[Rule 17 Packaging](next/rules.html#rule17).
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
filename is correct. But if you do package your tarball manually, and you have a filename is correct. But if you do package your tarball manually, and you have a
@@ -1114,7 +1126,10 @@ mismatch in what is in the tarball and the name, `txzchk(1)` will flag the
discrepancy as an error and exit with non-zero. discrepancy as an error and exit with non-zero.
These checks **MUST PASS**. If they do not you stand a significant chance of These checks **MUST PASS**. If they do not you stand a significant chance of
having your submission rejected for violating [Rule 17](next/rules.html#rule17)! having your submission rejected for violating
[Rule 4 Files](next/rules.html#rule-4-files)
or
[Rule 17 Packaging](next/rules.html#rule17).
<div id="max-files"> <div id="max-files">
#### Maximum number of files per submission #### Maximum number of files per submission
@@ -1154,7 +1169,11 @@ The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
<hr style="width:50%;text-align:left;margin-left:0"> <hr style="width:50%;text-align:left;margin-left:0">
**IMPORTANT**: where [Rule 17](next/rules.html#rule17) and the tools from the latest **IMPORTANT**: where
[Rule 4 Files](next/rules.html#rule-4-files),
and
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
and the tools from the latest
release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
conflict, the [IOCCC judges](judges.html) will use their best judgment which conflict, the [IOCCC judges](judges.html) will use their best judgment which
is likely to favor [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) code. is likely to favor [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) code.
@@ -1193,8 +1212,11 @@ page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug
for help here and also read our for help here and also read our
FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)". FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)".
At the risk of stating the obvious: submissions that violate [Rule At the risk of stating the obvious: submissions that violate
17](next/rules.html#rule17) **WILL BE REJECTED**, so **BE SURE** to use the latest release of the [Rule 4 Files](next/rules.html#rule-4-files),
or
[Rule 17 Packaging](next/rules.html#rule-17-packaging)
**WILL BE REJECTED**, so **BE SURE** to use the latest release of the
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test
your submission's xz compressed tarball. Do **NOT** assume you have the most your submission's xz compressed tarball. Do **NOT** assume you have the most
recent release without pulling or downloading via GitHub and do **MAKE SURE** you recent release without pulling or downloading via GitHub and do **MAKE SURE** you
@@ -1851,7 +1873,10 @@ two JSON files, `.auth.json` and `.info.json` as well as the `prog.c`,
`Makefile` and `remarks.md` files along with all the other files listed in the `Makefile` and `remarks.md` files along with all the other files listed in the
`.info.json` manifest. (Okay there is an option to skip files but this is for `.info.json` manifest. (Okay there is an option to skip files but this is for
the judges **ONLY**; use of this option to validate your submission puts you at the judges **ONLY**; use of this option to validate your submission puts you at
a great risk of violating [Rule 17](next/rules.html#rule17)!). a great risk of violating
[Rule 4 Files](next/rules.html#rule-4-files),
or
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!).
As an example, if your submission directory is As an example, if your submission directory is
`00000000-0000-4000-0000-000000000000-3/` then you should run the following `00000000-0000-4000-0000-000000000000-3/` then you should run the following
@@ -1877,7 +1902,11 @@ See the
FAQ on "[.auth.json](#auth_json)" FAQ on "[.auth.json](#auth_json)"
and the and the
FAQ on "[.info.json](#info_json)" FAQ on "[.info.json](#info_json)"
as well as [Rule 17](next/rules.html#rule17) for more information. as well as
[Rule 4 Files](next/rules.html#rule-4-files),
and
[Rule 17 Packaging](next/rules.html#rule-17-packaging)
for more information.
**NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you **NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you
do not need to worry about those details. One should use `chksubmit(1)` instead do not need to worry about those details. One should use `chksubmit(1)` instead
@@ -1969,21 +1998,25 @@ In order of the file's contents we describe each required field, below:
- `IOCCC_contest_id` (double quoted string) - `IOCCC_contest_id` (double quoted string)
* The IOCCC contestant ID used as a username in the form of **in the form of * The IOCCC contestant ID used as a username in the form of **in the form of
a UUID** and submission number; see the [Rules](next/rules.html) for more details a UUID** and submission number; see the [Rules](next/rules.html) for more details
on this, and in particular [Rule 17](next/rules.html#rule17). on this, and in particular
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
**NOTE:** if the contest ID is **NOT** in this format then `fnamchk` will **NOTE:** if the contest ID is **NOT** in this format then `fnamchk` will
report it as an **error** and your submission **WILL BE** rejected for report it as an **error** and your submission **WILL BE** rejected for
violating [Rule 17](next/rules.html#rule17)! violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
- `tarball` (double quoted string) - `tarball` (double quoted string)
* The xz compressed tarball filename. * The xz compressed tarball filename.
**IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for **IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for
this to be valid. If there is a mismatch you stand a great risk of having this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating [Rule 17](next/rules.html#rule17)! your submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
Moreover, it is possible that `txzchk` will report a problem through Moreover, it is possible that `txzchk` will report a problem through
`fnamchk(1)` which also puts you at great risk of violating [Rule `fnamchk(1)` which also puts you at great risk of violating
17](next/rules.html#rule17). `txzchk` will use the output of `fnamchk` to [Rule 17 Packaging](next/rules.html#rule-17-packaging). The
`txzchk(1)` tool will use the output of `fnamchk` to
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
validate your filename, or if you have the wrong directory name in the validate your filename, or if you have the wrong directory name in the
tarball, this will be flaggd. tarball, this will be flaggd.
@@ -1996,7 +2029,8 @@ In order of the file's contents we describe each required field, below:
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
- `author_count` (number) - `author_count` (number)
* How many authors this submission has. * How many authors this submission has.
@@ -2060,7 +2094,8 @@ author(s) of the submission:
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
**NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not. **NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not.
@@ -2144,8 +2179,10 @@ will use it on the submission directory as part of the judging process.
At the risk of stating the obvious, if your `.auth.json` file is invalid JSON or At the risk of stating the obvious, if your `.auth.json` file is invalid JSON or
is reported invalid by `chksubmit(1)`, or if your submission directory is is reported invalid by `chksubmit(1)`, or if your submission directory is
reported invalid by `chksubmit(1)`, your submission will almost certainly be reported invalid by `chksubmit(1)`, your submission will almost certainly be
rejected for violating the [Rules](next/rules.html) and in particular [Rule rejected for violating the [Rules](next/rules.html) and in particular
17](next/rules.html#rule17). [Rule 4 Files](next/rules.html#rule-4-files),
and
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
An obvious example where `chksubmit(1)` would fail to validate `.auth.json` is if An obvious example where `chksubmit(1)` would fail to validate `.auth.json` is if
there is a mismatch of type in the JSON file with what is expected, for there is a mismatch of type in the JSON file with what is expected, for
@@ -2154,7 +2191,11 @@ not a string or is the wrong string. Another obvious example is when things are
out of range (see above for list). Two more examples would be if a field is out of range (see above for list). Two more examples would be if a field is
missing or if an unknown filed is in the file. In these cases (and any others missing or if an unknown filed is in the file. In these cases (and any others
that must be established as valid by `chksubmit(1)`) your submission would be that must be established as valid by `chksubmit(1)`) your submission would be
rejected for violating [Rule 17](next/rules.html#rule17) and in particular rejected for violating
[Rule 4 Files](next/rules.html#rule-4-files),
and
[Rule 17 Packaging](next/rules.html#rule-17-packaging)
and in particular
because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other
things too). things too).
@@ -2276,7 +2317,8 @@ In order of the file's contents we describe each required field, below:
- `IOCCC_contest_id` (double quoted string) - `IOCCC_contest_id` (double quoted string)
* The IOCCC contestant ID used as a username in the form of **in the form of * The IOCCC contestant ID used as a username in the form of **in the form of
a UUID** and submission number; see the [rules](next/rules.html) for more details a UUID** and submission number; see the [rules](next/rules.html) for more details
on this, and in particular [Rule 17](next/rules.html#rule17). on this, and in particular
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
- `submit_slot` (number) - `submit_slot` (number)
* The submission number. * The submission number.
@@ -2286,7 +2328,8 @@ In order of the file's contents we describe each required field, below:
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If
this is not the case you stand a great risk of having your submission this is not the case you stand a great risk of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
- `title` (double quoted string) - `title` (double quoted string)
* A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in * A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in
@@ -2295,7 +2338,8 @@ In order of the file's contents we describe each required field, below:
matches the regexp `[a-z0-9][a-z0-9_+-]*`. matches the regexp `[a-z0-9][a-z0-9_+-]*`.
**IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission **IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
- `abstract` (double quoted string) - `abstract` (double quoted string)
* A one line summary of your submission, with a length of 1 **THROUGH** * A one line summary of your submission, with a length of 1 **THROUGH**
@@ -2306,33 +2350,37 @@ In order of the file's contents we describe each required field, below:
The `abstract` may not contain a `;` (semicolon), nor `&` (ampersand), nor `,` (comma). The `abstract` may not contain a `;` (semicolon), nor `&` (ampersand), nor `,` (comma).
**IMPORTANT:** if your abstract is 0 in length or > the maximum abstract length you **IMPORTANT:** if your abstract is 0 in length or > the maximum abstract length you
stand a great risk of having your submission rejected for violating [Rule stand a great risk of having your submission rejected for violating
17](next/rules.html#rule17)! [Rule 17 Packaging](next/rules.html#rule-17-packaging)!
- `tarball` (double quoted string) - `tarball` (double quoted string)
* The xz compressed tarball filename. * The xz compressed tarball filename.
**IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for **IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for
this to be valid. If there is a mismatch you stand a great risk of having this to be valid. If there is a mismatch you stand a great risk of having
your submission rejected for violating [Rule 17](next/rules.html#rule17)! your submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
Moreover, it is possible that `txzchk` will report a problem through Moreover, it is possible that `txzchk` will report a problem through
`fnamchk(1)` which also puts you at great risk of violating [Rule `fnamchk(1)` which also puts you at great risk of violating
17](next/rules.html#rule17). `txzchk` will use the output of `fnamchk` to [Rule 17 Packaging](next/rules.html#rule-17-packaging).
The `txzchk(1)` tool will use the output of `fnamchk` to
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
validate your filename, or if you have the wrong directory name in the validate your filename, or if you have the wrong directory name in the
tarball, this will be flaggd. tarball, this will be flaggd.
- `rule_2a_size` (number) - `rule_2a_size` (number)
* The size calculated of [Rule 2a](next/rules.html#rule2a). * The size calculated of [Rule 2a Gross Size](next/rules.html#rule-2a-gross-size).
**IMPORTANT:** if this violates [Rule 2a](next/rules.html#rule2a) you stand a great **IMPORTANT:** if this violates [Rule 2a](next/rules.html#rule2a) you stand a great
chance of having your submission rejected for violating the chance of having your submission rejected for violating the
[Rules](next/rules.html)! [Rules](next/rules.html)!
- `rule_2b_size` (number) - `rule_2b_size` (number)
* The size calculated of [Rule 2b](next/rules.html#rule2b). * The size calculated of [Rule 2b Next Size](next/rules.html#rule-2b-net-size).
**IMPORTANT:** if this violates [Rule 2b](next/rules.html#rule2b) you stand a great **IMPORTANT:** if this violates
[Rule 2b Next Size](next/rules.html#rule-2b-net-size)
you stand a great
chance of having your submission rejected for violating the chance of having your submission rejected for violating the
[Rules](next/rules.html)! [Rules](next/rules.html)!
@@ -2340,29 +2388,40 @@ In order of the file's contents we describe each required field, below:
* `true` if user override warning of an empty source file, else `false`. * `true` if user override warning of an empty source file, else `false`.
- `rule_2a_override` (boolean) - `rule_2a_override` (boolean)
* `true` if user overrides warning of [Rule 2a](next/rules.html#rule2a) * `true` if user overrides warning of
[Rule 2a Gross Size](next/rules.html#rule-2a-gross-size)
violation, else `false`. violation, else `false`.
**IMPORTANT:** if the [Rule 2a](next/rules.html#rule2a) calculated size is **NOT** **IMPORTANT:** if the
[Rule 2a Gross Size](next/rules.html#rule-2a-gross-size)
calculated size is **NOT**
violated but this is `true` then you stand a good chance of having your violated but this is `true` then you stand a good chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
- `rule_2a_mismatch` (boolean) - `rule_2a_mismatch` (boolean)
* `true` if [Rule 2a](next/rules.html#rule2a) calculated size is not the * `true` if
[Rule 2a Gross Size](next/rules.html#rule-2a-gross-size)
calculated size is not the
same as the file size. same as the file size.
- `rule_2b_override` (boolean) - `rule_2b_override` (boolean)
* `true` if user overrides warning of [Rule 2b](next/rules.html#rule2b) * `true` if user overrides warning of
[Rule 2b Next Size](next/rules.html#rule-2b-net-size)
violation, else `false`. violation, else `false`.
**IMPORTANT:** if the [Rule 2b](next/rules.html#rule2b) calculated size is **NOT** **IMPORTANT:** if the
[Rule 2b Next Size](next/rules.html#rule-2b-net-size)
calculated size is **NOT**
violated but this is `true` then you stand a good chance of having your violated but this is `true` then you stand a good chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
- `highbit_warning` (boolean) - `highbit_warning` (boolean)
* `true` if `iocccsize` detects a high bit (unescaped octets with the high * `true` if `iocccsize` detects a high bit (unescaped octets with the high
bit set - octet value >= 128); see [Rule 13](next/rules.html#rule13), else bit set - octet value >= 128); see
`false`. [Rule 12 UTF-8](next/rules.html#rule-12-utf-8),
else `false`.
- `nul_warning` (boolean) - `nul_warning` (boolean)
* `true` if `iocccsize` detects a NUL character in the `prog.c`, else * `true` if `iocccsize` detects a NUL character in the `prog.c`, else
@@ -2384,7 +2443,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file has no problems and this is `true` then **IMPORTANT:** if the `Makefile` file has no problems and this is `true` then
you stand a good chance of having your submission rejected for violating you stand a good chance of having your submission rejected for violating
[Rule 17](next/rules.html#rule17)! [Rule 17 Packaging](next/rules.html#rule-17-packaging)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2395,7 +2454,7 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:**: if the `Makefile` file does **NOT** have an `all` rule then **IMPORTANT:**: if the `Makefile` file does **NOT** have an `all` rule then
you stand a good chance of having your submission rejected for violating you stand a good chance of having your submission rejected for violating
[Rule 17](next/rules.html#rule17)! [Rule 17 Packaging](next/rules.html#rule-17-packaging)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2406,7 +2465,8 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this
boolean is `true` then you stand a good chance of having your boolean is `true` then you stand a good chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2417,7 +2477,8 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this
boolean is `true` then you stand a good chance of having your submission boolean is `true` then you stand a good chance of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2428,7 +2489,8 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this
boolean is `true` then you stand a good chance of having your submission boolean is `true` then you stand a good chance of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2439,7 +2501,8 @@ In order of the file's contents we describe each required field, below:
**IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this **IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this
boolean is `true` then you stand a good chance of having your submission boolean is `true` then you stand a good chance of having your submission
rejected for violating [Rule 17](next/rules.html#rule17)! rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
See the See the
FAQ on "[Makefile](#makefile)" FAQ on "[Makefile](#makefile)"
@@ -2464,8 +2527,8 @@ The `mkiocccentry(1)` tool will write it in this order:
for more information. for more information.
**IMPORTANT:** if this is **NOT** the case you stand a **IMPORTANT:** if this is **NOT** the case you stand a
great chance of having your submission rejected for violating [Rule great chance of having your submission rejected for violating
17](next/rules.html#rule17)! [Rule 17 Packaging](next/rules.html#rule-17-packaging)!
- `auth_JSON` (double quoted string) - `auth_JSON` (double quoted string)
* This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in * This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in
@@ -2477,7 +2540,8 @@ The `mkiocccentry(1)` tool will write it in this order:
for more information. for more information.
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
- `c_src` (double quoted string) - `c_src` (double quoted string)
* This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in * This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in
@@ -2486,7 +2550,8 @@ The `mkiocccentry(1)` tool will write it in this order:
is your submission source code. is your submission source code.
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
- `Makefile` (double quoted string) - `Makefile` (double quoted string)
* This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in * This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in
@@ -2498,7 +2563,8 @@ The `mkiocccentry(1)` tool will write it in this order:
for more information. for more information.
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
- `remarks` (double quoted string) - `remarks` (double quoted string)
* This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in * This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in
@@ -2510,7 +2576,8 @@ The `mkiocccentry(1)` tool will write it in this order:
for more information. for more information.
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
submission rejected for violating [Rule 17](next/rules.html#rule17)! submission rejected for violating
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
The `manifest` **array** also **OPTIONALLY** has one or more of the field: The `manifest` **array** also **OPTIONALLY** has one or more of the field:
@@ -2522,8 +2589,9 @@ The `manifest` **array** also **OPTIONALLY** has one or more of the field:
and `chksubmit` will verify this for you; it is **ALSO** an **error** if the and `chksubmit` will verify this for you; it is **ALSO** an **error** if the
filenames are not unique, not POSIX plus + safe chars only, if they are the filenames are not unique, not POSIX plus + safe chars only, if they are the
wrong permission and various other things. In these cases you stand a great wrong permission and various other things. In these cases you stand a great
risk of having your submission rejected for violating [Rule risk of having your submission rejected for violating
17](next/rules.html#rule17)! On the other hand, **ONLY** `mkiocccentry` will [Rule 17 Packaging](next/rules.html#rule-17-packaging)!
On the other hand, **ONLY** `mkiocccentry` will
verify that the files exist and can be read; `txzchk(1)` will **NOT** do verify that the files exist and can be read; `txzchk(1)` will **NOT** do
this for you as it only **LISTS** the tarball: it does **NOT** extract it. this for you as it only **LISTS** the tarball: it does **NOT** extract it.
Even so, the [Judges](judges.html) **WILL** extract the tarball and if a Even so, the [Judges](judges.html) **WILL** extract the tarball and if a
@@ -2585,7 +2653,9 @@ not a string or is the wrong string. Another obvious example is when things are
out of range (see above for list). Two more examples would be if a field is out of range (see above for list). Two more examples would be if a field is
missing or if an unknown filed is in the file. In these cases (and any others missing or if an unknown filed is in the file. In these cases (and any others
that must be established as valid by `chksubmit`) your submission would be that must be established as valid by `chksubmit`) your submission would be
rejected for violating [Rule 17](next/rules.html#rule17) and in particular rejected for violating
Rule 17 Packaging](next/rules.html#rule-17-packaging),
and in particular
because `chksubmit` would not validate the `.info.json` file. because `chksubmit` would not validate the `.info.json` file.
If you wish to **verify** that your `.info.json` file is valid **JSON** then see the If you wish to **verify** that your `.info.json` file is valid **JSON** then see the
+2 -2
View File
@@ -747,11 +747,11 @@ as well as a critical fix for installing on BSD based systems.</p>
and compile the <a href="faq.html#mkiocccentry">mkiocccentry tool set</a>. You may also wish to install this code. and compile the <a href="faq.html#mkiocccentry">mkiocccentry tool set</a>. You may also wish to install this code.
See also the <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md">mkiocccentry FAQ</a> for more information.</p> See also the <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md">mkiocccentry FAQ</a> for more information.</p>
<h2 id="section-17">2024-12-30</h2> <h2 id="section-17">2024-12-30</h2>
<p>The IOCCC <a href="next/rules.html#rule13">Rule 13</a> no longer discourages the <p>The IOCCC <a href="next/rules.html#rule-12-utf-8">Rule 12 UTF-8</a> no longer discourages the
use of UTF-8 in C source. Since the days of <code>-std=gnu17</code> compilers, use of UTF-8 in C source. Since the days of <code>-std=gnu17</code> compilers,
UTF-8 characters do not impose a compiler problem. The related guideline UTF-8 characters do not impose a compiler problem. The related guideline
states that “Rule 13 no longer discourages the use of UTF-8 +characters in C code”.</p> states that “Rule 13 no longer discourages the use of UTF-8 +characters in C code”.</p>
<p>The IOCCC <a href="next/rules.html#rule8">Rule 8</a> wording has been fixed. It no longer <p>The IOCCC <a href="next/rules.html#rule-8-submission">Rule 8 Submission</a> wording has been fixed. It no longer
states that email will be sent. Instead it talks about potential slot comment states that email will be sent. Instead it talks about potential slot comment
modifications as means to tell the submitter that their submission was received.</p> modifications as means to tell the submitter that their submission was received.</p>
<p>All of the import IOCCC dates within the <a href="next/rules.html">IOCCC rules</a> <p>All of the import IOCCC dates within the <a href="next/rules.html">IOCCC rules</a>
+2 -2
View File
@@ -406,12 +406,12 @@ See also the [mkiocccentry FAQ](https://github.com/ioccc-src/mkiocccentry/blob/m
## 2024-12-30 ## 2024-12-30
The IOCCC [Rule 13](next/rules.html#rule13) no longer discourages the The IOCCC [Rule 12 UTF-8](next/rules.html#rule-12-utf-8) no longer discourages the
use of UTF-8 in C source. Since the days of `-std=gnu17` compilers, use of UTF-8 in C source. Since the days of `-std=gnu17` compilers,
UTF-8 characters do not impose a compiler problem. The related guideline UTF-8 characters do not impose a compiler problem. The related guideline
states that "Rule 13 no longer discourages the use of UTF-8 +characters in C code". states that "Rule 13 no longer discourages the use of UTF-8 +characters in C code".
The IOCCC [Rule 8](next/rules.html#rule8) wording has been fixed. It no longer The IOCCC [Rule 8 Submission](next/rules.html#rule-8-submission) wording has been fixed. It no longer
states that email will be sent. Instead it talks about potential slot comment states that email will be sent. Instead it talks about potential slot comment
modifications as means to tell the submitter that their submission was received. modifications as means to tell the submitter that their submission was received.
+79 -39
View File
@@ -569,10 +569,13 @@ may change from contest to contest.</p>
<li><a href="../faq.html#using_mkiocccentry">using the mkiocccentry tools</a></li> <li><a href="../faq.html#using_mkiocccentry">using the mkiocccentry tools</a></li>
</ul> </ul>
<p>Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of <p>Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
violating <a href="rules.html#rule17">Rule 17</a>, especially as <code>mkiocccentry(1)</code> does a violating
<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 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 any of those checks fail, you are at a very great risk of having your submission
rejected for violating <a href="rules.html#rule17">Rule 17</a>.</p> rejected for violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the <p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>.</p> <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 <p><strong>IMPORTANT NOTE</strong>: the tools that require other tools, <code>mkiocccentry(1)</code> and
@@ -608,13 +611,13 @@ option. See the
FAQ on “<a href="../faq.html#uuid">how to avoid re-entering your UUID</a>” FAQ on “<a href="../faq.html#uuid">how to avoid re-entering your UUID</a>”
for more details. Note that the <code>-i answers</code> option cannot be used with the UUID for more details. Note that the <code>-i answers</code> option cannot be used with the UUID
options as the answers file includes the UUID.</p> options as the answers file includes the UUID.</p>
<p>The overall size limit (see <a href="rules.html#rule2a">Rule 2a</a>) on <code>prog.c</code> has been <p>The overall size limit (see Rule 2a Gross Size](rules.html#rule-2a-gross-size)) on <code>prog.c</code> has been
<strong>increased from 4096 to 4993</strong> bytes. <strong>increased from 4096 to 4993</strong> bytes.
The <a href="rules.html#rule2a">Rule 2a</a> size was changed from The <a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>size was changed from
<strong>4096</strong> to <strong>4993</strong> to keep the “2b to 2a” size ratio to a <strong>4096</strong> to <strong>4993</strong> to keep the “2b to 2a” size ratio to a
value similar to the <a href="../faq.html#size_rule2001-2012">2001-2012</a> and value similar to the <a href="../faq.html#size_rule2001-2012">2001-2012</a> and
<a href="../faq.html#size_rule2013-2020">2013-2020</a> IOCCC eras.</p> <a href="../faq.html#size_rule2013-2020">2013-2020</a> IOCCC eras.</p>
<p>The <a href="rules.html#rule2b">Rule 2b</a> size has <strong>increased from 2053 to 2503</strong> <p>The <a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a> size has <strong>increased from 2053 to 2503</strong>
bytes.</p> bytes.</p>
<p class="leftbar"> <p class="leftbar">
However, you should pay especial attention to our remarks in the <a href="../2024/index.html">IOCCC28 However, you should pay especial attention to our remarks in the <a href="../2024/index.html">IOCCC28
@@ -623,14 +626,19 @@ index.html</a>:
<p class="leftbar"> <p class="leftbar">
<blockquote> <blockquote>
<p><strong>IMPORTANT HINT</strong>: Only 3 of the 23 <strong>IOCCC28 winners</strong> came close to the <p><strong>IMPORTANT HINT</strong>: Only 3 of the 23 <strong>IOCCC28 winners</strong> came close to the
<a href="../next/rules.html#rule2">Rule 2 size limit</a>. Large code size isn’t <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 everything. :-) Those submitting to future contents should <strong>take a careful
note</strong> of that fact.</p> note</strong> of that fact.</p>
</blockquote> </blockquote>
</p> </p>
<p>Your submission must satisfy <strong>BOTH</strong> the maximum size <p>Your submission must satisfy <strong>BOTH</strong> the maximum size
<a href="rules.html#rule2a">Rule 2a</a> <strong>AND</strong> the IOCCC size <a href="rules.html#rule2b">Rule 2b</a>.</p> <a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
<p>To check your code against <a href="rules.html#rule2">Rule 2</a>, use the <code>iocccentry(1)</code> tool. <strong>AND</strong>
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.
For example:</p> For example:</p>
<pre><code> iocccsize prog.c</code></pre> <pre><code> iocccsize prog.c</code></pre>
<p>The IOCCC size tool algorithm can be summarized as follows:</p> <p>The IOCCC size tool algorithm can be summarized as follows:</p>
@@ -657,7 +665,8 @@ if you are <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” abo
BESM-6, and 2503 is a decimal anagram of 2053.</p> BESM-6, and 2503 is a decimal anagram of 2053.</p>
<p>Take note that this secondary limit imposed by the IOCCC size tool <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 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#rule2">Rule 2</a>.</p> to get around the size limits of
<a href="rules.html#rule-2-size">Rule 2 Size</a>.</p>
<p>Yes Virginia, <strong>that is a hint</strong>!</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>The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.</p>
<p class="leftbar"> <p class="leftbar">
@@ -765,7 +774,8 @@ misleading comments and variable names might be a <strong>VERY GOOD START</stron
to a great submission!</p> to a great submission!</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<h1 id="mkiocccentry"><code>mkiocccentry</code></h1> <h1 id="mkiocccentry"><code>mkiocccentry</code></h1>
<p><a href="rules.html#rule17">Rule 17</a> (the <code>mkiocccentry(1)</code> rule) states that <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> 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> <p>See the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
for the <code>mkiocccentry(1)</code> tool and below for more details.</p> for the <code>mkiocccentry(1)</code> tool and below for more details.</p>
@@ -814,7 +824,9 @@ then you will have to specify the options (such as paths) for the tools that are
<code>chksubmit(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>.</p> <code>chksubmit(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>.</p>
<p>Make sure you have <p>Make sure you have
the latest version of of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> 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#rule17">Rule 17</a> by mistake.</p> so that you do not violate
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>
by mistake.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="mkiocccentry-synopsis"> <div id="mkiocccentry-synopsis">
<h2 id="mkiocccentry1-synopsis"><code>mkiocccentry(1)</code> synopsis</h2> <h2 id="mkiocccentry1-synopsis"><code>mkiocccentry(1)</code> synopsis</h2>
@@ -841,7 +853,7 @@ for even more information.</p>
execute one or more additional tools.</p> execute one or more additional tools.</p>
<h2 id="iocccsize"><code>iocccsize</code></h2> <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 <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#rule2">Rule 2</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> noted above.</p>
<p>In other words, you no longer need to run <code>iocccsize</code> manually. However, the <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> checks described above are still made but through the <code>mkiocccentry(1)</code> tool itself.</p>
@@ -921,8 +933,8 @@ installed separately, in order to use the tools in <code>mkiocccentry</code>.</p
do install</em> the libraries from their respective repos, it/they will <strong>not be do install</em> the libraries from their respective repos, it/they will <strong>not be
used</strong> when compiling the <code>mkiocccentry</code> tools. This is important to 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 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#rule17">Rule <code>chksubmit</code> (in the JSON files created by <code>mkiocccentry(1)</code>). See
17</a>!</p> <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p class="leftbar"> <p class="leftbar">
We <strong>HIGHLY</strong> recommend you install the <code>mkiocccentry</code> toolkit, however. We <strong>HIGHLY</strong> recommend you install the <code>mkiocccentry</code> toolkit, however.
</p> </p>
@@ -955,7 +967,8 @@ code</a> or the man
page. You might just find a fun option if you do either of these!</p> 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 <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 manually package your submission tarball and/or find and exploit a missing
check, you could still be violating <a href="rules.html#rule17">Rule 17</a>.</p> check, you could still be violating
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<div id="extra-files"> <div id="extra-files">
<h2 id="including-optional-and-extra-files">Including optional and extra files</h2> <h2 id="including-optional-and-extra-files">Including optional and extra files</h2>
</div> </div>
@@ -970,7 +983,9 @@ file</em>. The non-extra files are considered <em>free files</em>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
Of course any dot file that is not <code>.auth.json</code> and <code>.info.json</code> will result in 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#rule17">Rule 17</a>, regardless of its depth. a violation of
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>,
regardless of its depth.
</p> </p>
<p>If you use an optional filename for something other than their intended use <p>If you use an optional filename for something other than their intended use
in order to get past the file limit, we will consider that an in order to get past the file limit, we will consider that an
@@ -1000,10 +1015,13 @@ said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove
The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent this. You can The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent this. You can
do the same like:</p> do the same like:</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre> <pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<p>See <a href="rules.html#rule17">Rule 17</a> and also the <p>See
<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> FAQ on “<a href="../faq.html#max-files">maximum number of files</a>”.</p>
<p>If you do not follow these points, you <p>If you do not follow these points, you
are at a great risk of violating <a href="rules.html#rule17">Rule 17</a>!</p> are at a great risk of violating
<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, <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 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 be done. In other words you should NOT use a tarball for a test-suite unless you
@@ -1018,14 +1036,16 @@ 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 <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 <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 directory name of the tarball) then it is an <strong>error</strong> and you risk violating
<a href="rules.html#rule17">Rule 17</a>. Nevertheless, you can run the tool manually, <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.
Nevertheless, you can run the tool manually,
should you wish to.</p> should you wish to.</p>
<p>For more information on <code>fnamchk</code> and how to manually validate your submission <p>For more information on <code>fnamchk</code> and how to manually validate your submission
tarball filename, see the tarball filename, see the
FAQ on “<a href="../faq.html#fnamchk">fnamchk</a>”.</p> 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 <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#rule17">Rule bug in <code>fnamchk(1)</code> and as such, ignoring such an issue risks violating
17</a> which is a big risk. Of course, using <code>mkiocccentry(1)</code> <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 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 <code>mkiocccentry(1)</code> was used it would rather suggest a bug in one of the tools and
you should <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&amp;labels=bug&amp;projects=&amp;template=bug_report.yml&amp;title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry issues you should <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&amp;labels=bug&amp;projects=&amp;template=bug_report.yml&amp;title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry issues
@@ -1037,7 +1057,9 @@ the risk of stating the obvious, you run <strong>A VERY BIG RISK</strong> of hav
your submission rejected if you package your own tarball, and there are <strong>ANY your submission rejected if you package your own tarball, and there are <strong>ANY
problems</strong>. For instance, if <code>chksubmit(1)</code> found a problem in your <code>.info.json</code> 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 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#rule17">Rule 17</a>. But even if it manually, you would be violating
<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> everything checks out OK you should <strong>NOT</strong> assume that everything <strong>IS</strong> OK.</p>
<div id="bugs"> <div id="bugs">
<h1 id="problems-andor-bugs-in-the-mkiocccentry-toolkit">Problems and/or bugs in the mkiocccentry toolkit</h1> <h1 id="problems-andor-bugs-in-the-mkiocccentry-toolkit">Problems and/or bugs in the mkiocccentry toolkit</h1>
@@ -1252,7 +1274,8 @@ the <code>mkiocccentry(1)</code> tool.</p>
somehow, <code>txzchk(1)</code> will flag it as an error. When the judges run <code>txzchk(1)</code> somehow, <code>txzchk(1)</code> will flag it as an error. When the judges run <code>txzchk(1)</code>
on the uploaded submission compressed tarball, if anything is wrong, for on the uploaded submission compressed tarball, if anything is wrong, for
instance if you “sneak in” any dot files or dot directories, the submission instance if you “sneak in” any dot files or dot directories, the submission
<strong>WILL BE REJECTED</strong> for violating <a href="rules.html#rule17">Rule 17</a>!</p> <strong>WILL BE REJECTED</strong> for violating
<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 <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 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> submission Makefile don’t depend on such tools.</p>
@@ -1499,8 +1522,9 @@ Please try to be much more creative.</p>
large data files to get around the source code size limit.</p> large data files to get around the source code size limit.</p>
<p class="leftbar"> <p class="leftbar">
We do not recommend submitting <a href="https://systemd.io">systemd</a> source code to the IOCCC, We do not recommend submitting <a href="https://systemd.io">systemd</a> source code to the IOCCC,
if nothing else because that code is likely to exceed <a href="rules.html#rule2">the source code if nothing else because that code is likely to exceed
size limit</a>. This isn’t to say that another highly compact and obfuscated <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. replacement of <code>init(8)</code> would not be an interesting submission.
</p> </p>
<p>Did we remember to indicate that programs that blatantly use <p>Did we remember to indicate that programs that blatantly use
@@ -1514,8 +1538,10 @@ of code, and the other that is formatted more like a typical C
program, we tend to favor the second version. Of course, a third program, we tend to favor the second version. Of course, a third
version of the same program that is formatted in an interesting version of the same program that is formatted in an interesting
and/or obfuscated way, would definitely win over the first two! 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 Remember, you can submit more than one submission. See the
rules</a> for details (in particular, <a href="rules.html#rule9">Rule 9</a>).</p> <a href="rules.html">IOCCC rules</a>
for details (in particular,
<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>’ <p>We suggest that you avoid trying for the ‘<strong>smallest self-replicating</strong>’
source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in
<a href="../years.html#1994">1994</a>.</p> <a href="../years.html#1994">1994</a>.</p>
@@ -1623,7 +1649,8 @@ or Linux curses.</p>
If you do <code>#include &lt;curses.h&gt;</code> make <strong>CERTAIN</strong> you link in curses (i.e. If you do <code>#include &lt;curses.h&gt;</code> make <strong>CERTAIN</strong> you link in curses (i.e.
<code>-lcurses</code>) and not ncurses (i.e. <code>-lncurses</code>). <code>-lcurses</code>) and not ncurses (i.e. <code>-lncurses</code>).
</p> </p>
<p><a href="rules.html#rule13">Rule 13</a> no longer discourages the use of UTF-8 <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> characters in C code.</p>
<p>It is a very good idea to, in your <code>remarks.md</code> file, tell us why you <p>It is a very good idea to, in your <code>remarks.md</code> file, tell us why you
think your submission is obfuscated. This is particularly true if think your submission is obfuscated. This is particularly true if
@@ -1653,13 +1680,15 @@ Howe</a>, in which case it is original! :-)
Submitting source code that uses the contents of Submitting source code that uses the contents of
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">iocccsize.c</a>, <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 <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#rule7">Rule 7</a>.</p> risk of violating
<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, <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 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 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>, <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 <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#rule7">Rule 7</a>.</p> run the risk of violating
<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 <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 tools</a>, <em>including, <strong>but not
limited</strong></em> to limited</strong></em> to
@@ -1682,15 +1711,17 @@ 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 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 Ferguson</a> or <a href="http://www.isthe.com/chongo/index.html">Landon Curt
Noll</a>, might run the risk of violating Noll</a>, might run the risk of violating
<a href="rules.html#rule7">Rule 7</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>, <p>And unless you are <a href="https://en.wikipedia.org/wiki/Landon_Curt_Noll">Landon Curt Noll</a>,
the code in the code in
<a href="https://github.com/ioccc-src/mkiocccentry/tree/master/dbg">dbg</a> and <a href="https://github.com/ioccc-src/mkiocccentry/tree/master/dbg">dbg</a> and
<a href="https://github.com/ioccc-src/mkiocccentry/tree/master/dyn_array">dyn_array</a> are <a href="https://github.com/ioccc-src/mkiocccentry/tree/master/dyn_array">dyn_array</a> are
not original works. Submitting source code that uses the contents of those 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>, 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#rule7">Rule 7</a>.</p> might run the risk of violating
<p><a href="rules.html#rule7">Rule 7</a> does not prohibit you from writing your own <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 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> Noll</a>, in which case you <em>probably</em>
won’t win since <a href="../judges.html">IOCCC judges</a> should not enter the IOCCC! :-) won’t win since <a href="../judges.html">IOCCC judges</a> should not enter the IOCCC! :-)
@@ -1698,14 +1729,17 @@ However, <strong><em>if</em></strong> you do write your own version, you <strong
<strong><em>more</em> interesting</strong> than simply implementing the <a href="../index.html">IOCCC</a> <strong><em>more</em> interesting</strong> than simply implementing the <a href="../index.html">IOCCC</a>
tools’ algorithms.</p> tools’ algorithms.</p>
<p>Even so, we do not recommend you try and submit a JSON parser due to <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#rule2">the source code size limit</a> the fact it will likely exceed
<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 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 <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 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
obfuscated, but unless you have some really clever way to compact and 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 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 <a href="https://www.gnu.org/software/bison/">bison</a> you will likely not win, either
because of the <a href="rules.html#rule2">source code size limit</a> or because it is not because of the
<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> 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 generated code of
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/jparse">jparse</a>.</p> <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/jparse">jparse</a>.</p>
@@ -1785,7 +1819,9 @@ character tab stop.</p>
<p><strong>PLEASE</strong> observe our <a href="../markdown.html">IOCCC markdown guidelines</a> <p><strong>PLEASE</strong> observe our <a href="../markdown.html">IOCCC markdown guidelines</a>
when forming your submission’s <code>remarks.md</code> file. And if your submission when forming your submission’s <code>remarks.md</code> file. And if your submission
contains additional markdown files, please follow those same guidelines for contains additional markdown files, please follow those same guidelines for
those files. See also <a href="rules.html#rule19">Rule 19</a> and our those files. See also
<a href="rules.html#rule-4-files">Rule 4 Files</a>,
and the
FAQ on “<a href="../faq.html#markdown">markdown</a>”.</p> FAQ on “<a href="../faq.html#markdown">markdown</a>”.</p>
<p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain <p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain
useful, informative, and even humorous content about your submission. Yes, this useful, informative, and even humorous content about your submission. Yes, this
@@ -1821,8 +1857,11 @@ your submission is valid. Humor and/or creativity help plead a case.
As there is no guarantee that you will succeed, you might consider As there is no guarantee that you will succeed, you might consider
submitting an alternate version that conforms to the submitting an alternate version that conforms to the
<a href="rules.html">IOCCC rules</a>.</p> <a href="rules.html">IOCCC rules</a>.</p>
<p>If you do bypass the <code>mkiocccentry(1)</code> warnings about <a href="rules.html#rule2a">Rule <p>If you do bypass the <code>mkiocccentry(1)</code> warnings about
2a</a> and/or about <a href="rules.html#rule2b">Rule 2b</a> or any other <a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
and/or about
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>
or any other
rule and submit a submission anyway, you <strong>MUST</strong> try to justify why the IOCCC rule and submit a submission anyway, you <strong>MUST</strong> try to justify why the IOCCC
<a href="../judges.html">IOCCC judges</a> should not reject your submission due to a rule <a href="../judges.html">IOCCC judges</a> should not reject your submission due to a rule
violation, and you would be wise to do this towards the top of your <code>remarks.md</code> violation, and you would be wise to do this towards the top of your <code>remarks.md</code>
@@ -2001,7 +2040,8 @@ strange/creative layout submission. We sometimes also select a
submission that abuses the <a href="guidelines.html">IOCCC guidelines</a> in an interesting way, submission that abuses the <a href="guidelines.html">IOCCC guidelines</a> in an interesting way,
or that stretches the contest <a href="rules.html">rules</a> that while legal, it 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> nevertheless goes against the <strong>intent</strong> of the <a href="rules.html">rules</a>.</p>
<p>Nevertheless, see <a href="rules.html#rule12">Rule 12</a>.</p> <p>Nevertheless, see
<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 <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 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> ‘<strong>best</strong>’ is picked because it does well in a number of categories.</p>
+80 -39
View File
@@ -158,10 +158,13 @@ See FAQs regarding:
- [using the mkiocccentry tools](../faq.html#using_mkiocccentry) - [using the mkiocccentry tools](../faq.html#using_mkiocccentry)
Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of
violating [Rule 17](rules.html#rule17), especially as `mkiocccentry(1)` does a violating
[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 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 any of those checks fail, you are at a very great risk of having your submission
rejected for violating [Rule 17](rules.html#rule17). rejected for violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
We **STRONGLY** recommend you **do** install the We **STRONGLY** recommend you **do** install the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry). [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry).
@@ -205,14 +208,14 @@ FAQ on "[how to avoid re-entering your UUID](../faq.html#uuid)"
for more details. Note that the `-i answers` option cannot be used with the UUID for more details. Note that the `-i answers` option cannot be used with the UUID
options as the answers file includes the UUID. options as the answers file includes the UUID.
The overall size limit (see [Rule 2a](rules.html#rule2a)) on `prog.c` has been The overall size limit (see Rule 2a Gross Size](rules.html#rule-2a-gross-size)) on `prog.c` has been
**increased from 4096 to 4993** bytes. **increased from 4096 to 4993** bytes.
The [Rule 2a](rules.html#rule2a) size was changed from The [Rule 2b Next Size](rules.html#rule-2b-net-size)size was changed from
**4096** to **4993** to keep the "2b to 2a" size ratio to a **4096** to **4993** to keep the "2b to 2a" size ratio to a
value similar to the [2001-2012](../faq.html#size_rule2001-2012) and value similar to the [2001-2012](../faq.html#size_rule2001-2012) and
[2013-2020](../faq.html#size_rule2013-2020) IOCCC eras. [2013-2020](../faq.html#size_rule2013-2020) IOCCC eras.
The [Rule 2b](rules.html#rule2b) size has **increased from 2053 to 2503** The [Rule 2b Next Size](rules.html#rule-2b-net-size) size has **increased from 2053 to 2503**
bytes. bytes.
<p class="leftbar"> <p class="leftbar">
@@ -222,16 +225,21 @@ index.html](../2024/index.html):
<p class="leftbar"> <p class="leftbar">
> **IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the > **IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the
[Rule 2 size limit](../next/rules.html#rule2). Large code size isn't [Rule 2 Size](rules.html#rule-2-size) limit.
Large code size isn't
everything. :-) Those submitting to future contents should **take a careful everything. :-) Those submitting to future contents should **take a careful
note** of that fact. note** of that fact.
</p> </p>
Your submission must satisfy **BOTH** the maximum size Your submission must satisfy **BOTH** the maximum size
[Rule 2a](rules.html#rule2a) **AND** the IOCCC size [Rule 2b](rules.html#rule2b). [Rule 2a Gross Size](rules.html#rule-2a-gross-size)
**AND**
the IOCCC size
[Rule 2b Next Size](rules.html#rule-2b-net-size).
To check your code against [Rule 2](rules.html#rule2), use the `iocccentry(1)` tool. To check your code against
[Rule 2 Size](rules.html#rule-2-size), use the `iocccentry(1)` tool.
For example: For example:
``` <!---sh--> ``` <!---sh-->
@@ -267,7 +275,8 @@ BESM-6, and 2503 is a decimal anagram of 2053.
Take note that this secondary limit imposed by the IOCCC size tool 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 obviates some of the need to `#define` C reserved words in an effort
to get around the size limits of [Rule 2](rules.html#rule2). to get around the size limits of
[Rule 2 Size](rules.html#rule-2-size).
Yes Virginia, **that is a hint**! Yes Virginia, **that is a hint**!
@@ -408,7 +417,8 @@ Jump to: [top](#)
# `mkiocccentry` # `mkiocccentry`
</div> </div>
[Rule 17](rules.html#rule17) (the `mkiocccentry(1)` rule) states that [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. you **REALLY SHOULD** use the `mkiocccentry(1)` tool to package your submission tarball.
See the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) See the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
@@ -471,7 +481,9 @@ then you will have to specify the options (such as paths) for the tools that are
Make sure you have Make sure you have
the latest version of of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) the latest version of of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
so that you do not violate [Rule 17](rules.html#rule17) by mistake. so that you do not violate
[Rule 17 Packaging](rules.html#rule-17-packaging)
by mistake.
Jump to: [top](#) Jump to: [top](#)
@@ -515,7 +527,7 @@ execute one or more additional tools.
</div> </div>
`mkiocccentry(1)` will use code from `iocccsize(1)` which detects a number of `mkiocccentry(1)` will use code from `iocccsize(1)` which detects a number of
issues (such as [Rule 2](rules.html#rule2)) 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. noted above.
In other words, you no longer need to run `iocccsize` manually. However, the In other words, you no longer need to run `iocccsize` manually. However, the
@@ -618,8 +630,8 @@ In other words, `mkiocccentry` **contains everything** you need, and _even if yo
do install_ the libraries from their respective repos, it/they will **not be do install_ the libraries from their respective repos, it/they will **not be
used** when compiling the `mkiocccentry` tools. This is important to used** when compiling the `mkiocccentry` tools. This is important to
make sure that you're using the correct versions, which is also verified by 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 `chksubmit` (in the JSON files created by `mkiocccentry(1)`). See
17](rules.html#rule17)! [Rule 17 Packaging](rules.html#rule-17-packaging)!
<p class="leftbar"> <p class="leftbar">
We **HIGHLY** recommend you install the `mkiocccentry` toolkit, however. We **HIGHLY** recommend you install the `mkiocccentry` toolkit, however.
@@ -665,7 +677,8 @@ 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 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 manually package your submission tarball and/or find and exploit a missing
check, you could still be violating [Rule 17](rules.html#rule17). check, you could still be violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
<div id="extra-files"> <div id="extra-files">
## Including optional and extra files ## Including optional and extra files
@@ -684,7 +697,9 @@ file_. The non-extra files are considered _free files_.
<p class="leftbar"> <p class="leftbar">
Of course any dot file that is not `.auth.json` and `.info.json` will result in Of course any dot file that is not `.auth.json` and `.info.json` will result in
a violation of [Rule 17](rules.html#rule17), regardless of its depth. a violation of
[Rule 17 Packaging](rules.html#rule-17-packaging),
regardless of its depth.
</p> </p>
If you use an optional filename for something other than their intended use If you use an optional filename for something other than their intended use
@@ -725,11 +740,14 @@ do the same like:
tar --format=v7 -cJf foo.txz directory tar --format=v7 -cJf foo.txz directory
``` ```
See [Rule 17](rules.html#rule17) and also the See
[Rule 17 Packaging](rules.html#rule-17-packaging)
and also the
FAQ on "[maximum number of files](../faq.html#max-files)". FAQ on "[maximum number of files](../faq.html#max-files)".
If you do not follow these points, you If you do not follow these points, you
are at a great risk of violating [Rule 17](rules.html#rule17)! are at a great risk of violating
[Rule 17 Packaging](rules.html#rule-17-packaging)!
**NOTE**: if you want to include a test-suite that requires a lot of files, **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 please suggest this in your `remarks.md` and if your submission wins it can
@@ -750,7 +768,8 @@ Jump to: [top](#)
As an important part of its algorithm, [txzchk&lpar;1&rpar;](#txzchk) directly executes 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 `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 directory name of the tarball) then it is an **error** and you risk violating
[Rule 17](rules.html#rule17). Nevertheless, you can run the tool manually, [Rule 17 Packaging](rules.html#rule-17-packaging).
Nevertheless, you can run the tool manually,
should you wish to. should you wish to.
For more information on `fnamchk` and how to manually validate your submission For more information on `fnamchk` and how to manually validate your submission
@@ -758,8 +777,9 @@ tarball filename, see the
FAQ on "[fnamchk](../faq.html#fnamchk)". FAQ on "[fnamchk](../faq.html#fnamchk)".
It is extremely unlikely that `fnamchk(1)` reporting an invalid filename is a 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 bug in `fnamchk(1)` and as such, ignoring such an issue risks violating
17](rules.html#rule17) which is a big risk. Of course, using `mkiocccentry(1)` [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 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 `mkiocccentry(1)` was used it would rather suggest a bug in one of the tools and
you should [report it as a bug at the mkiocccentry issues you should [report it as a bug at the mkiocccentry issues
@@ -772,7 +792,9 @@ the risk of stating the obvious, you run **A VERY BIG RISK** of having
your submission rejected if you package your own tarball, and there are **ANY 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` 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 file, the `mkiocccentry(1)` tool would not package it. But if you were to package
it manually, you would be violating [Rule 17](rules.html#rule17). But even if it manually, you would be violating
[Rule 17 Packaging](rules.html#rule-17-packaging).
But even if
everything checks out OK you should **NOT** assume that everything **IS** OK. everything checks out OK you should **NOT** assume that everything **IS** OK.
<div id="bugs"> <div id="bugs">
@@ -1076,7 +1098,8 @@ Even if you did manage to get dot files or dot directories in the tarball
somehow, `txzchk(1)` will flag it as an error. When the judges run `txzchk(1)` somehow, `txzchk(1)` will flag it as an error. When the judges run `txzchk(1)`
on the uploaded submission compressed tarball, if anything is wrong, for on the uploaded submission compressed tarball, if anything is wrong, for
instance if you "sneak in" any dot files or dot directories, the submission instance if you "sneak in" any dot files or dot directories, the submission
**WILL BE REJECTED** for violating [Rule 17](rules.html#rule17)! **WILL BE REJECTED** for violating
[Rule 17 Packaging](rules.html#rule-17-packaging)!
You may use whatever tools you need to develop your submission, including the You may use whatever tools you need to develop your submission, including the
use of `git(1)` or `gh(1)`, just be sure that your submission code and your use of `git(1)` or `gh(1)`, just be sure that your submission code and your
@@ -1412,8 +1435,9 @@ large data files to get around the source code size limit.
<p class="leftbar"> <p class="leftbar">
We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC, We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC,
if nothing else because that code is likely to exceed [the source code if nothing else because that code is likely to exceed
size limit](rules.html#rule2). This isn't to say that another highly compact and obfuscated [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. replacement of `init(8)` would not be an interesting submission.
</p> </p>
@@ -1428,8 +1452,10 @@ of code, and the other that is formatted more like a typical C
program, we tend to favor the second version. Of course, a third program, we tend to favor the second version. Of course, a third
version of the same program that is formatted in an interesting version of the same program that is formatted in an interesting
and/or obfuscated way, would definitely win over the first two! and/or obfuscated way, would definitely win over the first two!
Remember, you can submit more than one submission. See the [IOCCC Remember, you can submit more than one submission. See the
rules](rules.html) for details (in particular, [Rule 9](rules.html#rule9)). [IOCCC rules](rules.html)
for details (in particular,
[Rule 8 Submission](rules.html#rule-8-submission)).
We suggest that you avoid trying for the '**smallest self-replicating**' We suggest that you avoid trying for the '**smallest self-replicating**'
source. The smallest, a [zero byte entry](../1994/smr/index.html), won in source. The smallest, a [zero byte entry](../1994/smr/index.html), won in
@@ -1574,7 +1600,8 @@ If you do `#include <curses.h>` make **CERTAIN** you link in curses (i.e.
`-lcurses`) and not ncurses (i.e. `-lncurses`). `-lcurses`) and not ncurses (i.e. `-lncurses`).
</p> </p>
[Rule 13](rules.html#rule13) no longer discourages the use of UTF-8 [Rule 13 Newlines](rules.html#rule-13-newlines)
no longer discourages the use of UTF-8
characters in C code. characters in C code.
It is a very good idea to, in your `remarks.md` file, tell us why you It is a very good idea to, in your `remarks.md` file, tell us why you
@@ -1610,14 +1637,16 @@ Howe](../authors.html#Anthony_C_Howe), in which case it is original! :-)
Submitting source code that uses the contents of Submitting source code that uses the contents of
[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c), [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 _unless_ you are [Anthony C Howe](../authors.html#Anthony_C_Howe), might run the
risk of violating [Rule 7](rules.html#rule7). risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
The IOCCC submission tarball validator source is not an 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 unless you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), in
which case it is original! :-) Submitting source code that uses the contents of 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), [txzchk.c](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c),
_unless_ you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), might _unless_ you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), might
run the risk of violating [Rule 7](rules.html#rule7). run the risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
In addition to the above tools, none of the [mkiocccentry In addition to the above tools, none of the [mkiocccentry
tools](https://github.com/ioccc-src/mkiocccentry), _including, **but not tools](https://github.com/ioccc-src/mkiocccentry), _including, **but not
@@ -1641,7 +1670,7 @@ are original! :-) Submitting source code that uses the content of any of these
library, _unless_ you are [Cody Boone library, _unless_ you are [Cody Boone
Ferguson](../authors.html#Cody_Boone_Ferguson) or [Landon Curt Ferguson](../authors.html#Cody_Boone_Ferguson) or [Landon Curt
Noll](http://www.isthe.com/chongo/index.html), might run the risk of violating Noll](http://www.isthe.com/chongo/index.html), might run the risk of violating
[Rule 7](rules.html#rule7). [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), And unless you are [Landon Curt Noll](https://en.wikipedia.org/wiki/Landon_Curt_Noll),
the code in the code in
@@ -1649,9 +1678,11 @@ the code in
[dyn_array](https://github.com/ioccc-src/mkiocccentry/tree/master/dyn_array) are [dyn_array](https://github.com/ioccc-src/mkiocccentry/tree/master/dyn_array) are
not original works. Submitting source code that uses the contents of those 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), libraries, _unless_ you [Landon Curt Noll](https://en.wikipedia.org/wiki/Landon_Curt_Noll),
might run the risk of violating [Rule 7](rules.html#rule7). might run the risk of violating
[Rule 7 Original Work](rules.html#rule-7-original-work).
[Rule 7](rules.html#rule7) does not prohibit you from writing your own [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 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_ Noll](http://www.isthe.com/chongo/index.html), in which case you _probably_
won't win since [IOCCC judges](../judges.html) should not enter the IOCCC! :-) won't win since [IOCCC judges](../judges.html) should not enter the IOCCC! :-)
@@ -1660,14 +1691,17 @@ However, **_if_** you do write your own version, you **_might_** wish to make it
tools' algorithms. tools' algorithms.
Even so, we do not recommend you try and submit a JSON parser due to Even so, we do not recommend you try and submit a JSON parser due to
the fact it will likely exceed [the source code size limit](rules.html#rule2) the fact it will likely exceed
[Rule 2 Size](rules.html#rule-2-size)
and because you likely can't beat [flex](https://github.com/westes/flex) and 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 [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 say that [the so-called JSON spec](https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec) is not
obfuscated, but unless you have some really clever way to compact and 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 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 [bison](https://www.gnu.org/software/bison/) you will likely not win, either
because of the [source code size limit](rules.html#rule2) or because it is not because of the
[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/) as obfuscated as the [flex](https://github.com/westes/flex) and [bison](https://www.gnu.org/software/bison/)
generated code of generated code of
[jparse](https://github.com/ioccc-src/mkiocccentry/blob/master/jparse). [jparse](https://github.com/ioccc-src/mkiocccentry/blob/master/jparse).
@@ -1759,7 +1793,9 @@ character tab stop.
**PLEASE** observe our [IOCCC markdown guidelines](../markdown.html) **PLEASE** observe our [IOCCC markdown guidelines](../markdown.html)
when forming your submission's `remarks.md` file. And if your submission when forming your submission's `remarks.md` file. And if your submission
contains additional markdown files, please follow those same guidelines for contains additional markdown files, please follow those same guidelines for
those files. See also [Rule 19](rules.html#rule19) and our those files. See also
[Rule 4 Files](rules.html#rule-4-files),
and the
FAQ on "[markdown](../faq.html#markdown)". FAQ on "[markdown](../faq.html#markdown)".
We **LIKE** reading `remarks.md` files, especially if they contain We **LIKE** reading `remarks.md` files, especially if they contain
@@ -1807,8 +1843,11 @@ As there is no guarantee that you will succeed, you might consider
submitting an alternate version that conforms to the submitting an alternate version that conforms to the
[IOCCC rules](rules.html). [IOCCC rules](rules.html).
If you do bypass the `mkiocccentry(1)` warnings about [Rule If you do bypass the `mkiocccentry(1)` warnings about
2a](rules.html#rule2a) and/or about [Rule 2b](rules.html#rule2b) or any other [Rule 2a Gross Size](rules.html#rule-2a-gross-size)
and/or about
[Rule 2b Next Size](rules.html#rule-2b-net-size)
or any other
rule and submit a submission anyway, you **MUST** try to justify why the IOCCC rule and submit a submission anyway, you **MUST** try to justify why the IOCCC
[IOCCC judges](../judges.html) should not reject your submission due to a rule [IOCCC judges](../judges.html) should not reject your submission due to a rule
violation, and you would be wise to do this towards the top of your `remarks.md` violation, and you would be wise to do this towards the top of your `remarks.md`
@@ -2031,7 +2070,9 @@ submission that abuses the [IOCCC guidelines](guidelines.html) in an interesting
or that stretches the contest [rules](rules.html) that while legal, it or that stretches the contest [rules](rules.html) that while legal, it
nevertheless goes against the **intent** of the [rules](rules.html). nevertheless goes against the **intent** of the [rules](rules.html).
Nevertheless, see [Rule 12](rules.html#rule12). Nevertheless, see
[Rule 10 Privileges](rules.html#rule-10-privileges).
In the end, we traditionally pick one submission as '**best**'. Sometimes such In the end, we traditionally pick one submission as '**best**'. Sometimes such
a submission simply far exceeds any of the other submissions. More often, the a submission simply far exceeds any of the other submissions. More often, the
+255 -622
View File
@@ -473,633 +473,266 @@ mastodon feed</a> page and/or mastodon
app from time to time to view IOCCC mastodon updates.</p> app from time to time to view IOCCC mastodon updates.</p>
<!-- END: the next line ends content from: inc/rules.closed.hdr --> <!-- END: the next line ends content from: inc/rules.closed.hdr -->
<!-- This is the last line modified by the tool: bin/gen-status.sh --> <!-- This is the last line modified by the tool: bin/gen-status.sh -->
<h1 id="th-international-obfuscated-c-code-contest-official-rules">28th International Obfuscated C Code Contest Official Rules</h1> <h2 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h2>
<p class="leftbar"> <p>Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll.</p>
Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll.
</p>
<p>All Rights Reserved. Permission for personal, education or non-profit use is <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 granted provided this this copyright and notice are included in its entirety
and remains unaltered. All other uses must receive prior permission in and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p> writing by <a href="../contact.html">contacting the judges</a>.</p>
<p>Jump to: <a href="#">top</a></p> <h2 id="rules-version">Rules version</h2>
<div id="rules_version"> <p>These IOCCC Rules are version <strong>29.00 2025-11-19</strong>.</p>
<div id="version"> <p>Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<h2 id="ioccc-rules-version">IOCCC Rules version</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>
</div> <p>This contest will enter the open state on ${OPEN_DATE_TIME} UTC.</p>
<p class="leftbar"> <p>This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC.</p>
These <a href="rules.html">IOCCC rules</a> are version <strong>28.31 2025-11-17</strong>. <p>The above dates are subject to change until the contest is officially open.</p>
</p> <p><strong>NOTE</strong>: As of this draft, the above dates are TBD (to be determined).</p>
<p>The markdown form of these rules <a href="rules.md" download="rules.md">is <h2 id="rule-1-program">Rule 1 Program</h2>
available for download</a>.</p> <p>Your submission <strong>MUST</strong> be C program.</p>
<p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p> <h2 id="rule-2-size">Rule 2 Size</h2>
<p>Jump to: <a href="#">top</a></p> <p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong>
<div id="change_marks"> <a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
<h3 id="change-marks">Change marks</h3> and
</div> <a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.
<p class="leftbar"> During development this can be checked using <code>iocccsize(1)</code>:</p>
<strong>← Lines that start with this symbol indicate a change from the previous IOCCC</strong> <p>iocccsize prog.c</p>
</p> <h3 id="rule-2a-gross-size">Rule 2a Gross Size</h3>
<p class="leftbar"> <p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
Most lines that were modified since the previous IOCCC start with a solid exceed <strong>4993</strong> bytes.</p>
4 pixel black left border (or, in the case of a code block or blockquote, <h3 id="rule-2b-net-size">Rule 2b Net Size</h3>
just a vertical bar). We say <em>most lines</em> because we sometimes forget <p>When the filename of your program source (i.e., <code>prog.c</code>) is given as a
to bar modified sections. command line argument to the latest version of the official IOCCC size
</p> tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST
<p>Jump to: <a href="#">top</a></p> NOT</strong> exceed <strong>2503</strong>.</p>
<div id="obfuscate"> <h2 id="rule-3-register">Rule 3 Register</h2>
<h1 id="obfuscate-defined">Obfuscate defined:</h1> <p>You <strong>MUST</strong> register, using a valid email address, in order to submit
</div> entries to the IOCCC. You may register while the contest is <strong>pending</strong> or <strong>open</strong>.</p>
<p>tr.v. -cated, -cating, -cates. <p>A few days after registering, you’ll receive your UUID username and
<br><br> temporary password, which you <strong>MUST</strong> change within 14 days. If you
<strong>1a.</strong> To render obscure.<br> fail to change it in a timely manner, you’ll need to
<strong>1b.</strong> To darken. <a href="../contact.html">contact the Judges</a> by email to request a reset.</p>
<br><br> <p>It can take a few days to process your registration and for the server to
<strong>2.</strong> To confuse: his emotions obfuscated his judgment.<br> email your details, therefore make sure to allow yourself ample time to
    [LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,<br> register and submit your entries; <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong>
    to darken &lt; fuscus, dark.] -obfuscation n. obfuscatory adj.</p> to register! The judges are <strong>NOT</strong> responsible for delayed or lost
<p>Jump to: <a href="#">top</a></p> email or for those who wait until the last minute to try to register!</p>
<div id="goals"> <p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<h1 id="goals-of-the-ioccc-international-obfuscated-c-code-contest">Goals of the IOCCC (International Obfuscated C Code Contest)</h1> <p>See <a href="rules.html#rule-8-submission">Rule 8 Submission</a>.</p>
</div> <h2 id="rule-4-files">Rule 4 Files</h2>
<p class="leftbar"> <p>The submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
See the <a href="../index.html#goals">IOCCC goals</a>. <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>. The last two <strong>MUST</strong> be
</p> generated by <code>mkiocccenty(1)</code> when packing a submission, and <strong>MUST</strong>
<p>Jump to: <a href="#">top</a></p> pass the <code>chksubmit(1)</code> tests.</p>
<div id="dates"> <p>The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
<h1 id="important-ioccc-dates">Important IOCCC dates</h1> have a file size <strong>greater than 0</strong>.</p>
</div> <p>Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
<p class="leftbar"> compiles your code, the executable (if applicable) <strong>MUST</strong> be called <code>prog</code>.</p>
This IOCCC runs from <strong>2024-12-29 23:58:13.213455 UTC</strong> to <strong>2025-06-05 04:03:02.010099 UTC</strong>. <p>Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
This IOCCC marks the <strong>40th anniversary</strong> of the contest! <code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p>
</p> <p>Your submission may <strong>NOT</strong> have in the top directory, <code>prog</code>, <code>prog.alt</code>,
<p class="leftbar"> <code>prog.alt.o</code>, <code>prog.o</code>, <code>prog</code>, <code>prog.orig.c</code>, <code>README.md</code>, nor <code>index.html</code>
This contest will enter the <strong><a href="../faq.html#open">open</a></strong> state on <strong>2025-03-05 23:19:17.131107 UTC</strong>. as those files reserved by IOCCC.</p>
</p> <p>Your submission may <strong>NOT</strong> have a file in the top directory that matches
<p class="leftbar"> a file glob pattern of the form <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code>
This contest will enter the <strong><a href="../faq.html#judging">judging</a></strong> state on <strong>2025-06-05 04:03:02.010099 UTC</strong>. as those files are reserved by IOCCC.</p>
</p> <p>Your submission may <strong>ONLY</strong> contain files and directories. Other file
<p class="leftbar"> types such as symlinks, sockets, etc are <strong>NOT</strong> allowed.</p>
<strong>IMPORTANT NOTE</strong>: Until the contest enters the <strong><a href="../faq.html#open">open</a></strong> state, any or all <p>All directories <strong>MUST</strong> have a file mode of <strong>0755</strong>. All files
of the above <strong>dates and times may change</strong>! <strong>MUST</strong> have the file mode of <strong>0444</strong>, except for files that
</p> end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p>
<p>See the <p>All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.
FAQ on “<a href="../faq.html#mkiocccentry">obtaining and compiling the mkiocccentry tools</a>” We recommend that markdown files observe our
and the <a href="../markdown.html">IOCCC markdown guidelines</a>.</p>
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>” <p>All filenames are treated as case insensitive. For example, <code>REMARKS.MD</code>,
as that FAQ has important details on and <code>Remarks.md</code>, and <code>remarks.md</code> are considered by <code>mkiocccenty(1)</code>
<a href="../next/register.html">how to register</a> to be the <strong>SAME</strong> file. If you are preparing your submission on a case
as well as sensitive filesystem, ensure that your submission will work on
<a href="../next/submit.html">how to upload your submission</a> to the IOCCC.</p> a case insensitive filesystem.</p>
<p>Jump to: <a href="#">top</a></p> <p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p>
<div id="rules"> <p>See <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<h1 id="ioccc-rules">IOCCC RULES</h1> <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
<p>To help us with the volume of submissions, we ask that you follow the rules below.</p> your original submission, such as <code>prog.c</code>, <code>Makefile</code>, or any supplied
<div id="rule_abuse"> data files. To modify files, your program can make a copy or you can
<h4 id="a-warning-about-rule-abuse">A warning about rule abuse</h4> use the Makefile to setup working copies. Any working copies <strong>MUST</strong> be
</div> cleaned up by the <code>Makefile</code> <code>clobber</code> target, so as to restore the
<p><strong>WARNING:</strong> Abusing these rules comes with a <strong>fair amount of risk</strong> directory to its original state.</p>
that your submission will be rejected. If you do plan to abuse the <h2 id="rule-6-free">Rule 6 Free</h2>
rules, then you <strong>MUST CLEARLY EXPLAIN THE RATIONALE</strong> in your <code>remarks.md</code> file, <p>I am <strong>NOT</strong> a Rule, I am a <code>free(void *human);</code> ‼️</p>
as to why you think your rule abuse should be allowed, and as to why you think <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>
your submission should not be rejected for a rule violation. <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>
<strong>Nevertheless, <em>even if you do</em> explain this in your <code>remarks.md</code> file <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span></code></pre></div>
you submission may still be rejected</strong>.</p> <p>See <a href="rules.html#rule-19-prime">Rule 19 Prime</a>.</p>
<p>If you use the most recently released official IOCCC submission packaging tool <h2 id="rule-7-original-work">Rule 7 Original Work</h2>
(hereby referred to as <code>mkiocccentry(1)</code>), which we <strong>STRONGLY recommend you <p>In short: You wrote it, you own it, and its an original work.</p>
do</strong>, then the <code>mkiocccentry(1)</code> tool will warn you if there appears to be a <p>You, the author(s), <strong>MUST</strong> own the contents of your submission, or you <strong>MUST</strong>
violation in certain rules (not all can be detected). The <code>mkiocccentry(1)</code> have permission from the original owner(s) to its use. If you submit
tool also runs <code>chksubmit(1)</code> and <code>txzchk(1)</code>, the latter of which runs any content that is owned by others, you <strong>MUST</strong> detail that ownership,
<code>fnamchk(1)</code>. Overriding problems detected by any of these tools comes with a i.e., who owns what, and document the permission you obtained from them
<strong>fair amount of risk</strong> that your submission will be rejected.</p> in your <code>remarks.md</code> file.</p>
<p>If you do override a rule violation warning from the <code>mkiocccentry(1)</code> or
another related IOCCC tool, or otherwise plan to abuse the rules, then you
<strong>MUST CLEARLY EXPLAIN THE RATIONALE</strong> of why you are attempting to abuse the
rules in your <code>remarks.md</code> file. <strong><em>Even if you do</em> explain this in your
<code>remarks.md</code> file your submission may still be rejected</strong>.</p>
<p><strong>HINT:</strong> If you do submit such a rule abusing / rule violating
submission, then consider also submitting an alternate version in a
<strong>different submission</strong> server slot that does <strong>NOT</strong> violate the rules
in case your rule abuse excuse is rejected.</p>
<p><strong>IMPORTANT</strong>: if you do submit such an alternate non-rule abusing version,
<strong>PLEASE</strong> indicate that in your <code>remarks.md</code> file of your non-rule abusing
version so that the <a href="../judges.html">IOCCC judges</a> do not think you uploaded a
duplicate into a wrong slot by mistake.</p>
<p>Uploading a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
violating <a href="rules.html#rule17">Rule 17</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#rule17">Rule 17</a>.</p>
<p>See also <a href="#rule13">Rule 12</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule0">
<h2 id="rule-0">Rule 0</h2>
</div>
<p>Just as C starts at 0, so the IOCCC starts at <a href="#rule0">Rule 0</a>. :-)</p>
<p>The “<a href="#dates">Important IOCCC dates</a>” section above is part of this rule.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule1">
<h2 id="rule-1">Rule 1</h2>
</div>
<p>Your submission must be a C program.</p>
<p>You see, the contest is not called the <strong>International Obfuscated JSON Contest</strong>
(<strong>IOJSONC</strong>), even if the <a href="https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec">so-called JSON
spec</a> might be called obfuscated
by some people. :-)</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule2">
<h2 id="rule-2">Rule 2</h2>
</div>
<p><a href="#rule2">Rule 2</a> requires that your submission satisfy <strong>BOTH</strong> <a href="#rule2a">Rule
2a</a> <strong>AND</strong> <a href="#rule2b">Rule 2b</a>.</p>
<p>You may check your code with respect to <a href="#rule2a">Rule 2a</a> and <a href="#rule2b">Rule
2b</a> prior to submitting your code by giving the filename
as a command like argument to the <code>iocccsize(1)</code> tool. For example:</p>
<pre><code> iocccsize prog.c</code></pre>
<p>The source to <code>iocccsize(1)</code> may be found in the
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.</p>
<p>See also the
FAQ on “<a href="../faq.html#mkiocccentry_test">how to further test your submission</a>”
for more more thorough testing, including <a href="#rule2">Rule 2</a>.</p>
<p>See also <a href="#rule2a">Rule 2a</a>, <a href="#rule2b">Rule 2b</a>, and <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule2a">
<h2 id="rule-2a">Rule 2a</h2>
</div>
<p class="leftbar">
The size of your program source <strong>MUST NOT exceed 4993 bytes</strong>.
</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule2b">
<h2 id="rule-2b">Rule 2b</h2>
</div>
<p>When the filename of your program source 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 exceed <em>2503</em></strong>.</p>
<p>See also <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule3">
<h2 id="rule-3">Rule 3</h2>
</div>
<p>You must <a href="../next/register.html">register</a> in order to submit your entry to the IOCCC.
You may <a href="../next/register.html">register</a> while the contest is either
<strong><a href="../faq.html#pending">pending</a></strong> or <strong><a href="../faq.html#open">open</a></strong>.</p>
<p>When the contest is <strong><a href="../faq.html#open">open</a></strong>, the <a href="https://submit.ioccc.org">submit server</a>
will email you your <a href="https://submit.ioccc.org">submit server</a>
<strong>Username</strong> and <strong>Initial password</strong>. <strong>Please be patient</strong> as it may take some time,
perhaps as much as a few days, for your registration to be processed and for that email to be sent.</p>
<p>Those who <a href="../next/register.html">register</a> while the contest status is <strong><a href="../faq.html#pending">pending</a></strong>
will receive their email (containing their <a href="https://submit.ioccc.org">submit server</a> <strong>Username</strong>
and <strong>Initial password</strong>), later: usually a few days around the time when the contest status
becomes <strong><a href="../faq.html#open">open</a></strong>.</p>
<p>Once that email with your <strong>Username</strong> and <strong>Initial password</strong> is sent, you
will have fortnight (<strong>14 days</strong>) to <a href="../next/pw-change.html">change your submit server initial password</a>.</p>
<p>If you do not change your <strong>Initial password</strong> in time, you will have to
<a href="../contact.md#if-you-really-need-to-send-email-the-ioccc-judges">send email to the IOCCC judges</a>
to ask for your password to be reset.</p>
<p>Because it takes time (maybe even a few days) to process your registration
and for the server to email you your initial login and password, you
should <strong>MAKE SURE</strong> you give yourself enough time to register well
before the contest closes. In other words, <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong>
of the contest to register! The <a href="../judges.html">IOCCC judges</a>
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 the
FAQ on “<a href="../quick-start.html#enter">how to register and submit to the IOCCC</a>”
for instructions on registering and participating in the IOCCC, as the process
may change from contest to contest.</p>
<p>See also <a href="#rule8">Rule 8</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule4">
<h2 id="rule-4">Rule 4</h2>
</div>
<p>If your submission is selected as a winning entry, then your submission may be modified in order
to fit into the structure of the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a>.</p>
<p>For example, your submission’s <code>Makefile</code> will be modified and your <code>remarks.md</code>
will become a <code>README.md</code> which will be used to generate an <code>index.html</code> file.</p>
<p>Your source code will be the file <code>prog.c</code>. The compiled binary
will be called <code>prog</code>. If you submission requires different filenames,
then modify your submission’s <code>Makefile</code> to <strong>COPY</strong> (<strong>NOT</strong> move!) the files
accordingly.</p>
<p>Of course your program may also do this, as long as it works, but you’re welcome
to use your <code>Makefile</code> as well.</p>
<p>See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule5">
<h2 id="rule-5">Rule 5</h2>
</div>
<p>Your submission must <strong>NOT</strong> modify the <em>content</em> <strong>OR</strong> <em>filename</em> of <strong>ANY</strong>
part of your original submission including, but not limited to <code>prog.c</code>, the
<code>Makefile</code> or any data files you submit.</p>
<p>If you submission needs (or wishes :-) ) to modify such content, it <strong>MUST</strong>
first copy the file to a new filename and then modify that copy.</p>
<p>You may use your submission (program) to form a copy, or you can make use of
your <code>Makefile</code> to form that copy.</p>
<p>If you do make a copy of a submission file, <strong>PLEASE</strong> be sure that
the <code>clobber</code> rule of your <code>Makefile</code> removes that copy in order to
restore your submission to its original submission state.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule6">
<h2 id="rule-6">Rule 6</h2>
</div>
<p>I am not a rule, I am a <code>free(void *human);</code> ‼️</p>
<p>        <code>while (!(ioccc(rule(you(are(number(6)))))) {</code><br>
                <code>ha_ha_ha();</code><br>
        <code>}</code></p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule7">
<h2 id="rule-7">Rule 7</h2>
</div>
<p>The obfuscated C program must be your own original work.</p>
<p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
you <strong>MUST</strong> have permission from the owner(s) to submit their content.</p>
<p>If you submit any content that is owned by others, you <strong>MUST
detail that ownership</strong> (i.e., who owns what) <strong><em>AND</em> document the
permission you obtained from them</strong>, in your <code>remarks.md</code> file.</p>
<p>Please note that the tools in <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
repo</a> are <strong>NOT</strong> original works,
unless of course you’re the original authors, in which case they are original. :-)</p>
<p>Nevertheless tools such as those listed are <strong>NOT</strong> obfuscated. If submitted, they
would probably violate a number of rules. :-)</p>
<ul>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c">mkiocccentry(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">iocccsize(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/chksubmit.c">chksubmit(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c">txzchk(1)</a></li>
<li><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/location_main.c">location(1)</a></li>
<li><a href="https://github.com/xexyl/jparse">jparse repo as cloned by the mkiocccentry repo</a></li>
<li><a href="https://github.com/lcn2/dbg">dbg repo as cloned by the mkiocccentry repo</a></li>
<li><a href="https://github.com/lcn2/dyn_array">dyn_array repo as cloned by the mkiocccentry repo</a></li>
</ul>
<p>The IOCCC has a rich history of remarkable winning entries created by <p>The IOCCC has a rich history of remarkable winning entries created by
authors who skillfully employed various techniques to develop their code. authors who skilfully employed various techniques to develop their code.
While it is <strong>NOT</strong> required, you are <em>allowed</em> to use tools to develop While it isn’t required, you are allowed to use tools to develop and
and test your submission. These tools may include, but are not limited test your submission. These tools may include, but aren’t limited to
to code generators, code analysis tools, static code analysis tools, code generators, code analysis tools, static code analysis tools, runtime
runtime analysis tools, machine learning tools, natural language models, analysis tools, machine learning tools, natural language models, code
code copilot tools, so-called AI services, large language models (LLMs), etc. copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we <strong>ENCOURAGE you to describe If you do make use of such tools or services, then we encourage you to
what tools and how you used those tools</strong>, in your <code>remarks.md</code> file.</p> describe what tools and how you used those tools, in your <code>remarks.md</code> file.</p>
<p>See also <a href="#rule5">Rule 5</a>, <a href="#rule18">Rule 18</a> and <a href="#rule21">Rule 21</a>.</p> <p>See <a href="rules.html#rule-16-anonymous">Rule 16 Anonymous</a>.</p>
<p>Jump to: <a href="#">top</a></p> <h2 id="rule-8-submission">Rule 8 Submission</h2>
<div id="rule8"> <p>The Submit Server will only accept submissions from those who have
<h2 id="rule-8">Rule 8</h2> registered and only while the contest is open.</p>
</div> <p>The Submit Server places a total submission size limit of <strong>3999971</strong> bytes.</p>
<p>Submissions may only be uploaded to the <a href="https://submit.ioccc.org">IOCCC submit server</a> <p>Each account has ten (<strong>10.000</strong>) submission slots (<strong>0..9)</strong>. Each submission
while the contest is <strong><a href="../faq.html#open">open</a></strong>.</p> slot should be annotated by the server as to whether its was received,
<p>If you have <a href="../next/register.html">registered</a> and received by email your <a href="https://submit.ioccc.org">submit processed, malformed, etc. Please take note of any errors, rectify,
server</a> <strong>Username</strong> and <strong>Initial password</strong> you may and resubmit. In order to avoid potential packaging errors, it is <strong>highly
upload your submission to the <a href="https://submit.ioccc.org">submit server</a> but recommended</strong> to use <code>mkiocccentry(1)</code>.</p>
<strong>ONLY</strong> while the contest is <strong><a href="../faq.html#open">open</a></strong>.</p> <p>See
<p>The <a href="https://submit.ioccc.org">submit server</a>, in accordance with <a href="rules.html#rule17">Rule <a href="rules.html#rule-3-register">Rule 3 Register</a>,
17</a>, places a limit of <strong>3999971</strong> bytes on the size of your <a href="rules.html#rule-15-building">Rule 15 Building</a>,
upload.</p> and
<p>Once the contest is in the <strong><a href="../faq.html#judging">judging</a></strong> state (or <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<strong><a href="../faq.html#closed">closed</a></strong> state), you may <strong>NOT</strong> upload submissions.</p> <h2 id="rule-9-no-hands">Rule 9 No hands</h2>
<p>While the contest is <strong><a href="../faq.html#open">open</a></strong> or in the <p>Entries requiring human interaction to be initially compiled are <strong>NOT</strong>
<strong><a href="../faq.html#judging">judging</a></strong> state, the <a href="../judges.html">IOCCC judges</a> permitted. However, see the guidelines. Each entry <strong>MUST</strong> automated the
<strong>MAY</strong> (but are not required to) modify the slot comment of your submission to 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
indicate that they have received it. If uploaded submission is malformed, the environment</a>.</p>
<a href="../judges.html">IOCCC judges</a> <strong>MAY</strong> (but are not required to) modify the slot <p>Note references to <code>gmake</code> can be any GNU Make compatible tool.</p>
comment accordingly.</p> <p>See <a href="rules.html#rule-17-building">Rule 17 Building</a>.</p>
<p>You are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool <h2 id="rule-10-privileges">Rule 10 Privileges</h2>
as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> <p>Programs that require special privileges (setuid(2), setgid(2),
to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>.</p> super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED.
<p>The <a href="https://submit.ioccc.org">submit server</a> will become active when the We do <strong>NOT</strong> guarantee these functions will behave as you expect on our
contest is <strong><a href="../faq.html#open">open</a></strong>. Until the contest status becomes test platforms. If your program needs special permissions you <strong>MUST</strong>
<strong><a href="../faq.html#open">open</a></strong>, the <a href="https://submit.ioccc.org">submit server</a> may document this fact and explain why it is needed in your submission’s
be offline and/or unresponsive.</p> <code>remarks.md</code> file.</p>
<p>See the <p>Furthermore, if you need a supplementary program that you include to
FAQs on “<a href="../faq.html#mkiocccentry">obtaining, compiling, installing and using the latest release of the mkiocccentry tools</a>” have these permissions, you will also have to explain this, because these
for more information about the <code>mkiocccentry(1)</code> tool.</p> bits are <strong>NOT</strong> allowed in submissions and those bits will <strong>NOT</strong> be copied by
<p>See the “<a href="#dates">Important IOCCC dates</a>” section above for when these contest states are scheduled.</p>
<p>See also <a href="#rule3">Rule 3</a> and <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule9">
<h2 id="rule-9">Rule 9</h2>
</div>
<p>Each <strong>PERSON</strong> may register <strong>ONLY ONE</strong> account and each account may submit up to
and including <strong>10.000000</strong> (ten in base 10) submissions <strong>PER</strong> contest.</p>
<p><strong>Each submission <em>must be submitted separately</em></strong>.</p>
<p>If this seems unreasonable we suggest you wait until the next contest and in
the interim ponder this (modified or not) quote said by Bill Gates:</p>
<blockquote>
<p>640K submissions ought to be enough for anybody.</p>
<p>– Bill Gates s/640K/10/ (allegedly :-) )</p>
</blockquote>
<p>Jump to: <a href="#">top</a></p>
<div id="rule10">
<h2 id="rule-10">Rule 10</h2>
</div>
<p>Entries requiring human interaction to be initially compiled <strong>are not
permitted</strong>. However, see the <a href="guidelines.html">guidelines</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule11">
<h2 id="rule-11">Rule 11</h2>
</div>
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>,
super-user, special owner, special group, etc.) are still <strong>HIGHLY
DISCOURAGED</strong>. We do not guarantee these functions will behave as
you expect on our test platforms. If your program needs special
permissions you <strong>MUST</strong> document this fact, and explain why
it is needed in your submission’s <code>remarks.md</code> file.</p>
<p>Furthermore, if you need a supplementary program that you include, to 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 <code>mkiocccentry(1)</code>.</p>
<p>See also <a href="#rule17">Rule 17</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule12">
<h2 id="rule-12">Rule 12</h2>
</div>
<p><strong>Legal</strong> abuse of the rules is somewhat encouraged. <strong>A submission that, in
the opinion of the <a href="../judges.html">judges</a>, violates the rules WILL BE DISQUALIFIED</strong>.
Submissions that attempt to abuse the rules <strong>MUST</strong> try to justify why
their rule abuse is legal, in the <code>remarks.md</code> file.</p>
<p>See also <a href="#rule_abuse">the warning about rule abuse</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule13">
<h2 id="rule-13">Rule 13</h2>
</div>
<p>7 out of 13 UTF-8 characters in C code agree that this rule number is lucky
enough to be a prime number.</p>
<p>Fun fact: the fear of the number 13 is called <em>triskaidekaphobia</em>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule14">
<h2 id="rule-14">Rule 14</h2>
</div>
<p>Any C source that fails to compile because of lines with trailing
control-M’s (i.e., lines with a trailing byte <code>015</code>) <strong>might</strong> be rejected.</p>
<p>Please do <strong>NOT</strong> put trailing control-M’s on <code>prog.c</code>, <code>Makefile</code>, or
<code>remarks.md</code> files but instead end lines with a trailing newline (i.e.,
byte <code>012</code>) character.</p>
<p>As we do <strong>NOT</strong> use DOS, please also be sure that the <code>Makefile</code> and
<code>remarks.md</code> files end in final newline (i.e., byte <code>012</code>) character.</p>
<p>You are permitted, in order to try and squeeze your <code>prog.c</code> under
a <a href="#rule2a">Rule 2a</a> and/or <a href="#rule2b">Rule 2b</a> limit, to <strong>NOT</strong>
end your <code>prog.c</code> with a newline (i.e., byte <code>012</code>) character.
If you need to do this, <strong>PLEASE</strong> document that in your <code>remarks.md</code> file and
if your compiler complains about this, document this too and update your
<code>Makefile</code> to account for this.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule15">
<h2 id="rule-15">Rule 15</h2>
</div>
<p>In order to register for the IOCCC, you <strong>MUST</strong> have a valid email address.</p>
<p>The <a href="../judges.html">judges</a> <strong>are NOT responsible for delays in email</strong>, so please plan
enough time accordingly.</p>
<p>See the
FAQ on “<a href="../quick-start.html#register">how to register</a>”
for details.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule16">
<h2 id="rule-16">Rule 16</h2>
</div>
<p>Submissions that are similar to previous winning IOCCC entries are discouraged.</p>
<p>You are allowed to resubmit to a later contest, a submission that
did not win the IOCCC. If you do so, then you would be well advised
to try and enhance and improve your submission.
If you do resubmit something that did not previously win, then
you are <strong>encouraged</strong> to mention this in your <code>remarks.md</code> file
as this <strong>sometimes</strong> helps.</p>
<p>Resubmitting an improved submission that did not become an
IOCCC winning entry is a <strong>time honored</strong> tradition of the IOCCC.
There are some IOCCC winning entries that were submitted to multiple contests
before they were improved enough to “climb over” (as the expression
goes) all the other submissions for a given contest.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule17">
<h2 id="rule-17">Rule 17</h2>
</div>
<p>Your submission must be in the form of a <strong>xz compressed tarball</strong> that
the <strong>current released version</strong> of the <code>mkiocccentry(1)</code> tool would generate.
The files, directories, and paths <strong>MUST</strong> conform to the limits imposed
by <code>mkiocccentry(1)</code> including but <strong>NOT LIMITED</strong> to their names, count,
path length, directory tree depth and permissions.</p>
<p>Your <strong>xz compressed tarball</strong> must be larger than <strong>0</strong> bytes and no larger
than <strong>3999971</strong> bytes.</p>
<p>The sum of the byte lengths of all files, after the <strong>xz compressed tarball</strong> is untarred,
must <strong>NOT</strong> exceed <code>27651*1024</code> bytes.</p>
<p>Your <strong>xz compressed tarball</strong> submission <em>file</em> <strong>MUST</strong> pass the tests performed by
the current version of <code>txzchk(1)</code>.</p>
<p>Your <strong>xz compressed tarball</strong> submission <em>filename</em> <strong>MUST</strong> pass the tests
performed by the current version of <code>fnamchk(1)</code>.</p>
<p>When your <strong>xz compressed tarball</strong> submission file is untarred, the
resulting <em>directory</em> <strong>MUST</strong> pass the checks performed by the current version
of <code>chksubmit(1)</code>.</p>
<p>The resulting <code>prog.c</code> file <strong>MUST</strong> pass the <a href="#rule2">Rule 2</a> size checks performed by the current
version of <code>iocccsize(1)</code>.</p>
<p>The <code>.auth.json</code> and <code>.info.json</code> <strong>MUST</strong> be compatible with what the
current version of the <code>mkiocccentry(1)</code> tool would produce. They <strong>MUST
ALSO</strong> pass the tests performed by the current version of <code>chksubmit(1)</code>.</p>
<p>The required <code>Makefile</code> must <strong>NOT</strong> be empty.</p>
<p>The required <code>remarks.md</code> must <strong>NOT</strong> be empty.</p>
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code> or <code>-s seed</code> option of
<code>mkiocccentry(1)</code>.</p> <code>mkiocccentry(1)</code>.</p>
<p class="leftbar"> <p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>,
The maximum number of files your submission tarball may contain, not counting and
the free files (<code>prog.c</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>prog.alt.c</code>, <code>try.sh</code>, <a href="rules.html#rule-5-purity">Rule 5 Purity</a>.</p>
<code>try.alt.sh</code> and the two files generated by <code>mkiocccentry</code>, <code>.info.json</code> and <h2 id="rule-11-abuse">Rule 11 Abuse</h2>
<code>.auth.json</code>) is 31. <p>Legal abuse of the rules is somewhat encouraged, but comes with risks.
</p> A submission that, in the opinion of the Judges, violates the rules <strong>WILL
<p class="leftbar"> BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify
The maximum number of directories your submission may have is 13 and the maximum why their rule abuse is legal (or interesting) in the <code>remarks.md</code> file.</p>
depth a path may have is 4. <p>Submission packaging abuse will <strong>NOT</strong> be tolerated and for this reason
</p> its recommended to use <code>mkiocccentry(1)</code>. During development you can
<p class="leftbar"> check your <code>prog.c</code> size limits using <code>iocccsize(1)</code>, e.g., <code>iocccsize -v1 prog.c</code>.
The maximum filename length (a component of a path) is 38 which means the Overriding problems detected by any of the IOCCC tools
maximum length total of a path is 60 characters. risks that the submission will be rejected.</p>
</p> <p>If you do submit a rule abusing or violating submission, then consider
<p>See the also submitting an alternate version in a different submission server
FAQ on “<a href="../faq.html#extra-files">what extra files are and how to include more</a>” slot that does <strong>NOT</strong> violate the rules in case your rule abuse excuse
as well as the <a href="guidelines.html#extra-files">guidelines on extra files</a> is rejected.</p>
for more details.</p> <p><strong>IMPORTANT</strong>: If you do submit such an alternate non-rule abusing
<h3 id="tldr-rule-17---use-mkiocccentry1-to-form-your-submission">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code> to form your submission</h3> version, please indicate that in your <code>remarks.md</code> file of your non-rule
<p>Let the current version of the <code>mkiocccentry(1)</code> tool form your <strong>xz abusing version so that the Judges don’t think you uploaded a duplicate
compressed tarball</strong> submission file.</p> into a wrong slot by mistake.</p>
<h3 id="warning">Warning</h3> <h2 id="rule-12-utf-8">Rule 12 UTF-8</h2>
<p>Using command line flags or input prompts to override checks and <p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the IOCCC.</p>
limits made by the above mentioned tools is <strong>NOT</strong> recommended <h2 id="rule-13-newlines">Rule 13 Newlines</h2>
and may result in your submission being rejected by the <a href="https://submit.ioccc.org">IOCCC <p>Any C source that fails to compile because lines contain carriage-returns
submit server</a> and/or the <a href="../judges.html">IOCCC Judges</a>.</p> (CTRL+M, <code>\r</code>) in particular as part of DOS/Windows style newlines might
<p>See the be rejected. Please do <strong>NOT</strong> put trailing CTRL+M in <code>prog.c</code>, <code>Makefile</code>,
FAQ on the “<a href="../faq.html#mkiocccentry">mkiocccentry toolkit</a> or <code>remarks.md</code> files, but instead end lines with Unix newline (line-feed,
for how to obtain and use the above mentioned tools.</p> CTRL+J, <code>\n</code>).</p>
<p><strong>IMPORTANT</strong>: See the <p>You are permitted, in order to try and squeeze your <code>prog.c</code> under a
FAQ on “<a href="../faq.html#rule17">Rule 17</a>” <a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a> and/or
for very important details behind this rule.</p> <a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>
<p>Jump to: <a href="#">top</a></p> limits, to <strong>NOT</strong> end source with a newline. If you
<div id="rule18"> need to do this, please document that in your <code>remarks.md</code> file and if
<h2 id="rule-18">Rule 18</h2> your compiler complains about this, document this too and update your
</div> <code>Makefile</code> to account for this.</p>
<p>The entirety of your submission must be submitted under the following license:</p> <h2 id="rule-14-resubmit">Rule 14 Resubmit</h2>
<blockquote> <p>Submissions that are substantially similar to previous winning IOCCC
<p><strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong></p> entries are discouraged.</p>
</blockquote> <p>You are allowed to resubmit to a later contest, a submission that didn’t
<p>See also <a href="#rule7">Rule 7</a>.</p> win the IOCCC. If you do so, then you would be well advised to try and
<p>Jump to: <a href="#">top</a></p> enhance and improve your submission. If you do resubmit something that
<div id="rule19"> didn’t previously win, then you are encouraged to mention this in your
<h2 id="rule-19">Rule 19</h2> <code>remarks.md</code> file as this sometimes helps.</p>
</div> <h2 id="rule-15-building">Rule 15 Building</h2>
<p>The <code>remarks.md</code> file, a required non-empty file, must be written in <p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Make file syntax. Its recommended
<a href="https://www.markdownguide.org/basic-syntax/">Markdown format</a>.</p> that you copy and rename the <code>Makefile.example</code> as template. The primary
<p>We currently use <a href="https://pandoc.org">pandoc(1)</a> to automatically target of the <code>Makefile</code> <strong>MUST</strong> be <code>prog</code> and the source file is <code>prog.c</code>.
convert markdown to HTML. Please try to avoid submitting an HTML file The C compiler and preprocessor <strong>MUST</strong> be invoked using <code>${CC}</code> and <code>${CPP}</code>
translation to any markdown file. If you <strong>MUST</strong> submit such an HTML macros respectively.</p>
translation, <strong>PLEASE</strong> mention this in your <code>remarks.md</code> file.</p> <p>The <code>clobber</code> target should clean and restore the submission directory
<p>For any submission that wins the contest, we modify your <code>remarks.md</code> file and tree to its original state, such as removing temporary files or any
rename it as <code>README.md</code> and then use <a href="https://pandoc.org">pandoc(1)</a> modified data files. Don’t assume that <code>git</code> tool chain is installed,
to generate the <code>index.html</code> file in the top level directory of your submission. i.e., do <strong>NOT</strong> expect <code>git clean -f</code> to work.</p>
For this reason, <code>mkiocccentry(1)</code> will <strong>NOT</strong> package such files (in the top <p>The <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with
level submission directory) and both <code>txzchk(1)</code> and <code>chksubmit(1)</code> will flag <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
them as errors (in the top level submission directory) as well, so please do the value. Assume that commands commonly found in
<strong>NOT</strong> try and slip these files in the top level directory where your <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>
<code>remarks.md</code> resides.</p> environments and systems are available in the search <code>$PATH</code>.
<p>See the <a href="https://www.markdownguide.org/cheat-sheet/">Markdown Cheat Sheet</a> Avoid command options that aren’t part of
for a handy quick reference to the Markdown syntax.</p> <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">SUS</a>,
<p>See the <a href="https://www.markdownguide.org">Markdown guide</a> such as GNU long name options <code>--example</code> or extensions like <code>grep -P</code>.</p>
for free and open-source reference guide that explains <p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment variable.</p>
how to use markdown.</p> <p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
<p>See also the <a href="http://daringfireball.net/projects/markdown/basics">Daring Fireball Markdown: <h2 id="rule-16-anonymous">Rule 16 Anonymous</h2>
Basics</a> for <p>Your source code, data files, remarks, and program output <strong>MUST NOT</strong>
information on the markdown format.</p> identify the author(s) of your code (unless you are <strong>Peter Honeyman</strong>
<p><strong>PLEASE</strong> see our or pretending to be <strong>Peter Honeyman</strong>). In order to be impartial the
FAQ on “<a href="../faq.html#remarks_md">remarks.md</a>” <a href="https://www.ioccc.org/judges.html">Judges</a> do <strong>NOT</strong> know who is submitting
<strong>AND</strong> the entries to the IOCCC until final selection is made. Even if you are
<a href="../markdown.html">IOCCC markdown guidelines</a> for additional markdown guidance.</p> a past winner, you <strong>MUST NOT</strong> reveal your identity deliberately or by
<p>Jump to: <a href="#">top</a></p> accident anywhere in your submission. <strong><em>Failure to comply may result
<div id="rule20"> in the submission being disqualified.</em></strong></p>
<h2 id="rule-20">Rule 20</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
<p>The how to build instructions must be in GNU Makefile format. See the <code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their names, count, path
FAQ about “<a href="../faq.html#make_compatibility">make(1) compatibility the IOCCC supports</a> length, directory tree depth, and permissions.</p>
for more details.</p> <p>The submission tree may have at most <strong>13</strong> directories and maximum
<p>You are <strong>ENCOURAGED</strong> to use the directory depths of <strong>4</strong>. The maximum number of files, excluding
Makefile example, renamed as <code>Makefile</code> of course, for help in constructing your <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>Makefile</code>. See the <a href="guidelines.html#makefile">Makefile section</a> in the <code>.info.json</code> and <code>.auth.json</code> is <strong>31</strong>. And the maximum file-path
guidelines for more details.</p> component is <strong>38</strong> and maximum path length is <strong>60</strong>.</p>
<p>The target of the <code>Makefile</code> must be called <code>prog</code>. The original <p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball as constructed by
C source file must be called <code>prog.c</code>.</p> <code>mkiocccentry(1)</code>, which <strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.
<p>To invoke the C compiler, use <code>${CC}</code>. To invoke the C preprocessor use The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong> be
<code>${CPP}</code>.</p> less than <code>27651*1024</code> bytes.</p>
<p>Do <strong>NOT</strong> assume that <code>.</code> (the current directory) is in the <code>$PATH</code>.</p> <p>The tarball file <strong>MUST</strong> pass all <code>txzchk(1)</code> checks and the tarball
<p>When <code>make clobber</code> is invoked, we request that your submission directory be restored filename <strong>MUST</strong> pass all <code>fnamchk(1)</code> checks. You may <strong>NOT</strong> submit a tarball
to its original submission state. For example, any temporary files created by the <code>-d</code> or <code>-s</code> seed options of <code>mkiocccentry(1)</code>.</p>
created during the build process, or during execution should be <p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
removed by the <code>clobber</code> rule.</p> current version of <code>chksubmit(1)</code>.</p>
<p>Your <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with <code>bash(1)</code> <p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2-size">Rule 2 Size</a>
<strong>AND</strong> GNU <code>make(1)</code>. You are <strong>ENCOURAGED</strong> to use <code>SHELL= bash</code> in size checks performed by <code>iocccsize(1)</code>. The <code>Makefile</code> and <code>remarks.md</code> files cannot
your <code>Makefile</code>. Please add a space between the <code>=</code> and the value.</p> be empty. The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
<p>Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX <code>mkiocccentry(1)</code> generates.</p>
Specification</a> <p>Submissions that package using older versions of the mkiocccentry
environments and systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>! Be sure
Specification</a> are that you are using the latest tools from the
available in the <code>$PATH</code> search path.</p> <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
<p>Jump to: <a href="#">top</a></p> GitHub repo.</p>
<div id="rule21"> <p>In summary it is best to use <code>mkioccentry(1)</code> to package your submission, rather than roll-it-by-hand.</p>
<h2 id="rule-21">Rule 21</h2> <p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
</div> <h2 id="rule-18-license">Rule 18 License</h2>
<p>Your submission <strong>MUST NOT</strong> create or modify files <strong>ABOVE</strong> the current directory <p>The entirety of your submission <strong>MUST</strong> be submitted under the following license:</p>
<em>with the exception of</em> the <code>/tmp</code> and the <code>/var/tmp</code> directories. Your submission <p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></p>
<strong>MAY</strong> create subdirectories <strong>below</strong> the submission directory, or in <code>/tmp</code>, <p>See <a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
or in <code>/var/tmp</code> provided that <code>.</code> is <strong>NOT</strong> the first byte in any <h2 id="rule-19-prime">Rule 19 Prime</h2>
directory name or filename you create.</p> <p>This 19th rule, while prime, is reserved for future abuse. :-)
<p>If you do create files and directories, <strong>PLEASE</strong> be sure that Additional rules, both humorous and otherwise, may be added
the <code>clobber</code> rule of your <code>Makefile</code> removes such created files below this rule in future contests.</p>
in order to restore your submission to its original submission state.</p> <p>See <a href="rules.html#rule-6-free">Rule 6 Free</a>.</p>
<p>See also <a href="#rule5">Rule 5</a>.</p> <h2 id="further-reading">Further Reading</h2>
<p>Jump to: <a href="#">top</a></p> <p>Please read the <a href="guidelines.html">Guidelines</a> next for further
<div id="rule22"> commentary on The Rules.</p>
<h2 id="rule-22">Rule 22</h2> <p>See also the <a href="../faq.html">FAQ</a>.</p>
</div> <p>Consider joining our Discord
<p>Catch 22:</p> server for discussions about The Rules, questions for the Judges, and
<p>Your source code, data files, remarks and program output <strong>MUST NOT</strong> <code>C</code> in general.</p>
identify the authors of your code. The <a href="../judges.html">judges</a> <strong>STRONGLY PREFER</strong> to <p>Leonid A. Broukhis
<strong>NOT</strong> know who is submitting entries to the IOCCC.</p> chongo (Landon Curt Noll) /\cc/\
<p>Even if you are a previous IOCCC winner, catch 22 still applies.</p>
<p>Identifying the author(s) of your submission in an obvious way anywhere
within your code, data, remarks or program output (unless you are
<strong>Peter Honeyman</strong> or pretending to be <strong>Peter Honeyman</strong>) will be grounds
for disqualification of your submission.</p>
<p>And don’t assume that we won’t be able to determine your name even if it’s not
obvious, because you stand a significant chance of violating this rule if you
do.</p>
<p>Yes, Virginia, <strong>WE REALLY MEAN IT!</strong></p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule23">
<h2 id="rule-23">Rule 23</h2>
</div>
<p>This prime rule number is reserved for future use.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule24">
<h2 id="rule-24">Rule 24</h2>
</div>
<p>Even though 24 is not prime, you should still see <a href="#rule23">Rule 23</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule25">
<h2 id="rule-25">Rule 25</h2>
</div>
<p class="leftbar">
The <a href="rules.html">IOCCC rule set</a> needs more than <code>5^2</code> rules: see <a href="#rule26">Rule 26</a>.
</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule26">
<h2 id="rule-26">Rule 26</h2>
</div>
<blockquote>
<p>“The quick brown fox jumps over the lazy dog”.<br>
“Pack my box with five dozen liquor jugs.”<br>
“How vexingly quick daft zebras jump!”<br>
“Sphinx of black quartz, judge my vow.”<br>
“Waltz, bad nymph, for quick jigs vex.”<br>
“Mr. Jock, TV quiz PhD, bags few lynx.”<br>
“abcdefg, hijklmnop, qrstu&amp;v, wxy&amp;z.”</p>
</blockquote>
<p>Jump to: <a href="#">top</a></p>
<div id="rule27">
<h2 id="rule-27">Rule 27</h2>
</div>
<p>Unless otherwise needed, <a href="#rule27">Rule 27</a> is reserved for something cubic. :-)</p>
<p>Jump to: <a href="#">top</a></p>
<div id="rule28">
<h2 id="rule-28">Rule 28</h2>
</div>
<p><a href="#rule28">Rule 28</a> is a perfect way to end the list of <a href="rules.html">IOCCC rules</a>
as we do <strong>NOT</strong> plan to have <strong>496</strong> rules. :-)</p>
<p>Jump to: <a href="#">top</a></p>
<div id="more-information">
<div id="information">
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
</div>
</div>
<p>For questions or comments about the contest, see <a href="../contact.html">Contacting the IOCCC</a>.</p>
<p><strong>Be SURE</strong> to review the <a href="index.html">IOCCC Rules and Guidelines</a> as they
may (and <strong>often do</strong>) change from year to year.</p>
<p><strong>PLEASE</strong> be <strong>SURE</strong> you have the <strong>current</strong> <a href="rules.html">IOCCC rules</a> and
<a href="guidelines.html">IOCCC guidelines</a> prior to submitting to the contest.</p>
<p>See the <a href="../news.html">Official IOCCC website news</a> for additional information.</p>
<p>For the updates and breaking IOCCC news, you are encouraged to follow
the <a href="https://fosstodon.org/@ioccc">IOCCC on Mastodon</a> account. See our
FAQ on “<a href="../faq.html#try_mastodon">Mastodon</a>”
for more information. Please do note that unless
you are mentioned by us you will <strong>NOT</strong> get a notification from the app <em>so you
should refresh the page <strong>even if you do follow us</strong></em>.</p>
<p>Check out the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a> in general.</p>
<p>Consider joining the IOCCC discord community via this link:
<a href="https://discord.gg/Wa42Qujwnw">https://discord.gg/Wa42Qujwnw</a></p>
<p>See the
FAQ on “<a href="../faq.html#mkiocccentry">obtaining, compiling, installing and using the mkiocccentry tools</a>”
and the
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”
as that FAQ has important details on
<a href="../next/register.html">how to register</a>
as well as
<a href="../next/submit.html">how to upload your submission</a> for the IOCCC.</p>
<p>Jump to: <a href="#">top</a></p>
<p><strong>Leonid A. Broukhis</strong><br>
<strong>chongo (Landon Curt Noll) <code>/\cc/\</code></strong></p>
<hr style="width:10%;text-align:left;margin-left:0">
<p>Jump to: <a href="#">top</a>
<!-- AFTER: last line of markdown file: next/rules.md --></p> <!-- AFTER: last line of markdown file: next/rules.md --></p>
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh --> <!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
+326 -841
View File
File diff suppressed because it is too large. Load diff
+7 -6
View File
@@ -517,8 +517,8 @@ the file selection step.</p>
<ul> <ul>
<li>the status of the submission</li> <li>the status of the submission</li>
<li>the filename, which will be in the correct format, assuming you used <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#rule17">Rule <code>mkiocccentry(1)</code> which is <strong>HIGHLY</strong> recommended so that you do not break
17</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 <li>the file length, which <code>txzchk(1)</code> will also verify (the file itself and the
tarball listing).</li> tarball listing).</li>
<li>the upload date.</li> <li>the upload date.</li>
@@ -575,8 +575,8 @@ To see any status updates, you should logout and log back in later.</p>
</blockquote> </blockquote>
<p>… or <strong>ANY</strong> other error then you <strong>MUST FIX</strong> your submission, repackage your <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 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#rule17">Rule this your submission <strong>WILL BE REJECTED</strong> for violating
17</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> <p>If the format test went well, then you will see:</p>
<blockquote> <blockquote>
<p><strong>Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.</strong></p> <p><strong>Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.</strong></p>
@@ -585,8 +585,9 @@ this your submission <strong>WILL BE REJECTED</strong> for violating <a href="ru
rules or that everything is OK once the tarball is extracted; it simply means 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 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 abuse it and the tests pass then you stand a significant chance of having your
submission rejected for violating <a href="rules.html#rule17">Rule 17</a>, even if the submission rejected for violating
tests passed.</p> <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 <p>For details on <code>txzchk</code>, see the
FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.</p> FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.</p>
<p>For details on <code>chksubmit</code>, see the <p>For details on <code>chksubmit</code>, see the
+7 -6
View File
@@ -86,8 +86,8 @@ And in the slot it will give you important details like:
- the status of the submission - the status of the submission
- the filename, which will be in the correct format, assuming you used - 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 `mkiocccentry(1)` which is **HIGHLY** recommended so that you do not break
17](rules.html#rule17)! [Rule 17 Packaging](rules.html#rule-17-packaging)!
- the file length, which `txzchk(1)` will also verify (the file itself and the - the file length, which `txzchk(1)` will also verify (the file itself and the
tarball listing). tarball listing).
- the upload date. - the upload date.
@@ -157,8 +157,8 @@ Or:
... or **ANY** other error then you **MUST FIX** your submission, repackage your ... 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 tarball with `mkiocccentry` and upload to the same slot again! If you do not fix
this your submission **WILL BE REJECTED** for violating [Rule this your submission **WILL BE REJECTED** for violating
17](rules.html#rule17)! [Rule 17 Packaging](rules.html#rule-17-packaging)!
If the format test went well, then you will see: If the format test went well, then you will see:
@@ -168,8 +168,9 @@ If the format test went well, then you will see:
rules or that everything is OK once the tarball is extracted; it simply means 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 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 abuse it and the tests pass then you stand a significant chance of having your
submission rejected for violating [Rule 17](rules.html#rule17), even if the submission rejected for violating
tests passed. [Rule 17 Packaging](rules.html#rule-17-packaging),
even if the tests passed.
For details on `txzchk`, see the For details on `txzchk`, see the
FAQ on "[txzchk](../faq.html#txzchk)". FAQ on "[txzchk](../faq.html#txzchk)".
+7 -4
View File
@@ -565,12 +565,14 @@ for more info.</p></li>
</ul> </ul>
<p><strong>NOTE</strong>: Please see our <a href="markdown.html">IOCCC markdown guide</a> for <strong>important information</strong> on using markdown in the IOCCC.</p> <p><strong>NOTE</strong>: Please see our <a href="markdown.html">IOCCC markdown guide</a> for <strong>important information</strong> on using markdown in the IOCCC.</p>
<p>If the <code>mkiocccentry</code> tool indicates that there is a problem with your <p>If the <code>mkiocccentry</code> tool indicates that there is a problem with your
submission, especially if it identifies a <a href="next/rules.html#rule2">Rule 2</a>, or submission, especially if it identifies a
any other <a href="next/rules.html">rule</a>, related problem, you are <strong>strongly</strong> encouraged to revise and <a href="next/rules.html#rule-2-size">Rule 2 Size</a>,
or any other <a href="next/rules.html">rule</a>, related problem, you are <strong>strongly</strong> encouraged to revise and
correct your entry and then re-run the <code>mkiocccentry</code> tool.</p> correct your entry and then re-run the <code>mkiocccentry</code> tool.</p>
<p>If you choose to risk violating <a href="next/rules.html">Rules</a>, be sure and explain your reason <p>If you choose to risk violating <a href="next/rules.html">Rules</a>, be sure and explain your reason
for doing so in your <code>remarks.md</code> file.</p> for doing so in your <code>remarks.md</code> file.</p>
<p>See also <a href="next/rules.html#rule17">Rule 17</a>!</p> <p>See also
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>!</p>
<p><strong>IMPORTANT NOTE</strong>: the tools that require other tools, <code>mkiocccentry(1)</code> and <p><strong>IMPORTANT NOTE</strong>: the tools that require other tools, <code>mkiocccentry(1)</code> and
<code>txzchk(1)</code>, will, as of version <code>2.0.2 2025-03-11</code>, search under <code>$PATH</code>. If <code>txzchk(1)</code>, will, as of version <code>2.0.2 2025-03-11</code>, search under <code>$PATH</code>. If
you have an earlier version and you have not installed the tools and run the you have an earlier version and you have not installed the tools and run the
@@ -578,7 +580,8 @@ tools from outside the repo directory, you will have to use the options to the
tools to set the path to the required tools.</p> tools to set the path to the required tools.</p>
<p>Do remember to make sure you have the latest vers <p>Do remember to make sure you have the latest vers
<code>chksubmit(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>. And remember to make sure you have <code>chksubmit(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>. And remember to make sure you have
the latest version so you do not violate <a href="next/rules.html#rule17">Rule 17</a>. the latest version so you do not violate
<a href="next/rules.html#rule-17-packaging">Rule 17 Packaging</a>.
See the See the
FAQ on “<a href="faq.html#obtaining_mkiocccentry">obtaining the latest mkiocccentry tools</a>”, FAQ on “<a href="faq.html#obtaining_mkiocccentry">obtaining the latest mkiocccentry tools</a>”,
the the
+7 -4
View File
@@ -161,14 +161,16 @@ Three files are required to exist in `topdir`:
**NOTE**: Please see our [IOCCC markdown guide](markdown.html) for **important information** on using markdown in the IOCCC. **NOTE**: Please see our [IOCCC markdown guide](markdown.html) for **important information** on using markdown in the IOCCC.
If the `mkiocccentry` tool indicates that there is a problem with your If the `mkiocccentry` tool indicates that there is a problem with your
submission, especially if it identifies a [Rule 2](next/rules.html#rule2), or submission, especially if it identifies a
any other [rule](next/rules.html), related problem, you are **strongly** encouraged to revise and [Rule 2 Size](next/rules.html#rule-2-size),
or any other [rule](next/rules.html), related problem, you are **strongly** encouraged to revise and
correct your entry and then re-run the `mkiocccentry` tool. correct your entry and then re-run the `mkiocccentry` tool.
If you choose to risk violating [Rules](next/rules.html), be sure and explain your reason If you choose to risk violating [Rules](next/rules.html), be sure and explain your reason
for doing so in your `remarks.md` file. for doing so in your `remarks.md` file.
See also [Rule 17](next/rules.html#rule17)! See also
[Rule 17 Packaging](next/rules.html#rule-17-packaging)!
**IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and **IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and
`txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If `txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If
@@ -178,7 +180,8 @@ tools to set the path to the required tools.
Do remember to make sure you have the latest vers Do remember to make sure you have the latest vers
`chksubmit(1)`, `txzchk(1)` and `fnamchk(1)`. And remember to make sure you have `chksubmit(1)`, `txzchk(1)` and `fnamchk(1)`. And remember to make sure you have
the latest version so you do not violate [Rule 17](next/rules.html#rule17). the latest version so you do not violate
[Rule 17 Packaging](next/rules.html#rule-17-packaging).
See the See the
FAQ on "[obtaining the latest mkiocccentry tools](faq.html#obtaining_mkiocccentry)", FAQ on "[obtaining the latest mkiocccentry tools](faq.html#obtaining_mkiocccentry)",
the the
+16 -16
View File
@@ -14954,7 +14954,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/index.html</loc> <loc>https://www.ioccc.org/2024/index.html</loc>
<lastmod>2025-08-07T01:59:28+00:00</lastmod> <lastmod>2025-11-20T06:14:33+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/kramer/2024_kramer.tar.bz2</loc> <loc>https://www.ioccc.org/2024/kramer/2024_kramer.tar.bz2</loc>
@@ -15374,7 +15374,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/README.md</loc> <loc>https://www.ioccc.org/2024/README.md</loc>
<lastmod>2025-08-07T01:59:28+00:00</lastmod> <lastmod>2025-11-20T04:29:28+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/2024/rules.html</loc> <loc>https://www.ioccc.org/2024/rules.html</loc>
@@ -16758,11 +16758,11 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/faq.html</loc> <loc>https://www.ioccc.org/faq.html</loc>
<lastmod>2025-11-18T18:05:36+00:00</lastmod> <lastmod>2025-11-20T06:07:42+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/faq.md</loc> <loc>https://www.ioccc.org/faq.md</loc>
<lastmod>2025-11-18T18:05:36+00:00</lastmod> <lastmod>2025-11-20T05:27:40+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/inc/index.html</loc> <loc>https://www.ioccc.org/inc/index.html</loc>
@@ -16818,19 +16818,19 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/news.html</loc> <loc>https://www.ioccc.org/news.html</loc>
<lastmod>2025-08-07T03:07:24+00:00</lastmod> <lastmod>2025-11-20T06:14:39+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/news.md</loc> <loc>https://www.ioccc.org/news.md</loc>
<lastmod>2025-08-07T03:07:11+00:00</lastmod> <lastmod>2025-11-20T06:10:33+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/guidelines.html</loc> <loc>https://www.ioccc.org/next/guidelines.html</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:07:45+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/guidelines.md</loc> <loc>https://www.ioccc.org/next/guidelines.md</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:03:36+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/index.html</loc> <loc>https://www.ioccc.org/next/index.html</loc>
@@ -16870,19 +16870,19 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/rules.html</loc> <loc>https://www.ioccc.org/next/rules.html</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:38:36+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/rules.md</loc> <loc>https://www.ioccc.org/next/rules.md</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:32:43+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/submit.html</loc> <loc>https://www.ioccc.org/next/submit.html</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:07:47+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/submit.md</loc> <loc>https://www.ioccc.org/next/submit.md</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:04:29+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/try.alt.sh</loc> <loc>https://www.ioccc.org/next/try.alt.sh</loc>
@@ -16902,11 +16902,11 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/quick-start.html</loc> <loc>https://www.ioccc.org/quick-start.html</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:07:47+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/quick-start.md</loc> <loc>https://www.ioccc.org/quick-start.md</loc>
<lastmod>2025-11-17T20:14:15+00:00</lastmod> <lastmod>2025-11-20T06:06:04+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/README.html</loc> <loc>https://www.ioccc.org/README.html</loc>
@@ -16938,11 +16938,11 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.html</loc> <loc>https://www.ioccc.org/status.html</loc>
<lastmod>2025-11-18T18:10:17+00:00</lastmod> <lastmod>2025-11-20T06:38:54+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.json</loc> <loc>https://www.ioccc.org/status.json</loc>
<lastmod>2025-08-07T03:07:20+00:00</lastmod> <lastmod>2025-11-20T06:15:00+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.md</loc> <loc>https://www.ioccc.org/status.md</loc>
+1 -1
View File
@@ -461,7 +461,7 @@
&quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;, &quot;no_comment&quot; : &quot;mandatory comment: because comments were removed from the original JSON spec&quot;,
&quot;IOCCC_status_version&quot; : &quot;1.0 2024-03-09&quot;, &quot;IOCCC_status_version&quot; : &quot;1.0 2024-03-09&quot;,
&quot;contest_status&quot; : &quot;closed&quot;, &quot;contest_status&quot; : &quot;closed&quot;,
&quot;news_update&quot; : &quot;2025-08-07T03:07:11+00:00&quot;, &quot;news_update&quot; : &quot;2025-11-20T06:10:33+00:00&quot;,
&quot;status_update&quot; : &quot;2025-08-01T19:38:14+00:00&quot; &quot;status_update&quot; : &quot;2025-08-01T19:38:14+00:00&quot;
}</code></pre> }</code></pre>
+1 -1
View File
@@ -2,6 +2,6 @@
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec", "no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"IOCCC_status_version" : "1.0 2024-03-09", "IOCCC_status_version" : "1.0 2024-03-09",
"contest_status" : "closed", "contest_status" : "closed",
"news_update" : "2025-08-07T03:07:11+00:00", "news_update" : "2025-11-20T06:10:33+00:00",
"status_update" : "2025-08-01T19:38:14+00:00" "status_update" : "2025-08-01T19:38:14+00:00"
} }