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:
1 parent
e43fdbe9f3
commit
eda2531e4d
5 files changed
+559
-415
No files matched your search
+221
-159
@@ -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>
|
||||
<h1 id="guidelines-version">Guidelines Version</h1>
|
||||
<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 class="leftbar">
|
||||
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.
|
||||
</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="guideline-2---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
|
||||
judges</a>.</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
|
||||
to get around the size limits of
|
||||
<a href="rules.html#rule2-size">Rule 2 - Size restrictions</a>
|
||||
because of the <code>iocccsize(1)</code> algorithm.</p>
|
||||
<p>Yes Virginia, <strong>the previous guideline sentence is an important hint</strong>!</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="guideline3">
|
||||
<div 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="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>
|
||||
@@ -536,6 +597,13 @@ describe how you used such tools</strong> in your <code>remarks.md</code> file.<
|
||||
<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>
|
||||
<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="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>
|
||||
@@ -680,154 +748,12 @@ FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommend
|
||||
<p>See the
|
||||
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>
|
||||
<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 && 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">
|
||||
<h1 id="general-guidelines">General Guidelines</h1>
|
||||
</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>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>
|
||||
@@ -898,12 +824,10 @@ an appropriate level of obfuscation.</p>
|
||||
<strong>VERY GOOD START</strong> to a great submission!</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="likes">
|
||||
|
||||
</div>
|
||||
<div id="dislikes">
|
||||
|
||||
<h2 id="our-likes-and-dislikes">Our Likes and Dislikes:</h2>
|
||||
</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
|
||||
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>
|
||||
@@ -1126,8 +1050,7 @@ sort of code will work:</p>
|
||||
adapt to a wide collection of environments will be favored. For
|
||||
example, don’t depend on a particular type or size of display.
|
||||
Don’t assume the use of a particular browser. Instead assume a
|
||||
generic browser that forms to a widely used <a href="https://www.w3.org/standards/">W3C
|
||||
standard</a>.
|
||||
generic browser that forms to a widely used <a href="https://www.w3.org/standards/">W3C standard</a>.
|
||||
Don’t assume a particular sound sub-system or video driver is installed
|
||||
in the OS. Instead, make use of a well known and widely available open
|
||||
source program (one that actually works) to display audio/visual data.</p>
|
||||
@@ -1290,10 +1213,151 @@ is a <strong>hint</strong>. :-)</p>
|
||||
<code>remarks.md</code> file: it is a required file for a reason. :-)</p>
|
||||
<p>Try to be even more creative!</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="fun">
|
||||
|
||||
<div 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 && 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>
|
||||
<h1 id="fundamental-guidelines">Fun😄damental Guidelines</h1>
|
||||
<p>The reason for the times of day are so that key IOCCC events are <strong>calculated</strong>
|
||||
to be a <strong>fun</strong>ctional UTC time. :-)</p>
|
||||
<p>At least 2 of several reasons for selecting the prime, 2503, for
|
||||
@@ -1404,12 +1468,10 @@ it? :-)</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>
|
||||
<div id="more-information">
|
||||
|
||||
</div>
|
||||
<div id="information">
|
||||
|
||||
<h1 id="for-more-information">For more information</h1>
|
||||
</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><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>
|
||||
|
||||
+308
-209
@@ -13,7 +13,7 @@ writing by [contacting the judges](../contact.html).
|
||||
# Guidelines Version
|
||||
|
||||
<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 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).
|
||||
|
||||
|
||||
<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="guideline-2---size">
|
||||
<div id="guideline2-size">
|
||||
@@ -73,6 +116,9 @@ judges](../judges.html).
|
||||
|
||||
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
|
||||
to get around the size limits of
|
||||
[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](#)
|
||||
|
||||
|
||||
<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="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](#)
|
||||
|
||||
|
||||
<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="guideline-11---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](#)
|
||||
|
||||
|
||||
<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">
|
||||
# General Guidelines
|
||||
</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).
|
||||
|
||||
@@ -601,10 +502,11 @@ A clean looking program with misleading comments and variable names might be a
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
<div id="likes"></div>
|
||||
<div id="dislikes"></div>
|
||||
|
||||
# OUR LIKES AND DISLIKES:
|
||||
<div id="likes">
|
||||
<div id="dislikes">
|
||||
## Our Likes and Dislikes:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
We **VERY MUCH LIKE** submissions that use an edited variant of the
|
||||
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
|
||||
example, don't depend on a particular type or size of display.
|
||||
Don't assume the use of a particular browser. Instead assume a
|
||||
generic browser that forms to a widely used [W3C
|
||||
standard](https://www.w3.org/standards/).
|
||||
generic browser that forms to a widely used [W3C standard](https://www.w3.org/standards/).
|
||||
Don't assume a particular sound sub-system or video driver is installed
|
||||
in the OS. Instead, make use of a well known and widely available open
|
||||
source program (one that actually works) to display audio/visual data.
|
||||
@@ -1111,9 +1012,206 @@ Try to be even more creative!
|
||||
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**
|
||||
to be a **fun**ctional UTC time. :-)
|
||||
@@ -1254,10 +1352,11 @@ With respect to [nested functions](#nested-functions), try `chkentry -b`.
|
||||
Jump to: [top](#)
|
||||
|
||||
|
||||
<div id="more-information"></div>
|
||||
<div id="information"></div>
|
||||
|
||||
# FOR MORE INFORMATION:
|
||||
<div id="more-information">
|
||||
<div id="information">
|
||||
# For more information
|
||||
</div>
|
||||
</div>
|
||||
|
||||
For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
|
||||
|
||||
|
||||
+12
-19
@@ -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
|
||||
writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
<h2 id="rules-version">Rules Version</h2>
|
||||
<p>These IOCCC Rules are version <strong>29.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>
|
||||
<div id="rule0">
|
||||
<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>
|
||||
<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>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
|
||||
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-c">
|
||||
<h2 id="rule-1---c-program">Rule 1 - C program</h2>
|
||||
</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-size-restrictions">
|
||||
<div id="rule2-size">
|
||||
@@ -526,8 +529,6 @@ During development this can be checked using <code>iocccsize(1)</code>:</p>
|
||||
</div>
|
||||
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
|
||||
exceed <strong>4993</strong> bytes.</p>
|
||||
<p><strong>NOTE</strong>: by default <code>iocccsize</code> will only report the rule 2b size, unless the
|
||||
code surpasses the limit.</p>
|
||||
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
|
||||
<div id="rule2b">
|
||||
<div id="rule2b-net-size">
|
||||
@@ -550,16 +551,9 @@ Use mkiocccentry</a>.</p>
|
||||
<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>
|
||||
<p>A few days after registering, you’ll receive your UUID username and
|
||||
temporary password, which you <strong>MUST</strong> change within 14 days. If you
|
||||
fail to change it in a timely manner, you’ll need to
|
||||
<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>
|
||||
temporary password, which you <strong>MUST</strong> change within 14 days.</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>See <a href="rules.html#rule8">Rule 8 - Submitting requirements</a>.</p>
|
||||
<p>See <a href="guidelines.html#guideline-3---register">Guidelines for Rule 3 - Register for the IOCCC</a>.</p>
|
||||
<div id="rule4">
|
||||
<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
|
||||
you obtained from them in your <code>remarks.md</code> file.</p>
|
||||
<p>You are permitted to use tools to write your code.</p>
|
||||
<p>See <a href="rules.html#rule16-anonymous-judging">Rule 16 - Anonymous Judging</a>.</p>
|
||||
<p>See <a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
|
||||
<p>See <a href="rules.html#rule16-anonymous-judging">Rule 16 - Anonymous Judging</a>,
|
||||
and
|
||||
<a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
|
||||
<div id="rule8">
|
||||
<div id="rule8-submitting-requirements">
|
||||
<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
|
||||
status on the submit server, to see if any tests run by the server failed to
|
||||
validate your submission.</p>
|
||||
<p>Do <strong>NOT</strong> register more than one account!</p>
|
||||
<p>See
|
||||
<a href="rules.html#rule3-register">Rule 3 - Registering for the IOCCC</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
|
||||
abusing version so that the Judges don’t think you uploaded a duplicate into a
|
||||
wrong slot by mistake.</p>
|
||||
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule
|
||||
abuse</a>.</p>
|
||||
<p>See <a href="guidelines.html#guideline-11---abuse">Guidelines for Rule 11 - Legal rule abuse</a>.</p>
|
||||
<div id="rule12">
|
||||
<div id="rule12-utf8">
|
||||
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
|
||||
|
||||
+13
-23
@@ -39,7 +39,7 @@ writing by [contacting the judges](../contact.html).
|
||||
|
||||
## 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).
|
||||
|
||||
@@ -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.
|
||||
|
||||
See [entering the IOCCC](../quick-start.html#enter).
|
||||
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
|
||||
|
||||
See
|
||||
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-c">
|
||||
## Rule 1 - C program
|
||||
</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">
|
||||
@@ -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**
|
||||
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).
|
||||
|
||||
|
||||
@@ -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**.
|
||||
|
||||
A few days after registering, you'll receive your UUID username and
|
||||
temporary password, which you **MUST** change within 14 days. If you
|
||||
fail to change it in a timely manner, you'll need to
|
||||
[contact the Judges](../contact.html) by email to request a reset.
|
||||
temporary password, which you **MUST** change within 14 days.
|
||||
|
||||
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!
|
||||
See [How to register for the IOCCC](register.html).
|
||||
|
||||
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).
|
||||
|
||||
|
||||
@@ -300,9 +293,9 @@ you obtained from them in your `remarks.md` file.
|
||||
|
||||
You are permitted to use tools to write your code.
|
||||
|
||||
See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging).
|
||||
|
||||
See [Guidelines for Rule 7 - Original Work](guidelines.html#guideline-7---original-work).
|
||||
See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging),
|
||||
and
|
||||
[Guidelines for Rule 7 - Original Work](guidelines.html#guideline-7---original-work).
|
||||
|
||||
|
||||
<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
|
||||
validate your submission.
|
||||
|
||||
Do **NOT** register more than one account!
|
||||
|
||||
See
|
||||
[Rule 3 - Registering for the IOCCC](rules.html#rule3-register),
|
||||
[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
|
||||
wrong slot by mistake.
|
||||
|
||||
See [Guidelines for Rule 11 - Legal rule
|
||||
abuse](guidelines.html#guideline-11---abuse).
|
||||
See [Guidelines for Rule 11 - Legal rule abuse](guidelines.html#guideline-11---abuse).
|
||||
|
||||
|
||||
<div id="rule12">
|
||||
|
||||
+5
-5
@@ -16826,11 +16826,11 @@
|
||||
</url>
|
||||
<url>
|
||||
<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>
|
||||
<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>
|
||||
<loc>https://www.ioccc.org/next/index.html</loc>
|
||||
@@ -16870,11 +16870,11 @@
|
||||
</url>
|
||||
<url>
|
||||
<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>
|
||||
<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>
|
||||
<loc>https://www.ioccc.org/next/submit.html</loc>
|
||||
@@ -16938,7 +16938,7 @@
|
||||
</url>
|
||||
<url>
|
||||
<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>
|
||||
<loc>https://www.ioccc.org/status.json</loc>
|
||||
|
||||
Reference in new issue
Block a user