update rules & guidelines

Improved Rule 1.

Added Guidelines for Rule 1.

Improved Rule 3.

Added missing Guidelines for Rule 3.

Reordered guidelines sections under the "General Guidelines".

Set level 2 for "General Guidelines" subsections.

Changed IOCCC Rules to version **29.11 2025-11-30**.
Changed IOCCC Guidelines to version **29.03 2025-11-30**.

Ran `make quick_www` to perform the above.
This commit is contained in:
Landon Curt Noll committed 2025-12-01 01:19:49 -08:00
1 parent e43fdbe9f3
commit eda2531e4d
5 files changed
+559 -415

No files matched your search

+221 -159
View File
@@ -462,7 +462,7 @@ and remains unaltered. All other uses must 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>
<h1 id="guidelines-version">Guidelines Version</h1> <h1 id="guidelines-version">Guidelines Version</h1>
<p class="leftbar"> <p class="leftbar">
These IOCCC guidelines are version <strong>29.02 2025-11-30</strong>. These IOCCC guidelines are version <strong>29.03 2025-11-30</strong>.
</p> </p>
<p class="leftbar"> <p class="leftbar">
The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC. The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC.
@@ -471,6 +471,41 @@ The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>ch
Because the <strong>IOCCC29</strong> guidelines was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked. Because the <strong>IOCCC29</strong> guidelines was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked.
</p> </p>
<p>Be sure to read the <a href="rules.html">IOCCC rules</a>.</p> <p>Be sure to read the <a href="rules.html">IOCCC rules</a>.</p>
<div id="guideline1">
<div id="guideline1-c">
<h1 id="guidelines-for-rule-1---c-program">Guidelines for <a href="rules.html#rule1-c">Rule 1 - C program</a></h1>
</div>
</div>
<p class="leftbar">
While you submission <strong>MUST</strong> be a C program, there is nothing wrong if your <code>prog.c</code>
file happens to also be a code for another language.
</p>
<p class="leftbar">
We would prefer if you do not use <code>#include</code> statements,
especially <code>#include</code> statements just to include lots of data,
to get around the
<a href="rules.html#rule2-size-restrictions">Rule 2 - Size restrictions</a>
in an excessive way.
</p>
<p class="leftbar">
We would prefer if you do not require lots and lots of implicit defines on the C compiler command line
(i.e., lots of <code>-Dfoo</code>, and <code>-Dcurds=whey</code> style command line args to the C compiler)
to get around the
<a href="rules.html#rule2-size-restrictions">Rule 2 - Size restrictions</a>
in an excessive way.
</p>
<p class="leftbar">
Some use of <code>#include</code> statements and/or implicit defines on the C compiler command line is perfectly reasonable.
</p>
<p class="leftbar">
As a guide, consider the level of <code>#include</code> statements and/or implicit defines on the C compiler command line
that are found in
<a href="https://www.ioccc.org/years.html">winning IOCCC entries</a>, and try to <strong>NOT</strong> set a new record.
</p>
<p class="leftbar">
If you believe you need to significantly abuse <code>#include</code> statements and/or implicit defines on the C compiler command line,
then try to make a case for why in your submission’s <code>remarks.md</code> file: maybe the judges won’t reject your submission.
</p>
<div id="guideline2"> <div id="guideline2">
<div id="guideline-2---size"> <div id="guideline-2---size">
<div id="guideline2-size"> <div id="guideline2-size">
@@ -506,12 +541,38 @@ the IOCCC size tool <code>iocccsize(1)</code> conflict, the algorithm implemente
by the minimum required version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC by the minimum required version of <code>iocccsize(1)</code> is preferred by the <a href="../judges.html">IOCCC
judges</a>.</p> judges</a>.</p>
<p>Make sure <code>iocccsize</code> does not flag any issues with your <code>prog.c</code>.</p> <p>Make sure <code>iocccsize</code> does not flag any issues with your <code>prog.c</code>.</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>There a much less need to <code>#define</code> C reserved words in an effort <p>There a much less need to <code>#define</code> C reserved words in an effort
to get around the size limits of to get around the size limits of
<a href="rules.html#rule2-size">Rule 2 - Size restrictions</a> <a href="rules.html#rule2-size">Rule 2 - Size restrictions</a>
because of the <code>iocccsize(1)</code> algorithm.</p> because of the <code>iocccsize(1)</code> algorithm.</p>
<p>Yes Virginia, <strong>the previous guideline sentence is an important hint</strong>!</p> <p>Yes Virginia, <strong>the previous guideline sentence is an important hint</strong>!</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="guideline3">
<div id="guideline-3---register">
<h1 id="guidelines-for-rule-3---register-for-the-ioccc">Guidelines for <a href="rules.html#rule3-register">Rule 3 - Register for the IOCCC</a></h1>
</div>
</div>
<p>If a group of people work on a submission, then they should
<a href="../quick-start.html#enter">register for the IOCCC</a>
using either a group email address, or an email address for one of the authors.</p>
<p>Processing your registration is an activity overseen by an IOCCC judge.
Please be <strong>patient</strong> while an IOCCC judge processes your registration.</p>
<p>It can take a few days to process your registration and for the server to
email your details, therefore make sure to allow yourself ample time to
register and submit your entries; <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong>
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>If after a few days you believe your registration hasn’t been process, then
<a href="../contact.html">contact the Judges</a>.</p>
<p>After your UUID and initial password are emailed to you, you have
up to fortnight (<strong>14 days</strong>) to login and change your temporary password.
If you fail to change your temporary password by that deadline, then you’ll need to
<a href="../contact.html">contact the Judges</a> by email to request a reset.</p>
<p>See <a href="register.html">How to register for the IOCCC</a>.</p>
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="guideline7"> <div id="guideline7">
<div id="guideline-7---original-work"> <div id="guideline-7---original-work">
<h1 id="guidelines-for-rule-7---original-work">Guidelines for <a href="rules.html#rule7-original-work">Rule 7 - Original Work</a></h1> <h1 id="guidelines-for-rule-7---original-work">Guidelines for <a href="rules.html#rule7-original-work">Rule 7 - Original Work</a></h1>
@@ -536,6 +597,13 @@ describe how you used such tools</strong> in your <code>remarks.md</code> file.<
<p>See the <p>See the
FAQ on “<a href="../faq.html#ai">May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?</a>”.</p> 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> <p>Jump to: <a href="#">top</a></p>
<div id="guideline8">
<div id="guideline-8---submitting-requirements">
<h1 id="guidelines-for-rule-8---submitting-requirements">Guidelines for <a href="rules.html#rule8-submitting-requirements">Rule 8 - Submitting requirements</a></h1>
</div>
</div>
<p>Do <strong>NOT</strong> register more than one account just try and get around the limit on the number of submission slots.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="guideline11"> <div id="guideline11">
<div id="guideline-11---abuse"> <div id="guideline-11---abuse">
<h1 id="guidelines-for-rule-11---legal-rule-abuse">Guidelines for <a href="rules.html#rule11-legal-rule-abuse">Rule 11 - Legal rule abuse</a></h1> <h1 id="guidelines-for-rule-11---legal-rule-abuse">Guidelines for <a href="rules.html#rule11-legal-rule-abuse">Rule 11 - Legal rule abuse</a></h1>
@@ -680,154 +748,12 @@ FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommend
<p>See the <p>See the
FAQ on “<a href="../faq.html#rule17">What are the details behind Rule 17 - Use mkiocccentry?</a>”.</p> FAQ on “<a href="../faq.html#rule17">What are the details behind Rule 17 - Use mkiocccentry?</a>”.</p>
<p>Jump to: <a href="#">top</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>!</p>
<p>You <strong>REALLY SHOULD</strong> use the latest <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a> to package your submission
as submissions that use an older version are <strong>LIKELY</strong> to be <strong>REJECTED</strong>!</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>Do <strong>NOT</strong> use <code>fnamchk(1)</code> command line options that are labeled “<strong>for TESTING purposes</strong>”
in the <code>fnamchk(1)</code> man page.</p>
<p>Do <strong>NOT</strong> use <code>chksubmit(1)</code> command line options that are labeled “<strong>for the use by the IOCCC judges only</strong>”
in the <code>chksubmit(1)</code> man page.
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.</p>
<p>Use <code>mkiocccentry -Y -i answers ..</code> to force a yes answers with <strong>great caution</strong>
because it might force a yes answer to something you do <strong>NOT</strong> want, such as a
change in your code that violates a detected rule.
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>OR</strong> by
<code>mkiocccentry -s seed ..</code> <strong>OR</strong> by using the <code>test</code> UUID!</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 &amp;&amp; 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>” at the <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#rule2-size">Rule 2 - Size restrictions</a>) that you may ignore,
however ignoring such issues <strong>comes with a SIGNIFICANT level of risk!</strong></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>The same can be said of the <code>-Y</code> option, and to a lesser extent <code>-y</code>: the <code>-y</code>
is mostly for the test script and the <code>-Y</code> is like <code>-y</code> but even more
aggressive.</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>,
if you don’t, 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 reject 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: thus <code>FOO</code>, <code>Foo</code>, and <code>foo</code> are considered the <strong>SAME</strong> file
even if your filesystem doesn’t do the same.</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> and <code>remarks.md</code> files may <strong>NOT</strong> be empty. This
does not mean just 0 bytes but also that it <strong>MUST</strong> have <strong>content</strong>, and
content that is relevant (e.g. a Makefile with just comments is <strong>NOT</strong>
allowed). However, with the exception of the <code>Makefile</code>, the <code>mkiocccentry(1)</code>
tool will <strong>ONLY</strong> check file size.</p>
<p>If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exists and is an empty file,
the <code>mkiocccentry(1)</code> tool will 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#rule11-legal-rulea-abuse">Rule 11 - Legal rule 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 id="general">
<h1 id="general-guidelines">General Guidelines</h1> <h1 id="general-guidelines">General Guidelines</h1>
</div> </div>
<h1 id="general-overall-guidelines">General Overall Guidelines</h1> <div id="general-overall-guidelines">
<h2 id="overall-guidelines">Overall Guidelines</h2>
</div>
<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>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, <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> submissions that remain within the <a href="guidelines.html">IOCCC guidelines</a> are preferred.</p>
@@ -898,12 +824,10 @@ an appropriate level of obfuscation.</p>
<strong>VERY GOOD START</strong> to a great submission!</p> <strong>VERY GOOD START</strong> to a great submission!</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="likes"> <div id="likes">
</div>
<div id="dislikes"> <div id="dislikes">
<h2 id="our-likes-and-dislikes">Our Likes and Dislikes:</h2>
</div>
</div> </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 <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>, 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> renamed as <code>Makefile</code> of course. This makes it easier for the <a href="../judges.html">IOCCC judges</a>
@@ -1126,8 +1050,7 @@ sort of code will work:</p>
adapt to a wide collection of environments will be favored. For adapt to a wide collection of environments will be favored. For
example, don’t depend on a particular type or size of display. example, don’t depend on a particular type or size of display.
Don’t assume the use of a particular browser. Instead assume a 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 generic browser that forms to a widely used <a href="https://www.w3.org/standards/">W3C standard</a>.
standard</a>.
Don’t assume a particular sound sub-system or video driver is installed 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 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> source program (one that actually works) to display audio/visual data.</p>
@@ -1290,10 +1213,151 @@ is a <strong>hint</strong>. :-)</p>
<code>remarks.md</code> file: it is a required file for a reason. :-)</p> <code>remarks.md</code> file: it is a required file for a reason. :-)</p>
<p>Try to be even more creative!</p> <p>Try to be even more creative!</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="fun"> <div id="mkiocccentry">
<div id="mkiocccentry_toolkit">
<h2 id="guidelines-for-the-mkiocccentry-toolkit">Guidelines for the mkiocccentry toolkit</h2>
</div>
</div>
<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>!</p>
<p>You <strong>REALLY SHOULD</strong> use the latest <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
toolkit</a> to package your submission
as submissions that use an older version are <strong>LIKELY</strong> to be <strong>REJECTED</strong>!</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>Do <strong>NOT</strong> use <code>fnamchk(1)</code> command line options that are labeled “<strong>for TESTING purposes</strong>”
in the <code>fnamchk(1)</code> man page.</p>
<p>Do <strong>NOT</strong> use <code>chksubmit(1)</code> command line options that are labeled “<strong>for the use by the IOCCC judges only</strong>”
in the <code>chksubmit(1)</code> man page.
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.</p>
<p>Use <code>mkiocccentry -Y -i answers ..</code> to force a yes answers with <strong>great caution</strong>
because it might force a yes answer to something you do <strong>NOT</strong> want, such as a
change in your code that violates a detected rule.
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>OR</strong> by
<code>mkiocccentry -s seed ..</code> <strong>OR</strong> by using the <code>test</code> UUID!</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 &amp;&amp; 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>” at the <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#rule2-size">Rule 2 - Size restrictions</a>) that you may ignore,
however ignoring such issues <strong>comes with a SIGNIFICANT level of risk!</strong></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>The same can be said of the <code>-Y</code> option, and to a lesser extent <code>-y</code>: the <code>-y</code>
is mostly for the test script and the <code>-Y</code> is like <code>-y</code> but even more
aggressive.</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>,
if you don’t, 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 reject 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: thus <code>FOO</code>, <code>Foo</code>, and <code>foo</code> are considered the <strong>SAME</strong> file
even if your filesystem doesn’t do the same.</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> and <code>remarks.md</code> files may <strong>NOT</strong> be empty. This
does not mean just 0 bytes but also that it <strong>MUST</strong> have <strong>content</strong>, and
content that is relevant (e.g. a Makefile with just comments is <strong>NOT</strong>
allowed). However, with the exception of the <code>Makefile</code>, the <code>mkiocccentry(1)</code>
tool will <strong>ONLY</strong> check file size.</p>
<p>If the optional file <code>try.alt.sh</code>, or <code>try.sh</code> exists and is an empty file,
the <code>mkiocccentry(1)</code> tool will 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#rule11-legal-rulea-abuse">Rule 11 - Legal rule 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="fun">
<h2 id="fundamental-guidelines">Fun😄damental Guidelines</h2>
</div> </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> <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> to be a <strong>fun</strong>ctional UTC time. :-)</p>
<p>At least 2 of several reasons for selecting the prime, 2503, for <p>At least 2 of several reasons for selecting the prime, 2503, for
@@ -1404,12 +1468,10 @@ it? :-)</p>
<p>With respect to <a href="#nested-functions">nested functions</a>, try <code>chkentry -b</code>.</p> <p>With respect to <a href="#nested-functions">nested functions</a>, try <code>chkentry -b</code>.</p>
<p>Jump to: <a href="#">top</a></p> <p>Jump to: <a href="#">top</a></p>
<div id="more-information"> <div id="more-information">
</div>
<div id="information"> <div id="information">
<h1 id="for-more-information">For more information</h1>
</div>
</div> </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>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 <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> may (and <strong>often do</strong>) change from year to year.</p>
+308 -209
View File
@@ -13,7 +13,7 @@ writing by [contacting the judges](../contact.html).
# Guidelines Version # Guidelines Version
<p class="leftbar"> <p class="leftbar">
These IOCCC guidelines are version **29.02 2025-11-30**. These IOCCC guidelines are version **29.03 2025-11-30**.
</p> </p>
<p class="leftbar"> <p class="leftbar">
@@ -27,6 +27,49 @@ Because the **IOCCC29** guidelines was a substantial rewrite, only **important c
Be sure to read the [IOCCC rules](rules.html). Be sure to read the [IOCCC rules](rules.html).
<div id="guideline1">
<div id="guideline1-c">
# Guidelines for [Rule 1 - C program](rules.html#rule1-c)
</div>
</div>
<p class="leftbar">
While you submission **MUST** be a C program, there is nothing wrong if your `prog.c`
file happens to also be a code for another language.
</p>
<p class="leftbar">
We would prefer if you do not use `#include` statements,
especially `#include` statements just to include lots of data,
to get around the
[Rule 2 - Size restrictions](rules.html#rule2-size-restrictions)
in an excessive way.
</p>
<p class="leftbar">
We would prefer if you do not require lots and lots of implicit defines on the C compiler command line
(i.e., lots of `-Dfoo`, and `-Dcurds=whey` style command line args to the C compiler)
to get around the
[Rule 2 - Size restrictions](rules.html#rule2-size-restrictions)
in an excessive way.
</p>
<p class="leftbar">
Some use of `#include` statements and/or implicit defines on the C compiler command line is perfectly reasonable.
</p>
<p class="leftbar">
As a guide, consider the level of `#include` statements and/or implicit defines on the C compiler command line
that are found in
[winning IOCCC entries](https://www.ioccc.org/years.html), and try to **NOT** set a new record.
</p>
<p class="leftbar">
If you believe you need to significantly abuse `#include` statements and/or implicit defines on the C compiler command line,
then try to make a case for why in your submission's `remarks.md` file: maybe the judges won't reject your submission.
</p>
<div id="guideline2"> <div id="guideline2">
<div id="guideline-2---size"> <div id="guideline-2---size">
<div id="guideline2-size"> <div id="guideline2-size">
@@ -73,6 +116,9 @@ judges](../judges.html).
Make sure `iocccsize` does not flag any issues with your `prog.c`. Make sure `iocccsize` does not flag any issues with your `prog.c`.
**NOTE**: by default `iocccsize` will only report the rule 2b size, unless the
code surpasses the limit.
There a much less need to `#define` C reserved words in an effort There a much less need to `#define` C reserved words in an effort
to get around the size limits of to get around the size limits of
[Rule 2 - Size restrictions](rules.html#rule2-size) [Rule 2 - Size restrictions](rules.html#rule2-size)
@@ -84,6 +130,40 @@ Yes Virginia, **the previous guideline sentence is an important hint**!
Jump to: [top](#) Jump to: [top](#)
<div id="guideline3">
<div id="guideline-3---register">
# Guidelines for [Rule 3 - Register for the IOCCC](rules.html#rule3-register)
</div>
</div>
If a group of people work on a submission, then they should
[register for the IOCCC](../quick-start.html#enter)
using either a group email address, or an email address for one of the authors.
Processing your registration is an activity overseen by an IOCCC judge.
Please be **patient** while an IOCCC judge processes your registration.
It can take a few days to process your registration and for the server to
email your details, therefore make sure to allow yourself ample time to
register and submit your entries; **DO NOT WAIT UNTIL THE FINAL DAYS**
to register! The judges are **NOT** responsible for delayed or lost
email or for those who wait until the last minute to try to register!
If after a few days you believe your registration hasn't been process, then
[contact the Judges](../contact.html).
After your UUID and initial password are emailed to you, you have
up to fortnight (**14 days**) to login and change your temporary password.
If you fail to change your temporary password by that deadline, then you'll need to
[contact the Judges](../contact.html) by email to request a reset.
See [How to register for the IOCCC](register.html).
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
Jump to: [top](#)
<div id="guideline7"> <div id="guideline7">
<div id="guideline-7---original-work"> <div id="guideline-7---original-work">
@@ -116,6 +196,18 @@ FAQ on "[May I use AI, LLM, Virtual coding assistants, or similar tools to write
Jump to: [top](#) Jump to: [top](#)
<div id="guideline8">
<div id="guideline-8---submitting-requirements">
# Guidelines for [Rule 8 - Submitting requirements](rules.html#rule8-submitting-requirements)
</div>
</div>
Do **NOT** register more than one account just try and get around the limit on the number of submission slots.
Jump to: [top](#)
<div id="guideline11"> <div id="guideline11">
<div id="guideline-11---abuse"> <div id="guideline-11---abuse">
# Guidelines for [Rule 11 - Legal rule abuse](rules.html#rule11-legal-rule-abuse) # Guidelines for [Rule 11 - Legal rule abuse](rules.html#rule11-legal-rule-abuse)
@@ -307,206 +399,15 @@ FAQ on "[What are the details behind Rule 17 - Use mkiocccentry?](../faq.html#ru
Jump to: [top](#) Jump to: [top](#)
<div id="mkiocccentry"></div>
<div id="mkiocccentry_toolkit"></div>
# Guidelines for the mkiocccentry toolkit
The [IOCCC submit server](https://submit.ioccc.org), and related services
use the **most recent version** of the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry):
submissions that package using older versions of the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
are **LIKELY** to be **REJECTED**!
You **REALLY SHOULD** use the latest [mkiocccentry
toolkit](https://github.com/ioccc-src/mkiocccentry) to package your submission
as submissions that use an older version are **LIKELY** to be **REJECTED**!
The `mkiocccentry(1)` tool runs a number of checks by way of these
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) tools:
* iocccsize(1)
* txzchk(1)
* fnamchk(1)
* chksubmit(1)
* chkentry(1)
Do **NOT** use `txzchk(1)` or `fnamchk(1)` command line options that are labeled
"**for TESTING purposes**" in their respective man pages.
Do **NOT** use `fnamchk(1)` command line options that are labeled "**for TESTING purposes**"
in the `fnamchk(1)` man page.
Do **NOT** use `chksubmit(1)` command line options that are labeled "**for the use by the IOCCC judges only**"
in the `chksubmit(1)` man page.
Similarly do **NOT** use `chkentry(1)` command line options marked "**for the use
by the IOCCC judges only**" in the `chkentry(1)` man page.
To view [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) man pages,
while your current directory is the top of the source tree:
``` <!---sh-->
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
```
The above `man(1)` commands will show the toolkit man pages without having to install them first.
So that you do not have to repeatedly answer all the `mkiocccentry(1)` questions,
use `mkiocccentry -a answers ...` to create a file containing the answers you first give,
so later enter `mkiocccentry -i answers ...` to reuse those same answers.
The `mkiocccentry -A answers ...` does the same thing except that the **answers file will be overwritten**.
The `mkiocccentry -i answers ...` will still be required to confirm "_Yes/No_" questions.
Use `mkiocccentry -Y -i answers ..` to force a yes answers with **great caution**
because it might force a yes answer to something you do **NOT** want, such as a
change in your code that violates a detected rule.
The `mkiocccentry -i answers ..` will still be required to confirm "_Yes/No_" questions.
While `mkiocccentry -Y -i answers ..` will force yes answers, use with **great caution**,
because it might force a yes answer to something you do **NOT** want.
To help with not having to repeatedly enter a UUID, put your UUID into a file and use
`mkiocccentry -u uuidfile ...`, or use `mkiocccentry -U UUID ...` to give the `UUID`
on the command line.
If you wish to **test** that your submission passes the `mkiocccentry(1)` tests
without having to type in answers each time, you can use the `-d` or `-s seed`
option to `mkiocccentry` for the tool to pseudo-randomly create answers for you.
For example:
``` <!---sh-->
mkiocccentry -d workdir topdir
```
Do **NOT** submit a tarball formed by `mkiocccentry -d ..` **OR** by
`mkiocccentry -s seed ..` **OR** by using the `test` UUID!
The `mkiocccentry(1)` tool creates an `xz(1)` compressed **v7 format** tarball using a `tar(1)`
command of the form:
``` <!---sh-->
cd workdir/UUID-slot_num && tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num
```
In many places the `mkiocccentry(1)` tool will prompt you to verify what you input, allowing you to
correct details as you go along.
Pressing the "_enter key_" at the `mkiocccentry(1)` tool prompts will allow you
to proceed with a default, however make sure the default is the **CORRECT**
answer.
The `mkiocccentry(1)` tool will use code from `iocccsize(1)` which detects a number of
issues (such as [Rule 2 - Size restrictions](rules.html#rule2-size)) that you may ignore,
however ignoring such issues **comes with a SIGNIFICANT level of risk!**
Once the tarball is packaged it will
run `txzchk(1)`, which will also run `fnamchk(1)`, as part of its algorithm.
The use of `mkiocccentry -W ....` is **highly discouraged** as this may ignore
warnings about a problem that may cause your submission to be **REJECTED!**"
The same can be said of the `-Y` option, and to a lesser extent `-y`: the `-y`
is mostly for the test script and the `-Y` is like `-y` but even more
aggressive.
If `mkiocccentry` encounters an **error**, the program will exit and the xz
compressed tarball **will NOT be generated**: this is a **feature, not a bug**!
If you encounter a **bug** with the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
**PLEASE run the `bug_report.sh` script to help us out here!**
While you don't have to install the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry),
if you don't, in order to run a tool outside the repo directory
you will have to specify `mkiocccentry(1)` command line options to locate required tools
such as `chkentry(1)` (`mkiocccentry -C chkentry ..`), `txzchk(1)` (`mkiocccentry -T txzchk ..`),
and `fnamchk(1)` (`mkiocccentry -F fnamchk ..`).
The `mkiocccentry(1)` tool will ignore any filename or directory that begins with a period (`.`).
The `mkiocccentry(1)` tool will ignore all files that begin with `COPYING`, `COPYRIGHT`, and `LICENSE`, regardless
of filename case.
The `mkiocccentry(1)` tool will reject any of the following files if they are found directly under
the top level directory (`topdir`):
* README.md
* index.html
* prog
* prog.alt
* prog.alt.o
* prog.orig.c
* filenames matching the `[0-9][0-9][0-9][0-9]_*.tar.bz2` file glob
The files listed in the above list are allowed to exist in sub-directories: just **NOT** directly under
the top level directory (`topdir`).
The `mkiocccentry(1)` tool evaluates all filenames and directory names in a case
independent way: thus `FOO`, `Foo`, and `foo` are considered the **SAME** file
even if your filesystem doesn't do the same.
Having two or more filenames that differ only by case **WILL** lead to problems
because of the previous statement.
When the `mkiocccentry(1)` tool ignores a file, that file is **NOT** included as
part of your submission.
When the `mkiocccentry(1)` tool ignores a directory, that directory,
and everything under that directory is **NOT** included as part of
your submission.
The `mkiocccentry(1)` tool will ignore all symlinks.
Creating a directory directly under the top level directory (`topdir`)
that is normally considered to be a regular file, such as a directory
named `Makefile`, `prog.alt.c`, `prog.c`, `remarks.md`, `try.alt.sh`,
or `try.sh` is **NOT** a good idea and will likely cause the
`mkiocccentry(1)` tool to abort with a **fatal error**.
The required `Makefile` and `remarks.md` files may **NOT** be empty. This
does not mean just 0 bytes but also that it **MUST** have **content**, and
content that is relevant (e.g. a Makefile with just comments is **NOT**
allowed). However, with the exception of the `Makefile`, the `mkiocccentry(1)`
tool will **ONLY** check file size.
If the optional file `try.alt.sh`, or `try.sh` exists and is an empty file,
the `mkiocccentry(1)` tool will abort with a **fatal error**.
If the `mkiocccentry(1)` tool encounters anything that isn't a file, isn't a
directory, and isn't a symlink (which the tool ignores), the `mkiocccentry(1)`
tool to abort with a **fatal error**.
See
FAQ on "[How do I report bugs in an `mkiocccentry` tool?](../faq.html#mkiocccentry_bugs)".
See [Rule 11 - Legal rule abuse](rules.html#rule11-legal-rulea-abuse) for warnings about ignoring `mkiocccentry(1)` tool warnings.
See
FAQ on "[What is the `fnamchk` tool?](../faq.html#fnamchk)".
See
FAQ on "[What is mkiocccentry in simple terms?](../faq.html#about_mkiocccentry)".
See
FAQ on "[What is the mkiocccentry tool, how do I obtain it and how do I use it](../faq.html#mkiocccentry)".
Jump to: [top](#)
<div id="general"> <div id="general">
# General Guidelines # General Guidelines
</div> </div>
# General Overall Guidelines
<div id="general-overall-guidelines">
## Overall Guidelines
</div>
These [guideline](guidelines.html) are **hints** and **suggestions**, **NOT** [IOCCC rules](rules.html). These [guideline](guidelines.html) are **hints** and **suggestions**, **NOT** [IOCCC rules](rules.html).
@@ -601,10 +502,11 @@ A clean looking program with misleading comments and variable names might be a
Jump to: [top](#) Jump to: [top](#)
<div id="likes"></div> <div id="likes">
<div id="dislikes"></div> <div id="dislikes">
## Our Likes and Dislikes:
# OUR LIKES AND DISLIKES: </div>
</div>
We **VERY MUCH LIKE** submissions that use an edited variant of the We **VERY MUCH LIKE** submissions that use an edited variant of the
example Makefile, as described and linked to in the [Makefile section](#makefile), example Makefile, as described and linked to in the [Makefile section](#makefile),
@@ -911,8 +813,7 @@ X client submissions should be as portable as possible. Submissions that
adapt to a wide collection of environments will be favored. For adapt to a wide collection of environments will be favored. For
example, don't depend on a particular type or size of display. example, don't depend on a particular type or size of display.
Don't assume the use of a particular browser. Instead assume a Don't assume the use of a particular browser. Instead assume a
generic browser that forms to a widely used [W3C generic browser that forms to a widely used [W3C standard](https://www.w3.org/standards/).
standard](https://www.w3.org/standards/).
Don't assume a particular sound sub-system or video driver is installed 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 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. source program (one that actually works) to display audio/visual data.
@@ -1111,9 +1012,206 @@ Try to be even more creative!
Jump to: [top](#) Jump to: [top](#)
<div id="fun"></div> <div id="mkiocccentry">
<div id="mkiocccentry_toolkit">
## Guidelines for the mkiocccentry toolkit
</div>
</div>
# Fun😄damental Guidelines The [IOCCC submit server](https://submit.ioccc.org), and related services
use the **most recent version** of the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry):
submissions that package using older versions of the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
are **LIKELY** to be **REJECTED**!
You **REALLY SHOULD** use the latest [mkiocccentry
toolkit](https://github.com/ioccc-src/mkiocccentry) to package your submission
as submissions that use an older version are **LIKELY** to be **REJECTED**!
The `mkiocccentry(1)` tool runs a number of checks by way of these
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) tools:
* iocccsize(1)
* txzchk(1)
* fnamchk(1)
* chksubmit(1)
* chkentry(1)
Do **NOT** use `txzchk(1)` or `fnamchk(1)` command line options that are labeled
"**for TESTING purposes**" in their respective man pages.
Do **NOT** use `fnamchk(1)` command line options that are labeled "**for TESTING purposes**"
in the `fnamchk(1)` man page.
Do **NOT** use `chksubmit(1)` command line options that are labeled "**for the use by the IOCCC judges only**"
in the `chksubmit(1)` man page.
Similarly do **NOT** use `chkentry(1)` command line options marked "**for the use
by the IOCCC judges only**" in the `chkentry(1)` man page.
To view [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) man pages,
while your current directory is the top of the source tree:
``` <!---sh-->
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
```
The above `man(1)` commands will show the toolkit man pages without having to install them first.
So that you do not have to repeatedly answer all the `mkiocccentry(1)` questions,
use `mkiocccentry -a answers ...` to create a file containing the answers you first give,
so later enter `mkiocccentry -i answers ...` to reuse those same answers.
The `mkiocccentry -A answers ...` does the same thing except that the **answers file will be overwritten**.
The `mkiocccentry -i answers ...` will still be required to confirm "_Yes/No_" questions.
Use `mkiocccentry -Y -i answers ..` to force a yes answers with **great caution**
because it might force a yes answer to something you do **NOT** want, such as a
change in your code that violates a detected rule.
The `mkiocccentry -i answers ..` will still be required to confirm "_Yes/No_" questions.
While `mkiocccentry -Y -i answers ..` will force yes answers, use with **great caution**,
because it might force a yes answer to something you do **NOT** want.
To help with not having to repeatedly enter a UUID, put your UUID into a file and use
`mkiocccentry -u uuidfile ...`, or use `mkiocccentry -U UUID ...` to give the `UUID`
on the command line.
If you wish to **test** that your submission passes the `mkiocccentry(1)` tests
without having to type in answers each time, you can use the `-d` or `-s seed`
option to `mkiocccentry` for the tool to pseudo-randomly create answers for you.
For example:
``` <!---sh-->
mkiocccentry -d workdir topdir
```
Do **NOT** submit a tarball formed by `mkiocccentry -d ..` **OR** by
`mkiocccentry -s seed ..` **OR** by using the `test` UUID!
The `mkiocccentry(1)` tool creates an `xz(1)` compressed **v7 format** tarball using a `tar(1)`
command of the form:
``` <!---sh-->
cd workdir/UUID-slot_num && tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num
```
In many places the `mkiocccentry(1)` tool will prompt you to verify what you input, allowing you to
correct details as you go along.
Pressing the "_enter key_" at the `mkiocccentry(1)` tool prompts will allow you
to proceed with a default, however make sure the default is the **CORRECT**
answer.
The `mkiocccentry(1)` tool will use code from `iocccsize(1)` which detects a number of
issues (such as [Rule 2 - Size restrictions](rules.html#rule2-size)) that you may ignore,
however ignoring such issues **comes with a SIGNIFICANT level of risk!**
Once the tarball is packaged it will
run `txzchk(1)`, which will also run `fnamchk(1)`, as part of its algorithm.
The use of `mkiocccentry -W ....` is **highly discouraged** as this may ignore
warnings about a problem that may cause your submission to be **REJECTED!**"
The same can be said of the `-Y` option, and to a lesser extent `-y`: the `-y`
is mostly for the test script and the `-Y` is like `-y` but even more
aggressive.
If `mkiocccentry` encounters an **error**, the program will exit and the xz
compressed tarball **will NOT be generated**: this is a **feature, not a bug**!
If you encounter a **bug** with the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
**PLEASE run the `bug_report.sh` script to help us out here!**
While you don't have to install the
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry),
if you don't, in order to run a tool outside the repo directory
you will have to specify `mkiocccentry(1)` command line options to locate required tools
such as `chkentry(1)` (`mkiocccentry -C chkentry ..`), `txzchk(1)` (`mkiocccentry -T txzchk ..`),
and `fnamchk(1)` (`mkiocccentry -F fnamchk ..`).
The `mkiocccentry(1)` tool will ignore any filename or directory that begins with a period (`.`).
The `mkiocccentry(1)` tool will ignore all files that begin with `COPYING`, `COPYRIGHT`, and `LICENSE`, regardless
of filename case.
The `mkiocccentry(1)` tool will reject any of the following files if they are found directly under
the top level directory (`topdir`):
* README.md
* index.html
* prog
* prog.alt
* prog.alt.o
* prog.orig.c
* filenames matching the `[0-9][0-9][0-9][0-9]_*.tar.bz2` file glob
The files listed in the above list are allowed to exist in sub-directories: just **NOT** directly under
the top level directory (`topdir`).
The `mkiocccentry(1)` tool evaluates all filenames and directory names in a case
independent way: thus `FOO`, `Foo`, and `foo` are considered the **SAME** file
even if your filesystem doesn't do the same.
Having two or more filenames that differ only by case **WILL** lead to problems
because of the previous statement.
When the `mkiocccentry(1)` tool ignores a file, that file is **NOT** included as
part of your submission.
When the `mkiocccentry(1)` tool ignores a directory, that directory,
and everything under that directory is **NOT** included as part of
your submission.
The `mkiocccentry(1)` tool will ignore all symlinks.
Creating a directory directly under the top level directory (`topdir`)
that is normally considered to be a regular file, such as a directory
named `Makefile`, `prog.alt.c`, `prog.c`, `remarks.md`, `try.alt.sh`,
or `try.sh` is **NOT** a good idea and will likely cause the
`mkiocccentry(1)` tool to abort with a **fatal error**.
The required `Makefile` and `remarks.md` files may **NOT** be empty. This
does not mean just 0 bytes but also that it **MUST** have **content**, and
content that is relevant (e.g. a Makefile with just comments is **NOT**
allowed). However, with the exception of the `Makefile`, the `mkiocccentry(1)`
tool will **ONLY** check file size.
If the optional file `try.alt.sh`, or `try.sh` exists and is an empty file,
the `mkiocccentry(1)` tool will abort with a **fatal error**.
If the `mkiocccentry(1)` tool encounters anything that isn't a file, isn't a
directory, and isn't a symlink (which the tool ignores), the `mkiocccentry(1)`
tool to abort with a **fatal error**.
See
FAQ on "[How do I report bugs in an `mkiocccentry` tool?](../faq.html#mkiocccentry_bugs)".
See [Rule 11 - Legal rule abuse](rules.html#rule11-legal-rulea-abuse) for warnings about ignoring `mkiocccentry(1)` tool warnings.
See
FAQ on "[What is the `fnamchk` tool?](../faq.html#fnamchk)".
See
FAQ on "[What is mkiocccentry in simple terms?](../faq.html#about_mkiocccentry)".
See
FAQ on "[What is the mkiocccentry tool, how do I obtain it and how do I use it](../faq.html#mkiocccentry)".
Jump to: [top](#)
<div id="fun">
## Fun😄damental Guidelines
</div>
The reason for the times of day are so that key IOCCC events are **calculated** The reason for the times of day are so that key IOCCC events are **calculated**
to be a **fun**ctional UTC time. :-) to be a **fun**ctional UTC time. :-)
@@ -1254,10 +1352,11 @@ With respect to [nested functions](#nested-functions), try `chkentry -b`.
Jump to: [top](#) Jump to: [top](#)
<div id="more-information"></div> <div id="more-information">
<div id="information"></div> <div id="information">
# For more information
# FOR MORE INFORMATION: </div>
</div>
For questions or comments about the contest, see [Contacting the IOCCC](../contact.html). For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
+12 -19
View File
@@ -480,7 +480,7 @@ granted provided 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.10 2025-11-30</strong>.</p> <p>These IOCCC Rules are version <strong>29.11 2025-11-30</strong>.</p>
<p>Reminder: be SURE to read the <a href="guidelines.html">IOCCC guidelines</a>.</p> <p>Reminder: be SURE to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
<div id="rule0"> <div id="rule0">
<h2 id="rule-0---dates">Rule 0 - Dates</h2> <h2 id="rule-0---dates">Rule 0 - Dates</h2>
@@ -494,13 +494,16 @@ allowing people to <a href="submit.html">upload submissions</a>.</p>
when people will no longer be allowed to upload submissions.</p> when people will no longer be allowed to upload submissions.</p>
<p>The above <strong>dates and times may change <em>AT ANY TIME</em></strong> until the <a href="../status.html">contest status</a> is <strong>open</strong>.</p> <p>The above <strong>dates and times may change <em>AT ANY TIME</em></strong> until the <a href="../status.html">contest status</a> is <strong>open</strong>.</p>
<p>The above timestamps are in “<em>YYYY-MM-DD HH:MM:SS.micros UTC</em>” format.</p> <p>The above timestamps are in “<em>YYYY-MM-DD HH:MM:SS.micros UTC</em>” format.</p>
<p>See <a href="../quick-start.html#enter">entering the IOCCC</a>.</p> <p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
<p>See <p>See
FAQ on “<a href="../faq.html#feedback">How can I comment or make a suggestion on IOCCC rules, guidelines and tools?</a>”.</p> FAQ on “<a href="../faq.html#feedback">How can I comment or make a suggestion on IOCCC rules, guidelines and tools?</a>”.</p>
<div id="rule1"> <div id="rule1">
<div id="rule1-c">
<h2 id="rule-1---c-program">Rule 1 - C program</h2> <h2 id="rule-1---c-program">Rule 1 - C program</h2>
</div> </div>
<p>Your submission <strong>MUST</strong> be a C program that does NOT <code>#include</code> data files.</p> </div>
<p>Your submission <strong>MUST</strong> be a C program.</p>
<p>See the <a href="guidelines.html#guidelines-for-rule-1---c-program">Guidelines for Rule 1 - C program</a>.</p>
<div id="rule2"> <div id="rule2">
<div id="rule2-size-restrictions"> <div id="rule2-size-restrictions">
<div id="rule2-size"> <div id="rule2-size">
@@ -526,8 +529,6 @@ During development this can be checked using <code>iocccsize(1)</code>:</p>
</div> </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>
<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> <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">
<div id="rule2b-net-size"> <div id="rule2b-net-size">
@@ -550,16 +551,9 @@ Use mkiocccentry</a>.</p>
<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
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 <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 temporary password, which you <strong>MUST</strong> change within 14 days.</p>
fail to change it in a timely manner, you’ll need to <p>See <a href="register.html">How to register for the IOCCC</a>.</p>
<a href="../contact.html">contact the Judges</a> by email to request a reset.</p>
<p>It can take a few days to process your registration and for the server to
email your details, therefore make sure to allow yourself ample time to
register and submit your entries; <strong>DO NOT WAIT UNTIL THE FINAL DAYS</strong>
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="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</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> <p>See <a href="guidelines.html#guideline-3---register">Guidelines for Rule 3 - Register for the IOCCC</a>.</p>
<div id="rule4"> <div id="rule4">
<div id="rule4-required-files"> <div id="rule4-required-files">
@@ -664,8 +658,9 @@ owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by
<strong>MUST</strong> detail that ownership, i.e., who owns what, and document the permission <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> 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>You are permitted to use tools to write your code.</p>
<p>See <a href="rules.html#rule16-anonymous-judging">Rule 16 - Anonymous Judging</a>.</p> <p>See <a href="rules.html#rule16-anonymous-judging">Rule 16 - Anonymous Judging</a>,
<p>See <a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p> and
<a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
<div id="rule8"> <div id="rule8">
<div id="rule8-submitting-requirements"> <div id="rule8-submitting-requirements">
<h2 id="rule-8---submitting-requirements">Rule 8 - Submitting requirements</h2> <h2 id="rule-8---submitting-requirements">Rule 8 - Submitting requirements</h2>
@@ -682,7 +677,6 @@ and resubmit. In order to avoid potential packaging errors, it is <strong>highly
recommended</strong> to use <code>mkiocccentry(1)</code>, <strong>AND</strong> to check from time to time the 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 status on the submit server, to see if any tests run by the server failed to
validate your submission.</p> validate your submission.</p>
<p>Do <strong>NOT</strong> register more than one account!</p>
<p>See <p>See
<a href="rules.html#rule3-register">Rule 3 - Registering for the IOCCC</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>, <a href="rules.html#rule15-gnu-makefile">Rule 15 - GNU Makefile</a>,
@@ -740,8 +734,7 @@ is rejected.</p>
version, <strong>PLEASE</strong> indicate that in your <code>remarks.md</code> file of your non-rule 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 abusing version so that the Judges don’t think you uploaded a duplicate into a
wrong slot by mistake.</p> wrong slot by mistake.</p>
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule <p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule abuse</a>.</p>
abuse</a>.</p>
<div id="rule12"> <div id="rule12">
<div id="rule12-utf8"> <div id="rule12-utf8">
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2> <h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
+13 -23
View File
@@ -39,7 +39,7 @@ writing by [contacting the judges](../contact.html).
## Rules Version ## Rules Version
These IOCCC Rules are version **29.10 2025-11-30**. These IOCCC Rules are version **29.11 2025-11-30**.
Reminder: be SURE to read the [IOCCC guidelines](guidelines.html). Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
@@ -63,17 +63,21 @@ The above **dates and times may change _AT ANY TIME_** until the [contest status
The above timestamps are in "_YYYY-MM-DD HH:MM:SS.micros UTC_" format. The above timestamps are in "_YYYY-MM-DD HH:MM:SS.micros UTC_" format.
See [entering the IOCCC](../quick-start.html#enter). See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
See See
FAQ on "[How can I comment or make a suggestion on IOCCC rules, guidelines and tools?](../faq.html#feedback)". FAQ on "[How can I comment or make a suggestion on IOCCC rules, guidelines and tools?](../faq.html#feedback)".
<div id="rule1"> <div id="rule1">
<div id="rule1-c">
## Rule 1 - C program ## Rule 1 - C program
</div> </div>
</div>
Your submission **MUST** be a C program that does NOT `#include` data files. Your submission **MUST** be a C program.
See the [Guidelines for Rule 1 - C program](guidelines.html#guidelines-for-rule-1---c-program).
<div id="rule2"> <div id="rule2">
@@ -110,9 +114,6 @@ See the [Guidelines for Rule 2 - Size restrictions](guidelines.html#guideline-2-
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.
**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). See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
@@ -143,20 +144,12 @@ You **MUST** register, using a valid email address, in order to submit
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 A few days after registering, you'll receive your UUID username and
temporary password, which you **MUST** change within 14 days. If you temporary password, which you **MUST** change within 14 days.
fail to change it in a timely manner, you'll need to
[contact the Judges](../contact.html) by email to request a reset.
It can take a few days to process your registration and for the server to See [How to register for the IOCCC](register.html).
email your details, therefore make sure to allow yourself ample time to
register and submit your entries; **DO NOT WAIT UNTIL THE FINAL DAYS**
to register! The judges are **NOT** responsible for delayed or lost
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 [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
See [Rule 8 - Submitting requirements](rules.html#rule8).
See [Guidelines for Rule 3 - Register for the IOCCC](guidelines.html#guideline-3---register). See [Guidelines for Rule 3 - Register for the IOCCC](guidelines.html#guideline-3---register).
@@ -300,9 +293,9 @@ you obtained from them in your `remarks.md` file.
You are permitted to use tools to write your code. You are permitted to use tools to write your code.
See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging). See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging),
and
See [Guidelines for Rule 7 - Original Work](guidelines.html#guideline-7---original-work). [Guidelines for Rule 7 - Original Work](guidelines.html#guideline-7---original-work).
<div id="rule8"> <div id="rule8">
@@ -325,8 +318,6 @@ 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 status on the submit server, to see if any tests run by the server failed to
validate your submission. validate your submission.
Do **NOT** register more than one account!
See See
[Rule 3 - Registering for the IOCCC](rules.html#rule3-register), [Rule 3 - Registering for the IOCCC](rules.html#rule3-register),
[Rule 15 - GNU Makefile](rules.html#rule15-gnu-makefile), [Rule 15 - GNU Makefile](rules.html#rule15-gnu-makefile),
@@ -403,8 +394,7 @@ 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 abusing version so that the Judges don't think you uploaded a duplicate into a
wrong slot by mistake. wrong slot by mistake.
See [Guidelines for Rule 11 - Legal rule See [Guidelines for Rule 11 - Legal rule abuse](guidelines.html#guideline-11---abuse).
abuse](guidelines.html#guideline-11---abuse).
<div id="rule12"> <div id="rule12">
+5 -5
View File
@@ -16826,11 +16826,11 @@
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/guidelines.html</loc> <loc>https://www.ioccc.org/next/guidelines.html</loc>
<lastmod>2025-12-01T05:53:50+00:00</lastmod> <lastmod>2025-12-01T09:13:14+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/guidelines.md</loc> <loc>https://www.ioccc.org/next/guidelines.md</loc>
<lastmod>2025-12-01T05:53:50+00:00</lastmod> <lastmod>2025-12-01T09:13:08+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/next/index.html</loc> <loc>https://www.ioccc.org/next/index.html</loc>
@@ -16870,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-12-01T05:53:50+00:00</lastmod> <lastmod>2025-12-01T09:04:25+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-12-01T05:53:50+00:00</lastmod> <lastmod>2025-12-01T09:06:35+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-12-01T06:08:29+00:00</lastmod> <lastmod>2025-12-01T09:18:23+00:00</lastmod>
</url> </url>
<url> <url>
<loc>https://www.ioccc.org/status.json</loc> <loc>https://www.ioccc.org/status.json</loc>