checkpoint rules version 29.03 2025-11-19

Add an `#ruleX` anchor tag to each rule.

Fix `GNU Makefile syntax` in `Rule 15 Building`.

Remove redundant text in `Rule 17 Packaging` about
empty/blank files.

Ran `make quick_www` to perform the above.
This commit is contained in:
Landon Curt Noll committed 2025-11-20 13:49:59 -08:00
1 parent be670c319b
commit 5021fa611b
3 files changed
+109 -19

No files matched your search

+53 -9
View File
@@ -474,38 +474,50 @@ app from time to time to view IOCCC mastodon updates.</p>
<!-- END: the next line ends content from: inc/rules.closed.hdr --> <!-- END: the next line ends content from: inc/rules.closed.hdr -->
<!-- This is the last line modified by the tool: bin/gen-status.sh --> <!-- This is the last line modified by the tool: bin/gen-status.sh -->
<h2 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h2> <h2 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h2>
<p>Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll.</p> <p>Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.</p>
<p>All Rights Reserved. Permission for personal, education or non-profit use is <p>All Rights Reserved. Permission for personal, education or non-profit use is
granted provided this this copyright and notice are included in its entirety granted provided this this copyright and notice are included in its entirety
and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in
writing by <a href="../contact.html">contacting the judges</a>.</p> writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="rules-version">Rules version</h2> <h2 id="rules-version">Rules version</h2>
<p>These IOCCC Rules are version <strong>29.02 2025-11-19</strong>.</p> <p>These IOCCC Rules are version <strong>29.03 2025-11-19</strong>.</p>
<p>Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p> <p>Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<div id="rule0">
<h2 id="rule-0-dates">Rule 0 Dates</h2> <h2 id="rule-0-dates">Rule 0 Dates</h2>
</div>
<p>This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.</p> <p>This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.</p>
<p>This contest will enter the open state on ${OPEN_DATE_TIME} UTC.</p> <p>This contest will enter the open state on ${OPEN_DATE_TIME} UTC.</p>
<p>This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC.</p> <p>This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC.</p>
<p>The above dates are subject to change until the contest is officially open.</p> <p>The above dates are subject to change until the contest is officially open.</p>
<p><strong>NOTE</strong>: As of this draft, the above dates are TBD (to be determined).</p> <p><strong>NOTE</strong>: As of this draft, the above dates are TBD (to be determined).</p>
<div id="rule1">
<h2 id="rule-1-program">Rule 1 Program</h2> <h2 id="rule-1-program">Rule 1 Program</h2>
</div>
<p>Your submission <strong>MUST</strong> be a C program.</p> <p>Your submission <strong>MUST</strong> be a C program.</p>
<div id="rule2">
<h2 id="rule-2-size">Rule 2 Size</h2> <h2 id="rule-2-size">Rule 2 Size</h2>
</div>
<p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong> <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#rule-2a-gross-size">Rule 2a Gross Size</a>
and and
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>. <a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.
During development this can be checked using <code>iocccsize(1)</code>:</p> During development this can be checked using <code>iocccsize(1)</code>:</p>
<p>iocccsize prog.c</p> <p>iocccsize prog.c</p>
<div id="rule2a">
<h3 id="rule-2a-gross-size">Rule 2a Gross Size</h3> <h3 id="rule-2a-gross-size">Rule 2a Gross Size</h3>
</div>
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong> <p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
exceed <strong>4993</strong> bytes.</p> exceed <strong>4993</strong> bytes.</p>
<div id="rule2b">
<h3 id="rule-2b-net-size">Rule 2b Net Size</h3> <h3 id="rule-2b-net-size">Rule 2b Net Size</h3>
</div>
<p>When the filename of your program source (i.e., <code>prog.c</code>) is given as a <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 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 tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST
NOT</strong> exceed <strong>2503</strong>.</p> NOT</strong> exceed <strong>2503</strong>.</p>
<div id="rule3">
<h2 id="rule-3-register">Rule 3 Register</h2> <h2 id="rule-3-register">Rule 3 Register</h2>
</div>
<p>You <strong>MUST</strong> register, using a valid email address, in order to submit <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> entries 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 <p>A few days after registering, you’ll receive your UUID username and
@@ -519,7 +531,9 @@ 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> 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="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<p>See <a href="rules.html#rule-8-submission">Rule 8 Submission</a>.</p> <p>See <a href="rules.html#rule-8-submission">Rule 8 Submission</a>.</p>
<div id="rule4">
<h2 id="rule-4-files">Rule 4 Files</h2> <h2 id="rule-4-files">Rule 4 Files</h2>
</div>
<p>The submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>, <p>The submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
<code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>. The last two <strong>MUST</strong> be <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>. The last two <strong>MUST</strong> be
generated by <code>mkiocccenty(1)</code> when packing a submission, and <strong>MUST</strong> generated by <code>mkiocccenty(1)</code> when packing a submission, and <strong>MUST</strong>
@@ -528,7 +542,7 @@ pass the <code>chksubmit(1)</code> tests.</p>
have a file size <strong>greater than 0</strong>.</p> have a file size <strong>greater than 0</strong>.</p>
<p>Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code> <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>. 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> The <code>Makefile</code> may compile your source code into other filenames as well.</p>
<p>As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your <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 <code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in
your top directory, as original content.</p> your top directory, as original content.</p>
@@ -555,11 +569,13 @@ a case insensitive filesystem.</p>
<p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p> <p>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="../markdown.html">IOCCC markdown guidelines</a>.</p>
<p>See <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p> <p>See <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<div id="rule5">
<h2 id="rule-5-purity">Rule 5 Purity</h2> <h2 id="rule-5-purity">Rule 5 Purity</h2>
</div>
<p>Your submission <strong>MUST NOT</strong> modify the filenames or content of any of <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 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 data files. To modify files, your program can make a copy or you can
use the Makefile to setup working copies. Any working copies <strong>MUST</strong> be 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 cleaned up by the <code>Makefile</code> <code>clobber</code> target, so as to restore the
directory to its original state.</p> directory to its original state.</p>
<p>Your submission <strong>MUST NOT</strong> create or modify directories and files <p>Your submission <strong>MUST NOT</strong> create or modify directories and files
@@ -570,13 +586,17 @@ ABOVE the current directory with the exception of the <code>/tmp</code> and the
original form, including the removal of any created files and directories.</p> original form, including the removal of any created files and directories.</p>
<p>Your code should be able to run under a <p>Your code should be able to run under a
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p> <a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
<div id="rule6">
<h2 id="rule-6-free">Rule 6 Free</h2> <h2 id="rule-6-free">Rule 6 Free</h2>
</div>
<p>I am <strong>NOT</strong> a Rule, I am a <code>free(void *human);</code> ‼️</p> <p>I am <strong>NOT</strong> a Rule, I am a <code>free(void *human);</code> ‼️</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(!(</span>ioccc<span class="op">(</span>rule<span class="op">(</span>you<span class="op">(</span>are<span class="op">(</span>number<span class="op">(</span><span class="dv">6</span><span class="op">))))))</span> <span class="op">{</span></span> <div class="sourceCode" id="cb1"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(!(</span>ioccc<span class="op">(</span>rule<span class="op">(</span>you<span class="op">(</span>are<span class="op">(</span>number<span class="op">(</span><span class="dv">6</span><span class="op">))))))</span> <span class="op">{</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> ha<span class="op">();</span> ha<span class="op">();</span> ha<span class="op">();</span></span> <span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> ha<span class="op">();</span> ha<span class="op">();</span> ha<span class="op">();</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span></code></pre></div> <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span></code></pre></div>
<p>See <a href="rules.html#rule-19-prime">Rule 19 Prime</a>.</p> <p>See <a href="rules.html#rule-19-prime">Rule 19 Prime</a>.</p>
<div id="rule7">
<h2 id="rule-7-original-work">Rule 7 Original Work</h2> <h2 id="rule-7-original-work">Rule 7 Original Work</h2>
</div>
<p>In short: You wrote it, you own it, and its an original work.</p> <p>In short: You wrote it, you own it, and its an original work.</p>
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, or you <strong>MUST</strong> <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 have permission from the original owner(s) to its use. If you submit
@@ -593,7 +613,9 @@ copilot tools, so-called AI services, large language models (LLMs), etc.
If you do make use of such tools or services, then we encourage you to If you do make use of such tools or services, then we encourage you to
describe what tools and how you used those tools, in your <code>remarks.md</code> file.</p> describe what tools and how you used those tools, in your <code>remarks.md</code> file.</p>
<p>See <a href="rules.html#rule-16-anonymous">Rule 16 Anonymous</a>.</p> <p>See <a href="rules.html#rule-16-anonymous">Rule 16 Anonymous</a>.</p>
<div id="rule8">
<h2 id="rule-8-submission">Rule 8 Submission</h2> <h2 id="rule-8-submission">Rule 8 Submission</h2>
</div>
<p>The Submit Server will only accept submissions from those who have <p>The Submit Server will only accept submissions from those who have
registered and only while the contest is open.</p> 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> <p>The Submit Server places a total submission size limit of <strong>3999971</strong> bytes.</p>
@@ -607,14 +629,18 @@ recommended</strong> to use <code>mkiocccentry(1)</code>.</p>
<a href="rules.html#rule-15-building">Rule 15 Building</a>, <a href="rules.html#rule-15-building">Rule 15 Building</a>,
and and
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p> <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
<div id="rule9">
<h2 id="rule-9-no-hands">Rule 9 No hands</h2> <h2 id="rule-9-no-hands">Rule 9 No hands</h2>
</div>
<p>Entries requiring human interaction to be initially compiled are <strong>NOT</strong> <p>Entries requiring human interaction to be initially compiled are <strong>NOT</strong>
permitted. However, see the guidelines. Each entry <strong>MUST</strong> automated the permitted. However, see the guidelines. Each entry <strong>MUST</strong> automated the
its build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code>, <code>clang</code>, under a its build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code>, <code>clang</code>, under a
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p> <a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
<p>Note references to <code>gmake</code> can be any GNU Make compatible tool.</p> <p>Note references to <code>gmake</code> can be any GNU Make compatible tool.</p>
<p>See <a href="rules.html#rule-17-building">Rule 17 Building</a>.</p> <p>See <a href="rules.html#rule-15-building">Rule 15 Building</a>.</p>
<div id="rule10">
<h2 id="rule-10-privileges">Rule 10 Privileges</h2> <h2 id="rule-10-privileges">Rule 10 Privileges</h2>
</div>
<p>Programs that require special privileges (setuid(2), setgid(2), <p>Programs that require special privileges (setuid(2), setgid(2),
super-user, special owner, special group, etc.) are <strong>HIGHLY DISCOURAGED</strong>. 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 We do <strong>NOT</strong> guarantee these functions will behave as you expect on our
@@ -628,7 +654,9 @@ bits are <strong>NOT</strong> allowed in submissions and those bits will <strong
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>, <p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>,
and and
<a href="rules.html#rule-5-purity">Rule 5 Purity</a>.</p> <a href="rules.html#rule-5-purity">Rule 5 Purity</a>.</p>
<div id="rule11">
<h2 id="rule-11-abuse">Rule 11 Abuse</h2> <h2 id="rule-11-abuse">Rule 11 Abuse</h2>
</div>
<p>Legal abuse of the rules is somewhat encouraged, but comes with risks. <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 A submission that, in the opinion of the Judges, violates the rules <strong>WILL
BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify
@@ -646,9 +674,13 @@ is rejected.</p>
version, please indicate that in your <code>remarks.md</code> file of your non-rule 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 abusing version so that the Judges don’t think you uploaded a duplicate
into a wrong slot by mistake.</p> into a wrong slot by mistake.</p>
<div id="rule12">
<h2 id="rule-12-utf-8">Rule 12 UTF-8</h2> <h2 id="rule-12-utf-8">Rule 12 UTF-8</h2>
</div>
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the IOCCC.</p> <p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the IOCCC.</p>
<div id="rule13">
<h2 id="rule-13-newlines">Rule 13 Newlines</h2> <h2 id="rule-13-newlines">Rule 13 Newlines</h2>
</div>
<p>Any C source that fails to compile because lines contain carriage-returns <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 (CTRL+M, <code>\r</code>) in particular as part of DOS/Windows style newlines might
be rejected. Please do <strong>NOT</strong> put trailing CTRL+M in <code>prog.c</code>, <code>Makefile</code>, be rejected. Please do <strong>NOT</strong> put trailing CTRL+M in <code>prog.c</code>, <code>Makefile</code>,
@@ -661,7 +693,9 @@ 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 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 your compiler complains about this, document this too and update your
<code>Makefile</code> to account for this.</p> <code>Makefile</code> to account for this.</p>
<div id="rule14">
<h2 id="rule-14-resubmit">Rule 14 Resubmit</h2> <h2 id="rule-14-resubmit">Rule 14 Resubmit</h2>
</div>
<p>Submissions that are substantially similar to previous winning IOCCC <p>Submissions that are substantially similar to previous winning IOCCC
entries are discouraged.</p> entries are discouraged.</p>
<p>You are allowed to resubmit to a later contest, a submission that didn’t <p>You are allowed to resubmit to a later contest, a submission that didn’t
@@ -669,8 +703,10 @@ 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 enhance and improve your submission. If you do resubmit something that
didn’t previously win, then you are encouraged to mention this in your didn’t previously win, then you are encouraged to mention this in your
<code>remarks.md</code> file as this sometimes helps.</p> <code>remarks.md</code> file as this sometimes helps.</p>
<div id="rule15">
<h2 id="rule-15-building">Rule 15 Building</h2> <h2 id="rule-15-building">Rule 15 Building</h2>
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Make file syntax. Its recommended </div>
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. Its recommended
that you copy and rename the <code>Makefile.example</code> as template. The primary that you copy and rename the <code>Makefile.example</code> as 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>. 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> The C compiler and preprocessor <strong>MUST</strong> be invoked using <code>${CC}</code> and <code>${CPP}</code>
@@ -691,7 +727,9 @@ environments and systems are available in the search
GNU long name options <code>--example</code> or extensions like <code>grep -P</code>.</p> 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>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment variable.</p>
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p> <p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
<div id="rule16">
<h2 id="rule-16-anonymous">Rule 16 Anonymous</h2> <h2 id="rule-16-anonymous">Rule 16 Anonymous</h2>
</div>
<p>Your source code, data files, remarks, and program output <strong>MUST NOT</strong> <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> 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 or pretending to be <strong>Peter Honeyman</strong>). In order to be impartial the
@@ -700,7 +738,9 @@ 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 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 accident anywhere in your submission. <strong><em>Failure to comply may result
in the submission being disqualified.</em></strong></p> in the submission being disqualified.</em></strong></p>
<div id="rule17">
<h2 id="rule-17-packaging">Rule 17 Packaging</h2> <h2 id="rule-17-packaging">Rule 17 Packaging</h2>
</div>
<p>The files, directories, and paths <strong>MUST</strong> conform to the limits imposed by <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 <code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their names, count, path
length, directory tree depth, and permissions.</p> length, directory tree depth, and permissions.</p>
@@ -719,8 +759,8 @@ created by the <code>-d</code> or <code>-s</code> seed options of <code>mkioccce
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the <p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
current version of <code>chksubmit(1)</code>.</p> current version of <code>chksubmit(1)</code>.</p>
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2-size">Rule 2 Size</a> <p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2-size">Rule 2 Size</a>
size checks performed by <code>iocccsize(1)</code>. The <code>Makefile</code> and <code>remarks.md</code> files cannot size checks performed by <code>iocccsize(1)</code>.</p>
be empty. The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what <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> <code>mkiocccentry(1)</code> generates.</p>
<p>Submissions that package using older versions of the mkiocccentry <p>Submissions that package using older versions of the mkiocccentry
toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>! Be sure toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>! Be sure
@@ -730,12 +770,16 @@ GitHub repo.</p>
<p>In summary: it is best to use <code>mkioccentry(1)</code> to package your submission, <p>In summary: it is best to use <code>mkioccentry(1)</code> to package your submission,
rather than roll-it-by-hand.</p> rather than roll-it-by-hand.</p>
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p> <p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
<div id="rule18">
<h2 id="rule-18-license">Rule 18 License</h2> <h2 id="rule-18-license">Rule 18 License</h2>
</div>
<p>The entirety of your submission <strong>MUST</strong> be submitted under the following license:</p> <p>The entirety of your submission <strong>MUST</strong> be submitted under the following license:</p>
<p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></p> <p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></p>
<p>See <a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p> <p>See <a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
<div id="rule19">
<h2 id="rule-19-prime">Rule 19 Prime</h2> <h2 id="rule-19-prime">Rule 19 Prime</h2>
<p>This 19th rule, while prime, is reserved for future abuse. :-) </div>
<p>This 19th rule, while prime, is reserved for future abuse 😁.
Additional rules, both humorous and otherwise, may be added Additional rules, both humorous and otherwise, may be added
below this rule in future contests.</p> below this rule in future contests.</p>
<p>See <a href="rules.html#rule-6-free">Rule 6 Free</a>.</p> <p>See <a href="rules.html#rule-6-free">Rule 6 Free</a>.</p>
+53 -7
View File
@@ -30,7 +30,7 @@ app from time to time to view IOCCC mastodon updates.
29th International Obfuscated C Code Contest Official Rules 29th International Obfuscated C Code Contest Official Rules
------------------------------------------------------------ ------------------------------------------------------------
Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll. Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.
All Rights Reserved. Permission for personal, education or non-profit use is All Rights Reserved. Permission for personal, education or non-profit use is
granted provided this this copyright and notice are included in its entirety granted provided this this copyright and notice are included in its entirety
@@ -41,13 +41,15 @@ writing by [contacting the judges](../contact.html).
Rules version Rules version
------------- -------------
These IOCCC Rules are version **29.02 2025-11-19**. These IOCCC Rules are version **29.03 2025-11-19**.
Be sure to read the [IOCCC guidelines](guidelines.html). Be sure to read the [IOCCC guidelines](guidelines.html).
<div id="rule0">
Rule 0 Dates Rule 0 Dates
------------ ------------
</div>
This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC. This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.
@@ -60,14 +62,18 @@ The above dates are subject to change until the contest is officially open.
**NOTE**: As of this draft, the above dates are TBD (to be determined). **NOTE**: As of this draft, the above dates are TBD (to be determined).
<div id="rule1">
Rule 1 Program Rule 1 Program
--------------- ---------------
</div>
Your submission **MUST** be a C program. Your submission **MUST** be a C program.
<div id="rule2">
Rule 2 Size Rule 2 Size
----------- -----------
</div>
`Rule 2` requires that your submission satisfy **BOTH** `Rule 2` requires that your submission satisfy **BOTH**
[Rule 2a Gross Size](rules.html#rule-2a-gross-size) [Rule 2a Gross Size](rules.html#rule-2a-gross-size)
@@ -77,13 +83,17 @@ During development this can be checked using `iocccsize(1)`:
iocccsize prog.c iocccsize prog.c
<div id="rule2a">
### Rule 2a Gross Size ### Rule 2a Gross Size
</div>
The overall maximum size of your `prog.c` program source **MUST NOT** The overall maximum size of your `prog.c` program source **MUST NOT**
exceed **4993** bytes. exceed **4993** bytes.
<div id="rule2b">
### Rule 2b Net Size ### Rule 2b Net Size
</div>
When the filename of your program source (i.e., `prog.c`) is given as a 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 command line argument to the latest version of the official IOCCC size
@@ -91,8 +101,10 @@ tool (hereby referred to as `iocccsize(1)`), the value printed **MUST
NOT** exceed **2503**. NOT** exceed **2503**.
<div id="rule3">
Rule 3 Register Rule 3 Register
--------------- ---------------
</div>
You **MUST** register, using a valid email address, in order to submit 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**. entries to the IOCCC. You may register while the contest is **pending** or **open**.
@@ -113,8 +125,10 @@ See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#
See [Rule 8 Submission](rules.html#rule-8-submission). See [Rule 8 Submission](rules.html#rule-8-submission).
<div id="rule4">
Rule 4 Files Rule 4 Files
------------ ------------
</div>
The submission **MUST** include at least these files: `Makefile`, `prog.c`, The submission **MUST** include at least these files: `Makefile`, `prog.c`,
`remarks.md`,`.info.json`, and `.auth.json`. The last two **MUST** be `remarks.md`,`.info.json`, and `.auth.json`. The last two **MUST** be
@@ -166,8 +180,10 @@ See [IOCCC markdown guidelines](../markdown.html).
See [Rule 17 Packaging](rules.html#rule-17-packaging). See [Rule 17 Packaging](rules.html#rule-17-packaging).
<div id="rule5">
Rule 5 Purity Rule 5 Purity
------------- -------------
</div>
Your submission **MUST NOT** modify the filenames or content of any of Your submission **MUST NOT** modify the filenames or content of any of
your original submission, such as `prog.c`, `Makefile`, or any supplied your original submission, such as `prog.c`, `Makefile`, or any supplied
@@ -188,8 +204,10 @@ Your code should be able to run under a
[SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/). [SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
<div id="rule6">
Rule 6 Free Rule 6 Free
----------- -----------
</div>
I am **NOT** a Rule, I am a `free(void *human);` ‼️ I am **NOT** a Rule, I am a `free(void *human);` ‼️
@@ -202,8 +220,10 @@ I am **NOT** a Rule, I am a `free(void *human);` ‼️
See [Rule 19 Prime](rules.html#rule-19-prime). See [Rule 19 Prime](rules.html#rule-19-prime).
<div id="rule7">
Rule 7 Original Work Rule 7 Original Work
-------------------- --------------------
</div>
In short: You wrote it, you own it, and its an original work. In short: You wrote it, you own it, and its an original work.
@@ -226,8 +246,10 @@ describe what tools and how you used those tools, in your `remarks.md` file.
See [Rule 16 Anonymous](rules.html#rule-16-anonymous). See [Rule 16 Anonymous](rules.html#rule-16-anonymous).
<div id="rule8">
Rule 8 Submission Rule 8 Submission
----------------- -----------------
</div>
The Submit Server will only accept submissions from those who have The Submit Server will only accept submissions from those who have
registered and only while the contest is open. registered and only while the contest is open.
@@ -247,8 +269,10 @@ and
[Rule 17 Packaging](rules.html#rule-17-packaging). [Rule 17 Packaging](rules.html#rule-17-packaging).
<div id="rule9">
Rule 9 No hands Rule 9 No hands
---------------- ----------------
</div>
Entries requiring human interaction to be initially compiled are **NOT** Entries requiring human interaction to be initially compiled are **NOT**
permitted. However, see the guidelines. Each entry **MUST** automated the permitted. However, see the guidelines. Each entry **MUST** automated the
@@ -260,8 +284,10 @@ Note references to `gmake` can be any GNU Make compatible tool.
See [Rule 15 Building](rules.html#rule-15-building). See [Rule 15 Building](rules.html#rule-15-building).
<div id="rule10">
Rule 10 Privileges Rule 10 Privileges
------------------ ------------------
</div>
Programs that require special privileges (setuid(2), setgid(2), Programs that require special privileges (setuid(2), setgid(2),
super-user, special owner, special group, etc.) are **HIGHLY DISCOURAGED**. super-user, special owner, special group, etc.) are **HIGHLY DISCOURAGED**.
@@ -280,8 +306,10 @@ and
[Rule 5 Purity](rules.html#rule-5-purity). [Rule 5 Purity](rules.html#rule-5-purity).
<div id="rule11">
Rule 11 Abuse Rule 11 Abuse
------------- -------------
</div>
Legal abuse of the rules is somewhat encouraged, but comes with risks. 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 A submission that, in the opinion of the Judges, violates the rules **WILL
@@ -305,14 +333,19 @@ abusing version so that the Judges don't think you uploaded a duplicate
into a wrong slot by mistake. into a wrong slot by mistake.
<div id="rule12">
Rule 12 UTF-8 Rule 12 UTF-8
------------- -------------
</div>
Use of UTF-8 is supported by `C89` standard and its updates and so too by the IOCCC. Use of UTF-8 is supported by `C89` standard and its updates and so too by the IOCCC.
<div id="rule13">
Rule 13 Newlines Rule 13 Newlines
---------------- ----------------
</div>
Any C source that fails to compile because lines contain carriage-returns Any C source that fails to compile because lines contain carriage-returns
(CTRL+M, `\r`) in particular as part of DOS/Windows style newlines might (CTRL+M, `\r`) in particular as part of DOS/Windows style newlines might
be rejected. Please do **NOT** put trailing CTRL+M in `prog.c`, `Makefile`, be rejected. Please do **NOT** put trailing CTRL+M in `prog.c`, `Makefile`,
@@ -328,8 +361,10 @@ your compiler complains about this, document this too and update your
`Makefile` to account for this. `Makefile` to account for this.
<div id="rule14">
Rule 14 Resubmit Rule 14 Resubmit
---------------- ----------------
</div>
Submissions that are substantially similar to previous winning IOCCC Submissions that are substantially similar to previous winning IOCCC
entries are discouraged. entries are discouraged.
@@ -341,11 +376,13 @@ didn't previously win, then you are encouraged to mention this in your
`remarks.md` file as this sometimes helps. `remarks.md` file as this sometimes helps.
<div id="rule15">
Rule 15 Building Rule 15 Building
---------------- ----------------
</div>
The `Makefile` **MUST** adhere to GNU Make file syntax. Its recommended The `Makefile` **MUST** adhere to GNU Makefile syntax. Its recommended
that you copy and rename the `Makefile.example` as a template. The primary that you copy and rename the `Makefile.example` as template. The primary
target of the `Makefile` **MUST** be `prog` and the source file is `prog.c`. 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}` The C compiler and preprocessor **MUST** be invoked using `${CC}` and `${CPP}`
macros respectively. macros respectively.
@@ -374,8 +411,10 @@ Do **NOT** assume that `.` (current directory) is in the `$PATH` environment var
See [Rule 4 Files](rules.html#rule-4-files). See [Rule 4 Files](rules.html#rule-4-files).
<div id="rule16">
Rule 16 Anonymous Rule 16 Anonymous
----------------- -----------------
</div>
Your source code, data files, remarks, and program output **MUST NOT** Your source code, data files, remarks, and program output **MUST NOT**
identify the author(s) of your code (unless you are **Peter Honeyman** identify the author(s) of your code (unless you are **Peter Honeyman**
@@ -387,8 +426,10 @@ accident anywhere in your submission. ***Failure to comply may result
in the submission being disqualified.*** in the submission being disqualified.***
<div id="rule17">
Rule 17 Packaging Rule 17 Packaging
----------------- -----------------
</div>
The files, directories, and paths **MUST** conform to the limits imposed by The files, directories, and paths **MUST** conform to the limits imposed by
`mkiocccentry(1)`, including but **NOT** limited, to their names, count, path `mkiocccentry(1)`, including but **NOT** limited, to their names, count, path
@@ -413,8 +454,9 @@ The unpacked submission directory **MUST** pass the checks performed by the
current version of `chksubmit(1)`. current version of `chksubmit(1)`.
The `prog.c` file **MUST** pass the [Rule 2 Size](rules.html#rule-2-size) The `prog.c` file **MUST** pass the [Rule 2 Size](rules.html#rule-2-size)
size checks performed by `iocccsize(1)`. The `Makefile` and `remarks.md` files cannot size checks performed by `iocccsize(1)`.
be empty nor blank. The `.auth.json` and `.info.json` files **MUST** be compatible with what
The `.auth.json` and `.info.json` files **MUST** be compatible with what
`mkiocccentry(1)` generates. `mkiocccentry(1)` generates.
Submissions that package using older versions of the mkiocccentry Submissions that package using older versions of the mkiocccentry
@@ -429,8 +471,10 @@ rather than roll-it-by-hand.
See [Rule 4 Files](rules.html#rule-4-files). See [Rule 4 Files](rules.html#rule-4-files).
<div id="rule18">
Rule 18 License Rule 18 License
--------------- ---------------
</div>
The entirety of your submission **MUST** be submitted under the following license: The entirety of your submission **MUST** be submitted under the following license:
@@ -439,8 +483,10 @@ The entirety of your submission **MUST** be submitted under the following licens
See [Rule 7 Original Work](rules.html#rule-7-original-work). See [Rule 7 Original Work](rules.html#rule-7-original-work).
<div id="rule19">
Rule 19 Prime Rule 19 Prime
------------- -------------
</div>
This 19th rule, while prime, is reserved for future abuse 😁. This 19th rule, while prime, is reserved for future abuse 😁.
Additional rules, both humorous and otherwise, may be added Additional rules, both humorous and otherwise, may be added
@@ -462,5 +508,5 @@ server for discussions about The Rules, questions for the Judges, and
`C` in general. `C` in general.
Leonid A. Broukhis Leonid A. Broukhis
chongo (Landon Curt Noll) /\\cc/\\ chongo (Landon Curt Noll) /\\cc/\\
+3 -3
View File
@@ -16870,11 +16870,11 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/rules.html</loc> <loc>https://www.ioccc.org/next/rules.html</loc>
<lastmod>2025-11-20T07:40:05+00:00</lastmod> <lastmod>2025-11-20T21:45:59+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/rules.md</loc> <loc>https://www.ioccc.org/next/rules.md</loc>
<lastmod>2025-11-20T07:40:02+00:00</lastmod> <lastmod>2025-11-20T21:45:51+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/submit.html</loc> <loc>https://www.ioccc.org/next/submit.html</loc>
@@ -16938,7 +16938,7 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.html</loc> <loc>https://www.ioccc.org/status.html</loc>
<lastmod>2025-11-20T06:38:54+00:00</lastmod> <lastmod>2025-11-20T21:47:23+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.json</loc> <loc>https://www.ioccc.org/status.json</loc>