Merge pull request #243 from xexyl/rules
This commit is contained in:
14 files changed
+665
-2670
No files matched your search
+3
-3
@@ -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)
|
||||
increased by about 21%, we received many submissions that were well under the new
|
||||
[Rule 2 Size](../next/rules.html#rule-2-size) including a fair number of quality
|
||||
[Rule 2](rules.html#rule2) including a fair number of quality
|
||||
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
|
||||
_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**
|
||||
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
|
||||
[Rule 2 Size](../next/rules.html#rule-2-size) for **at least another 10 years** (and likely longer).
|
||||
[Rule 2](rules.html#rule2) for **at least another 10 years** (and likely longer).
|
||||
|
||||
**IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the [Rule
|
||||
2 Size](../next/rules.html#rule-2-size). Large code size isn't everything. :-)
|
||||
2](rules.html#rule2). Large code size isn't everything. :-)
|
||||
Those submitting to future contents should **take a careful note** of that fact.
|
||||
|
||||
|
||||
|
||||
+4
-4
@@ -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>
|
||||
<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
|
||||
<a href="../next/rules.html#rule-2-size">Rule 2 Size</a> including a fair number of quality
|
||||
<a href="rules.html#rule2">Rule 2</a> including a fair number of quality
|
||||
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>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>
|
||||
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
|
||||
<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#rule-2-size">Rule
|
||||
2 Size</a>. Large code size isn’t everything. :-)
|
||||
<a href="rules.html#rule2">Rule 2</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="rules.html#rule2">Rule
|
||||
2</a>. Large code size isn’t everything. :-)
|
||||
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>
|
||||
<p>Here are the final versions of the IOCCC rules and guidelines that were in
|
||||
|
||||
@@ -453,7 +453,7 @@
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: faq.md -->
|
||||
<h1 id="ioccc-faq-table-of-contents">IOCCC FAQ Table of Contents</h1>
|
||||
<p>This is FAQ version <strong>29.01 2025-11-28</strong>.</p>
|
||||
<p>This is FAQ version <strong>29.02 2025-11-29</strong>.</p>
|
||||
<h2 id="entering-the-ioccc-the-bare-minimum-you-need-to-know">0. <a href="#enter_questions">Entering the IOCCC: the bare minimum you need to know</a></h2>
|
||||
<ul>
|
||||
<li><strong>Q 0.0</strong>: <a class="normal" href="#enter">How can I enter the IOCCC?</a></li>
|
||||
@@ -480,7 +480,7 @@
|
||||
<li><strong>Q 1.4</strong>: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a></li>
|
||||
<li><strong>Q 1.5</strong>: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a></li>
|
||||
<li><strong>Q 1.6</strong>: <a class="normal" href="#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a></li>
|
||||
<li><strong>Q 1.7</strong>: <a class="normal" href="#rule17">What are the details behind Rule 17 - Packaging?</a></li>
|
||||
<li><strong>Q 1.7</strong>: <a class="normal" href="#rule17">What are the details behind Rule 17 - use mkiocccentry?</a></li>
|
||||
<li><strong>Q 1.8</strong>: <a class="normal" href="#uuid">How can I avoid re-entering my UUID to mkiocccentry?</a></li>
|
||||
<li><strong>Q 1.9</strong>: <a class="normal" href="#submission_dir">How can I avoid having to move or delete my submission directory for the same workdir?</a></li>
|
||||
<li><strong>Q 1.10</strong>: <a class="normal" href="#download_submission">Can I download my submission tarball from the submit server?</a></li>
|
||||
@@ -493,7 +493,7 @@
|
||||
<li><strong>Q 2.1</strong>: <a class="normal" href="#feedback">How can I comment or make a suggestion on IOCCC rules, guidelines and tools?</a></li>
|
||||
<li><strong>Q 2.2</strong>: <a class="normal" href="#warnings">Are there any compiler warnings that I should not worry about in my submissions?</a></li>
|
||||
<li><strong>Q 2.3</strong>: <a class="normal" href="#frequent-themes">What types of entries have been frequently submitted to the IOCCC?</a></li>
|
||||
<li><strong>Q 2.4</strong>: <a class="normal" href="#rule_2_broken">How did an entry win the IOCCC that breaks Rule 2 - Size?</a></li>
|
||||
<li><strong>Q 2.4</strong>: <a class="normal" href="#rule_2_broken">How did an entry win the IOCCC that breaks Rule 2 - Size Limit?</a></li>
|
||||
<li><strong>Q 2.5</strong>: <a class="normal" href="#submissions">How many submissions do the judges receive for a given IOCCC?</a></li>
|
||||
<li><strong>Q 2.6</strong>: <a class="normal" href="#judging_time">How much time does it take to judge the contest?</a></li>
|
||||
<li><strong>Q 2.7</strong>: <a class="normal" href="#judging_rounds">How many judging rounds do you have?</a></li>
|
||||
@@ -590,10 +590,7 @@
|
||||
<li><strong>Q 10.3</strong>: <a class="normal" href="#dot_files"> What is the purpose of the <code>.top</code>, <code>.allyear</code>, <code>.year</code> and <code>.path</code> files?</a></li>
|
||||
<li><strong>Q 10.4</strong>: <a class="normal" href="#terms"> What is the current meaning of the IOCCC terms Author, Entry, and Submission?</a></li>
|
||||
<li><strong>Q 10.5</strong>: <a class="normal" href="#licence">Am I allowed to use IOCCC content?</a></li>
|
||||
<li><strong>Q 10.6</strong>: <a class="normal" href="#try_mastodon">What is Mastodon and why does the IOCCC use it?</a>
|
||||
<ul>
|
||||
<li><strong>Q 10.6.1</strong>: <a class="normal" href="#mastodon_notifications">How can I get push notifications when the judges post something on mastodon?</a></li>
|
||||
</ul></li>
|
||||
<li><strong>Q 10.6</strong>: <a class="normal" href="#try_mastodon">What is Mastodon and why does the IOCCC use it?</a></li>
|
||||
<li><strong>Q 10.7</strong>: <a class="normal" href="#tabstops">How do I set certain tabstops for viewing source code in vi(m)?</a></li>
|
||||
<li><strong>Q 10.8</strong>: <a class="normal" href="#menus">How do the menus on the website work and what can I do if they don’t work?</a></li>
|
||||
<li><strong>Q 10.9</strong>: <a class="normal" href="#author-information">How do I find more information about a winning author of an entry?</a></li>
|
||||
@@ -659,7 +656,7 @@
|
||||
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
|
||||
violating the <a href="next/rules.html">Rules</a> and in particular
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<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>
|
||||
@@ -774,7 +771,7 @@ directory</strong> will be created, with the name based on your IOCCC registrati
|
||||
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
|
||||
particular
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<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
|
||||
you have an earlier version and you have not installed the tools and run the
|
||||
@@ -938,7 +935,7 @@ rounds; we look at the author name only if an entry wins. See the
|
||||
<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
|
||||
include whitespace you would still be violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>).</li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>).</li>
|
||||
</ul>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="try_scripts">
|
||||
@@ -982,11 +979,12 @@ for more details.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#rule17">Rule 17</a>”
|
||||
and
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>
|
||||
itself.</p>
|
||||
<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#rule-5---integrity">Rule 5 - Integrity</a>.</p>
|
||||
<a href="next/rules.html#rule5-modifying-files">Rule 5 - Do NOT modify submitted files or filenames or parent
|
||||
directories</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">
|
||||
@@ -1130,12 +1128,12 @@ level directory.</p>
|
||||
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
|
||||
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#rule-17---packaging">Rule 17 - Packaging</a> and in
|
||||
<p>Please pay careful attention to <a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a> and in
|
||||
particular the part about the maximum number of files per
|
||||
submission, which not only discusses the maximum
|
||||
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
|
||||
of violating <a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
of violating <a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>Also, remember what the <a href="next/guidelines.html">guidelines</a> say:</p>
|
||||
<blockquote>
|
||||
<p><strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are!
|
||||
@@ -1159,7 +1157,7 @@ ultimate author of the code you submit.</p>
|
||||
you used as well as how you used them to help write your submission.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule17">
|
||||
<h3 id="q-1.7-what-are-details-behind-rule-17---packaging">Q 1.7: What are details behind Rule 17 - Packaging?</h3>
|
||||
<h3 id="q-1.7-what-are-details-behind-rule-17---use-mkiocccentry">Q 1.7: What are details behind Rule 17 - Use mkiocccentry?</h3>
|
||||
</div>
|
||||
<h3 id="tldr-rule-17---use-mkiocccentry1">TL;DR Rule 17 - Use <code>mkiocccentry(1)</code></h3>
|
||||
<p>This is a <strong>COMPLEX</strong> rule. <strong>Violating this rule WILL CAUSE YOUR SUBMISSION TO
|
||||
@@ -1178,7 +1176,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>
|
||||
</ul>
|
||||
<p>The above mentioned tools will help you verify that your submission
|
||||
conforms to <a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>. Each of these tool has a <code>-h</code>
|
||||
conforms to <a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>. Each of these tool has a <code>-h</code>
|
||||
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>
|
||||
<p>The maximum number of <strong>extra files</strong> is 31. See the
|
||||
@@ -1228,7 +1226,7 @@ for help.</p>
|
||||
<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
|
||||
it you still risk violating this rule). See also
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>
|
||||
and our
|
||||
FAQ on “<a href="#remarks_md">remarks.md</a>”,
|
||||
our
|
||||
@@ -1322,16 +1320,17 @@ permissions and <code>mkiocccentry(1)</code> does this for you. In particular: d
|
||||
<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
|
||||
submission <strong>WILL</strong> be rejected for violating
|
||||
<a href="next/rules.html#rule17">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<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
|
||||
<strong>error</strong>.</p>
|
||||
<p>If you do need different permissions, then see the
|
||||
FAQ on “<a href="#file_perms">file permissions</a>”. Also keep in mind
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule-5---integrity">Rule 5 - Integrity</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
<a href="next/rules.html#rule5-modifying-files">Rule 5 - Do NOT modify submitted files or filenames or parent
|
||||
directories</a>,
|
||||
and
|
||||
<a href="next/rules.html#rule-16---anonymous">Rule 16 - Anonymous</a>.</p>
|
||||
<a href="next/rules.html#rule16-anonymous-judging">Rule 16 - Anonymous judging</a>.</p>
|
||||
<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
|
||||
directories in your submission directory, including the two required JSON files,
|
||||
@@ -1344,18 +1343,18 @@ page</a>.</p>
|
||||
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
|
||||
possible there could be a problem and this poses a big risk of violating
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>
|
||||
or
|
||||
<a href="next/rules.html#rule17">Rule 17 - Packaging</a>.</p>
|
||||
<a href="next/rules.html#rule17">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<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
|
||||
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>
|
||||
<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#rule-4---files">Rule 4 - Files</a>
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>
|
||||
or
|
||||
<a href="next/rules.html#rule17">Rule 17 - Packaging</a>.</p>
|
||||
<a href="next/rules.html#rule17">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<div id="max-files">
|
||||
<h4 id="maximum-number-of-files-per-submission">Maximum number of files per submission</h4>
|
||||
</div>
|
||||
@@ -1385,9 +1384,9 @@ The <code>mkiocccentry(1)</code> tool uses the v7 format. For instance you might
|
||||
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<p><strong>IMPORTANT</strong>: where
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
and
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>
|
||||
and the tools from the latest
|
||||
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
|
||||
@@ -1422,9 +1421,9 @@ page</a>,
|
||||
for help here and also read our
|
||||
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#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
or
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</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
|
||||
your submission’s xz compressed tarball. Do <strong>NOT</strong> assume you have the most
|
||||
@@ -1669,7 +1668,7 @@ somehow, <code>txzchk(1)</code> will flag it as an error. When the judges run <c
|
||||
on the uploaded submission compressed tarball, if anything is wrong, for
|
||||
instance if you “sneak in” any dot files or dot directories, the submission
|
||||
<strong>WILL BE REJECTED</strong> for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>You may use whatever tools you need to develop your submission, including the
|
||||
use of <code>git(1)</code> or <code>gh(1)</code>, just be sure that your submission code and your
|
||||
submission Makefile don’t depend on such tools.</p>
|
||||
@@ -1903,7 +1902,7 @@ of the same theme.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule_2_broken">
|
||||
<div id="rule_breaking_entry">
|
||||
<h3 id="q-2.4-how-did-an-entry-win-the-ioccc-that-breaks-rule-2---size">Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size?</h3>
|
||||
<h3 id="q-2.4-how-did-an-entry-win-the-ioccc-that-breaks-rule-2---size-restrictions">Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size restrictions?</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p>As entries have been fixed it is entirely possible that some of the entries no
|
||||
@@ -2120,9 +2119,9 @@ two JSON files, <code>.auth.json</code> and <code>.info.json</code> as well as t
|
||||
<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
|
||||
a great risk of violating
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
or
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!).</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!).</p>
|
||||
<p>As an example, if your submission directory is
|
||||
<code>00000000-0000-4000-0000-000000000000-3/</code> then you should run the following
|
||||
command:</p>
|
||||
@@ -2142,9 +2141,9 @@ FAQ on “<a href="#auth_json">.auth.json</a>”
|
||||
and the
|
||||
FAQ on “<a href="#info_json">.info.json</a>”
|
||||
as well as
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
and
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</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
|
||||
do not need to worry about those details. One should use <code>chksubmit(1)</code> instead
|
||||
@@ -2235,12 +2234,12 @@ to be valid. If this is not the case your submission <strong>WILL BE</strong> re
|
||||
<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
|
||||
on this, and in particular
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</li>
|
||||
</ul>
|
||||
<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
|
||||
violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p></li>
|
||||
<li><p><code>tarball</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>The xz compressed tarball filename.</li>
|
||||
@@ -2248,10 +2247,10 @@ violating
|
||||
<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
|
||||
your submission rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!
|
||||
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#rule-17---packaging">Rule 17 - Packaging</a>. The
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</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
|
||||
validate your filename, or if you have the wrong directory name in the
|
||||
@@ -2266,7 +2265,7 @@ tarball, this will be flaggd.</p></li>
|
||||
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
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p></li>
|
||||
<li><p><code>author_count</code> (number)</p>
|
||||
<ul>
|
||||
<li>How many authors this submission has.</li>
|
||||
@@ -2339,7 +2338,7 @@ the range of 1 <strong>THROUGH</strong> <code>MAX_AFFILIATION_LEN</code> (see
|
||||
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
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</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>
|
||||
<li><p><code>past_winning_author</code> (boolean)</p>
|
||||
<ul>
|
||||
@@ -2424,9 +2423,9 @@ will use it on the submission directory as part of the judging process.</p>
|
||||
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
|
||||
rejected for violating the <a href="next/rules.html">Rules</a> and in particular
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
and
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<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
|
||||
instance, if in <code>.auth.json</code> the <code>no_comment</code> that we chose to not comment on is
|
||||
@@ -2435,9 +2434,9 @@ 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
|
||||
that must be established as valid by <code>chksubmit(1)</code>) your submission would be
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<a href="next/rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
and
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>
|
||||
and in particular
|
||||
because <code>chksubmit(1)</code> would not validate the <code>.auth.json</code> file (and maybe other
|
||||
things too).</p>
|
||||
@@ -2557,7 +2556,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<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
|
||||
on this, and in particular
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</li>
|
||||
</ul></li>
|
||||
<li><p><code>submit_slot</code> (number)</p>
|
||||
<ul>
|
||||
@@ -2569,7 +2568,7 @@ on this, and in particular
|
||||
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
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p></li>
|
||||
<li><p><code>title</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>A short name (length >= 1 <strong>THROUGH</strong> <code>MAX_TITLE_LEN</code>, defined in
|
||||
@@ -2579,7 +2578,7 @@ matches the regexp <code>[a-z0-9][a-z0-9_+-]*</code>.</li>
|
||||
</ul>
|
||||
<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#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
<li><p><code>abstract</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>A one line summary of your submission, with a length of 1 <strong>THROUGH</strong>
|
||||
@@ -2590,7 +2589,7 @@ in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a
|
||||
<p>The <code>abstract</code> may not contain a <code>;</code> (semicolon), nor <code>&</code> (ampersand), nor <code>,</code> (comma).</p>
|
||||
<p><strong>IMPORTANT:</strong> if your abstract is 0 in length or > the maximum abstract length you
|
||||
stand a great risk of having your submission rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
<li><p><code>tarball</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>The xz compressed tarball filename.</li>
|
||||
@@ -2598,27 +2597,27 @@ stand a great risk of having your submission rejected for violating
|
||||
<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
|
||||
your submission rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!
|
||||
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#rule-17---packaging">Rule 17 - Packaging</a>.
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</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
|
||||
validate your filename, or if you have the wrong directory name in the
|
||||
tarball, this will be flaggd.</p></li>
|
||||
<li><p><code>rule_2a_size</code> (number)</p>
|
||||
<ul>
|
||||
<li>The size calculated of <a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>.</li>
|
||||
<li>The size calculated of <a href="next/rules.html#rule2a-gross-size">Rule 2a - Gross Size</a>.</li>
|
||||
</ul>
|
||||
<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
|
||||
<a href="next/rules.html">Rules</a>!</p></li>
|
||||
<li><p><code>rule_2b_size</code> (number)</p>
|
||||
<ul>
|
||||
<li>The size calculated of <a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>.</li>
|
||||
<li>The size calculated of <a href="next/rules.html#rule2b-net-size">Rule 2b - Net Size</a>.</li>
|
||||
</ul>
|
||||
<p><strong>IMPORTANT:</strong> if this violates
|
||||
<a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>
|
||||
<a href="next/rules.html#rule2b-net-size">Rule 2b Net Size</a>
|
||||
you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
<a href="next/rules.html">Rules</a>!</p></li>
|
||||
@@ -2629,55 +2628,39 @@ chance of having your submission rejected for violating the
|
||||
<li><p><code>rule_2a_override</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if user overrides warning of
|
||||
<a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
|
||||
<a href="next/rules.html#rule2a-gross-size">Rule 2a - Gross Size</a>
|
||||
violation, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>IMPORTANT:</strong> if the
|
||||
<a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
|
||||
<a href="next/rules.html#rule2a-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
|
||||
submission rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p></li>
|
||||
<li><p><code>rule_2a_mismatch</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if
|
||||
<a href="next/rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
|
||||
<a href="next/rules.html#rule2a-gross-size">Rule 2a - Gross Size</a>
|
||||
calculated size is not the
|
||||
same as the file size.</li>
|
||||
</ul></li>
|
||||
<li><p><code>rule_2b_override</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if user overrides warning of
|
||||
<a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>
|
||||
<a href="next/rules.html#rule2b-net-size">Rule 2b - Net Size</a>
|
||||
violation, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>IMPORTANT:</strong> if the
|
||||
<a href="next/rules.html#rule-2b-net-size">Rule 2b Next Size</a>
|
||||
<a href="next/rules.html#rule2b-net-size">Rule 2b - Net Size</a>
|
||||
calculated size is <strong>NOT</strong>
|
||||
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#rule-17---packaging">Rule 17 - Packaging</a>.</p></li>
|
||||
<li><p><code>highbit_warning</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if <code>iocccsize</code> detects a high bit (unescaped octets with the high
|
||||
bit set - octet value >= 128); see
|
||||
<a href="next/rules.html#rule-12---utf-8">Rule 12 - UTF-8</a>,
|
||||
else <code>false</code>.</li>
|
||||
</ul></li>
|
||||
<li><p><code>nul_warning</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if <code>iocccsize</code> detects a NUL character in the <code>prog.c</code>, else
|
||||
<code>false</code>.</li>
|
||||
</ul></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p></li>
|
||||
<li><p><code>trigraph_warning</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if <code>iocccsize</code> detects an unknown or invalid trigraph in
|
||||
<code>prog.c</code>, else <code>false</code>.</li>
|
||||
</ul></li>
|
||||
<li><p><code>wordbuf_warning</code> (boolean)</p>
|
||||
<ul>
|
||||
<li>This is ignored and will be removed for IOCCC29 and beyond.</li>
|
||||
</ul></li>
|
||||
<li><p><code>ungetc_warning</code> (boolean)</p>
|
||||
<ul>
|
||||
<li><code>true</code> if <code>prog.c</code> triggered an <code>ungetc(3)</code> error, else <code>false</code>.</li>
|
||||
@@ -2689,7 +2672,7 @@ else <code>false</code>.</li>
|
||||
</ul>
|
||||
<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
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</p></li>
|
||||
@@ -2699,7 +2682,7 @@ for more information.</p></li>
|
||||
</ul>
|
||||
<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
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</p></li>
|
||||
@@ -2710,7 +2693,7 @@ for more information.</p></li>
|
||||
<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
|
||||
submission rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</p></li>
|
||||
@@ -2721,7 +2704,7 @@ for more information.</p></li>
|
||||
<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
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</p></li>
|
||||
@@ -2732,7 +2715,7 @@ for more information.</p></li>
|
||||
<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
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</p></li>
|
||||
@@ -2743,7 +2726,7 @@ for more information.</p></li>
|
||||
<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
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</p></li>
|
||||
@@ -2769,7 +2752,7 @@ for more information.</li>
|
||||
</ul>
|
||||
<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#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
<li><p><code>auth_JSON</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>".auth.json"</code>, defined as <code>AUTH_JSON_FILENAME</code> in
|
||||
@@ -2782,7 +2765,7 @@ for more information.</li>
|
||||
</ul>
|
||||
<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#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
<li><p><code>c_src</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>"prog.c"</code>, defined as <code>PROG_C_FILENAME</code> in
|
||||
@@ -2792,7 +2775,7 @@ is your submission source code.</li>
|
||||
</ul>
|
||||
<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#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
<li><p><code>Makefile</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>"Makefile"</code>, defined as <code>MAKEFILE_FILENAME</code> in
|
||||
@@ -2805,7 +2788,7 @@ for more information.</li>
|
||||
</ul>
|
||||
<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#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
<li><p><code>remarks</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>"remarks.md"</code>, defined as <code>REMARKS_FILENAME</code> in
|
||||
@@ -2818,7 +2801,7 @@ for more information.</li>
|
||||
</ul>
|
||||
<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#rule-17---packaging">Rule 17 - Packaging</a>!</p></li>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p></li>
|
||||
</ul>
|
||||
<p>The <code>manifest</code> <strong>array</strong> also <strong>OPTIONALLY</strong> has one or more of the field:</p>
|
||||
<ul>
|
||||
@@ -2831,7 +2814,7 @@ and <code>chksubmit</code> will verify this for you; it is <strong>ALSO</strong>
|
||||
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
|
||||
risk of having your submission rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</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
|
||||
this for you as it only <strong>LISTS</strong> the tarball: it does <strong>NOT</strong> extract it.
|
||||
@@ -2894,7 +2877,7 @@ 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
|
||||
that must be established as valid by <code>chksubmit</code>) your submission would be
|
||||
rejected for violating
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>,
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>,
|
||||
and in particular
|
||||
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
|
||||
@@ -5858,22 +5841,6 @@ follow posts something so you will have to check the IOCCC feed manually.</p>
|
||||
mastodon feed</a> page and/or mastodon
|
||||
app from time to time to view IOCCC mastodon updates.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="mastodon_notifications">
|
||||
<h3 id="q-10.6.1-how-can-i-get-push-notifications-when-the-judges-post-something-on-mastodon">Q 10.6.1: How can I get push notifications when the judges post something on mastodon?</h3>
|
||||
</div>
|
||||
<p>To do this you need to go to the <a href="https://fosstodon.org/@ioccc">IOCCC mastodon
|
||||
account</a> with a computer (it is unclear how to do
|
||||
this with a mobile device, if it is even possible) and then you should see a
|
||||
bell icon. Make sure it’s activated. If you mouse over it when it’s not enabled
|
||||
it should look something like this, assuming of course we follow you! :-) (if
|
||||
not the message about following each other won’t show up):</p>
|
||||
<p><img src="png/mastodon-notifications.png"
|
||||
alt="screenshot of Mastodon push notifications"
|
||||
width=912 height=556></p>
|
||||
<p>It is not yet clear if this only works on desktop/computers or mobile devices
|
||||
too as it was only just discovered (31 July 2025) but whatever the case we
|
||||
suggest you do it.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="tabstops">
|
||||
<h3 id="q-10.7-how-do-i-set-certain-tabstops-for-viewing-source-code-in-vim">Q 10.7: How do I set certain tabstops for viewing source code in vi(m)?</h3>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# IOCCC FAQ Table of Contents
|
||||
|
||||
This is FAQ version **29.01 2025-11-28**.
|
||||
This is FAQ version **29.02 2025-11-29**.
|
||||
|
||||
|
||||
## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions)
|
||||
@@ -26,7 +26,7 @@ This is FAQ version **29.01 2025-11-28**.
|
||||
- **Q 1.4**: <a class="normal" href="#mkiocccentry_test">How can I check if my submission passes tests without having to answer questions?</a>
|
||||
- **Q 1.5**: <a class="normal" href="#extra-files">What are extra files and how may I include additional files beyond the max allowed?</a>
|
||||
- **Q 1.6**: <a class="normal" href="#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a>
|
||||
- **Q 1.7**: <a class="normal" href="#rule17">What are the details behind Rule 17 - Packaging?</a>
|
||||
- **Q 1.7**: <a class="normal" href="#rule17">What are the details behind Rule 17 - use mkiocccentry?</a>
|
||||
- **Q 1.8**: <a class="normal" href="#uuid">How can I avoid re-entering my UUID to mkiocccentry?</a>
|
||||
- **Q 1.9**: <a class="normal" href="#submission_dir">How can I avoid having to move or delete my submission directory for the same workdir?</a>
|
||||
- **Q 1.10**: <a class="normal" href="#download_submission">Can I download my submission tarball from the submit server?</a>
|
||||
@@ -39,7 +39,7 @@ This is FAQ version **29.01 2025-11-28**.
|
||||
- **Q 2.1**: <a class="normal" href="#feedback">How can I comment or make a suggestion on IOCCC rules, guidelines and tools?</a>
|
||||
- **Q 2.2**: <a class="normal" href="#warnings">Are there any compiler warnings that I should not worry about in my submissions?</a>
|
||||
- **Q 2.3**: <a class="normal" href="#frequent-themes">What types of entries have been frequently submitted to the IOCCC?</a>
|
||||
- **Q 2.4**: <a class="normal" href="#rule_2_broken">How did an entry win the IOCCC that breaks Rule 2 - Size?</a>
|
||||
- **Q 2.4**: <a class="normal" href="#rule_2_broken">How did an entry win the IOCCC that breaks Rule 2 - Size Limit?</a>
|
||||
- **Q 2.5**: <a class="normal" href="#submissions">How many submissions do the judges receive for a given IOCCC?</a>
|
||||
- **Q 2.6**: <a class="normal" href="#judging_time">How much time does it take to judge the contest?</a>
|
||||
- **Q 2.7**: <a class="normal" href="#judging_rounds">How many judging rounds do you have?</a>
|
||||
@@ -133,7 +133,6 @@ This is FAQ version **29.01 2025-11-28**.
|
||||
- **Q 10.4**: <a class="normal" href="#terms"> What is the current meaning of the IOCCC terms Author, Entry, and Submission?</a>
|
||||
- **Q 10.5**: <a class="normal" href="#licence">Am I allowed to use IOCCC content?</a>
|
||||
- **Q 10.6**: <a class="normal" href="#try_mastodon">What is Mastodon and why does the IOCCC use it?</a>
|
||||
- **Q 10.6.1**: <a class="normal" href="#mastodon_notifications">How can I get push notifications when the judges post something on mastodon?</a>
|
||||
- **Q 10.7**: <a class="normal" href="#tabstops">How do I set certain tabstops for viewing source code in vi(m)?</a>
|
||||
- **Q 10.8**: <a class="normal" href="#menus">How do the menus on the website work and what can I do if they don't work?</a>
|
||||
- **Q 10.9**: <a class="normal" href="#author-information">How do I find more information about a winning author of an entry?</a>
|
||||
@@ -216,7 +215,7 @@ This toolkit is from the [mkiocccentry
|
||||
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
|
||||
violating the [Rules](next/rules.html) and in particular
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
@@ -387,7 +386,7 @@ 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
|
||||
the timestamp; see the [rules](next/rules.html) for more details on this, and in
|
||||
particular
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
**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
|
||||
@@ -582,7 +581,7 @@ rounds; we look at the author name only if an entry wins. See the
|
||||
- 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
|
||||
include whitespace you would still be violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)).
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
@@ -641,12 +640,13 @@ for more details.
|
||||
See the
|
||||
FAQ on "[Rule 17](#rule17)"
|
||||
and
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
|
||||
itself.
|
||||
|
||||
Do remember that if your submission requires different filenames, then you
|
||||
**MUST** make a **COPY** of them in your `Makefile`. See also
|
||||
[Rule 5 - Integrity](next/rules.html#rule-5---integrity).
|
||||
[Rule 5 - Do NOT modify submitted files or filenames or parent
|
||||
directories](next/rules.html#rule5-modifying-files).
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
@@ -858,12 +858,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
|
||||
tarball needs to pass these tests. However see below if you do do this.
|
||||
|
||||
Please pay careful attention to [Rule 17 - Packaging](next/rules.html#rule-17---packaging) and in
|
||||
Please pay careful attention to [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry) and in
|
||||
particular the part about the maximum number of files per
|
||||
submission, which not only discusses the maximum
|
||||
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
|
||||
of violating [Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
of violating [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
Also, remember what the [guidelines](next/guidelines.html) say:
|
||||
|
||||
@@ -902,7 +902,7 @@ Jump to: [top](#)
|
||||
|
||||
|
||||
<div id="rule17">
|
||||
### Q 1.7: What are details behind Rule 17 - Packaging?
|
||||
### Q 1.7: What are details behind Rule 17 - Use mkiocccentry?
|
||||
</div>
|
||||
|
||||
|
||||
@@ -925,7 +925,7 @@ contains **IMPORTANT** tools and libraries such as:
|
||||
- `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`)
|
||||
|
||||
The above mentioned tools will help you verify that your submission
|
||||
conforms to [Rule 17 - Packaging](next/rules.html#rule-17---packaging). Each of these tool has a `-h`
|
||||
conforms to [Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry). Each of these tool has a `-h`
|
||||
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).
|
||||
|
||||
@@ -988,7 +988,7 @@ for help.
|
||||
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
|
||||
it you still risk violating this rule). See also
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
|
||||
and our
|
||||
FAQ on "[remarks.md](#remarks_md)",
|
||||
our
|
||||
@@ -1096,7 +1096,7 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories
|
||||
`-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
|
||||
submission **WILL** be rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule17)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17)!
|
||||
|
||||
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
|
||||
@@ -1104,10 +1104,11 @@ 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
|
||||
FAQ on "[file permissions](#file_perms)". Also keep in mind
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 5 - Integrity](next/rules.html#rule-5---integrity),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
[Rule 5 - Do NOT modify submitted files or filenames or parent
|
||||
directories](next/rules.html#rule5-modifying-files),
|
||||
and
|
||||
[Rule 16 - Anonymous](next/rules.html#rule-16---anonymous).
|
||||
[Rule 16 - Anonymous judging](next/rules.html#rule16-anonymous-judging).
|
||||
|
||||
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
|
||||
@@ -1122,9 +1123,9 @@ 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)`
|
||||
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 4 - Files](next/rules.html#rule-4---files)
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files)
|
||||
or
|
||||
[Rule 17 - Packaging](next/rules.html#rule17).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17).
|
||||
|
||||
|
||||
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
|
||||
@@ -1134,9 +1135,9 @@ discrepancy as an error and exit with non-zero.
|
||||
|
||||
These checks **MUST PASS**. If they do not you stand a significant chance of
|
||||
having your submission rejected for violating
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files)
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files)
|
||||
or
|
||||
[Rule 17 - Packaging](next/rules.html#rule17).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17).
|
||||
|
||||
<div id="max-files">
|
||||
#### Maximum number of files per submission
|
||||
@@ -1177,9 +1178,9 @@ The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
|
||||
**IMPORTANT**: where
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
and
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
|
||||
and the tools from the latest
|
||||
release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
|
||||
conflict, the [IOCCC judges](judges.html) will use their best judgment which
|
||||
@@ -1220,9 +1221,9 @@ for help here and also read our
|
||||
FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)".
|
||||
|
||||
At the risk of stating the obvious: submissions that violate
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
or
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
|
||||
**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
|
||||
your submission's xz compressed tarball. Do **NOT** assume you have the most
|
||||
@@ -1594,7 +1595,7 @@ somehow, `txzchk(1)` will flag it as an error. When the judges run `txzchk(1)`
|
||||
on the uploaded submission compressed tarball, if anything is wrong, for
|
||||
instance if you "sneak in" any dot files or dot directories, the submission
|
||||
**WILL BE REJECTED** for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
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
|
||||
@@ -1911,7 +1912,7 @@ Jump to: [top](#)
|
||||
|
||||
<div id="rule_2_broken">
|
||||
<div id="rule_breaking_entry">
|
||||
### Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size?
|
||||
### Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size restrictions?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -2210,9 +2211,9 @@ two JSON files, `.auth.json` and `.info.json` as well as the `prog.c`,
|
||||
`.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
|
||||
a great risk of violating
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
or
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!).
|
||||
|
||||
As an example, if your submission directory is
|
||||
`00000000-0000-4000-0000-000000000000-3/` then you should run the following
|
||||
@@ -2239,9 +2240,9 @@ FAQ on "[.auth.json](#auth_json)"
|
||||
and the
|
||||
FAQ on "[.info.json](#info_json)"
|
||||
as well as
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
and
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
|
||||
for more information.
|
||||
|
||||
**NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you
|
||||
@@ -2336,12 +2337,12 @@ In order of the file's contents we describe each required field, below:
|
||||
* 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
|
||||
on this, and in particular
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
**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
|
||||
violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
- `tarball` (double quoted string)
|
||||
* The xz compressed tarball filename.
|
||||
@@ -2349,10 +2350,10 @@ In order of the file's contents we describe each required field, below:
|
||||
**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
|
||||
your submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
Moreover, it is possible that `txzchk` will report a problem through
|
||||
`fnamchk(1)` which also puts you at great risk of violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging). The
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry). The
|
||||
`txzchk(1)` tool will use the output of `fnamchk` 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
|
||||
@@ -2367,7 +2368,7 @@ In order of the file's contents we describe each required field, below:
|
||||
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
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
- `author_count` (number)
|
||||
* How many authors this submission has.
|
||||
@@ -2432,7 +2433,7 @@ author(s) of the submission:
|
||||
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
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
**NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not.
|
||||
|
||||
@@ -2517,9 +2518,9 @@ 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
|
||||
reported invalid by `chksubmit(1)`, your submission will almost certainly be
|
||||
rejected for violating the [Rules](next/rules.html) and in particular
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
and
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
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
|
||||
@@ -2529,9 +2530,9 @@ 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
|
||||
that must be established as valid by `chksubmit(1)`) your submission would be
|
||||
rejected for violating
|
||||
[Rule 4 - Files](next/rules.html#rule-4---files),
|
||||
[Rule 4 - Required files](next/rules.html#rule4-required-files),
|
||||
and
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)
|
||||
and in particular
|
||||
because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other
|
||||
things too).
|
||||
@@ -2655,7 +2656,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* 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
|
||||
on this, and in particular
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
- `submit_slot` (number)
|
||||
* The submission number.
|
||||
@@ -2666,7 +2667,7 @@ In order of the file's contents we describe each required field, below:
|
||||
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
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
- `title` (double quoted string)
|
||||
* A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in
|
||||
@@ -2676,7 +2677,7 @@ In order of the file's contents we describe each required field, below:
|
||||
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
- `abstract` (double quoted string)
|
||||
* A one line summary of your submission, with a length of 1 **THROUGH**
|
||||
@@ -2688,7 +2689,7 @@ In order of the file's contents we describe each required field, below:
|
||||
|
||||
**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 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
- `tarball` (double quoted string)
|
||||
* The xz compressed tarball filename.
|
||||
@@ -2696,27 +2697,27 @@ In order of the file's contents we describe each required field, below:
|
||||
**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
|
||||
your submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
Moreover, it is possible that `txzchk` will report a problem through
|
||||
`fnamchk(1)` which also puts you at great risk of violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
The `txzchk(1)` tool will use the output of `fnamchk` 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
|
||||
tarball, this will be flaggd.
|
||||
|
||||
- `rule_2a_size` (number)
|
||||
* The size calculated of [Rule 2a Gross Size](next/rules.html#rule-2a-gross-size).
|
||||
* The size calculated of [Rule 2a - Gross Size](next/rules.html#rule2a-gross-size).
|
||||
|
||||
**IMPORTANT:** if this violates [Rule 2a](next/rules.html#rule2a) you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
[Rules](next/rules.html)!
|
||||
|
||||
- `rule_2b_size` (number)
|
||||
* The size calculated of [Rule 2b Next Size](next/rules.html#rule-2b-net-size).
|
||||
* The size calculated of [Rule 2b - Net Size](next/rules.html#rule2b-net-size).
|
||||
|
||||
**IMPORTANT:** if this violates
|
||||
[Rule 2b Next Size](next/rules.html#rule-2b-net-size)
|
||||
[Rule 2b Net Size](next/rules.html#rule2b-net-size)
|
||||
you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
[Rules](next/rules.html)!
|
||||
@@ -2726,51 +2727,38 @@ In order of the file's contents we describe each required field, below:
|
||||
|
||||
- `rule_2a_override` (boolean)
|
||||
* `true` if user overrides warning of
|
||||
[Rule 2a Gross Size](next/rules.html#rule-2a-gross-size)
|
||||
[Rule 2a - Gross Size](next/rules.html#rule2a-gross-size)
|
||||
violation, else `false`.
|
||||
|
||||
**IMPORTANT:** if the
|
||||
[Rule 2a Gross Size](next/rules.html#rule-2a-gross-size)
|
||||
[Rule 2a - Gross Size](next/rules.html#rule2a-gross-size)
|
||||
calculated size is **NOT**
|
||||
violated but this is `true` then you stand a good chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
- `rule_2a_mismatch` (boolean)
|
||||
* `true` if
|
||||
[Rule 2a Gross Size](next/rules.html#rule-2a-gross-size)
|
||||
[Rule 2a - Gross Size](next/rules.html#rule2a-gross-size)
|
||||
calculated size is not the
|
||||
same as the file size.
|
||||
|
||||
- `rule_2b_override` (boolean)
|
||||
* `true` if user overrides warning of
|
||||
[Rule 2b Next Size](next/rules.html#rule-2b-net-size)
|
||||
[Rule 2b - Net Size](next/rules.html#rule2b-net-size)
|
||||
violation, else `false`.
|
||||
|
||||
**IMPORTANT:** if the
|
||||
[Rule 2b Next Size](next/rules.html#rule-2b-net-size)
|
||||
[Rule 2b - Net Size](next/rules.html#rule2b-net-size)
|
||||
calculated size is **NOT**
|
||||
violated but this is `true` then you stand a good chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
|
||||
- `highbit_warning` (boolean)
|
||||
* `true` if `iocccsize` detects a high bit (unescaped octets with the high
|
||||
bit set - octet value >= 128); see
|
||||
[Rule 12 - UTF-8](next/rules.html#rule-12---utf-8),
|
||||
else `false`.
|
||||
|
||||
- `nul_warning` (boolean)
|
||||
* `true` if `iocccsize` detects a NUL character in the `prog.c`, else
|
||||
`false`.
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
|
||||
- `trigraph_warning` (boolean)
|
||||
* `true` if `iocccsize` detects an unknown or invalid trigraph in
|
||||
`prog.c`, else `false`.
|
||||
|
||||
- `wordbuf_warning` (boolean)
|
||||
* This is ignored and will be removed for IOCCC29 and beyond.
|
||||
|
||||
- `ungetc_warning` (boolean)
|
||||
* `true` if `prog.c` triggered an `ungetc(3)` error, else `false`.
|
||||
|
||||
@@ -2780,7 +2768,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
|
||||
you stand a good chance of having your submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
See the
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
@@ -2791,7 +2779,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
|
||||
you stand a good chance of having your submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
See the
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
@@ -2803,7 +2791,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 and this
|
||||
boolean is `true` then you stand a good chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
See the
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
@@ -2815,7 +2803,7 @@ 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
|
||||
boolean is `true` then you stand a good chance of having your submission
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
See the
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
@@ -2827,7 +2815,7 @@ 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
|
||||
boolean is `true` then you stand a good chance of having your submission
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
See the
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
@@ -2839,7 +2827,7 @@ 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
|
||||
boolean is `true` then you stand a good chance of having your submission
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
See the
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
@@ -2865,7 +2853,7 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a
|
||||
great chance of having your submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
- `auth_JSON` (double quoted string)
|
||||
* This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in
|
||||
@@ -2878,7 +2866,7 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
- `c_src` (double quoted string)
|
||||
* This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in
|
||||
@@ -2888,7 +2876,7 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
- `Makefile` (double quoted string)
|
||||
* This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in
|
||||
@@ -2901,7 +2889,7 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
- `remarks` (double quoted string)
|
||||
* This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in
|
||||
@@ -2914,7 +2902,7 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
The `manifest` **array** also **OPTIONALLY** has one or more of the field:
|
||||
|
||||
@@ -2927,7 +2915,7 @@ The `manifest` **array** also **OPTIONALLY** has one or more of the field:
|
||||
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
|
||||
risk of having your submission rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
On the other hand, **ONLY** `mkiocccentry` will
|
||||
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.
|
||||
@@ -2991,7 +2979,7 @@ 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
|
||||
that must be established as valid by `chksubmit`) your submission would be
|
||||
rejected for violating
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging),
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry),
|
||||
and in particular
|
||||
because `chksubmit` would not validate the `.info.json` file.
|
||||
|
||||
@@ -7437,29 +7425,6 @@ app from time to time to view IOCCC mastodon updates.
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
<div id="mastodon_notifications">
|
||||
### Q 10.6.1: How can I get push notifications when the judges post something on mastodon?
|
||||
</div>
|
||||
|
||||
To do this you need to go to the [IOCCC mastodon
|
||||
account](https://fosstodon.org/@ioccc) with a computer (it is unclear how to do
|
||||
this with a mobile device, if it is even possible) and then you should see a
|
||||
bell icon. Make sure it's activated. If you mouse over it when it's not enabled
|
||||
it should look something like this, assuming of course we follow you! :-) (if
|
||||
not the message about following each other won't show up):
|
||||
|
||||
<img src="png/mastodon-notifications.png"
|
||||
alt="screenshot of Mastodon push notifications"
|
||||
width=912 height=556>
|
||||
|
||||
It is not yet clear if this only works on desktop/computers or mobile devices
|
||||
too as it was only just discovered (31 July 2025) but whatever the case we
|
||||
suggest you do it.
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
<div id="tabstops">
|
||||
### Q 10.7: How do I set certain tabstops for viewing source code in vi(m)?
|
||||
</div>
|
||||
|
||||
@@ -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.
|
||||
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>
|
||||
<p>The IOCCC <a href="next/rules.html#rule-12---utf-8">Rule 12 - UTF-8</a> no longer discourages the
|
||||
<p>The IOCCC <a href="next/rules.html#rule12-utf8">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,
|
||||
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>
|
||||
<p>The IOCCC <a href="next/rules.html#rule-8---submission">Rule 8 - Submission</a> wording has been fixed. It no longer
|
||||
<p>The IOCCC <a href="next/rules.html#rule8-submitting-requirements">Rule 8 - Submitting requirements</a> wording has been fixed. It no longer
|
||||
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>
|
||||
<p>All of the import IOCCC dates within the <a href="next/rules.html">IOCCC rules</a>
|
||||
|
||||
@@ -406,12 +406,12 @@ See also the [mkiocccentry FAQ](https://github.com/ioccc-src/mkiocccentry/blob/m
|
||||
|
||||
## 2024-12-30
|
||||
|
||||
The IOCCC [Rule 12 - UTF-8](next/rules.html#rule-12---utf-8) no longer discourages the
|
||||
The IOCCC [Rule 12 - UTF-8](next/rules.html#rule12-utf8) no longer discourages the
|
||||
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
|
||||
states that "Rule 13 no longer discourages the use of UTF-8 +characters in C code".
|
||||
|
||||
The IOCCC [Rule 8 - Submission](next/rules.html#rule-8---submission) wording has been fixed. It no longer
|
||||
The IOCCC [Rule 8 - Submitting requirements](next/rules.html#rule8-submitting-requirements) wording has been fixed. It no longer
|
||||
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.
|
||||
|
||||
|
||||
+22
-934
@@ -452,940 +452,28 @@
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: next/guidelines.md -->
|
||||
<h1 id="th-international-obfuscated-c-code-contest-official-guidelines">29th International Obfuscated C Code Contest Official Guidelines</h1>
|
||||
<p class="leftbar">
|
||||
Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.
|
||||
</p>
|
||||
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
||||
granted provided this copyright and notice are included in its entirety
|
||||
and remains unaltered. All other uses must receive prior permission in
|
||||
writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
<h1 id="guidelines-version">Guidelines Version</h1>
|
||||
<p class="leftbar">
|
||||
These IOCCC guidelines are version <strong>29.00 2025-11-28</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Because the <strong>IOCCC29</strong> guidelines was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked.
|
||||
</p>
|
||||
<p>Be sure to read the <a href="rules.html">IOCCC rules</a>.</p>
|
||||
<div id="guideline2">
|
||||
|
||||
</div>
|
||||
<div id="guideline-2---size">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-rule-2---size">Guidelines for <a href="rules.html#rule-2---size">Rule 2 - Size</a></h1>
|
||||
<p class="leftbar">
|
||||
You should pay attention to our observations on
|
||||
<a href="../2024/index.html#code-size-and-rule-2">code size and Rule 2 remarks for IOCCC28</a>.
|
||||
</p>
|
||||
<p>Your submission must satisfy <strong>BOTH</strong> the maximum size <a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
|
||||
<strong>AND</strong> the <a href="rules.html#rule-2b-net-size">Rule 2b Net 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>
|
||||
<pre><code> iocccsize prog.c</code></pre>
|
||||
<p>The IOCCC size tool algorithm can be summarized as follows:</p>
|
||||
<blockquote>
|
||||
<p>The size tool counts most C reserved words (keyword, secondary, and selected
|
||||
preprocessor keywords) as 1. The size tool counts all other bytes as 1
|
||||
excluding ASCII whitespace, and excluding any ‘<code>;</code>’, ‘<code>{</code>’ or ‘<code>}</code>’ followed by
|
||||
ASCII whitespace, and excluding any ‘<code>;</code>’, ‘<code>{</code>’ or ‘<code>}</code>’ byte immediately
|
||||
before the end of file.</p>
|
||||
<p>ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, ASCII formfeed, and ASCII carriage return.</p>
|
||||
<p>When ‘<code>;</code>’, ‘<code>{</code>’ or ‘<code>}</code>’ are within a C string, they may still not be
|
||||
counted by the IOCCC size tool.</p>
|
||||
</blockquote>
|
||||
<p>In cases where the above summary and the algorithm implemented by
|
||||
the IOCCC size tool <code>iocccsize(1)</code> conflict, the algorithm implemented
|
||||
by the current version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC judges</a>.
|
||||
Make sure <code>iocccsize(1)</code> does not flag any issues with your <code>prog.c</code>.</p>
|
||||
<p>There a much less need to <code>#define</code> C reserved words in an effort to get
|
||||
around the size limits of <a href="rules.html#rule-2---size">Rule 2 - Size</a> because of the <code>iocccsize(1)</code> algorithm.</p>
|
||||
<p>Yes Virginia, <strong>the previous guideline sentence is an important hint</strong>!</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="guideline3">
|
||||
|
||||
</div>
|
||||
<div id="guideline-3---register">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-rule-3---register">Guidelines for <a href="rules.html#rule-3---register">Rule 3 - Register</a></h1>
|
||||
<p>See FAQ on “<a href="../faq.html#author_handle_faq">What is an author handle?</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="guideline7">
|
||||
|
||||
</div>
|
||||
<div id="guideline-7---original-work">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-rule-7---original-work">Guidelines for <a href="rules.html#rule-7---original-work">Rule 7 - Original Work</a></h1>
|
||||
<p>While it is <strong>NOT</strong> required, you are allowed to use tools or services such as:</p>
|
||||
<ul>
|
||||
<li>Code generators</li>
|
||||
<li>Static and runtime code analysis tools</li>
|
||||
<li>Machine learning tools</li>
|
||||
<li>natural language models</li>
|
||||
<li>Large language models (LLMs)</li>
|
||||
<li>Code copilot tools</li>
|
||||
<li>So called “<em>AI services</em>”</li>
|
||||
<li>etc.</li>
|
||||
</ul>
|
||||
<p>The IOCCC has a rich history of remarkable winning entries created by
|
||||
authors who skillfully employed various techniques to develop their code.
|
||||
If you do make use of such tools or services, then we <strong>ENCOURAGE you to
|
||||
describe how you used such tools</strong> in your <code>remarks.md</code> file.</p>
|
||||
<p>In short: You created it, you own it, its an original work, or you have explicit permission to the work.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="guideline11">
|
||||
|
||||
</div>
|
||||
<div id="guideline-11---abuse">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-rule-11---abuse">Guidelines for <a href="rules.html#rule-11---abuse">Rule 11 - Abuse</a></h1>
|
||||
<p>We do realize that there are holes in the <a href="rules.html">IOCCC rules</a>, and invite
|
||||
submitters to attempt to apply creative rule interpretation. A rule abuse though, even
|
||||
if not rewarded, may result in a subsequent rule change for future contests.</p>
|
||||
<p>We sometimes award ‘<strong>Best abuse of the rules</strong>’ or ‘<strong>Worst abuse of the rules</strong>’,
|
||||
or some variation to a submission that creatively attempts to exploit a holes in the
|
||||
<a href="rules.html">IOCCC rules</a>.</p>
|
||||
<p>When we do need to plug a hole in the <a href="rules.html">IOCCC rules</a>
|
||||
or <a href="guidelines.html">IOCCC guidelines</a>, we will attempt to use a very small plug,
|
||||
if not smaller.</p>
|
||||
<p>Or, maybe not. :-)</p>
|
||||
<p>Legal rule abuse may involve, but is not limited to, doing things that are
|
||||
technically allowed by the <a href="rules.html">IOCCC rules</a> and yet do not fit the spirit of what
|
||||
we intended to be submitted.</p>
|
||||
<p>Legal abuse of the <a href="rules.html">IOCCC rules</a> is <strong>NOT</strong> an invitation to violate the
|
||||
<a href="rules.html">IOCCC rules</a> (especailly <a href="./rules.html#rule-17---packaging">Rule 17 - Packaging</a> ). A submission that violates the <a href="rules.html">rules</a> in the
|
||||
opinion of the <a href="../judges.html">IOCCC judges</a>, <strong>WILL</strong> be
|
||||
disqualified. <strong><em>RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!</em></strong> If you
|
||||
have a submission that might otherwise be interesting, you might want to
|
||||
submit two versions; one that does not abuse the <a href="rules.html">IOCCC rules</a> and one that
|
||||
does.</p>
|
||||
<p>If you intend to abuse the <a href="rules.html">IOCCC rules</a>,
|
||||
indicate so in your <code>remarks.md</code> file. You <strong>MUST</strong> try to justify, plead, beg,
|
||||
why you consider your rule abuse to be allowed under the
|
||||
<a href="rules.html">IOCCC rules</a>. Humor or creativity help plead a case.
|
||||
As there is no guarantee that you will succeed, you might consider
|
||||
submitting an alternate version that conforms to the
|
||||
<a href="rules.html">IOCCC rules</a>.</p>
|
||||
<p>If you do bypass the <code>mkiocccentry(1)</code> warnings about
|
||||
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
|
||||
or about
|
||||
<a href="rules.html#rule-2b-net-size">Rule 2b Net Size</a>
|
||||
or any other
|
||||
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
|
||||
violation, and you would be wise to do this towards the top of your <code>remarks.md</code>
|
||||
file.</p>
|
||||
<p>We are often asked why the contest <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC
|
||||
guidelines</a> seem strange or contain mistakes, flaws, or
|
||||
grammatical errors. One reason is that we sometimes make genuine mistakes, but
|
||||
in many cases such problems, flaws or areas of confusion are deliberate.</p>
|
||||
<p>Changes to <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a> in
|
||||
response to rule abuses, are done in a minimal fashion. Often we will
|
||||
deliberately leave behind holes (or introduce new ones) so that future rule
|
||||
abuse can continue. A clever author should be able to read them and “drive a
|
||||
truck through the holes” in the <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC
|
||||
guidelines</a>.</p>
|
||||
<p>At the risk of stating the obvious, this contest is a parody of the software
|
||||
development process. The <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a>
|
||||
are only part of the overall contest. Even so, one might think the
|
||||
contest <a href="rules.html">IOCCC rules</a> and <a href="guidelines.html">IOCCC guidelines</a> process as a parody
|
||||
of the sometimes tragic mismatch between what a customer (or marketing) wants
|
||||
and what engineering delivers. Real programmers must face obfuscated and
|
||||
sometimes conflicting, balloning specifications, and requirements from marketing, sales,
|
||||
product management and even from customers themselves on an all too regular basis.
|
||||
This is one of the reasons why the <a href="rules.html">IOCCC rules</a> and
|
||||
<a href="guidelines.html">IOCCC guidelines</a> are written in obfuscated form.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="guideline15">
|
||||
|
||||
</div>
|
||||
<div id="guideline-15---building">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-rule-15---building">Guidelines for <a href="rules.html#rule-15---building">Rule 15 - Building</a></h1>
|
||||
<p>You may use <code>git,</code> or services such as <a href="https://www.github.com">GitHub</a>
|
||||
to develop and maintain your submission. However, we <strong>DISLIKE</strong>
|
||||
submissions that <strong>require</strong> such services in order to build/compile your submission.</p>
|
||||
<p>Submissions will be judged in an environment that has no <strong>IDE</strong>.
|
||||
Any submission that fails to compile/build because it requires
|
||||
an <strong>IDE</strong> will be rejected.</p>
|
||||
<p>We will use the <code>GNU make(1)</code> tool, your <code>Makefile</code>, as well as tools found in the
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>
|
||||
environments, and commonly found on systems that reasonably conform to the
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>
|
||||
in the building and compiling of your submission.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="guideline17">
|
||||
|
||||
</div>
|
||||
<div id="guideline-17---packaging">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-rule-17---packaging">Guidelines for <a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a></h1>
|
||||
<p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
As use of using older versions of the mkiocccentry toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>!</p>
|
||||
<p>If you submit your own JSON files (other than <code>.auth.json</code> and
|
||||
<code>.info.json</code>) then they do <strong>NOT</strong> have to be valid JSON.</p>
|
||||
<p>However, if you do provide invalid JSON files, <strong>PLEASE</strong>
|
||||
document and <strong>clearly explain</strong> this in your <code>remarks.md</code> file.</p>
|
||||
<p class="leftbar">
|
||||
An <em>extra file</em> is defined as a file that is not <code>prog.c</code>, <code>prog.alt.c</code>,
|
||||
<code>try.sh</code>, <code>try.alt.sh</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>.auth.json</code> and <code>.info.json</code>:
|
||||
unless it’s not in the top level directory, in which case it <strong>IS</strong> an <em>extra
|
||||
file</em>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
These files (<code>prog.c</code>, <code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>, <code>remarks.md</code>,
|
||||
<code>Makefile</code>, <code>.auth.json</code> and <code>.info.json</code>) do <em>not</em> count towards the
|
||||
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a> limit of <strong>31</strong> <em>extra files</em>.
|
||||
</p>
|
||||
<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 abuse of rules.</p>
|
||||
<p>Your tarball does <strong>NOT</strong> reveal who you are! For this reason, the tarball
|
||||
<strong>MUST</strong> be a <strong>v7 format</strong> tarball.</p>
|
||||
<p>You should NOT use a tarball as an <em>extra file</em> for a test-suite unless you
|
||||
have a very good reason for this: if you do include a tarball as an <em>extra file</em>,
|
||||
then you <strong>MUST</strong> specify why in your <code>remarks.md</code> file.</p>
|
||||
<p>If you <strong>DO</strong> include a tarball an <em>extra file</em>, and the build process or the program extracts
|
||||
said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove the extracted files.</p>
|
||||
<p>Instead of including a large test-suite that requires a lot of files as part of your submission,
|
||||
and your submission doesn’t require the test-suite to be available to run,
|
||||
then in your <code>remarks.md</code> a URL where such a test-suite may be downloaded from
|
||||
and how to use the test-suite to test your submission.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#try_scripts">What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#auth_json">What is a <code>.auth.json</code> file?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#info_json">What is a <code>.info.json</code> file?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#chksubmit">How can I validate my submission directory?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#rule17">What are the details behind Rule 17 - Packaging?</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="mkiocccentry">
|
||||
|
||||
</div>
|
||||
<div id="mkiocccentry_toolkit">
|
||||
|
||||
</div>
|
||||
<h1 id="guidelines-for-the-mkiocccentry-toolkit">Guidelines for the mkiocccentry toolkit</h1>
|
||||
<p>The <a href="https://submit.ioccc.org">IOCCC submit server</a>, and related services
|
||||
use the <strong>most recent version</strong> of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>:
|
||||
submissions that package using older versions of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
are <strong>LIKELY</strong> to be <strong>REJECTED</strong>! So you <strong>REALLY SHOULD</strong> use the latest <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
to package your own submission.</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool runs a number of checks by way of these
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> tools:</p>
|
||||
<ul>
|
||||
<li>iocccsize(1)</li>
|
||||
<li>txzchk(1)</li>
|
||||
<li>fnamchk(1)</li>
|
||||
<li>chksubmit(1)</li>
|
||||
<li>chkentry(1)</li>
|
||||
</ul>
|
||||
<p>Do <strong>NOT</strong> use <code>txzchk(1)</code> or <code>fnamchk(1)</code> command line options that are labeled
|
||||
“<strong>for TESTING purposes</strong>” in their respective man pages.</p>
|
||||
<p>Similarly do <strong>NOT</strong> use <code>chkentry(1)</code> command line options marked “<strong>for the use
|
||||
by the IOCCC judges only</strong>” in the <code>chkentry(1)</code> man page.</p>
|
||||
<p>To view <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a> man pages,
|
||||
while your current directory is the top of the source tree:</p>
|
||||
<pre><code>man soup/man/man1/mkiocccentry.1
|
||||
man soup/man/man1/iocccsize.1
|
||||
man soup/man/man1/txzchk.1
|
||||
man test_ioccc/man/man1/fnamchk.1
|
||||
man soup/man/man1/chksubmit.1
|
||||
man soup/man/man1/chkentry.1</code></pre>
|
||||
<p>The above <code>man(1)</code> commands will show the toolkit man pages without having to install them first.</p>
|
||||
<p>So that you do not have to repeatedly answer all the <code>mkiocccentry(1)</code> questions,
|
||||
use <code>mkiocccentry -a answers ...</code> to create a file containing the answers you first give,
|
||||
so later enter <code>mkiocccentry -i answers ...</code> to reuse those same answers.</p>
|
||||
<p>The <code>mkiocccentry -A answers ..</code> does the same thing except that the <strong>answers file will be overwritten</strong>.</p>
|
||||
<p>The <code>mkiocccentry -i answers ..</code> will still be required to confirm “<em>Yes/No</em>” questions.
|
||||
While <code>mkiocccentry -Y -i answers ..</code> will force yes answers, use with <strong>great caution</strong>,
|
||||
because it might force a yes answer to something you do <strong>NOT</strong> want.</p>
|
||||
<p>To help with not having to repeatedly enter a UUID, put your UUID into a file and use
|
||||
<code>mkiocccentry -u uuidfile ..</code>, or use <code>mkiocccentry -U UUID ..</code> to give the <code>UUID</code>
|
||||
on the command line.</p>
|
||||
<p>If you wish to <strong>test</strong> that your submission passes the <code>mkiocccentry(1)</code> tests
|
||||
without having to type in answers each time, you can use the <code>-d</code> or <code>-s seed</code>
|
||||
option to <code>mkiocccentry</code> for the tool to pseudo-randomly create answers for you.
|
||||
For example:</p>
|
||||
<pre><code>mkiocccentry -d workdir topdir</code></pre>
|
||||
<p>Do <strong>NOT</strong> submit a tarball formed by <code>mkiocccentry -d ..</code>, <strong>NOR</strong> by <code>mkiocccentry -s seed ..</code>!</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool creates an <code>xz(1)</code> compressed <strong>v7 format</strong> tarball using a <code>tar(1)</code>
|
||||
command of the form:</p>
|
||||
<pre><code>cd workdir/UUID-slot_num && tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num</code></pre>
|
||||
<p>In many places the <code>mkiocccentry(1)</code> tool will prompt you to verify what you input, allowing you to
|
||||
correct details as you go along.</p>
|
||||
<p>Pressing the “<em>enter key</em>” <code>mkiocccentry(1)</code> tool prompts will allow you to proceed with a default,
|
||||
however make sure the default is the <strong>CORRECT</strong> answer.</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool will use code from <code>iocccsize(1)</code> which detects a number of
|
||||
issues (such as <a href="rules.html#rule-2---size">Rule 2 - Size</a>) that you may ignore,
|
||||
however ignoring such issues <strong>comes with a significant level of risk</strong> as noted else where.</p>
|
||||
<p>Once the tarball is packaged it will
|
||||
run <code>txzchk(1)</code>, which will also run <code>fnamchk(1)</code>, as part of its algorithm.</p>
|
||||
<p>The use of <code>mkiocccentry -W ...</code> is <strong>highly discouraged</strong> as this may ignore
|
||||
warnings about a problem that may cause your submission to be <strong>REJECTED!</strong>”</p>
|
||||
<p>If <code>mkiocccentry</code> encounters an <strong>error</strong>, the program will exit and the xz
|
||||
compressed tarball <strong>will NOT be generated</strong>: this is a <strong>feature, not a bug</strong>!</p>
|
||||
<p>If you encounter a <strong>bug</strong> with the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
<strong>PLEASE run the <code>bug_report.sh</code> script to help us out here!</strong></p>
|
||||
<p>While you don’t have to install the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>,
|
||||
then in order to run a tool outside the repo directory
|
||||
you will have to specify <code>mkiocccentry(1)</code> command line options to locate required tools
|
||||
such as <code>chkentry(1)</code> (<code>mkiocccentry -C chkentry ..</code>), <code>txzchk(1)</code> (<code>mkiocccentry -T txzchk ..</code>),
|
||||
and <code>fnamchk(1)</code> (<code>mkiocccentry -F fnamchk ..</code>).</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool will ignore any filename or directory that begins with a period (<code>.</code>).</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool will ignore all files that begin with <code>COPYING</code>, <code>COPYRIGHT</code>, and <code>LICENSE</code>, regardless
|
||||
of filename case.</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool will any of the following files if they are found directly under
|
||||
the top level directory (<code>topdir</code>):</p>
|
||||
<ul>
|
||||
<li>README.md</li>
|
||||
<li>index.html</li>
|
||||
<li>prog</li>
|
||||
<li>prog.alt</li>
|
||||
<li>prog.alt.o</li>
|
||||
<li>prog.orig.c</li>
|
||||
<li>filenames matching the <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code> file glob</li>
|
||||
</ul>
|
||||
<p>The files listed in the above list are allowed to exist in sub-directories: just <strong>NOT</strong> directly under
|
||||
the top level directory (<code>topdir</code>).</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool evaluates all filenames and directory names in a case independent way:
|
||||
this <code>FOO</code>, <code>Foo</code>, and <code>foo</code> are treated as the <strong>SAME</strong> file even if your filesystem doesn’t.</p>
|
||||
<p>Having two or more filenames that differ only by case <strong>WILL</strong> lead to problems because of the previous statement.</p>
|
||||
<p>When the <code>mkiocccentry(1)</code> tool ignores a file, that file is <strong>NOT</strong> included as part of your submission.</p>
|
||||
<p>When the <code>mkiocccentry(1)</code> tool ignores a directory, that directory,
|
||||
and everything under that directory is <strong>NOT</strong> included as part of
|
||||
your submission.</p>
|
||||
<p>The <code>mkiocccentry(1)</code> tool will ignore all symlinks.</p>
|
||||
<p>Creating a directory directly under the top level directory (<code>topdir</code>)
|
||||
that is normally considered to be a regular file, such as a directory
|
||||
named <code>Makefile</code>, <code>prog.alt.c</code>, <code>prog.c</code>, <code>remarks.md</code>, <code>try.alt.sh</code>,
|
||||
or <code>try.sh</code> is <strong>NOT</strong> a good idea and will likely cause the
|
||||
<code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p>
|
||||
<p>The required <code>Makefile</code>, <code>remarks.md</code> file may <strong>NOT</strong> be an empty file.</p>
|
||||
<p>If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exits and is an empty file,
|
||||
the <code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p>
|
||||
<p>If the <code>mkiocccentry(1)</code> tool encounters anything that isn’t a file, isn’t a directory,
|
||||
and isn’t a symlink (which the tool ignores), the <code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#mkiocccentry_bugs">How do I report bugs in an <code>mkiocccentry</code> tool?</a>”.</p>
|
||||
<p>See <a href="rules.html#rule-11---abuse">Rule 11 - Abuse</a> for warnings about ignoring <code>mkiocccentry(1)</code> tool warnings.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#fnamchk">What is the <code>fnamchk</code> tool?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#about_mkiocccentry">What is mkiocccentry in simple terms?</a>”.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="general">
|
||||
|
||||
</div>
|
||||
<h1 id="general-overall-guidelines">General Overall Guidelines</h1>
|
||||
<p>These <a href="guidelines.html">guideline</a> are <strong>hints</strong> and <strong>suggestions</strong>, <strong>NOT</strong> <a href="rules.html">IOCCC rules</a>.</p>
|
||||
<p>While submissions that violate <a href="guidelines.html">guideline</a> are allowed,
|
||||
submissions that remain within the <a href="guidelines.html">IOCCC guidelines</a> are preferred.</p>
|
||||
<p>You are encouraged to review the following <a href="../faq.html">FAQs</a>:</p>
|
||||
<ul>
|
||||
<li><p><a href="../quick-start.html#enter">How to enter the IOCCC</a></p></li>
|
||||
<li><p><a href="../faq.html#mkiocccentry">Obtaining and compiling the most recent mkiocccentry toolkit</a></p></li>
|
||||
<li><p><a href="../next/submit.html">How to upload your submission</a></p></li>
|
||||
</ul>
|
||||
<p>While the contest is <strong><a href="../faq.html#open">open</a></strong>, you may modify your
|
||||
previously uploaded submission by rebuilding your submission with the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>,
|
||||
and then re-uploading it to <strong>the same slot number</strong> on the
|
||||
<a href="https://submit.ioccc.org">submit server</a>.</p>
|
||||
<p>The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.</p>
|
||||
<p>You are <strong>encouraged</strong> to examine the <a href="../years.html">winners of previous contests</a>.</p>
|
||||
<p>Because <a href="rules.html">rules</a> change from year to year, some <a href="../years.html">winning entries</a>
|
||||
of the past may be rejected this year.</p>
|
||||
<p>What was <em>was</em> unique and novel one year <em>might be ‘old’ the next year</em>.</p>
|
||||
<p>A submission is usually examined in a number of ways. We typically apply
|
||||
a number of tests to a submission:</p>
|
||||
<ul>
|
||||
<li>look at the original source</li>
|
||||
<li>C pre-process the source ignoring <code>#include</code> lines</li>
|
||||
<li>C pre-process the source ignoring <code>#define</code> <em>and</em> <code>#include</code> lines</li>
|
||||
<li>run it through a C beautifier (such as <code>clang-format(1)</code>)</li>
|
||||
<li>examine the algorithm</li>
|
||||
<li>compile it (with flags to enable all warnings)</li>
|
||||
<li>execute it</li>
|
||||
</ul>
|
||||
<p>You should consider how your submission looks in each of the above tests.
|
||||
You should ask yourself if your submission remains obscure after it has been
|
||||
‘<em>cleaned up</em>’ by the C pre-processor and a C beautifier.</p>
|
||||
<p>Your submission need not pass all of the above tests as in certain cases,
|
||||
a test is not important.</p>
|
||||
<p>Submissions that compete for the
|
||||
‘<strong>strangest/most creative source layout</strong>’ need not do as well as
|
||||
others in terms of their algorithm.</p>
|
||||
<p>Given two submissions, we are more inclined to pick the submission that
|
||||
does something interesting when it’s executed.</p>
|
||||
<p><strong>IMPORTANT:</strong> Be sure that <strong>your submission works</strong> as documented in your <code>remarks.md</code> file.</p>
|
||||
<p>We sometimes make an effort to debug a submission
|
||||
that has a slight problem, particularly in or near the final round.
|
||||
On the other hand, we have seen some otherwise excellent submissions
|
||||
fall down because they didn’t work as documented.</p>
|
||||
<p>If you submission has bugs and/or mis-features, you are <strong>MUCH BETTER</strong> off
|
||||
documenting such bugs and/or mis-features in your <code>remarks.md</code> file.</p>
|
||||
<p>Consider an example of a <a href="https://en.wikipedia.org/wiki/Prime_number">prime number</a>
|
||||
printing program that claims that 16 is a prime number.
|
||||
Noting such a bug in your <code>remarks.md</code> file could save your submission:</p>
|
||||
<blockquote>
|
||||
<p>“<em>this submission sometimes prints the 4th power of a prime by mistake</em>”</p>
|
||||
</blockquote>
|
||||
<p>Sometimes a strange bug or (mis-)feature can even help the submission! Of course, a correctly
|
||||
working submission might be better.</p>
|
||||
<p>We tend to look down on a
|
||||
<a href="https://en.wikipedia.org/wiki/Prime_number">prime number</a>
|
||||
printer that claims that 16 is a prime number.
|
||||
Clever people will note that 16 might be prime under certain conditions. ;-)
|
||||
Wise people, when submitting something clever
|
||||
will <strong>fully explain such cleverness</strong> in their submission’s <code>remarks.md</code> file.</p>
|
||||
<p>People who are considering to just use some complex mathematical
|
||||
function or state machine to spell out something such as “<em>hello,
|
||||
world!</em>” <strong>really really, <em>and we do mean REALLY</em>, do need to be more creative</strong>.</p>
|
||||
<p>Consider using misleading or subtle tricks layered on top of or under
|
||||
an appropriate level of obfuscation.</p>
|
||||
<p>A clean looking program with
|
||||
misleading comments and variable names might be a <strong>VERY GOOD START</strong>
|
||||
to a great submission!</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="likes">
|
||||
|
||||
</div>
|
||||
<div id="dislikes">
|
||||
|
||||
</div>
|
||||
<h1 id="our-likes-and-dislikes">OUR LIKES AND DISLIKES:</h1>
|
||||
<p>We <strong>VERY MUCH LIKE</strong> submissions that use an edited variant of the
|
||||
example Makefile, as described and linked to in the <a href="#makefile">Makefile section</a>,
|
||||
renamed as <code>Makefile</code> of course. This makes it easier for the <a href="../judges.html">IOCCC judges</a>
|
||||
to test your submission. And if your submissions wins, it makes it easier to integrate it into
|
||||
the <a href="https://www.ioccc.org/index.html">Official IOCCC winner website</a>.</p>
|
||||
<p>We <strong>VERY MUCH LIKE</strong> submissions that have some educational value. This does <strong>NOT</strong> mean
|
||||
that your submission should not be obfuscated but rather that the IOCCC has moved away from
|
||||
the idea of “spoilers”. You should not encrypt or rot13 content in your <code>remarks.md</code> file.</p>
|
||||
<p>It is <strong>VERY MUCH</strong> appreciated if your remarks have some educational
|
||||
value. And although educational value is not required, it is an
|
||||
<strong>EXCELLENT</strong> bonus.</p>
|
||||
<p>We <strong>LIKE</strong> submissions that use an edited version of the
|
||||
<code>try.sh</code> example script (and if you have alternate code,
|
||||
the same applies with the <code>try.alt.sh</code> script):</p>
|
||||
<ul>
|
||||
<li><p><a href="https://github.com/ioccc-src/winner/blob/master/next/try.sh">view example try.sh</a></p></li>
|
||||
<li><p><a href="try.sh">download example try.sh</a></p></li>
|
||||
<li><p><a href="https://github.com/ioccc-src/winner/blob/master/next/try.alt.sh">view example try.alt.sh</a></p></li>
|
||||
<li><p><a href="try.alt.sh">download example try.alt.sh</a></p></li>
|
||||
</ul>
|
||||
<p>Of course, it is quite possible that only one invocation is
|
||||
possible, so it is not necessarily detrimental to your submission if you do not
|
||||
include one, though we do like interesting and creative uses of submissions. See
|
||||
also the
|
||||
FAQ on “<a href="../faq.html#try_scripts">submitting try.sh and try.alt.sh scripts</a>”.</p>
|
||||
<p class="leftbar">
|
||||
Even if it only has one invocation we still <strong>LIKE</strong> the try scripts.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you do include a <code>try.sh</code> then <strong>PLEASE</strong> remove the <code>try</code> rule in the Makefile.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you do include a <code>try.alt.sh</code> then <strong>PLEASE</strong> remove the <code>try.alt</code> rule in the Makefile.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you don’t have a prog.alt.c, then <strong>PLEASE</strong> remove the <code>try.alt</code> rule as well.
|
||||
</p>
|
||||
<p>Doing masses of <code>#define</code>s to obscure the source has become ‘old’. We
|
||||
tend to ‘see thru’ masses of <code>#define</code>s due to our pre-processor tests
|
||||
that we apply. Simply abusing <code>#define</code>s or <code>-Dfoo=bar</code> won’t go as far
|
||||
as a program that is more well rounded in confusion.</p>
|
||||
<p><strong>Many</strong> C compilers <strong>DISLIKE</strong> the following code, and so do we:</p>
|
||||
<pre><code> #define d define
|
||||
#d foo /* <-- don't expect this to turn into #define foo */</code></pre>
|
||||
<p>In other words, it is a compilation error, and in order to get older
|
||||
IOCCC winning entries that did this to compile, we had to update them to not do this.</p>
|
||||
<p>When declaring local or global variables, you should declare the type:</p>
|
||||
<pre><code> int this_is_fine;
|
||||
this_is_not; /* <-- Try to avoid implicit type declarations */</code></pre>
|
||||
<p>We tend to <strong>like <em>less</em></strong> a submission that requires either
|
||||
<code>gcc</code> <strong>OR</strong> <code>clang</code>. <strong>We <em>prefer</em> submissions</strong> that can compile
|
||||
under <strong>BOTH</strong> <code>gcc</code> <strong>AND</strong> <code>clang</code>. <strong>Hint!</strong></p>
|
||||
<p>We <strong>RECOMMEND</strong> that the compiler flags you use in your
|
||||
submission’s <code>Makefile</code> are supported by <strong>BOTH</strong> <code>gcc</code> <strong>AND</strong> <code>clang</code>.</p>
|
||||
<p>We <strong>DISLIKE</strong> the use of obscure compiler flags, especially
|
||||
if <code>gcc</code> and/or <code>clang</code> do not support it. We <strong>suggest</strong>
|
||||
that you not use any really obscure compiler flags if you can help it.</p>
|
||||
<p>One side effect of the above is that you cannot assume the use
|
||||
of nested functions such as:</p>
|
||||
<pre><code> int main() {
|
||||
| void please_dont_submit_this() {
|
||||
| printf("The machine that goes BING!!\n");
|
||||
}
|
||||
| please_dont_submit_this();
|
||||
}</code></pre>
|
||||
<p>On 2012 July 20, the <a href="../judges.html">IOCCC judges</a> rescinded the encouragement of
|
||||
nested functions. Such constructions, while interesting and sometimes
|
||||
amusing, will have to wait until they are required by a C standard that are
|
||||
actually implemented in <strong>BOTH</strong> <code>gcc</code> <strong>AND</strong> <code>clang</code>.</p>
|
||||
<p>We <strong>DISLIKE</strong> submissions that require the use of <code>-fnested-functions</code>.</p>
|
||||
<p>If your submission uses functions that have a variable number of
|
||||
arguments, <strong>be careful</strong>. Systems implement <code>va_list</code> in a wide variety
|
||||
of ways. Because of this, a number of operations using <code>va_list</code> <strong>are
|
||||
not portable and <em>must not</em> be used</strong>:</p>
|
||||
<ul>
|
||||
<li>assigning a non-<code>va_list</code> variable to/from a <code>va_list</code> variable</li>
|
||||
<li>casting a non-<code>va_list</code> variable into/from a <code>va_list</code> variable</li>
|
||||
<li>passing a <code>va_list</code> variable to a function expecting a non-<code>va_list</code> arg</li>
|
||||
<li>passing a non-<code>va_list</code> variable to a function expecting a <code>va_list</code> arg</li>
|
||||
<li>performing arithmetic on <code>va_list</code> variables</li>
|
||||
<li>using <code>va_list</code> as a structure or union</li>
|
||||
</ul>
|
||||
<p>In particular, do not treat <code>va_list</code> variables as if they were a <code>char **</code>.</p>
|
||||
<p>We <strong>DISLIKE</strong> the use of <code>varargs.h</code>. Use <code>stdarg.h</code> instead.</p>
|
||||
<p>We <strong>DISLIKE</strong> the use of <code>gets(3)</code>. Use <code>fgets(3)</code> instead.</p>
|
||||
<p>We tend to <strong>DISLIKE</strong> the blatant use of tarballs in an attempt to simply get
|
||||
around the extra file number limit. We realize there may be cases where a
|
||||
tarball containing a number of extra files may be needed. Such a need for a
|
||||
tarball <strong>MUST</strong> be explained in the <code>remarks.md</code> file.</p>
|
||||
<p class="leftbar">
|
||||
Using a mass of <code>goto</code>s to obfuscate your code has become ‘old’ and is unlikely
|
||||
to make it through the final rounds, if it even gets that far.
|
||||
</p>
|
||||
<p>On 28 January 2007, the Judges rescinded the requirement that the
|
||||
<code>#</code> in a C preprocessor directive must be the 1st non-whitespace byte.</p>
|
||||
<p>The <code>exit(3)</code> function returns <code>void</code>. Some broken systems have <code>exit(3)</code>
|
||||
return <code>int</code>; your submission should assume that <code>exit(3)</code> returns a <code>void</code>.</p>
|
||||
<p>Small programs are best when they are short, obscure and concise.
|
||||
While such programs are not as complex as other winners, they do
|
||||
serve a useful purpose: they are often the only program that people
|
||||
attempt to completely understand. For this reason, we look for
|
||||
programs that are compact, and are instructional.</p>
|
||||
<p>One line programs should be short one line programs: say around <strong>80</strong> to <strong>132</strong>
|
||||
bytes long. Going well beyond <strong>132</strong> bytes is a bit too long to be called
|
||||
a one-liner in our vague opinion.</p>
|
||||
<p>We tend to <strong>DISLIKE</strong> programs that:</p>
|
||||
<ul>
|
||||
<li>are very hardware specific</li>
|
||||
<li>are very OS version specific (<code>index(3)</code>/<code>strchr(3)</code> differences are OK, but
|
||||
sockets/streams specific code is likely not to be)</li>
|
||||
<li>dump core or have compiler warnings (it is OK only if
|
||||
you warn us in your <code>remarks.md</code> file)</li>
|
||||
<li>won’t compile or run in a <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>
|
||||
environment</li>
|
||||
<li>depend on a utility or application not normally found
|
||||
in systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a></li>
|
||||
<li>abuse the build file to get around the size limit</li>
|
||||
<li>obfuscate by use of ANSI trigraphs</li>
|
||||
<li>obfuscate by use of digraphs</li>
|
||||
<li>are larger than they need to be</li>
|
||||
<li>have more lines than they need to have</li>
|
||||
<li>are “blob-ier” (just a pile of unformatted C code) than they need to be</li>
|
||||
<li>are rather similar to <strong><a href="../years.html">previous winners</a></strong> :-(</li>
|
||||
<li>are <strong>identical</strong> to <strong><a href="https://en.wikipedia.org/wiki/Null_device">previous losers</a></strong> :-)</li>
|
||||
<li>that mandate the exclusive use of a specific Integrated Development Environment (IDE)</li>
|
||||
</ul>
|
||||
<p>In order to encourage submission portability, we <strong>DISLIKE</strong> submissions that
|
||||
fail to build unless one is using an IDE. For example, do not
|
||||
mandate that one must use Microsoft Visual Studio to compile
|
||||
your submission.</p>
|
||||
<p>The program must compile and link cleanly in a <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>
|
||||
environment. Therefore do not assume the system has a
|
||||
<a href="https://en.wikipedia.org/wiki/Windows.h">windows.h</a> include file:</p>
|
||||
<pre><code> #include <windows.h> /* we DISLIKE this */</code></pre>
|
||||
<p>Unless you are cramped for space, or unless you are entering the
|
||||
‘<strong>Best one liner</strong>’ category, we suggest that you format your program
|
||||
in a more creative way than simply forming excessively long lines.</p>
|
||||
<p>The <code>Makefile</code> should not be used to try and get around the size limit. It is
|
||||
one thing to make use of a several <code>-D</code>s on the compile line to help out, but it
|
||||
is quite another to use many bytes of <code>-D</code>s in order to try and squeeze the
|
||||
source under the size limit.</p>
|
||||
<p>Your source code, post-pre-processing, should not exceed the size of
|
||||
<a href="https://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a>. :-)</p>
|
||||
<p>You should try to restrict commands used in the build file to commands found in
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>
|
||||
environments and systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>.</p>
|
||||
<p>You may compile and use your own programs. If you do, try to build and execute
|
||||
from the current directory. This restriction is not a hard and
|
||||
absolute one. The intent is to ensure that the building of your
|
||||
program is reasonably portable.</p>
|
||||
<p>We prefer programs that are portable across a wide variety of UNIX-like
|
||||
operating systems (e.g., Linux, GNU Hurd, BSD, UNIX, etc.).</p>
|
||||
<p>Don’t forget that the building of your program should be done
|
||||
<strong>WITHOUT human intervention</strong>. So don’t do things such as:</p>
|
||||
<pre><code> prog: prog.c
|
||||
#echo this next line requires data from standard input
|
||||
cat > prog.c
|
||||
${CC} prog.c -o prog</code></pre>
|
||||
<p>However, you can do something cute such as making your program
|
||||
do something dumb (or cute) when it is built ‘automatically’, and
|
||||
when it is run with a human involved, do something more clever.
|
||||
For example, one could put in their <code>Makefile</code>:</p>
|
||||
<pre><code> prog: prog.c
|
||||
${CC} prog.c -DNON_HUMAN_COMPILE -o prog
|
||||
@echo "See remarks section about alternate ways to compile"</code></pre>
|
||||
<p>and then include special notes in your <code>remarks.md</code> file for
|
||||
alternate / human intervention based building.</p>
|
||||
<p>We want to get away from source that is simply a compact blob of
|
||||
bytes. <strong>REALLY TRY</strong> to be more creative than blob coding. <strong>HINT!</strong></p>
|
||||
<p>Please do not use things like <code>gzip(1)</code> to get around the size limit.
|
||||
Please try to be much more creative.</p>
|
||||
<p>We really <strong>DISLIKE</strong> submissions that make blatant use of including
|
||||
large data files to get around the source code size limit.</p>
|
||||
<p>Did we remember to indicate that programs that blatantly use
|
||||
some complex state machine to do something simple, are boring?
|
||||
We think we did. :-)</p>
|
||||
<p>Given two versions of the same program, one that is a compact blob
|
||||
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
|
||||
version of the same program that is formatted in an interesting
|
||||
and/or obfuscated way, would definitely win over the first two!
|
||||
Remember, you can submit more than one submission. See the
|
||||
<a href="rules.html">IOCCC rules</a>
|
||||
for details (in particular,
|
||||
<a href="rules.html#rule-8---submission">Rule 8 - Submission</a>).</p>
|
||||
<p>We suggest that you avoid trying for the ‘<strong>smallest self-replicating</strong>’
|
||||
source. The smallest, a <a href="../1994/smr/index.html">zero byte entry</a>, won in
|
||||
<a href="../years.html#1994">1994</a>.</p>
|
||||
<p>Programs that claim to be the smallest C source that does something, really
|
||||
better be the smallest such program or they risk being rejected because
|
||||
they do not work as documented.</p>
|
||||
<p>Please note that the C source below, besides lacking in obfuscation,
|
||||
is <strong>NOT</strong> the smallest C source file that when compiled and run, dumps core:</p>
|
||||
<pre><code> main;</code></pre>
|
||||
<p>Unless you specify <code>-fwritable-strings</code> (see <code>COTHER</code> in the example
|
||||
Makefile, described in the <a href="#makefile">Makefile section</a>), do not assume this
|
||||
sort of code will work:</p>
|
||||
<pre><code> char *T = "So many primes, so little time!";
|
||||
...
|
||||
T[14] = ';'; /* modifying a string requires: -fwritable-strings */</code></pre>
|
||||
<p>Even so, one should probably not assume that this is universally accepted.</p>
|
||||
<p>Initialized char arrays are OK to write over. For instance, this is OK:</p>
|
||||
<pre><code> char b[] = "Is this OK";
|
||||
b[9] = 'k'; /* modifying an initialized char array is OK */</code></pre>
|
||||
<p>X client submissions should be as portable as possible. Submissions that
|
||||
adapt to a wide collection of environments will be favored. For
|
||||
example, don’t depend on a particular type or size of display.
|
||||
Don’t assume the use of a particular browser. Instead assume a
|
||||
generic browser that forms to a widely used <a href="https://www.w3.org/standards/">W3C
|
||||
standard</a>.
|
||||
Don’t assume a particular sound sub-system or video driver is installed
|
||||
in the OS. Instead, make use of a well known and widely available open
|
||||
source program (one that actually works) to display audio/visual data.</p>
|
||||
<p>X client submissions should avoid using X related libraries and
|
||||
software that are not in wide spread use.</p>
|
||||
<p>As of Red Hat RHEL9.0, the X.org server is deprecated. See the
|
||||
FAQ on “<a href="../faq.html#Xorg_deprecated">Xorg deprecation”</a>”
|
||||
for more details. This does not mean that a submission using this will
|
||||
necessarily be rejected, but it would be better if it can support Wayland in
|
||||
some way or another.</p>
|
||||
<p>We <strong>DISLIKE</strong> submissions that use proprietary toolkits such as the <code>M*tif</code>,
|
||||
<code>Xv*ew</code>, or <code>OpenL*ok</code> toolkits, since not everyone has them. Use an
|
||||
open source toolkit that is widely and freely available instead.</p>
|
||||
<p>X client submissions should try to not to depend on particular items in
|
||||
<code>.Xdefaults</code>. If you must do so, be sure to note the required lines
|
||||
in the your <code>remarks.md</code> file. They should also not depend on any
|
||||
particular window manager.</p>
|
||||
<p>Try to avoid submissions that play music that some people believe is copyrighted
|
||||
music.</p>
|
||||
<p>While we recognize that UNIX is not a universal operating system, the contest
|
||||
does have a bias towards such systems. In an effort to expand the scope of the
|
||||
contest, we phrase our bias to favor the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>.</p>
|
||||
<p>You are <strong>well advised</strong> to submit code that conforms to the <a href="https://unix.org/version4/overview.html">Single UNIX
|
||||
Specification Version 4</a>.</p>
|
||||
<p>To quote the <a href="../judges.html">IOCCC judges</a>:</p>
|
||||
<p>We <strong>LIKE</strong> programs that:</p>
|
||||
<ul>
|
||||
<li>are as concise and small as they need to be</li>
|
||||
<li>do something at least quasi-interesting</li>
|
||||
<li>are portable</li>
|
||||
<li>are unique or novel in their obfuscation style</li>
|
||||
<li>make use of a <strong>NUMBER OF DIFFERENT TYPES OF OBFUSCATIONS!</strong> <strong><== HINT!!</strong></li>
|
||||
<li>make us laugh and/or throw up :-) (humor really helps!)</li>
|
||||
<li>make us want to eat good chocolate</li>
|
||||
</ul>
|
||||
<p>Some types of programs can’t excel (anti-tm) in some areas. Your
|
||||
program doesn’t have to excel in all areas, but doing well in several
|
||||
areas really does help.</p>
|
||||
<p>You are better off explaining what your submission does in your
|
||||
<code>remarks.md</code> file section rather than leaving it obscure for the
|
||||
<a href="../judges.html">IOCCC judges</a> as we might miss something and/or be too tired to
|
||||
notice.</p>
|
||||
<p>We freely admit that interesting, creative or humorous comments in
|
||||
your <code>remarks.md</code> file help your chances of winning. If you had to
|
||||
read so many twisted submissions, you too would enjoy a good laugh or two.
|
||||
We think the readers of the contest winners do as well. We do read
|
||||
your <code>remarks.md</code> content during the judging process, so it is worth your
|
||||
while to write a remarkable <code>remarks.md</code> file.</p>
|
||||
<p>We <strong>DISLIKE</strong> C code with trailing control-M’s (<code>\r</code> or <code>\015</code>) that results
|
||||
in compilation failures. Some non-UNIX/non-Linux tools such as
|
||||
MS Visual C and MS Visual C++ leave trailing control-M’s on lines.
|
||||
Users of such tools should strip off such control-M’s before submitting
|
||||
their submissions. In some cases tools have a “Save As” option that will
|
||||
prevent such trailing control-M’s being added.</p>
|
||||
<p>One should restrict libcurses to portable features found on both BSD
|
||||
and Linux curses.</p>
|
||||
<p class="leftbar">
|
||||
If you do <code>#include <curses.h></code> make <strong>CERTAIN</strong> you link in curses (i.e.
|
||||
<code>-lcurses</code>) and not ncurses (i.e. <code>-lncurses</code>).
|
||||
</p>
|
||||
<p><a href="rules.html#rule-13---newlines">Rule 13 - Newlines</a>
|
||||
no longer discourages the use of UTF-8
|
||||
characters in C code.</p>
|
||||
<p>It is a very good idea to, in your <code>remarks.md</code> file, tell us why you
|
||||
think your submission is obfuscated. This is particularly true if
|
||||
your submission has some very subtle obfuscations that we might
|
||||
otherwise overlook. <strong><<– Hint!</strong></p>
|
||||
<p>Anyone can format their code into a dense blob. A really clever
|
||||
author will try format their submission using a “normal” formatting style
|
||||
such that at first glance (if you squint and don’t look at the details)
|
||||
the code might pass for non-obfuscated C. Deceptive comments,
|
||||
and misleading formatting, in some cases, may be a plus. On the
|
||||
other hand, a misleading code style requires more source bytes.</p>
|
||||
<p>If you do elect to use misleading formatting and comments, we
|
||||
suggest you remark on this point in your <code>remarks.md</code> where you talk
|
||||
about why you think your submission is obfuscated. On the other hand,
|
||||
if you are pushing up against the size limits, you may be forced
|
||||
into creating a dense blob. Such are the trade-offs that obfuscators face!</p>
|
||||
<p>We prefer code that can run on either a 64-bit or 32-bit
|
||||
processor. However, it is <strong>UNWISE </strong>to assume it will run on an
|
||||
some Intel-like x86 architecture**.</p>
|
||||
<p>While programs that only run in a specific word size are OK, if you have
|
||||
to pick, choose a 64-bit word size.</p>
|
||||
<p>If your submission <strong>MUST</strong> run only on a 64-bit or 32-bit architecture,
|
||||
then you <strong>MUST</strong> specify the <code>-arch</code> on your command line
|
||||
(see <code>ARCH</code> in the example
|
||||
Makefile, described in <a href="#makefile">Makefile section</a>). Do not assume a
|
||||
processor word size without specifying <code>-arch</code>. For example:</p>
|
||||
<pre><code> ARCH= -m64</code></pre>
|
||||
<p>Note, however, that some platforms will not necessarily support some
|
||||
architectures. For instance, more recent versions of <code>macOS</code> do <strong>NOT</strong> support
|
||||
32-bit!</p>
|
||||
<p>If there are limitations in your submission, you are highly encouraged
|
||||
to note such limitations in your <code>remarks.md</code> file. For example if your
|
||||
submission factors values up to a certain size, you might want to state:</p>
|
||||
<blockquote>
|
||||
<p>This submission factors values up <code>2305567963945518424753102147331756070</code>.
|
||||
Attempting to factor larger values will produce unpredictable results.</p>
|
||||
</blockquote>
|
||||
<p>The <a href="../judges.html">IOCCC judges</a> might try to factor the value -5, so you want to might state:</p>
|
||||
<blockquote>
|
||||
<p>This submission factors positive values up
|
||||
<code>2305567963945518424753102147331756070</code>. Attempting to factor large values will
|
||||
produce unpredictable results.</p>
|
||||
</blockquote>
|
||||
<p>However the <a href="../judges.html">IOCCC judges</a> might try to also factor 0, so you want to might state:</p>
|
||||
<blockquote>
|
||||
<p>This submission factors values between 1 and
|
||||
<code>2305567963945518424753102147331756070</code>. Attempting to factor values outside
|
||||
that range will produce unpredictable results.</p>
|
||||
</blockquote>
|
||||
<p>Moreover they might try to also factor 3.5 or 0x7, or Fred, so you want to might state:</p>
|
||||
<blockquote>
|
||||
<p>This submission factors integers between 1 and
|
||||
<code>2305567963945518424753102147331756070</code>. Attempting to factor anything else
|
||||
will produce unpredictable results.</p>
|
||||
</blockquote>
|
||||
<p>You submission might be better off catching the attempt to factor bogus values
|
||||
and doing something interesting. So you might want to code accordingly and state:</p>
|
||||
<blockquote>
|
||||
<p>This submission factors integers between 1 and <code>2305567963945518424753102147331756070</code>.
|
||||
Attempting to factor anything else will cause the program to insult your pet fish Eric.</p>
|
||||
</blockquote>
|
||||
<p>The <a href="../judges.html">IOCCC judges</a> might not have a pet fish named Eric, so you might want to state:</p>
|
||||
<blockquote>
|
||||
<p>This submission factors integers between 1 and
|
||||
<code>2305567963945518424753102147331756070</code>. Attempting to factor anything else
|
||||
will cause the program to insult your pet fish Eric, or in the case that you
|
||||
lack such a pet, will insult the pet that you do not have.</p>
|
||||
</blockquote>
|
||||
<p>When all other things are equal, a submission with fewer limitations will be judged
|
||||
better than a submission with lots of limitations. So you might want to code accordingly
|
||||
and state:</p>
|
||||
<blockquote>
|
||||
<p>This submission attempts to a factor value of any size provided that the
|
||||
program is given enough time and memory. If the value is not a proper integer,
|
||||
the program might insult a fish named Eric.</p>
|
||||
</blockquote>
|
||||
<p>We <strong>DISLIKE</strong> the use of ASCII tab characters in markdown files, such as in the required <code>remarks.md</code> file.</p>
|
||||
<p>We don’t mind the use of ASCII tab characters in your C code. Feel free
|
||||
to use ASCII tab characters if that suits your obfuscation needs. If is
|
||||
perfectly <strong>OK</strong> to use tab characters elsewhere in your submission, just not in
|
||||
markdown files as this tends annoy us when it comes time to
|
||||
rendering your markdown content as it complicates the process.</p>
|
||||
<p>If you do use ASCII tab characters in your non-markdown files, be
|
||||
aware that some people may use a tab stop that is different than the common 8
|
||||
character tab stop.</p>
|
||||
<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
|
||||
contains additional markdown files, please follow those same guidelines for
|
||||
those files. See also
|
||||
<a href="rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
and the
|
||||
FAQ on “<a href="../faq.html#markdown">markdown</a>”.</p>
|
||||
<p>We <strong>LIKE</strong> reading <code>remarks.md</code> files, especially if they contain
|
||||
useful, informative, and even humorous content about your submission. Yes, this
|
||||
is a <strong>hint</strong>. :-)</p>
|
||||
<p>We <strong>RECOMMEND</strong> you put a reasonable amount effort into the content of the
|
||||
<code>remarks.md</code> file: it is a required file for a reason. :-)</p>
|
||||
<p>Try to be even more creative!</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="fun">
|
||||
|
||||
</div>
|
||||
<h1 id="fundamental-guidelines">Fun😄damental Guidelines</h1>
|
||||
<p>The reason for the times of day are so that key IOCCC events are <strong>calculated</strong>
|
||||
to be a <strong>fun</strong>ctional UTC time. :-)</p>
|
||||
<p>At least 2 of several reasons for selecting the prime, 2503, for
|
||||
<a href="rules.html#rule-2b---net-size">Rule 2b - Net Size</a>
|
||||
may be found on the <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>.</p>
|
||||
<p>The 2503 value for <a href="rules.html#rule-2b---net-size">Rule 2b - Net</a> is a decimal anagram
|
||||
of the number of the kernel disk pack of one of the judge’s <a href="https://en.wikipedia.org/wiki/BESM-6">BESM-6</a>.</p>
|
||||
<p>There may or may not be fewer than 2^7+1 reasons why these <a href="guidelines.html">IOCCC
|
||||
guidelines</a> seem obfuscated.</p>
|
||||
<p>Excessively “<em>dotty”</em> use of the <code>chksubmit(1)</code> or <code>chkentry(1)</code> commands suggests that
|
||||
either like silly things, or that you”<em>RTFS”</em> with some level of care.</p>
|
||||
<p>Some people might question what actually constitutes a valid JSON file, given
|
||||
the state of the “<em>so-called</em>” JSON spec.. :-)</p>
|
||||
<p>We prefer programs that do not require a fish license: crayons and
|
||||
cat detector vans not withstanding.</p>
|
||||
<p class="leftbar">
|
||||
This <em>guideline</em> has a change mark at the very start of this line.
|
||||
</p>
|
||||
<p>While those who are used to temperatures found on <a href="https://science.nasa.gov/dwarf-planets/">dwarf
|
||||
planets</a>
|
||||
(<strong>yes Virginia, dwarf planets <em>ARE</em> planets!</strong>), such as
|
||||
<a href="https://science.nasa.gov/dwarf-planets/pluto/">Pluto</a>, might be able to
|
||||
explain to the Walrus why our seas are boiling hot, the question of
|
||||
whether pigs have wings is likely to remain a debatable point to most.</p>
|
||||
<p>At least one judge prefers to maintain the use of the
|
||||
<a href="https://en.wikipedia.org/wiki/Leap_second">leap-second</a>
|
||||
as part of the world’s time standard. If your code prints time
|
||||
with seconds, we prefer that your code be capable of printing the
|
||||
time of day during a leap-second where the value in seconds
|
||||
after the minute mark is <strong>60</strong>.</p>
|
||||
<p>Other windows, on the other hand, might be OK: especially where “<strong>X
|
||||
marks the spot</strong>”. Yet on the third hand, windows are best when they are
|
||||
“unseen” (i.e., not dirty). :-)</p>
|
||||
<p>The <a href="../judges.html">IOCCC judges</a>, as a group, have a history giving wide degree of latitude
|
||||
to reasonable submissions. And recently they have had as much longitudinal
|
||||
variation as it is possible to have on <a href="https://science.nasa.gov/earth/">Earth</a>. :-)
|
||||
Other windows, on the other hand, might be OK: especially where “<strong>X
|
||||
marks the spot</strong>”. Yet on the third hand, windows are best when they are
|
||||
“unseen” (i.e., not dirty). :-)</p>
|
||||
<p>The <a href="../judges.html">IOCCC judges</a>, as a group, have a history giving wide degree of latitude
|
||||
to reasonable submissions. And recently they have had as much longitudinal
|
||||
variation as it is possible to have on <a href="https://science.nasa.gov/earth/">Earth</a>. :-)</p>
|
||||
<blockquote>
|
||||
<p>You are in a maze of twisty <em>guidelines</em>, all different.</p>
|
||||
</blockquote>
|
||||
<p>There are at least zero <a href="../judges.html">IOCCC judges</a> who think that
|
||||
<a href="https://en.wikipedia.org/wiki/Fideism">Fideism</a> has little
|
||||
or nothing to do with the IOCCC judging process.</p>
|
||||
<blockquote>
|
||||
<p>All generalizations are false, including this one. – <strong>Mark Twain</strong></p>
|
||||
</blockquote>
|
||||
<p class="leftbar">
|
||||
There are more than about 1 typos in this very sentence.
|
||||
</p>
|
||||
<p>This could be the only <em>guideline</em> that contains the word
|
||||
<a href="https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin">fizzbin</a>.</p>
|
||||
<p>However, do you know how to play <a href="https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin">fizzbin</a>?
|
||||
You do?!? (Except on Tuesday?)</p>
|
||||
<p>OK, there are actually 2 <em>guidelines</em> that contain the word
|
||||
<a href="https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin">fizzbin</a>,
|
||||
unless you count this one, in which case there are 3. :-)</p>
|
||||
<p><strong>NOTE</strong>: The previous <em>guideline</em> in this spot has been replaced by this <em>guideline</em>:</p>
|
||||
<p class="leftbar">
|
||||
<blockquote>
|
||||
<p>You very well might not be completely prohibited from failing to not partly
|
||||
misunderstand this particular <em>guideline</em>, but of course, we could not possibly
|
||||
comment! :-) Nevertheless, you are neither prohibited, nor are you fully or partly
|
||||
required to determine that this or the previous sentence is either false and/or
|
||||
perhaps misleading. Therefore, it might be wise for you to not fail to consider
|
||||
to not do so, accordingly. Thank you very much (allegedly).</p>
|
||||
</blockquote>
|
||||
</p>
|
||||
<p>Any complaints about the above <em>guideline</em> could be addressed to the
|
||||
Speaker of the House of Commons, or to the speaker of your national
|
||||
parliament should you have one.</p>
|
||||
<p class="leftbar">
|
||||
Please try to avoid this specific individual <em>guideline</em>, if it at all possible.
|
||||
</p>
|
||||
<p>We believe that Mark Twain’s quote:</p>
|
||||
<blockquote>
|
||||
<p>Get your facts first, then you can distort them as you please.</p>
|
||||
</blockquote>
|
||||
<p>… is a good motto for those writing code for the IOCCC.</p>
|
||||
<p class="leftbar">
|
||||
We do not recommend submitting <a href="https://systemd.io">systemd</a> source code to the IOCCC,
|
||||
if nothing else because that code is likely to exceed
|
||||
<a href="rules.html#rule-2---size">Rule 2 - Size</a>.
|
||||
This isn’t to say that another highly compact and obfuscated
|
||||
replacement of <code>init(8)</code> would not be an interesting submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
is not an original work, unless you one of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/graphs/contributors">several mkiocccentry toolkit contributors</a>.
|
||||
in which case it is original! :-)
|
||||
</p>
|
||||
<p>If the <a href="../judges.html">IOCCC judges</a> are feeling ornery we
|
||||
might choose to compile your program for running on an Arduino or
|
||||
a PDP-11. Heck, should we ever find an emulator of 60-bit CDC Cyber
|
||||
CPU, we might just try your submission on that emulator as well :-)</p>
|
||||
<p>Do not fear if you’re not 100% sure of the significance of
|
||||
<code>2305567963945518424753102147331756070</code> as it is not of prime importance: or is
|
||||
it? :-)</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="more-information">
|
||||
|
||||
</div>
|
||||
<div id="information">
|
||||
|
||||
</div>
|
||||
<h1 id="for-more-information">FOR MORE INFORMATION:</h1>
|
||||
<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 sure you have the current <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>. 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
|
||||
FAQs 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>
|
||||
<hr style="width:10%;text-align:left;margin-left:0">
|
||||
<p>Jump to: <a href="#">top</a>
|
||||
<!-- AFTER: last line of markdown file: next/guidelines.md --></p>
|
||||
<!-- START: this line starts content from: inc/guidelines.closed.hdr -->
|
||||
<h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
|
||||
<p>The IOCCC is <strong>NOT</strong> accepting new submissions at this time. See the
|
||||
<a href="../years.html">IOCCC winning entries page</a> for the entries that have won the
|
||||
IOCCC in the past.</p>
|
||||
<p>These guidelines are a <strong>TENTATIVE proposal</strong> for the next IOCCC
|
||||
and are <strong>likely be to be updated</strong> before the next IOCCC.</p>
|
||||
<p>See our
|
||||
FAQ on “<a href="../faq.html#feedback">rules, guidelines, tools feedback</a>”
|
||||
as well as our
|
||||
FAQ on “<a href="../faq.html#question">about asking questions</a>”
|
||||
about these guidelines. You might also find the FAQ in general useful, especially the
|
||||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”.</p>
|
||||
<p>Watch both <a href="../status.html">the IOCCC status page</a> and the
|
||||
<a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span> mastodon feed</a> for information about
|
||||
future IOCCC openings.</p>
|
||||
<p><strong>HINT to mastodon users</strong>: You may wish to refresh the <a href="https://fosstodon.org/@ioccc"><span class="citation" data-cites="IOCCC">@IOCCC</span>
|
||||
mastodon feed</a> page and/or mastodon
|
||||
app from time to time to view IOCCC mastodon updates.</p>
|
||||
<!-- END: the next line ends content from: inc/guidelines.closed.hdr -->
|
||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||
<!-- AFTER: last line of markdown file: next/guidelines.md -->
|
||||
|
||||
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
<!-- START: this line starts content from: inc/after-content.default.html -->
|
||||
|
||||
+21
-1207
File diff suppressed because it is too large.
Load diff
+214
-141
@@ -474,60 +474,80 @@ app from time to time to view IOCCC mastodon updates.</p>
|
||||
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
|
||||
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
|
||||
<h1 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h1>
|
||||
<p>Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.</p>
|
||||
<p>Copyright (c) 2025 Leonid A. Broukhis and Landon Curt Noll.</p>
|
||||
<p>All Rights Reserved. Permission for personal, education or non-profit use is
|
||||
granted provided this copyright and notice are included in its entirety
|
||||
and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in
|
||||
writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
<h2 id="rules-version">Rules Version</h2>
|
||||
<p>These IOCCC Rules are version <strong>29.08 2025-11-28</strong>.</p>
|
||||
<p>Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<p>These IOCCC Rules are version <strong>29.09 2025-11-29</strong>.</p>
|
||||
<p>Reminder: be SURE to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<div id="rule0">
|
||||
<h2 id="rule-0---dates">Rule 0 - Dates</h2>
|
||||
</div>
|
||||
<p>This IOCCC runs from <strong>2025-12-03 20:25:12.045045 UTC</strong> to <strong>2026-03-13 17:19:23.293137 UTC</strong>.</p>
|
||||
<p>This contest will enter the <strong>pending state</strong> on <strong>2025-12-03 20:25:12.045045 UTC</strong>,
|
||||
<p>This IOCCC runs from <code>2025-12-03 20:25:12.045045 UTC</code> to <code>2026-03-13 17:19:23.293137 UTC</code>.</p>
|
||||
<p>This contest will enter the <strong>pending state</strong> on <code>2025-12-03 20:25:12.045045 UTC</code>,
|
||||
allowing people to register for the IOCCC.</p>
|
||||
<p>This contest will enter the <strong>open state</strong> on <strong>2025-12-15 18:21:24.273033 UTC</strong>,
|
||||
<p>This contest will enter the <strong>open state</strong> on <code>2025-12-15 18:21:24.273033 UTC</code>,
|
||||
allowing people to upload submissions to the <a href="https://submit.ioccc.org">IOCCC submit server</a>.</p>
|
||||
<p>This contest will enter the <strong>judging state</strong> on <strong>2026-03-13 17:19:23.293137 UTC</strong>,
|
||||
<p>This contest will enter the <strong>judging state</strong> on <code>2026-03-13 17:19:23.293137 UTC</code>,
|
||||
when people will no longer be allowed to upload submissions.</p>
|
||||
<p>Until the contest enters the <strong>open</strong> state, any or all
|
||||
of the above <strong>dates and times may change <em>AT ANY TIME</em></strong>!</p>
|
||||
<p>The above timestamps are in “<em>YYYY-MM-DD HH:MM:SS.micros UTC</em>” format.</p>
|
||||
<p>See <a href="../status.html">Current status of the IOCCC</a>.</p>
|
||||
<p>See the <a href="../status.html">current status of the IOCCC</a>.</p>
|
||||
<div id="rule1">
|
||||
<h2 id="rule-1---program">Rule 1 - Program</h2>
|
||||
<h2 id="rule-1---c-program">Rule 1 - C program</h2>
|
||||
</div>
|
||||
<p>Your submission <strong>MUST</strong> be a C program.</p>
|
||||
<p>Your submission <strong>MUST</strong> be a C program that does NOT <code>#include</code> data files.</p>
|
||||
<div id="rule2">
|
||||
<h2 id="rule-2---size">Rule 2 - Size</h2>
|
||||
<div id="rule2-size-restrictions">
|
||||
<div id="rule2-size">
|
||||
<div id="rule-2---size">
|
||||
<h2 id="rule-2---size-restrictions">Rule 2 - Size restrictions</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong>
|
||||
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
|
||||
<a href="rules.html#rule2a">Rule 2a (Gross Size)</a>
|
||||
and
|
||||
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.
|
||||
<a href="rules.html#rule2b">Rule 2b (Net Size)</a>.
|
||||
During development this can be checked using <code>iocccsize(1)</code>:</p>
|
||||
<p>iocccsize prog.c</p>
|
||||
<p>See <a href="guidelines.html#guideline-2---size">Guidelines for Rule 2 - Size</a>.</p>
|
||||
<pre><code> iocccsize prog.c</code></pre>
|
||||
<p>See the <a href="guidelines.html#guideline-2---size">Guidelines for Rule 2 - Size restrictions</a>.</p>
|
||||
<div id="rule2a">
|
||||
<div id="rule2a-gross-size">
|
||||
<div id="rule-2a-gross-size">
|
||||
<h3 id="rule-2a---gross-size">Rule 2a - Gross Size</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
|
||||
exceed <strong>4993</strong> bytes.</p>
|
||||
<p><strong>NOTE</strong>: by default <code>iocccsize</code> will only report the rule 2b size, unless the
|
||||
code surpasses the limit.</p>
|
||||
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
|
||||
<div id="rule2b">
|
||||
<div id="rule2b-net-size">
|
||||
<div id="rule-2b-net-size">
|
||||
<h3 id="rule-2b---net-size">Rule 2b - Net Size</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>When the filename of your program source (i.e., <code>prog.c</code>) is given as a
|
||||
command line argument to the latest version of the official IOCCC size
|
||||
tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST
|
||||
NOT</strong> exceed <strong>2503</strong>.</p>
|
||||
<p><strong>NOTE</strong>: <code>iocccsize</code> does <strong>NOT</strong> calculate the filename length. See <a href="#rule17-mkiocccentry">Rule 17 -
|
||||
Use mkiocccentry</a>.</p>
|
||||
<div id="rule3">
|
||||
<h2 id="rule-3---register">Rule 3 - Register</h2>
|
||||
<div id="rule3-register">
|
||||
<h2 id="rule-3---register-for-the-ioccc">Rule 3 - Register for the IOCCC</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>You <strong>MUST</strong> register, using a valid email address, in order to submit
|
||||
entries to the IOCCC. You may register while the contest is <strong>pending</strong> or <strong>open</strong>.</p>
|
||||
to the IOCCC. You may register while the contest is <strong>pending</strong> or <strong>open</strong>.</p>
|
||||
<p>A few days after registering, you’ll receive your UUID username and
|
||||
temporary password, which you <strong>MUST</strong> change within 14 days. If you
|
||||
fail to change it in a timely manner, you’ll need to
|
||||
@@ -538,38 +558,53 @@ register and submit your entries; <strong>DO NOT WAIT UNTIL THE FINAL DAYS</stro
|
||||
to register! The judges are <strong>NOT</strong> responsible for delayed or lost
|
||||
email or for those who wait until the last minute to try to register!</p>
|
||||
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
|
||||
<p>See <a href="rules.html#rule-8---submission">Rule 8 - Submission</a>.</p>
|
||||
<p>See <a href="guidelines.html#guideline-3---register">Guidelines for Rule 3 - Register</a>.</p>
|
||||
<p>See <a href="rules.html#rule8">Rule 8 - Submitting requirements</a>.</p>
|
||||
<p>See <a href="guidelines.html#guideline-3---register">Guidelines for Rule 3 - Register for the IOCCC</a>.</p>
|
||||
<div id="rule4">
|
||||
<h2 id="rule-4---files">Rule 4 - Files</h2>
|
||||
<div id="rule4-required-files">
|
||||
<h2 id="rule-4---required-files">Rule 4 - Required files</h2>
|
||||
</div>
|
||||
<p>The submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
|
||||
<code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>.</p>
|
||||
<p>At a minimum the following requirements apply. Additional requirements
|
||||
</div>
|
||||
<p>Your submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
|
||||
<code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>, the latter two of which are
|
||||
generated by <code>mkiocccentry(1)</code>. See <a href="#rule17-mkiocccentry">Rule 17 -
|
||||
Use mkiocccentry</a>.</p>
|
||||
<p>At a <strong>minimum</strong> the following requirements apply. Additional requirements
|
||||
may be imposed by <code>mkiocccentry(1)</code> updates that have yet to be listed
|
||||
here:</p>
|
||||
below.</p>
|
||||
<p><strong>NOTE</strong>: <code>mkiocccentry(1)</code> will reject any directory which has prohibited
|
||||
files.</p>
|
||||
<p><strong>NOTE</strong>: by ‘top directory’ we mean the directory with <code>prog.c</code>, <code>Makefile</code>,
|
||||
<code>remarks.md</code> and the <code>mkiocccentry(1)</code> generated files <code>.auth.json</code> and
|
||||
<code>.info.json</code> and <strong>NOT</strong> the <code>topdir</code> arg to <code>mkiocccentry(1)</code>.</p>
|
||||
<ul>
|
||||
<li><p><code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong> be generated by <code>mkiocccenty(1)</code>
|
||||
when packing a submission, and <strong>MUST</strong> pass the <code>chksubmit(1)</code> tests.</p></li>
|
||||
<li><p><code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by <code>mkiocccenty(1)</code>
|
||||
when packing a submission. When <code>chksubmit(1)</code> is run on the submission
|
||||
directory <strong>ALL</strong> tests must pass and if there is <strong>ANY</strong> problem with these
|
||||
JSON files or if either is missing it will fail. See <a href="#rule17-mkiocccentry">Rule 17 - use
|
||||
mkiocccentry</a>.</p></li>
|
||||
<li><p>The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
|
||||
have a file size <strong>greater than 0</strong>.</p></li>
|
||||
have a file size <strong>greater than 0</strong> and <strong>MUST</strong> have content. Note that
|
||||
<code>mkiocccentry(1)</code> will check for file <strong>size</strong> but will <strong>NOT</strong> check for
|
||||
content.</p></li>
|
||||
<li><p>Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
|
||||
compiles your code, the executable (if applicable) <strong>MUST</strong> be called <code>prog</code>.
|
||||
The <code>Makefile</code> may compile your source code into other filenames as well.</p></li>
|
||||
The <code>Makefile</code> may compile your source code into other filenames as well, if you
|
||||
want.</p></li>
|
||||
<li><p>As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
|
||||
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in
|
||||
your top directory, as original content.</p></li>
|
||||
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in your <strong>top</strong>
|
||||
directory.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
|
||||
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have in the top directory, <code>prog.orig.c</code>,
|
||||
<code>README.md</code>, nor <code>index.html</code> as those files reserved by IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have in the top directory, any file
|
||||
<li><p>Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory: <code>prog.orig.c</code>,
|
||||
<code>README.md</code> or <code>index.html</code> as those files are reserved by the IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file
|
||||
that matches a file glob pattern form <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code>
|
||||
as those files are reserved by IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>ONLY</strong> contain files and directories. Other file
|
||||
types such as symlinks, sockets, etc are <strong>NOT</strong> allowed.</p></li>
|
||||
<li><p>All directories <strong>MUST</strong> have a file mode of <strong>0755</strong>. All files
|
||||
<strong>MUST</strong> have the file mode of <strong>0444</strong>, except for files that
|
||||
types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.</p></li>
|
||||
<li><p><strong>All</strong> directories <strong>MUST</strong> have permission mode of <strong>0755</strong>. All files
|
||||
<strong>MUST</strong> have the file mode of <strong>0444</strong>, EXCEPT for files that
|
||||
end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p></li>
|
||||
<li><p>All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.
|
||||
We recommend that markdown files observe our
|
||||
@@ -582,29 +617,35 @@ a case insensitive filesystem.</p></li>
|
||||
</ul>
|
||||
<p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p>
|
||||
<p>See <a href="../markdown.html">IOCCC markdown guidelines</a>.</p>
|
||||
<p>See <a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p>
|
||||
<p>See <a href="guidelines.html#mkiocccentry_toolkit">Guidelines for the mkiocccentry toolkit</a>.</p>
|
||||
<p>See <a href="guidelines.html#makefile">Guidelines for the Makefile</a>.</p>
|
||||
<p>See <a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="../faq.html#file_perms">What permissions may my files be and what if I need different permissions?</a>”.</p>
|
||||
<p>See the <a href="guidelines.html#mkiocccentry_toolkit">Guidelines on the mkiocccentry toolkit</a>.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
|
||||
<div id="rule5">
|
||||
<h2 id="rule-5---integrity">Rule 5 - Integrity</h2>
|
||||
<div id="rule5-modifying-files">
|
||||
<h2 id="rule-5---do-not-modify-submitted-files-or-filenames-or-parent-directories">Rule 5 - Do NOT modify submitted files or filenames or parent directories</h2>
|
||||
</div>
|
||||
<p>Your submission <strong>MUST NOT</strong> modify the filenames or content of any of
|
||||
your original submission, such as <code>prog.c</code>, <code>Makefile</code>, or any supplied
|
||||
data files. To modify files, your program can make a copy or you can
|
||||
use the <code>Makefile</code> to setup working copies. Any working copies <strong>MUST</strong> be
|
||||
cleaned up by the <code>Makefile</code> <code>clobber</code> target, so as to restore the
|
||||
directory to its original state.</p>
|
||||
</div>
|
||||
<p>Your submission <strong>MUST NOT</strong> modify the filenames or content of any of your
|
||||
original submission, such as <code>prog.c</code>, <code>Makefile</code>, or <strong>ANY</strong> other supplied
|
||||
files. To modify files, your program can make a copy or you can use the
|
||||
<code>Makefile</code> to setup working copies. Any working copies <strong>MUST</strong> be cleaned up
|
||||
by the <code>Makefile</code> <code>clobber</code> target, so as to restore the directory to its
|
||||
original state.</p>
|
||||
<p>Your submission <strong>MUST NOT</strong> create or modify directories and files
|
||||
ABOVE the current directory with the exception of the <code>/tmp</code> and the
|
||||
<code>/var/tmp</code> directories as long as the directory name or filename does
|
||||
<strong>NOT</strong> start with “.” (dot).</p>
|
||||
<p>The <code>Makefile</code> <code>clobber</code> target <strong>MUST</strong> be restore your submission into
|
||||
ABOVE the current directory (with the exception of the <code>/tmp</code> and the <code>/var/tmp</code>
|
||||
directories and as long as the directory name or filename does <strong>NOT</strong> start
|
||||
with a <code>.</code> (dot)).</p>
|
||||
<p>The <code>Makefile</code> <code>clobber</code> target <strong>MUST</strong> restore your submission to its
|
||||
original form, including the removal of any created files and directories.</p>
|
||||
<p>Your code should be able to run under a
|
||||
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
|
||||
<div id="rule6">
|
||||
<h2 id="rule-6---free">Rule 6 - Free</h2>
|
||||
<div id="rule6-free-rule">
|
||||
<h2 id="rule-6---free-rule">Rule 6 - Free Rule</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>I am <strong>NOT</strong> a Rule, I am a <code>free(void *human);</code> ‼️</p>
|
||||
<pre><code> while (!(ioccc(rule(you(are(number(6)))))) {
|
||||
@@ -612,84 +653,103 @@ original form, including the removal of any created files and directories.</p>
|
||||
}</code></pre>
|
||||
<p>See <a href="rules.html#rule-19---prime">Rule 19 - Prime</a>.</p>
|
||||
<div id="rule7">
|
||||
<div id="rule7-original-work">
|
||||
<h2 id="rule-7---original-work">Rule 7 - Original Work</h2>
|
||||
</div>
|
||||
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, or you <strong>MUST</strong>
|
||||
have permission from the original owner(s) to its use. If you submit
|
||||
any content that is owned by others, you <strong>MUST</strong> detail that ownership,
|
||||
i.e., who owns what, and document the permission you obtained from them
|
||||
in your <code>remarks.md</code> file.</p>
|
||||
</div>
|
||||
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you
|
||||
do <strong>NOT</strong> own the work, then you <strong>MUST</strong> have permission from the original
|
||||
owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by others, you
|
||||
<strong>MUST</strong> detail that ownership, i.e., who owns what, and document the permission
|
||||
you obtained from them in your <code>remarks.md</code> file.</p>
|
||||
<p>You are permitted to use tools to write your code.</p>
|
||||
<p>See <a href="rules.html#rule-16---anonymous">Rule 16 - Anonymous</a>.</p>
|
||||
<p>See <a href="rules.html#rule16-anonymous-judging">Rule 16 - Anonymous Judging</a>.</p>
|
||||
<p>See <a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
|
||||
<div id="rule8">
|
||||
<h2 id="rule-8---submission">Rule 8 - Submission</h2>
|
||||
<div id="rule8-submitting-requirements">
|
||||
<h2 id="rule-8---submitting-requirements">Rule 8 - Submitting requirements</h2>
|
||||
</div>
|
||||
<p>The Submit Server will only accept submissions from those who have
|
||||
registered and only while the contest is open.</p>
|
||||
<p>The Submit Server places a total submission size limit of <strong>3999971</strong> bytes.</p>
|
||||
</div>
|
||||
<p>The submit server will accept submissions <strong>ONLY</strong> from those who have
|
||||
registered and <strong>ONLY</strong> while the contest is open.</p>
|
||||
<p>The submit server places a total size limit of <strong>3999971</strong> bytes <strong>PER</strong>
|
||||
submission.</p>
|
||||
<p>Each account has ten (<strong>10.000</strong>) submission slots (<strong>0..9)</strong>. Each submission
|
||||
slot should be annotated by the server as to whether its was received,
|
||||
processed, malformed, etc. Please take note of any errors, rectify,
|
||||
and resubmit. In order to avoid potential packaging errors, it is <strong>highly
|
||||
recommended</strong> to use <code>mkiocccentry(1)</code>.</p>
|
||||
recommended</strong> to use <code>mkiocccentry(1)</code>, <strong>AND</strong> to check from time to time the
|
||||
status on the submit server, to see if any tests run by the server failed to
|
||||
validate your submission.</p>
|
||||
<p>Do <strong>NOT</strong> register more than one account!</p>
|
||||
<p>See
|
||||
<a href="rules.html#rule-3---register">Rule 3 - Register</a>,
|
||||
<a href="rules.html#rule-15---building">Rule 15 - Building</a>,
|
||||
<a href="rules.html#rule3-register">Rule 3 - Registering for the IOCCC</a>,
|
||||
<a href="rules.html#rule15-gnu-makefile">Rule 15 - GNU Makefile</a>,
|
||||
and
|
||||
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>.</p>
|
||||
<a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<div id="rule9">
|
||||
<h2 id="rule-9---no-hands">Rule 9 - No hands</h2>
|
||||
<h2 id="rule-9---no-interactive-compiling-allowed">Rule 9 - No interactive compiling allowed</h2>
|
||||
</div>
|
||||
<p>Entries requiring human interaction to be initially compiled are <strong>NOT</strong>
|
||||
permitted. However, see the guidelines. Each entry <strong>MUST</strong> automate the
|
||||
build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code>, <code>clang</code>, under a
|
||||
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
|
||||
build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code> and/or <code>clang</code> and other commonly
|
||||
available tools under an <a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS
|
||||
environment</a>.</p>
|
||||
<p><strong>NOTE</strong>: The references to <code>gmake(1)</code> can be any GNU Make compatible tool.</p>
|
||||
<p>See <a href="rules.html#rule-15---building">Rule 15 - Building</a>.</p>
|
||||
<p><strong>NOTE</strong>: it is better to use the <code>${MAKE}</code> variable as then one may override
|
||||
the make command.</p>
|
||||
<p><strong>NOTE</strong>: it is better and more portable to <strong>NOT</strong> modify the <code>${CC}</code> variable
|
||||
in the Makefile.</p>
|
||||
<p>See <a href="rules.html#rule15-gnu-makefile">Rule 15 - GNU Makefile</a>.</p>
|
||||
<div id="rule10">
|
||||
<h2 id="rule-10---privileges">Rule 10 - Privileges</h2>
|
||||
<h2 id="rule-10---program-file-permissions">Rule 10 - Program file permissions</h2>
|
||||
</div>
|
||||
<p>Programs that require special privileges (<code>setuid(2)</code>, <code>setgid(2)</code>,
|
||||
super-user, special owner, special group, etc.) are <strong>HIGHLY DISCOURAGED</strong>.
|
||||
We do <strong>NOT</strong> 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>
|
||||
<code>remarks.md</code> file, preferably close to the top.</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
|
||||
have these permissions, you will also have to explain this as well, because these
|
||||
bits are <strong>NOT</strong> allowed in submissions and those bits will <strong>NOT</strong> be copied by
|
||||
<code>mkiocccentry(1)</code>.</p>
|
||||
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>,
|
||||
<p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>,
|
||||
and
|
||||
<a href="rules.html#rule-5---integrity">Rule 5 - Integrity</a>.</p>
|
||||
<a href="rules.html#rule5-modifying-files">Rule 5 - Do NOT modify files</a>.</p>
|
||||
<div id="rule11">
|
||||
<h2 id="rule-11---abuse">Rule 11 - Abuse</h2>
|
||||
<div id="rule11-legal-rule-abuse">
|
||||
<h2 id="rule-11---legal-rule-abuse">Rule 11 - Legal rule abuse</h2>
|
||||
</div>
|
||||
<p>Legal abuse of the rules is somewhat encouraged, but comes with risks.
|
||||
A submission that, in the opinion of the Judges, violates the rules <strong>WILL
|
||||
</div>
|
||||
<p>Legal abuse of the rules is <strong>somewhat</strong> encouraged, but comes with risks.
|
||||
A submission that, in the opinion of the Judges, <strong>violates</strong> the rules <strong>WILL
|
||||
BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify
|
||||
why their rule abuse is legal (or interesting) in the <code>remarks.md</code> file.</p>
|
||||
<p>Submission packaging abuse will <strong>NOT</strong> be tolerated and for this reason
|
||||
its recommended to use <code>mkiocccentry(1)</code>. During development you can
|
||||
check your <code>prog.c</code> size limits using <code>iocccsize(1)</code>, e.g., <code>iocccsize -v1 prog.c</code>.
|
||||
Overriding problems detected by any of the IOCCC tools
|
||||
<p>Submission packaging abuse will <strong>NOT</strong> be tolerated and for this reason,
|
||||
amongst many others, it is recommended that you use <code>mkiocccentry(1)</code>. During
|
||||
development you can check your <code>prog.c</code> size limits using <code>iocccsize(1)</code>, e.g.,
|
||||
<code>iocccsize -v1 prog.c</code>. Overriding problems detected by any of the IOCCC tools
|
||||
risks that the submission will be rejected.</p>
|
||||
<p>If you do submit a rule abusing or violating submission, then consider
|
||||
also submitting an alternate version in a different submission 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, please indicate that in your <code>remarks.md</code> file of your non-rule
|
||||
abusing version so that the Judges don’t think you uploaded a duplicate
|
||||
into a wrong slot by mistake.</p>
|
||||
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Abuse</a>.</p>
|
||||
version, <strong>PLEASE</strong> indicate that in your <code>remarks.md</code> file of your non-rule
|
||||
abusing version so that the Judges don’t think you uploaded a duplicate into a
|
||||
wrong slot by mistake.</p>
|
||||
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule
|
||||
abuse</a>.</p>
|
||||
<div id="rule12">
|
||||
<div id="rule12-utf8">
|
||||
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
|
||||
</div>
|
||||
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the IOCCC.</p>
|
||||
</div>
|
||||
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the
|
||||
IOCCC.</p>
|
||||
<div id="rule13">
|
||||
<h2 id="rule-13---newlines">Rule 13 - Newlines</h2>
|
||||
<h2 id="rule-13---no-carriage-returns-in-prog.c">Rule 13 - No carriage returns in prog.c</h2>
|
||||
</div>
|
||||
<p>Any C source that fails to compile because lines contain carriage-returns
|
||||
(CTRL+M, <code>\r</code>) in particular as part of DOS/Windows style newlines might
|
||||
@@ -697,34 +757,36 @@ be rejected. Please do <strong>NOT</strong> put trailing CTRL+M in <code>prog.c<
|
||||
or <code>remarks.md</code> files, but instead end lines with Unix newline (line-feed,
|
||||
CTRL+J, <code>\n</code>).</p>
|
||||
<p>You are permitted, in order to try and squeeze your <code>prog.c</code> under a
|
||||
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a> and/or
|
||||
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>
|
||||
<a href="rules.html#rule2a-gross-size">Rule 2a Gross Size</a> and/or
|
||||
<a href="rules.html#rule2b-net-size">Rule 2b Net Size</a>
|
||||
limits, to <strong>NOT</strong> end source with a newline. If you
|
||||
need to do this, please 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>
|
||||
<div id="rule14">
|
||||
<h2 id="rule-14---resubmit">Rule 14 - Resubmit</h2>
|
||||
<h2 id="rule-14---resubmitting-lost-submissions">Rule 14 - Resubmitting lost submissions</h2>
|
||||
</div>
|
||||
<p>Submissions that are substantially similar to previous winning IOCCC
|
||||
entries are discouraged.</p>
|
||||
<p>You are allowed to resubmit to a later contest, a submission that didn’t
|
||||
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
|
||||
didn’t previously win, then you are encouraged to mention this in your
|
||||
<code>remarks.md</code> file as this sometimes helps.</p>
|
||||
<p>You are allowed to resubmit to a later contest, a submission that didn’t win the
|
||||
IOCCC. If you do so, then you would be <strong>WELL ADVISED</strong> to try and enhance and
|
||||
improve your submission. If you do resubmit something that didn’t previously
|
||||
win, then you are encouraged to mention this in your <code>remarks.md</code> file as this
|
||||
<strong>sometimes</strong> helps.</p>
|
||||
<div id="rule15">
|
||||
<h2 id="rule-15---building">Rule 15 - Building</h2>
|
||||
<div id="rule15-gnu-makefile">
|
||||
<h2 id="rule-15---gnu-makefile">Rule 15 - GNU Makefile</h2>
|
||||
</div>
|
||||
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. Its recommended
|
||||
that you copy and rename the <code>Makefile.example</code> as a template. The primary
|
||||
target of the <code>Makefile</code> <strong>MUST</strong> be <code>prog</code> and the source file is <code>prog.c</code>.
|
||||
The C compiler and preprocessor <strong>MUST</strong> be invoked using <code>${CC}</code> and <code>${CPP}</code>
|
||||
macros respectively.</p>
|
||||
<p>The <code>clobber</code> target should clean and restore the submission directory
|
||||
tree to its original state, such as removing temporary files or any
|
||||
modified data files. Don’t assume that <code>git</code> tool chain is installed,
|
||||
i.e., do <strong>NOT</strong> expect <code>git clean -f</code> to work.</p>
|
||||
</div>
|
||||
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. It’s highly recommended
|
||||
that you copy the <a href="Makefile.example">Makefile.example</a> as a template, renaming
|
||||
it to <code>Makefile</code>. The primary target of the <code>Makefile</code> <strong>MUST</strong> be <code>prog</code> and
|
||||
the source file is <code>prog.c</code>. The C compiler and preprocessor <strong>MUST</strong> be
|
||||
invoked using <code>${CC}</code> and <code>${CPP}</code> macros respectively.</p>
|
||||
<p>The <code>clobber</code> target <strong>MUST</strong> clean and restore the submission directory tree to
|
||||
its original state, such as removing temporary files or any modified data files.
|
||||
Don’t assume that <code>git</code> tool chain is installed, i.e. do <strong>NOT</strong> expect <code>git clean -f</code> to work. To be clear: do <strong>NOT</strong> use <code>git</code> to clean out files as this
|
||||
can cause problems in the winner repo!</p>
|
||||
<p>The <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with
|
||||
<code>bash(1)</code> and GNU <code>make(1)</code>. You are encouraged to use <code>SHELL= bash</code> in your <code>Makefile</code>; please add a space between the <code>=</code> and
|
||||
the value such as:</p>
|
||||
@@ -734,25 +796,33 @@ Specification</a>
|
||||
environments and systems are available in the search
|
||||
<code>$PATH</code>. Avoid command options that aren’t part of
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">SUS</a>, such as
|
||||
GNU long name options <code>--example</code> or extensions like <code>grep -P</code>.</p>
|
||||
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment variable.</p>
|
||||
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
|
||||
<p>See <a href="guidelines.html#guideline-15---building">Guidelines for Rule 15 - Building</a>.</p>
|
||||
GNU long name options (such as <code>--example</code>) or extensions like <code>grep -P</code>.</p>
|
||||
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment
|
||||
variable.</p>
|
||||
<p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>.</p>
|
||||
<p>See
|
||||
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
|
||||
<p>See <a href="guidelines.html#guideline-15---building">Guidelines for Rule 15 - GNU Makefile</a>.</p>
|
||||
<div id="rule16">
|
||||
<h2 id="rule-16---anonymous">Rule 16 - Anonymous</h2>
|
||||
<div id="rule16-anonymous-judging">
|
||||
<h2 id="rule-16---anonymous-judging">Rule 16 - Anonymous judging</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>Your source code, data files, remarks, and program output <strong>MUST NOT</strong>
|
||||
identify the author(s) of your code (unless you are <strong>Peter Honeyman</strong>
|
||||
or pretending to be <strong>Peter Honeyman</strong>). In order to be impartial the
|
||||
<a href="https://www.ioccc.org/judges.html">Judges</a> do <strong>NOT</strong> know who is submitting
|
||||
entries to the IOCCC until final selection is made. Even if you are
|
||||
a past winner, you <strong>MUST NOT</strong> reveal your identity deliberately or by
|
||||
accident anywhere in your submission. <strong><em>Failure to comply may result
|
||||
in the submission being disqualified.</em></strong></p>
|
||||
programs to the IOCCC until final selection is made, and <strong>only</strong> submissions
|
||||
that won.</p>
|
||||
<p>Even if you are a past winner, you <strong>MUST NOT</strong> reveal your identity
|
||||
deliberately or by accident anywhere in your submission. <strong><em>Failure to comply
|
||||
may result in the submission being disqualified</em></strong>.</p>
|
||||
<div id="rule17">
|
||||
<h2 id="rule-17---packaging">Rule 17 - Packaging</h2>
|
||||
<div id="rule17-mkiocccentry">
|
||||
<h2 id="rule-17---use-mkiocccentry">Rule 17 - Use <code>mkiocccentry</code></h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>TL;DR: use <code>mkiocccentry(1)</code> to package your submission.</p>
|
||||
<p>The files, directories, and paths <strong>MUST</strong> conform to the limits imposed by
|
||||
<code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their names, count, path
|
||||
length, directory tree depth, and permissions.</p>
|
||||
@@ -763,33 +833,36 @@ directory depths of <strong>4</strong>. The maximum number of files, excluding
|
||||
component is <strong>38</strong> and maximum path length is <strong>60</strong>.</p>
|
||||
<p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball (i.e., tarball compressed by <code>xz(1)</code>)
|
||||
as constructed by <code>mkiocccentry(1)</code>, which <strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.</p>
|
||||
<p>The tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball.</p>
|
||||
<p>The tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball, and any supplementary tarballs
|
||||
you provide <strong>MUST</strong> also be <strong>v7 format</strong>.</p>
|
||||
<p>The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong> be
|
||||
less than <code>27651*1024</code> (<strong>28314624</strong>) bytes.</p>
|
||||
<p>The submission <strong>MUST</strong> be a tarball file that <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball
|
||||
filename <strong>MUST</strong> pass all <code>fnamchk(1)</code> checks.</p>
|
||||
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code>, <strong>NOR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.</p>
|
||||
<p>The submission <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball filename
|
||||
<strong>MUST</strong> pass all <code>fnamchk(1)</code> checks as well.</p>
|
||||
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code> <strong>OR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.</p>
|
||||
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
|
||||
current version of <code>chksubmit(1)</code>.</p>
|
||||
<p>Submissions may <strong>NOT</strong> use a
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
command line options that labeled as “<strong>for TESTING purposes</strong>”,
|
||||
<strong>NOR</strong> labeled as “<strong>for the use by the IOCCC judges only</strong>”,
|
||||
in their respective man pages.</p>
|
||||
<p>Submissions may <strong>ONLY</strong> use
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
command lines that confirm to the command’s <code>-h</code> “<em>print help message</em>”.</p>
|
||||
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2---size">Rule 2 - Size</a>
|
||||
size checks performed by <code>iocccsize(1)</code>.</p>
|
||||
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what <code>chksubmit(1)</code> generates.</p>
|
||||
<p>Any submission that fails to pass the checks performed by the most recent version of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
minimum required version of <code>chksubmit(1)</code>.</p>
|
||||
<p>Submissions may <strong>NOT</strong> use a <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
toolkit</a> command line options that
|
||||
are labelled as “<strong>for TESTING purposes</strong>”, <strong>OR</strong> labelled as “<strong>for the use by
|
||||
the IOCCC judges only</strong>”, in their respective man pages.</p>
|
||||
<p>Submissions may <strong>ONLY</strong> use <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
toolkit</a> command lines that confirm
|
||||
to the command’s <code>-h</code> “<em>print help message</em>”, again notwithstanding the options
|
||||
for testing and the IOCCC judges.</p>
|
||||
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule2-size">Rule 2 - Size</a>
|
||||
checks performed by <code>iocccsize(1)</code>.</p>
|
||||
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
|
||||
<code>mkiocccentry(1)</code> generates.</p>
|
||||
<p>Any submission that fails to pass the checks performed by the minimum required
|
||||
version of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
<strong>WILL be rejected</strong>!</p>
|
||||
<p>See <a href="rules.html#rule-4---files">Rule 4 - Files</a>.</p>
|
||||
<p>See FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it?</a>”.</p>
|
||||
<p>See <a href="guidelines.html#guideline-17---packaging">Guidelines for Rule 17 - Packaging</a>.</p>
|
||||
<p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it?</a>”.</p>
|
||||
<p>See the <a href="guidelines.html#guideline-17---packaging">Guidelines for Rule 17 - Use mkiocccentry</a>.</p>
|
||||
<div id="rule18">
|
||||
<h2 id="rule-18---license">Rule 18 - License</h2>
|
||||
<h2 id="rule-18---submission-license">Rule 18 - Submission license</h2>
|
||||
</div>
|
||||
<p>The entirety of your submission <strong>MUST</strong> be submitted under the following license:</p>
|
||||
<p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></p>
|
||||
@@ -800,14 +873,14 @@ size checks performed by <code>iocccsize(1)</code>.</p>
|
||||
<p>This 19th rule, while prime, is reserved for future abuse 😁.
|
||||
Additional rules, both humorous and otherwise, may be added
|
||||
below this rule in future contests.</p>
|
||||
<p>See <a href="rules.html#rule-6---free">Rule 6 - Free</a>.</p>
|
||||
<p>See <a href="rules.html#rule6-free-rule">Rule 6 - Free Rule</a>.</p>
|
||||
<h2 id="further-reading">Further Reading</h2>
|
||||
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further commentary on these rules.</p>
|
||||
<p>Read the
|
||||
<a href="https://www.ioccc.org/quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>
|
||||
for an overview of how to enter the contest.</p>
|
||||
<p>See also the <a href="../faq.html">FAQ</a>.</p>
|
||||
<p>And now <a href="guidelines.html#fun">for something completely different</a></p>
|
||||
<p>And now <a href="guidelines.html#fun">for something completely different</a>.</p>
|
||||
<p>Consider joining the <a href="https://discord.com/invite/Wa42Qujwnw">IOCCC Discord Server</a>
|
||||
for discussions about The Rules, questions for the Judges, and <code>C</code> in general.</p>
|
||||
<p>Leonid A. Broukhis
|
||||
|
||||
+238
-150
@@ -29,7 +29,7 @@ app from time to time to view IOCCC mastodon updates.
|
||||
|
||||
# 29th International Obfuscated C Code Contest Official Rules
|
||||
|
||||
Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.
|
||||
Copyright (c) 2025 Leonid A. Broukhis and Landon Curt Noll.
|
||||
|
||||
All Rights Reserved. Permission for personal, education or non-profit use is
|
||||
granted provided this copyright and notice are included in its entirety
|
||||
@@ -39,24 +39,25 @@ writing by [contacting the judges](../contact.html).
|
||||
|
||||
## Rules Version
|
||||
|
||||
These IOCCC Rules are version **29.08 2025-11-28**.
|
||||
These IOCCC Rules are version **29.09 2025-11-29**.
|
||||
|
||||
Be sure to read the [IOCCC guidelines](guidelines.html).
|
||||
Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
|
||||
|
||||
|
||||
<div id="rule0">
|
||||
## Rule 0 - Dates
|
||||
</div>
|
||||
|
||||
This IOCCC runs from **2025-12-03 20:25:12.045045 UTC** to **2026-03-13 17:19:23.293137 UTC**.
|
||||
This IOCCC runs from `2025-12-03 20:25:12.045045 UTC` to `2026-03-13
|
||||
17:19:23.293137 UTC`.
|
||||
|
||||
This contest will enter the **pending state** on **2025-12-03 20:25:12.045045 UTC**,
|
||||
This contest will enter the **pending state** on `2025-12-03 20:25:12.045045 UTC`,
|
||||
allowing people to register for the IOCCC.
|
||||
|
||||
This contest will enter the **open state** on **2025-12-15 18:21:24.273033 UTC**,
|
||||
This contest will enter the **open state** on `2025-12-15 18:21:24.273033 UTC`,
|
||||
allowing people to upload submissions to the [IOCCC submit server](https://submit.ioccc.org).
|
||||
|
||||
This contest will enter the **judging state** on **2026-03-13 17:19:23.293137 UTC**,
|
||||
This contest will enter the **judging state** on `2026-03-13 17:19:23.293137 UTC`,
|
||||
when people will no longer be allowed to upload submissions.
|
||||
|
||||
Until the contest enters the **open** state, any or all
|
||||
@@ -64,57 +65,81 @@ of the above **dates and times may change _AT ANY TIME_**!
|
||||
|
||||
The above timestamps are in "_YYYY-MM-DD HH:MM:SS.micros UTC_" format.
|
||||
|
||||
See [Current status of the IOCCC](../status.html).
|
||||
See the [current status of the IOCCC](../status.html).
|
||||
|
||||
|
||||
<div id="rule1">
|
||||
## Rule 1 - Program
|
||||
## Rule 1 - C program
|
||||
</div>
|
||||
|
||||
Your submission **MUST** be a C program.
|
||||
Your submission **MUST** be a C program that does NOT `#include` data files.
|
||||
|
||||
|
||||
<div id="rule2">
|
||||
## Rule 2 - Size
|
||||
<div id="rule2-size-restrictions">
|
||||
<div id="rule2-size">
|
||||
<div id="rule-2---size">
|
||||
## Rule 2 - Size restrictions
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
`Rule 2` requires that your submission satisfy **BOTH**
|
||||
[Rule 2a Gross Size](rules.html#rule-2a-gross-size)
|
||||
[Rule 2a (Gross Size)](rules.html#rule2a)
|
||||
and
|
||||
[Rule 2b Next Size](rules.html#rule-2b-net-size).
|
||||
[Rule 2b (Net Size)](rules.html#rule2b).
|
||||
During development this can be checked using `iocccsize(1)`:
|
||||
|
||||
``` <!---sh-->
|
||||
iocccsize prog.c
|
||||
```
|
||||
|
||||
See [Guidelines for Rule 2 - Size](guidelines.html#guideline-2---size).
|
||||
See the [Guidelines for Rule 2 - Size restrictions](guidelines.html#guideline-2---size).
|
||||
|
||||
|
||||
<div id="rule2a">
|
||||
<div id="rule2a-gross-size">
|
||||
<div id="rule-2a-gross-size">
|
||||
### Rule 2a - Gross Size
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
The overall maximum size of your `prog.c` program source **MUST NOT**
|
||||
exceed **4993** bytes.
|
||||
|
||||
**NOTE**: by default `iocccsize` will only report the rule 2b size, unless the
|
||||
code surpasses the limit.
|
||||
|
||||
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
|
||||
|
||||
|
||||
<div id="rule2b">
|
||||
<div id="rule2b-net-size">
|
||||
<div id="rule-2b-net-size">
|
||||
### Rule 2b - Net Size
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
When the filename of your program source (i.e., `prog.c`) is given as a
|
||||
command line argument to the latest version of the official IOCCC size
|
||||
tool (hereby referred to as `iocccsize(1)`), the value printed **MUST
|
||||
NOT** exceed **2503**.
|
||||
|
||||
**NOTE**: `iocccsize` does **NOT** calculate the filename length. See [Rule 17 -
|
||||
Use mkiocccentry](#rule17-mkiocccentry).
|
||||
|
||||
|
||||
<div id="rule3">
|
||||
## Rule 3 - Register
|
||||
<div id="rule3-register">
|
||||
## Rule 3 - Register for the IOCCC
|
||||
</div>
|
||||
</div>
|
||||
|
||||
You **MUST** register, using a valid email address, in order to submit
|
||||
entries to the IOCCC. You may register while the contest is **pending** or **open**.
|
||||
to the IOCCC. You may register while the contest is **pending** or **open**.
|
||||
|
||||
A few days after registering, you'll receive your UUID username and
|
||||
temporary password, which you **MUST** change within 14 days. If you
|
||||
@@ -129,51 +154,69 @@ email or for those who wait until the last minute to try to register!
|
||||
|
||||
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
|
||||
|
||||
See [Rule 8 - Submission](rules.html#rule-8---submission).
|
||||
See [Rule 8 - Submitting requirements](rules.html#rule8).
|
||||
|
||||
See [Guidelines for Rule 3 - Register](guidelines.html#guideline-3---register).
|
||||
See [Guidelines for Rule 3 - Register for the IOCCC](guidelines.html#guideline-3---register).
|
||||
|
||||
|
||||
<div id="rule4">
|
||||
## Rule 4 - Files
|
||||
<div id="rule4-required-files">
|
||||
## Rule 4 - Required files
|
||||
</div>
|
||||
</div>
|
||||
|
||||
The submission **MUST** include at least these files: `Makefile`, `prog.c`,
|
||||
`remarks.md`,`.info.json`, and `.auth.json`.
|
||||
Your submission **MUST** include at least these files: `Makefile`, `prog.c`,
|
||||
`remarks.md`,`.info.json`, and `.auth.json`, the latter two of which are
|
||||
generated by `mkiocccentry(1)`. See [Rule 17 -
|
||||
Use mkiocccentry](#rule17-mkiocccentry).
|
||||
|
||||
At a minimum the following requirements apply. Additional requirements
|
||||
At a **minimum** the following requirements apply. Additional requirements
|
||||
may be imposed by `mkiocccentry(1)` updates that have yet to be listed
|
||||
here:
|
||||
below.
|
||||
|
||||
* `.info.json`, and `.auth.json` **MUST** be generated by `mkiocccenty(1)`
|
||||
when packing a submission, and **MUST** pass the `chksubmit(1)` tests.
|
||||
**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited
|
||||
files.
|
||||
|
||||
**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`,
|
||||
`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and
|
||||
`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`.
|
||||
|
||||
|
||||
* `.info.json` and `.auth.json` **MUST** be generated by `mkiocccenty(1)`
|
||||
when packing a submission. When `chksubmit(1)` is run on the submission
|
||||
directory **ALL** tests must pass and if there is **ANY** problem with these
|
||||
JSON files or if either is missing it will fail. See [Rule 17 - use
|
||||
mkiocccentry](#rule17-mkiocccentry).
|
||||
|
||||
* The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json` **MUST**
|
||||
have a file size **greater than 0**.
|
||||
have a file size **greater than 0** and **MUST** have content. Note that
|
||||
`mkiocccentry(1)` will check for file **size** but will **NOT** check for
|
||||
content.
|
||||
|
||||
* Your submitted source code **MUST** be called `prog.c`. When the `Makefile`
|
||||
* Your submitted source code **MUST** be called `prog.c`. When the `Makefile`
|
||||
compiles your code, the executable (if applicable) **MUST** be called `prog`.
|
||||
The `Makefile` may compile your source code into other filenames as well.
|
||||
The `Makefile` may compile your source code into other filenames as well, if you
|
||||
want.
|
||||
|
||||
* As `prog`, `prog.alt`, `prog.alt.o`, `prog.o` may be created by your
|
||||
`Makefile`, your submission **MUST NOT** include those files in
|
||||
your top directory, as original content.
|
||||
`Makefile`, your submission **MUST NOT** include those files in your **top**
|
||||
directory.
|
||||
|
||||
* Your submission may **NOT** have any file that starts with `COPYING`,
|
||||
`COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC.
|
||||
|
||||
* Your submission may **NOT** have in the top directory, `prog.orig.c`,
|
||||
`README.md`, nor `index.html` as those files reserved by IOCCC.
|
||||
* Your submission may **NOT** have in the **top** directory: `prog.orig.c`,
|
||||
`README.md` or `index.html` as those files are reserved by the IOCCC.
|
||||
|
||||
* Your submission may **NOT** have in the top directory, any file
|
||||
* Your submission may **NOT** have in the **top** directory any file
|
||||
that matches a file glob pattern form `[0-9][0-9][0-9][0-9]_*.tar.bz2`
|
||||
as those files are reserved by IOCCC.
|
||||
|
||||
* Your submission may **ONLY** contain files and directories. Other file
|
||||
types such as symlinks, sockets, etc are **NOT** allowed.
|
||||
types such as symlinks, sockets etc. are **NOT** allowed.
|
||||
|
||||
* All directories **MUST** have a file mode of **0755**. All files
|
||||
**MUST** have the file mode of **0444**, except for files that
|
||||
* **All** directories **MUST** have permission mode of **0755**. All files
|
||||
**MUST** have the file mode of **0444**, EXCEPT for files that
|
||||
end in `.sh` which must have a mode of **0555**.
|
||||
|
||||
* All files that end in `.md` **MUST** be in markdown format.
|
||||
@@ -190,32 +233,36 @@ The `remarks.md` and `Makefile` are explained in more detail in the Guidelines.
|
||||
|
||||
See [IOCCC markdown guidelines](../markdown.html).
|
||||
|
||||
See [Rule 17 - Packaging](rules.html#rule-17---packaging).
|
||||
See [Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry).
|
||||
|
||||
See FAQ on "[What permissions may my files be and what if I need different permissions?](../faq.html#file_perms)".
|
||||
See the
|
||||
FAQ on "[What permissions may my files be and what if I need different permissions?](../faq.html#file_perms)".
|
||||
|
||||
See [Guidelines for the mkiocccentry toolkit](guidelines.html#mkiocccentry_toolkit).
|
||||
See the [Guidelines on the mkiocccentry toolkit](guidelines.html#mkiocccentry_toolkit).
|
||||
|
||||
See [Guidelines for the Makefile](guidelines.html#makefile).
|
||||
See the
|
||||
FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)".
|
||||
|
||||
|
||||
<div id="rule5">
|
||||
## Rule 5 - Integrity
|
||||
<div id="rule5-modifying-files">
|
||||
## Rule 5 - Do NOT modify submitted files or filenames or parent directories
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Your submission **MUST NOT** modify the filenames or content of any of
|
||||
your original submission, such as `prog.c`, `Makefile`, or any supplied
|
||||
data files. To modify files, your program can make a copy or you can
|
||||
use the `Makefile` to setup working copies. Any working copies **MUST** be
|
||||
cleaned up by the `Makefile` `clobber` target, so as to restore the
|
||||
directory to its original state.
|
||||
Your submission **MUST NOT** modify the filenames or content of any of your
|
||||
original submission, such as `prog.c`, `Makefile`, or **ANY** other supplied
|
||||
files. To modify files, your program can make a copy or you can use the
|
||||
`Makefile` to setup working copies. Any working copies **MUST** be cleaned up
|
||||
by the `Makefile` `clobber` target, so as to restore the directory to its
|
||||
original state.
|
||||
|
||||
Your submission **MUST NOT** create or modify directories and files
|
||||
ABOVE the current directory with the exception of the `/tmp` and the
|
||||
`/var/tmp` directories as long as the directory name or filename does
|
||||
**NOT** start with "." (dot).
|
||||
ABOVE the current directory (with the exception of the `/tmp` and the `/var/tmp`
|
||||
directories and as long as the directory name or filename does **NOT** start
|
||||
with a `.` (dot)).
|
||||
|
||||
The `Makefile` `clobber` target **MUST** be restore your submission into
|
||||
The `Makefile` `clobber` target **MUST** restore your submission to its
|
||||
original form, including the removal of any created files and directories.
|
||||
|
||||
Your code should be able to run under a
|
||||
@@ -223,7 +270,9 @@ Your code should be able to run under a
|
||||
|
||||
|
||||
<div id="rule6">
|
||||
## Rule 6 - Free
|
||||
<div id="rule6-free-rule">
|
||||
## Rule 6 - Free Rule
|
||||
</div>
|
||||
</div>
|
||||
|
||||
I am **NOT** a Rule, I am a `free(void *human);` ‼️
|
||||
@@ -237,92 +286,110 @@ See [Rule 19 - Prime](rules.html#rule-19---prime).
|
||||
|
||||
|
||||
<div id="rule7">
|
||||
<div id="rule7-original-work">
|
||||
## Rule 7 - Original Work
|
||||
</div>
|
||||
</div>
|
||||
|
||||
You, the author(s), **MUST** own the contents of your submission, or you **MUST**
|
||||
have permission from the original owner(s) to its use. If you submit
|
||||
any content that is owned by others, you **MUST** detail that ownership,
|
||||
i.e., who owns what, and document the permission you obtained from them
|
||||
in your `remarks.md` file.
|
||||
You, the author(s), **MUST** own the contents of your submission, **OR**, IF you
|
||||
do **NOT** own the work, then you **MUST** have permission from the original
|
||||
owner(s) to its use. If you submit **ANY** content that is owned by others, you
|
||||
**MUST** detail that ownership, i.e., who owns what, and document the permission
|
||||
you obtained from them in your `remarks.md` file.
|
||||
|
||||
You are permitted to use tools to write your code.
|
||||
|
||||
See [Rule 16 - Anonymous](rules.html#rule-16---anonymous).
|
||||
See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging).
|
||||
|
||||
See [Guidelines for Rule 7 - Original Work](guidelines.html#guideline-7---original-work).
|
||||
|
||||
|
||||
<div id="rule8">
|
||||
## Rule 8 - Submission
|
||||
<div id="rule8-submitting-requirements">
|
||||
## Rule 8 - Submitting requirements
|
||||
</div>
|
||||
</div>
|
||||
|
||||
The Submit Server will only accept submissions from those who have
|
||||
registered and only while the contest is open.
|
||||
The submit server will accept submissions **ONLY** from those who have
|
||||
registered and **ONLY** while the contest is open.
|
||||
|
||||
The Submit Server places a total submission size limit of **3999971** bytes.
|
||||
The submit server places a total size limit of **3999971** bytes **PER**
|
||||
submission.
|
||||
|
||||
Each account has ten (**10.000**) submission slots (**0..9)**. Each submission
|
||||
slot should be annotated by the server as to whether its was received,
|
||||
processed, malformed, etc. Please take note of any errors, rectify,
|
||||
and resubmit. In order to avoid potential packaging errors, it is **highly
|
||||
recommended** to use `mkiocccentry(1)`.
|
||||
and resubmit. In order to avoid potential packaging errors, it is **highly
|
||||
recommended** to use `mkiocccentry(1)`, **AND** to check from time to time the
|
||||
status on the submit server, to see if any tests run by the server failed to
|
||||
validate your submission.
|
||||
|
||||
Do **NOT** register more than one account!
|
||||
|
||||
See
|
||||
[Rule 3 - Register](rules.html#rule-3---register),
|
||||
[Rule 15 - Building](rules.html#rule-15---building),
|
||||
[Rule 3 - Registering for the IOCCC](rules.html#rule3-register),
|
||||
[Rule 15 - GNU Makefile](rules.html#rule15-gnu-makefile),
|
||||
and
|
||||
[Rule 17 - Packaging](rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry).
|
||||
|
||||
|
||||
<div id="rule9">
|
||||
## Rule 9 - No hands
|
||||
## Rule 9 - No interactive compiling allowed
|
||||
</div>
|
||||
|
||||
Entries requiring human interaction to be initially compiled are **NOT**
|
||||
permitted. However, see the guidelines. Each entry **MUST** automate the
|
||||
build process using `bash`, `gmake`, `gcc`, `clang`, under a
|
||||
[SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
|
||||
permitted. However, see the guidelines. Each entry **MUST** automate the
|
||||
build process using `bash`, `gmake`, `gcc` and/or `clang` and other commonly
|
||||
available tools under an [SUS
|
||||
environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
|
||||
|
||||
**NOTE**: The references to `gmake(1)` can be any GNU Make compatible tool.
|
||||
|
||||
See [Rule 15 - Building](rules.html#rule-15---building).
|
||||
**NOTE**: it is better to use the `${MAKE}` variable as then one may override
|
||||
the make command.
|
||||
|
||||
**NOTE**: it is better and more portable to **NOT** modify the `${CC}` variable
|
||||
in the Makefile.
|
||||
|
||||
See [Rule 15 - GNU Makefile](rules.html#rule15-gnu-makefile).
|
||||
|
||||
|
||||
<div id="rule10">
|
||||
## Rule 10 - Privileges
|
||||
## Rule 10 - Program file permissions
|
||||
</div>
|
||||
|
||||
Programs that require special privileges (`setuid(2)`, `setgid(2)`,
|
||||
super-user, special owner, special group, etc.) are **HIGHLY DISCOURAGED**.
|
||||
We do **NOT** guarantee these functions will behave as you expect on our
|
||||
test platforms. If your program needs special permissions you **MUST**
|
||||
test platforms. If your program needs special permissions you **MUST**
|
||||
document this fact and explain why it is needed in your submission’s
|
||||
`remarks.md` file.
|
||||
`remarks.md` file, preferably close to the top.
|
||||
|
||||
Furthermore, if you need a supplementary program that you include to
|
||||
have these permissions, you will also have to explain this, because these
|
||||
have these permissions, you will also have to explain this as well, because these
|
||||
bits are **NOT** allowed in submissions and those bits will **NOT** be copied by
|
||||
`mkiocccentry(1)`.
|
||||
|
||||
See [Rule 4 - Files](rules.html#rule-4---files),
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files),
|
||||
and
|
||||
[Rule 5 - Integrity](rules.html#rule-5---integrity).
|
||||
[Rule 5 - Do NOT modify files](rules.html#rule5-modifying-files).
|
||||
|
||||
|
||||
<div id="rule11">
|
||||
## Rule 11 - Abuse
|
||||
<div id="rule11-legal-rule-abuse">
|
||||
## Rule 11 - Legal rule abuse
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Legal abuse of the rules is somewhat encouraged, but comes with risks.
|
||||
A submission that, in the opinion of the Judges, violates the rules **WILL
|
||||
Legal abuse of the rules is **somewhat** encouraged, but comes with risks.
|
||||
A submission that, in the opinion of the Judges, **violates** the rules **WILL
|
||||
BE DISQUALIFIED**. Submissions that plan to abuse the rules **MUST** justify
|
||||
why their rule abuse is legal (or interesting) in the `remarks.md` file.
|
||||
|
||||
Submission packaging abuse will **NOT** be tolerated and for this reason
|
||||
its recommended to use `mkiocccentry(1)`. During development you can
|
||||
check your `prog.c` size limits using `iocccsize(1)`, e.g., `iocccsize -v1 prog.c`.
|
||||
Overriding problems detected by any of the IOCCC tools
|
||||
Submission packaging abuse will **NOT** be tolerated and for this reason,
|
||||
amongst many others, it is recommended that you use `mkiocccentry(1)`. During
|
||||
development you can check your `prog.c` size limits using `iocccsize(1)`, e.g.,
|
||||
`iocccsize -v1 prog.c`. Overriding problems detected by any of the IOCCC tools
|
||||
risks that the submission will be rejected.
|
||||
|
||||
If you do submit a rule abusing or violating submission, then consider
|
||||
@@ -331,22 +398,26 @@ slot that does **NOT** violate the rules in case your rule abuse excuse
|
||||
is rejected.
|
||||
|
||||
**IMPORTANT**: If you do submit such an alternate non-rule abusing
|
||||
version, please indicate that in your `remarks.md` file of your non-rule
|
||||
abusing version so that the Judges don't think you uploaded a duplicate
|
||||
into a wrong slot by mistake.
|
||||
version, **PLEASE** indicate that in your `remarks.md` file of your non-rule
|
||||
abusing version so that the Judges don't think you uploaded a duplicate into a
|
||||
wrong slot by mistake.
|
||||
|
||||
See [Guidelines for Rule 11 - Abuse](guidelines.html#guideline-11---abuse).
|
||||
See [Guidelines for Rule 11 - Legal rule
|
||||
abuse](guidelines.html#guideline-11---abuse).
|
||||
|
||||
|
||||
<div id="rule12">
|
||||
<div id="rule12-utf8">
|
||||
## Rule 12 - UTF-8
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Use of UTF-8 is supported by `C89` standard and its updates and so too by the IOCCC.
|
||||
Use of UTF-8 is supported by `C89` standard and its updates and so too by the
|
||||
IOCCC.
|
||||
|
||||
|
||||
<div id="rule13">
|
||||
## Rule 13 - Newlines
|
||||
## Rule 13 - No carriage returns in prog.c
|
||||
</div>
|
||||
|
||||
Any C source that fails to compile because lines contain carriage-returns
|
||||
@@ -356,91 +427,104 @@ or `remarks.md` files, but instead end lines with Unix newline (line-feed,
|
||||
CTRL+J, `\n`).
|
||||
|
||||
You are permitted, in order to try and squeeze your `prog.c` under a
|
||||
[Rule 2a Gross Size](rules.html#rule-2a-gross-size) and/or
|
||||
[Rule 2b Next Size](rules.html#rule-2b-net-size)
|
||||
limits, to **NOT** end source with a newline. If you
|
||||
[Rule 2a Gross Size](rules.html#rule2a-gross-size) and/or
|
||||
[Rule 2b Net Size](rules.html#rule2b-net-size)
|
||||
limits, to **NOT** end source with a newline. If you
|
||||
need to do this, please document that in your `remarks.md` file and if
|
||||
your compiler complains about this, document this too and update your
|
||||
`Makefile` to account for this.
|
||||
|
||||
|
||||
<div id="rule14">
|
||||
## Rule 14 - Resubmit
|
||||
## Rule 14 - Resubmitting lost submissions
|
||||
</div>
|
||||
|
||||
Submissions that are substantially similar to previous winning IOCCC
|
||||
entries are discouraged.
|
||||
|
||||
You are allowed to resubmit to a later contest, a submission that didn't
|
||||
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
|
||||
didn't previously win, then you are encouraged to mention this in your
|
||||
`remarks.md` file as this sometimes helps.
|
||||
You are allowed to resubmit to a later contest, a submission that didn't 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 didn't previously
|
||||
win, then you are encouraged to mention this in your `remarks.md` file as this
|
||||
**sometimes** helps.
|
||||
|
||||
|
||||
<div id="rule15">
|
||||
## Rule 15 - Building
|
||||
<div id="rule15-gnu-makefile">
|
||||
## Rule 15 - GNU Makefile
|
||||
</div>
|
||||
</div>
|
||||
|
||||
The `Makefile` **MUST** adhere to GNU Makefile syntax. Its recommended
|
||||
that you copy and rename the `Makefile.example` as a template. The primary
|
||||
target of the `Makefile` **MUST** be `prog` and the source file is `prog.c`.
|
||||
The C compiler and preprocessor **MUST** be invoked using `${CC}` and `${CPP}`
|
||||
macros respectively.
|
||||
The `Makefile` **MUST** adhere to GNU Makefile syntax. It's highly recommended
|
||||
that you copy the [Makefile.example](Makefile.example) as a template, renaming
|
||||
it to `Makefile`. The primary target of the `Makefile` **MUST** be `prog` and
|
||||
the source file is `prog.c`. The C compiler and preprocessor **MUST** be
|
||||
invoked using `${CC}` and `${CPP}` macros respectively.
|
||||
|
||||
The `clobber` target should clean and restore the submission directory
|
||||
tree to its original state, such as removing temporary files or any
|
||||
modified data files. Don't assume that `git` tool chain is installed,
|
||||
i.e., do **NOT** expect `git clean -f` to work.
|
||||
The `clobber` target **MUST** clean and restore the submission directory tree to
|
||||
its original state, such as removing temporary files or any modified data files.
|
||||
Don't assume that `git` tool chain is installed, i.e. do **NOT** expect `git
|
||||
clean -f` to work. To be clear: do **NOT** use `git` to clean out files as this
|
||||
can cause problems in the winner repo!
|
||||
|
||||
The `Makefile` **MUST** use a syntax that is compatible with
|
||||
`bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL=
|
||||
`bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL=
|
||||
bash` in your `Makefile`; please add a space between the `=` and
|
||||
the value such as:
|
||||
|
||||
``` <!---sh-->
|
||||
``` <!---makefile-->
|
||||
SHELL= bash
|
||||
```
|
||||
Assume that commands commonly found in [Single UNIX
|
||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||
environments and systems are available in the search
|
||||
`$PATH`. Avoid command options that aren't part of
|
||||
`$PATH`. Avoid command options that aren't part of
|
||||
[SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification), such as
|
||||
GNU long name options `--example` or extensions like `grep -P`.
|
||||
GNU long name options (such as `--example`) or extensions like `grep -P`.
|
||||
|
||||
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable.
|
||||
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment
|
||||
variable.
|
||||
|
||||
See [Rule 4 - Files](rules.html#rule-4---files).
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files).
|
||||
|
||||
See FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)".
|
||||
See
|
||||
FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)".
|
||||
|
||||
See [Guidelines for Rule 15 - Building](guidelines.html#guideline-15---building).
|
||||
See [Guidelines for Rule 15 - GNU Makefile](guidelines.html#guideline-15---building).
|
||||
|
||||
|
||||
<div id="rule16">
|
||||
## Rule 16 - Anonymous
|
||||
<div id="rule16-anonymous-judging">
|
||||
## Rule 16 - Anonymous judging
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Your source code, data files, remarks, and program output **MUST NOT**
|
||||
identify the author(s) of your code (unless you are **Peter Honeyman**
|
||||
or pretending to be **Peter Honeyman**). In order to be impartial the
|
||||
or pretending to be **Peter Honeyman**). In order to be impartial the
|
||||
[Judges](https://www.ioccc.org/judges.html) do **NOT** know who is submitting
|
||||
entries to the IOCCC until final selection is made. Even if you are
|
||||
a past winner, you **MUST NOT** reveal your identity deliberately or by
|
||||
accident anywhere in your submission. ***Failure to comply may result
|
||||
in the submission being disqualified.***
|
||||
programs to the IOCCC until final selection is made, and **only** submissions
|
||||
that won.
|
||||
|
||||
Even if you are a past winner, you **MUST NOT** reveal your identity
|
||||
deliberately or by accident anywhere in your submission. **_Failure to comply
|
||||
may result in the submission being disqualified_**.
|
||||
|
||||
|
||||
<div id="rule17">
|
||||
## Rule 17 - Packaging
|
||||
<div id="rule17-mkiocccentry">
|
||||
## Rule 17 - Use `mkiocccentry`
|
||||
</div>
|
||||
</div>
|
||||
|
||||
TL;DR: use `mkiocccentry(1)` to package your submission.
|
||||
|
||||
The files, directories, and paths **MUST** conform to the limits imposed by
|
||||
`mkiocccentry(1)`, including but **NOT** limited, to their names, count, path
|
||||
length, directory tree depth, and permissions.
|
||||
|
||||
The submission tree may have at most **13** directories and maximum
|
||||
directory depths of **4**. The maximum number of files, excluding
|
||||
directory depths of **4**. The maximum number of files, excluding
|
||||
`prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`, `try.alt.sh`,
|
||||
`.info.json` and `.auth.json` is **31**. And the maximum file-path
|
||||
component is **38** and maximum path length is **60**.
|
||||
@@ -448,47 +532,51 @@ component is **38** and maximum path length is **60**.
|
||||
The submission **MUST** be a `.txz` compressed tarball (i.e., tarball compressed by `xz(1)`)
|
||||
as constructed by `mkiocccentry(1)`, which **MUST** be within **[1..3999971]** bytes in size.
|
||||
|
||||
The tarball **MUST** be a **v7 format** tarball.
|
||||
The tarball **MUST** be a **v7 format** tarball, and any supplementary tarballs
|
||||
you provide **MUST** also be **v7 format**.
|
||||
|
||||
The sum of all file lengths, after unpacking from the tarball, **MUST** be
|
||||
less than `27651*1024` (**28314624**) bytes.
|
||||
|
||||
The submission **MUST** be a tarball file that **MUST** pass all `txzchk(1)` checks, and the tarball
|
||||
filename **MUST** pass all `fnamchk(1)` checks.
|
||||
The submission **MUST** pass all `txzchk(1)` checks, and the tarball filename
|
||||
**MUST** pass all `fnamchk(1)` checks as well.
|
||||
|
||||
You may **NOT** submit a tarball created by the `-d`, `-e`, **NOR** by the `-s seed` options of `mkiocccentry(1)`.
|
||||
You may **NOT** submit a tarball created by the `-d`, `-e` **OR** by the `-s
|
||||
seed` options of `mkiocccentry(1)`.
|
||||
|
||||
The unpacked submission directory **MUST** pass the checks performed by the
|
||||
current version of `chksubmit(1)`.
|
||||
minimum required version of `chksubmit(1)`.
|
||||
|
||||
Submissions may **NOT** use a
|
||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
command line options that labeled as "**for TESTING purposes**",
|
||||
**NOR** labeled as "**for the use by the IOCCC judges only**",
|
||||
in their respective man pages.
|
||||
Submissions may **NOT** use a [mkiocccentry
|
||||
toolkit](https://github.com/ioccc-src/mkiocccentry) command line options that
|
||||
are labelled as "**for TESTING purposes**", **OR** labelled as "**for the use by
|
||||
the IOCCC judges only**", in their respective man pages.
|
||||
|
||||
Submissions may **ONLY** use
|
||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
command lines that confirm to the command's `-h` "_print help message_".
|
||||
Submissions may **ONLY** use [mkiocccentry
|
||||
toolkit](https://github.com/ioccc-src/mkiocccentry) command lines that confirm
|
||||
to the command's `-h` "_print help message_", again notwithstanding the options
|
||||
for testing and the IOCCC judges.
|
||||
|
||||
The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule-2---size)
|
||||
size checks performed by `iocccsize(1)`.
|
||||
The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule2-size)
|
||||
checks performed by `iocccsize(1)`.
|
||||
|
||||
The `.auth.json` and `.info.json` files **MUST** be compatible with what `chksubmit(1)` generates.
|
||||
The `.auth.json` and `.info.json` files **MUST** be compatible with what
|
||||
`mkiocccentry(1)` generates.
|
||||
|
||||
Any submission that fails to pass the checks performed by the most recent version of the
|
||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
Any submission that fails to pass the checks performed by the minimum required
|
||||
version of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
**WILL be rejected**!
|
||||
|
||||
See [Rule 4 - Files](rules.html#rule-4---files).
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files).
|
||||
|
||||
See FAQ on "[What is the mkiocccentry tool, how do I obtain it and how do I use it?](../faq.html#mkiocccentry)".
|
||||
See the
|
||||
FAQ on "[What is the mkiocccentry tool, how do I obtain it and how do I use it?](../faq.html#mkiocccentry)".
|
||||
|
||||
See [Guidelines for Rule 17 - Packaging](guidelines.html#guideline-17---packaging).
|
||||
See the [Guidelines for Rule 17 - Use mkiocccentry](guidelines.html#guideline-17---packaging).
|
||||
|
||||
|
||||
<div id="rule18">
|
||||
## Rule 18 - License
|
||||
## Rule 18 - Submission license
|
||||
</div>
|
||||
|
||||
The entirety of your submission **MUST** be submitted under the following license:
|
||||
@@ -506,7 +594,7 @@ This 19th rule, while prime, is reserved for future abuse 😁.
|
||||
Additional rules, both humorous and otherwise, may be added
|
||||
below this rule in future contests.
|
||||
|
||||
See [Rule 6 - Free](rules.html#rule-6---free).
|
||||
See [Rule 6 - Free Rule](rules.html#rule6-free-rule).
|
||||
|
||||
|
||||
## Further Reading
|
||||
@@ -519,7 +607,7 @@ for an overview of how to enter the contest.
|
||||
|
||||
See also the [FAQ](../faq.html).
|
||||
|
||||
And now [for something completely different](guidelines.html#fun)
|
||||
And now [for something completely different](guidelines.html#fun).
|
||||
|
||||
Consider joining the [IOCCC Discord Server](https://discord.com/invite/Wa42Qujwnw)
|
||||
for discussions about The Rules, questions for the Judges, and `C` in general.
|
||||
|
||||
+4
-4
@@ -452,7 +452,7 @@
|
||||
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: next/submit.md -->
|
||||
<p>Use mkiocccentry to rebuild# How to upload your submission to the IOCCC</p>
|
||||
<h1 id="how-to-upload-your-submission-to-the-ioccc">How to upload your submission to the IOCCC</h1>
|
||||
<p><strong>IMPORTANT NOTE</strong>: The <a href="https://submit.ioccc.org">IOCCC submit server</a>
|
||||
is only ready for submissions
|
||||
<strong>ONLY WHEN THE CONTEST IS <a href="../faq.html#open">open</a></strong>.</p>
|
||||
@@ -518,7 +518,7 @@ the file selection step.</p>
|
||||
<li>the status of the submission</li>
|
||||
<li>the filename, which will be in the correct format, assuming you used
|
||||
<code>mkiocccentry(1)</code> which is <strong>HIGHLY</strong> recommended so that you do not break
|
||||
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</li>
|
||||
<a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</li>
|
||||
<li>the file length, which <code>txzchk(1)</code> will also verify (the file itself and the
|
||||
tarball listing).</li>
|
||||
<li>the upload date.</li>
|
||||
@@ -576,7 +576,7 @@ To see any status updates, you should logout and log back in later.</p>
|
||||
<p>… or <strong>ANY</strong> other error then you <strong>MUST FIX</strong> your submission, repackage your
|
||||
tarball with <code>mkiocccentry</code> and upload to the same slot again! If you do not fix
|
||||
this your submission <strong>WILL BE REJECTED</strong> for violating
|
||||
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<p>If the format test went well, then you will see:</p>
|
||||
<blockquote>
|
||||
<p><strong>Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.</strong></p>
|
||||
@@ -586,7 +586,7 @@ rules or that everything is OK once the tarball is extracted; it simply means
|
||||
the tests performed by the tools passed. If you find a flaw in a tool and
|
||||
abuse it and the tests pass then you stand a significant chance of having your
|
||||
submission rejected for violating
|
||||
<a href="rules.html#rule-17---packaging">Rule 17 - Packaging</a>,
|
||||
<a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>,
|
||||
even if the tests passed.</p>
|
||||
<p>For details on <code>txzchk</code>, see the
|
||||
FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.</p>
|
||||
|
||||
+4
-4
@@ -1,4 +1,4 @@
|
||||
Use mkiocccentry to rebuild# How to upload your submission to the IOCCC
|
||||
# How to upload your submission to the IOCCC
|
||||
|
||||
**IMPORTANT NOTE**: The [IOCCC submit server](https://submit.ioccc.org)
|
||||
is only ready for submissions
|
||||
@@ -87,7 +87,7 @@ And in the slot it will give you important details like:
|
||||
- the status of the submission
|
||||
- the filename, which will be in the correct format, assuming you used
|
||||
`mkiocccentry(1)` which is **HIGHLY** recommended so that you do not break
|
||||
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry)!
|
||||
- the file length, which `txzchk(1)` will also verify (the file itself and the
|
||||
tarball listing).
|
||||
- the upload date.
|
||||
@@ -158,7 +158,7 @@ Or:
|
||||
... or **ANY** other error then you **MUST FIX** your submission, repackage your
|
||||
tarball with `mkiocccentry` and upload to the same slot again! If you do not fix
|
||||
this your submission **WILL BE REJECTED** for violating
|
||||
[Rule 17 - Packaging](rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry)!
|
||||
|
||||
If the format test went well, then you will see:
|
||||
|
||||
@@ -169,7 +169,7 @@ rules or that everything is OK once the tarball is extracted; it simply means
|
||||
the tests performed by the tools passed. If you find a flaw in a tool and
|
||||
abuse it and the tests pass then you stand a significant chance of having your
|
||||
submission rejected for violating
|
||||
[Rule 17 - Packaging](rules.html#rule-17---packaging),
|
||||
[Rule 17 - Use mkiocccentry](rules.html#rule17-mkiocccentry),
|
||||
even if the tests passed.
|
||||
|
||||
For details on `txzchk`, see the
|
||||
|
||||
+3
-3
@@ -566,13 +566,13 @@ for more info.</p></li>
|
||||
<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
|
||||
submission, especially if it identifies a
|
||||
<a href="next/rules.html#rule-2---size">Rule 2 - Size</a>,
|
||||
<a href="next/rules.html#rule2-size">Rule 2 - Size restrictions</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>
|
||||
<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>
|
||||
<p>See also
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>!</p>
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>!</p>
|
||||
<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
|
||||
you have an earlier version and you have not installed the tools and run the
|
||||
@@ -581,7 +581,7 @@ tools to set the path to the required tools.</p>
|
||||
<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
|
||||
the latest version so you do not violate
|
||||
<a href="next/rules.html#rule-17---packaging">Rule 17 - Packaging</a>.
|
||||
<a href="next/rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.
|
||||
See the
|
||||
FAQ on “<a href="faq.html#obtaining_mkiocccentry">obtaining the latest mkiocccentry tools</a>”,
|
||||
the
|
||||
|
||||
+3
-3
@@ -162,7 +162,7 @@ Three files are required to exist in `topdir`:
|
||||
|
||||
If the `mkiocccentry` tool indicates that there is a problem with your
|
||||
submission, especially if it identifies a
|
||||
[Rule 2 - Size](next/rules.html#rule-2---size),
|
||||
[Rule 2 - Size restrictions](next/rules.html#rule2-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.
|
||||
|
||||
@@ -170,7 +170,7 @@ If you choose to risk violating [Rules](next/rules.html), be sure and explain yo
|
||||
for doing so in your `remarks.md` file.
|
||||
|
||||
See also
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging)!
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry)!
|
||||
|
||||
**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
|
||||
@@ -181,7 +181,7 @@ tools to set the path to the required tools.
|
||||
Do remember to make sure you have the latest vers
|
||||
`chksubmit(1)`, `txzchk(1)` and `fnamchk(1)`. And remember to make sure you have
|
||||
the latest version so you do not violate
|
||||
[Rule 17 - Packaging](next/rules.html#rule-17---packaging).
|
||||
[Rule 17 - Use mkiocccentry](next/rules.html#rule17-mkiocccentry).
|
||||
See the
|
||||
FAQ on "[obtaining the latest mkiocccentry tools](faq.html#obtaining_mkiocccentry)",
|
||||
the
|
||||
|
||||
Reference in new issue
Block a user