improve rules & guidelines
Added a number of change bars to the rules & guidelines. Recommend recommend that all markdown files in your submission observe [IOCCC markdown guidelines](../markdown.html). Made use of "_..._" consistent in the rules & guidelines. Updated some the fun guidelines. Performed some whitespace cleanup in the rules & guidelines. Changed IOCCC Rules to version **29.12 2025-12-01**. Changed IOCCC Guidelines to version **29.04 2025-12-01** Ran `make quick_www` to perform the above.
This commit is contained in:
1 parent
eda2531e4d
commit
75387360d0
5 files changed
+524
-224
No files matched your search
+178
-93
@@ -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.03 2025-11-30</strong>.
|
||||
These IOCCC guidelines are version <strong>29.04 2025-12-01</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC.
|
||||
@@ -554,22 +554,30 @@ because of the <code>iocccsize(1)</code> algorithm.</p>
|
||||
<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
|
||||
<p class="leftbar">
|
||||
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>
|
||||
using either a group email address, or an email address for one of the authors.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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
|
||||
<p class="leftbar">
|
||||
If after a few days you believe your registration hasn’t been process, then
|
||||
<a href="../contact.html">contact the Judges</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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>
|
||||
<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>
|
||||
@@ -593,7 +601,9 @@ If you fail to change your temporary password by that deadline, then you’ll ne
|
||||
authors who skillfully employed various techniques to develop their code.
|
||||
If you do make use of such tools or services, then we <strong>ENCOURAGE you to
|
||||
describe how you used such tools</strong> in your <code>remarks.md</code> file.</p>
|
||||
<p>In short: You created it, you own it, its an original work, or you have explicit permission to the work.</p>
|
||||
<p class="leftbar">
|
||||
In short: You created it, you own it, its an original work, or you have explicit permission to the work.
|
||||
</p>
|
||||
<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>
|
||||
@@ -677,14 +687,18 @@ This is one of the reasons why the <a href="rules.html">IOCCC rules</a> and
|
||||
<p>Submissions will be judged in an environment that has no <strong>IDE</strong>.
|
||||
Any submission that fails to compile/build because it requires
|
||||
an <strong>IDE</strong> will be rejected.</p>
|
||||
<p>We will use the GNU <code>make(1)</code> tool, your <code>Makefile</code>, as well as tools found in the
|
||||
<p class="leftbar">
|
||||
We will use the GNU <code>make(1)</code> tool, your <code>Makefile</code>, as well as tools found in the
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>
|
||||
environments, and commonly found on systems that reasonably conform to the
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX Specification</a>
|
||||
in the building and compiling of your submission.</p>
|
||||
<p>Your Makefile <strong>MUST</strong> be compatible with GNU <code>make</code> and we suggest you use
|
||||
in the building and compiling of your submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Your Makefile <strong>MUST</strong> be compatible with GNU <code>make</code> and we suggest you use
|
||||
<a href="Makefile.example">Makefile.example</a> as a template, renamed as Makefile of
|
||||
course.</p>
|
||||
course.
|
||||
</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -695,13 +709,19 @@ FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommend
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the most recent release of
|
||||
<p class="leftbar">
|
||||
We <strong>STRONGLY</strong> recommend you <strong>do</strong> install the most recent release of
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
because use of older versions of the mkiocccentry toolkit are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>!</p>
|
||||
<p>If you submit your own JSON files (<strong>OTHER THAN</strong> <code>.auth.json</code> and
|
||||
<code>.info.json</code>) then they do <strong>NOT</strong> have to be valid JSON.</p>
|
||||
<p>However, if you do provide invalid JSON files, <strong>PLEASE</strong>
|
||||
document and <strong>clearly explain</strong> this in your <code>remarks.md</code> file.</p>
|
||||
because use of older versions of the mkiocccentry toolkit are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you submit your own JSON files (<strong>OTHER THAN</strong> <code>.auth.json</code> and
|
||||
<code>.info.json</code>) then they do <strong>NOT</strong> have to be valid JSON.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
However, if you do provide invalid JSON files, <strong>PLEASE</strong>
|
||||
document and <strong>clearly explain</strong> this in your <code>remarks.md</code> file.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
An <em>extra file</em> is defined as a file that is not <code>prog.c</code>, <code>prog.alt.c</code>,
|
||||
<code>try.sh</code>, <code>try.alt.sh</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>.auth.json</code> and <code>.info.json</code>:
|
||||
@@ -715,24 +735,40 @@ are considered <em>free files</em>, and do not count towards the
|
||||
<a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>
|
||||
limit of <strong>31</strong> <em>extra files</em>.
|
||||
</p>
|
||||
<p>If you use an optional filename for something other than their intended use
|
||||
in order to get past the file limit, we will consider that an abuse of rules.</p>
|
||||
<p>The <code>mkiocccentry</code> generated tarball does <strong>NOT</strong> reveal who you are! For this
|
||||
reason, the tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball.</p>
|
||||
<p>You should NOT use a tarball as an <em>extra file</em> for a test-suite unless you
|
||||
<p class="leftbar">
|
||||
If you use an optional filename for something other than their intended use
|
||||
in order to get past the file limit, we will consider that an abuse of rules.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>mkiocccentry</code> generated tarball does <strong>NOT</strong> reveal who you are! For this
|
||||
reason, the tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
You should NOT use a tarball as an <em>extra file</em> for a test-suite unless you
|
||||
have a very good reason for this: if you do include a tarball as an <em>extra file</em>,
|
||||
then you <strong>MUST</strong> specify why in your <code>remarks.md</code> file.</p>
|
||||
<p>If you <strong>DO</strong> include a tarball as an <em>extra file</em>, and the build process or the
|
||||
then you <strong>MUST</strong> specify why in your <code>remarks.md</code> file.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you <strong>DO</strong> include a tarball as an <em>extra file</em>, and the build process or the
|
||||
program extracts said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove the
|
||||
extracted files.</p>
|
||||
<p>Instead of including a large test-suite that requires a lot of files as part of
|
||||
extracted files.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Instead of including a large test-suite that requires a lot of files as part of
|
||||
your submission, if your submission doesn’t require the test-suite to be
|
||||
available to run, then in your <code>remarks.md</code> you could include URL where such a
|
||||
test-suite may be downloaded from and how to use the test-suite to test your
|
||||
submission, assuming it is not reveal who you are.</p>
|
||||
<p>If you <strong>DO</strong> include a tarball then make sure it uses the v7 format. See the
|
||||
submission, assuming it is not reveal who you are.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you <strong>DO</strong> include a tarball then make sure it uses the v7 format. See the
|
||||
FAQ on “<a href="../faq.html#extra-files">extra files</a>”
|
||||
for details on how to make a v7 tarball.</p>
|
||||
for details on how to make a v7 tarball.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
We recommend that all markdown files in your submission observe our
|
||||
<a href="../markdown.html">IOCCC markdown guidelines</a>.
|
||||
</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="../faq.html#try_scripts">What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</a>”.</p>
|
||||
<p>See the
|
||||
@@ -768,7 +804,9 @@ previously uploaded submission by rebuilding your submission with the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>,
|
||||
and then re-uploading it to <strong>the same slot number</strong> on the
|
||||
<a href="https://submit.ioccc.org">submit server</a>.</p>
|
||||
<p>The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.</p>
|
||||
<p class="leftbar">
|
||||
The <strong>official locale</strong> of the <strong>IOCCC</strong> is <strong>C</strong>.
|
||||
</p>
|
||||
<p>You are <strong>encouraged</strong> to examine the <a href="../years.html">winners of previous contests</a>.</p>
|
||||
<p>Because <a href="rules.html">rules</a> change from year to year, some <a href="../years.html">past winning entries</a>
|
||||
may be rejected this year.</p>
|
||||
@@ -982,11 +1020,13 @@ is quite another to use many bytes of <code>-D</code>s in order to try and squee
|
||||
source under the size limit.</p>
|
||||
<p>Your source code, post-pre-processing, should not exceed the size of
|
||||
<a href="https://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a>. :-)</p>
|
||||
<p>You should try to restrict commands used in the build file to commands found in
|
||||
<p class="leftbar">
|
||||
You should try to restrict commands used in the build file to commands found in
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>
|
||||
environments and systems that conform to the <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>.</p>
|
||||
Specification</a>.
|
||||
</p>
|
||||
<p>You may compile and use your own programs. If you do, try to build and execute
|
||||
from the current directory. This restriction is not a hard and
|
||||
absolute one. The intent is to ensure that the building of your
|
||||
@@ -1272,42 +1312,59 @@ without having to type in answers each time, you can use the <code>-d</code> or
|
||||
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>
|
||||
<p class="leftbar">
|
||||
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 class="leftbar">
|
||||
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 class="leftbar">
|
||||
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 class="leftbar">
|
||||
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 class="leftbar">
|
||||
The same can be said of <code>mkiocccentry -Y ...</code> , and to a lesser extent <code>mkiocccentry -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
|
||||
<p class="leftbar">
|
||||
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>
|
||||
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 class="leftbar">
|
||||
The <code>mkiocccentry(1)</code> tool will ignore any filename or directory that begins with a period (<code>.</code>).
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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 class="leftbar">
|
||||
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>
|
||||
<p class="leftbar">
|
||||
<ul>
|
||||
<li>README.md</li>
|
||||
<li>index.html</li>
|
||||
@@ -1317,34 +1374,55 @@ the top level directory (<code>topdir</code>):</p>
|
||||
<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
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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 class="leftbar">
|
||||
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,
|
||||
even if your filesystem doesn’t do the same.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Having two or more filenames that differ only by case <strong>WILL</strong> lead to problems
|
||||
because of the previous statement.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
When the <code>mkiocccentry(1)</code> tool ignores a file, that file is <strong>NOT</strong> included as
|
||||
part of your submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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>)
|
||||
your submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>mkiocccentry(1)</code> tool will ignore all symlinks.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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
|
||||
<code>mkiocccentry(1)</code> tool to abort with a <strong>fatal error</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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
|
||||
tool will <strong>ONLY</strong> check file size.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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 class="leftbar">
|
||||
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>
|
||||
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>
|
||||
@@ -1365,12 +1443,17 @@ to be a <strong>fun</strong>ctional UTC time. :-)</p>
|
||||
may be found on the <a href="https://t5k.org/curios/page.php/2503.html">“Curios!” about 2503</a>.</p>
|
||||
<p>The 2503 value for <a href="rules.html#rule2b-net-size">Rule 2b - Net Size</a> is a decimal anagram
|
||||
of the number of the kernel disk pack of one of the judge’s <a href="https://en.wikipedia.org/wiki/BESM-6">BESM-6</a>.</p>
|
||||
<p>There may or may not be fewer than 2^7+1 reasons why these <a href="guidelines.html">IOCCC
|
||||
guidelines</a> seem obfuscated.</p>
|
||||
<p>Excessively “<em>dotty”</em> use of the <code>chksubmit(1)</code> or <code>chkentry(1)</code> commands suggests that
|
||||
either you like silly things, or that you”<em>RTFS</em>” with some level of care.</p>
|
||||
<p class="leftbar">
|
||||
There may or may not be fewer than 2^7+1 reasons why these
|
||||
<a href="guidelines.html">IOCCC guidelines</a> seem obfuscated.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Excessively “<em>dotty”</em> use of the <code>chksubmit(1)</code> or <code>chkentry(1)</code> commands suggests that
|
||||
either you like silly things, or that you <a href="https://en.wikipedia.org/wiki/RTFM">RTFS</a>
|
||||
with some level of care.
|
||||
</p>
|
||||
<p>Some people might question what actually constitutes a valid JSON file, given
|
||||
the state of the “<em>so-called</em>” JSON spec.. :-)</p>
|
||||
the state of the “<em>so-called</em>” JSON spec. :-)</p>
|
||||
<p>We prefer programs that do not require a fish license: crayons and
|
||||
cat detector vans not withstanding.</p>
|
||||
<p class="leftbar">
|
||||
@@ -1423,7 +1506,7 @@ unless you count this one, in which case there are 3. :-)</p>
|
||||
<p class="leftbar">
|
||||
You very well might not be completely prohibited from failing to not partly
|
||||
misunderstand this particular <em>guideline</em>, but of course, we could not possibly
|
||||
comment! :-) Nevertheless, you are neither prohibited, nor are you fully or partly
|
||||
comment! Nevertheless, you are neither prohibited, nor are you fully or partly
|
||||
required to determine that this or the previous sentence is either false and/or
|
||||
perhaps misleading. Therefore, it might be wise for you to not fail to consider
|
||||
to not do so, accordingly. Thank you very much (allegedly).
|
||||
@@ -1432,7 +1515,7 @@ to not do so, accordingly. Thank you very much (allegedly).
|
||||
Speaker of the House of Commons, or to the speaker of your national
|
||||
parliament should you have one.</p>
|
||||
<p class="leftbar">
|
||||
Please try to avoid this specific individual <em>guideline</em>, if it at all possible.
|
||||
Please try to avoid this specific individual <em>guideline</em>, if it is at all possible.
|
||||
</p>
|
||||
<p>We believe that Mark Twain’s quote:</p>
|
||||
<blockquote>
|
||||
@@ -1447,25 +1530,27 @@ This isn’t to say that another highly compact and obfuscated
|
||||
replacement of <code>init(8)</code> would not be an interesting submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The IOCCC size tool
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c">iocccsize</a>
|
||||
is not an original work, unless you are <a href="../authors.html#Anthony_C_Howe">Anthony C
|
||||
Howe</a>, in which it is original! :-)
|
||||
The
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
is not an original work, unless you one of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/graphs/contributors">several mkiocccentry toolkit contributors</a>.
|
||||
in which case it is original! :-)
|
||||
Even so, most of the programs in the toolkit exceed the
|
||||
<a href="rules.html#rule2-size">Rule 2 - Size</a>
|
||||
so they wouldn’t quality anyway.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The IOCCC tarball validator
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c">txzchk</a> is not
|
||||
an original work, unless you are <a href="../authors.html#Cody_Boone_Ferguson">Cody Boone
|
||||
Ferguson</a>, in which case it is original! :-)
|
||||
</p>
|
||||
<p>If the <a href="../judges.html">IOCCC judges</a> are feeling ornery we
|
||||
If the <a href="../judges.html">IOCCC judges</a> are feeling like it, they
|
||||
might choose to compile your program for running on an Arduino or
|
||||
a PDP-11. Heck, should we ever find an emulator of 60-bit CDC Cyber
|
||||
CPU, we might just try your submission on that emulator as well :-)</p>
|
||||
CPU, we might just try your submission on that emulator as well :-)
|
||||
</p>
|
||||
<p>Do not fear if you’re not 100% sure of the significance of
|
||||
<code>2305567963945518424753102147331756070</code> as it is not of prime importance: or is
|
||||
it? :-)</p>
|
||||
<p>With respect to <a href="#nested-functions">nested functions</a>, try <code>chkentry -b</code>.</p>
|
||||
<p class="leftbar">
|
||||
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 id="information">
|
||||
|
||||
+113
-28
@@ -13,7 +13,7 @@ writing by [contacting the judges](../contact.html).
|
||||
# Guidelines Version
|
||||
|
||||
<p class="leftbar">
|
||||
These IOCCC guidelines are version **29.03 2025-11-30**.
|
||||
These IOCCC guidelines are version **29.04 2025-12-01**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -136,12 +136,16 @@ Jump to: [top](#)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
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.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Processing your registration is an activity overseen by an IOCCC judge.
|
||||
Please be **patient** while an IOCCC judge processes your registration.
|
||||
</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
|
||||
@@ -149,13 +153,17 @@ 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!
|
||||
|
||||
<p class="leftbar">
|
||||
If after a few days you believe your registration hasn't been process, then
|
||||
[contact the Judges](../contact.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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.
|
||||
</p>
|
||||
|
||||
See [How to register for the IOCCC](register.html).
|
||||
|
||||
@@ -187,7 +195,9 @@ authors who skillfully employed various techniques to develop their code.
|
||||
If you do make use of such tools or services, then we **ENCOURAGE you to
|
||||
describe how you used such tools** in your `remarks.md` file.
|
||||
|
||||
<p class="leftbar">
|
||||
In short: You created it, you own it, its an original work, or you have explicit permission to the work.
|
||||
</p>
|
||||
|
||||
See the
|
||||
FAQ on "[May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?](../faq.html#ai)".
|
||||
@@ -299,15 +309,19 @@ Submissions will be judged in an environment that has no **IDE**.
|
||||
Any submission that fails to compile/build because it requires
|
||||
an **IDE** will be rejected.
|
||||
|
||||
<p class="leftbar">
|
||||
We will use the GNU `make(1)` tool, your `Makefile`, as well as tools found in the
|
||||
[Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||
environments, and commonly found on systems that reasonably conform to the
|
||||
[Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||
in the building and compiling of your submission.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Your Makefile **MUST** be compatible with GNU `make` and we suggest you use
|
||||
[Makefile.example](Makefile.example) as a template, renamed as Makefile of
|
||||
course.
|
||||
</p>
|
||||
|
||||
See the
|
||||
FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)".
|
||||
@@ -325,15 +339,21 @@ Jump to: [top](#)
|
||||
</div>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
We **STRONGLY** recommend you **do** install the most recent release of
|
||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
because use of older versions of the mkiocccentry toolkit are **HIGHLY LIKELY** to be **REJECTED**!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you submit your own JSON files (**OTHER THAN** `.auth.json` and
|
||||
`.info.json`) then they do **NOT** have to be valid JSON.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
However, if you do provide invalid JSON files, **PLEASE**
|
||||
document and **clearly explain** this in your `remarks.md` file.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
An _extra file_ is defined as a file that is not `prog.c`, `prog.alt.c`,
|
||||
@@ -350,29 +370,46 @@ are considered _free files_, and do not count towards the
|
||||
limit of **31** _extra files_.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you use an optional filename for something other than their intended use
|
||||
in order to get past the file limit, we will consider that an abuse of rules.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `mkiocccentry` generated tarball does **NOT** reveal who you are! For this
|
||||
reason, the tarball **MUST** be a **v7 format** tarball.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
You should NOT use a tarball as an _extra file_ for a test-suite unless you
|
||||
have a very good reason for this: if you do include a tarball as an _extra file_,
|
||||
then you **MUST** specify why in your `remarks.md` file.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you **DO** include a tarball as an _extra file_, and the build process or the
|
||||
program extracts said tarball(s), the make `clobber` rule **MUST** remove the
|
||||
extracted files.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Instead of including a large test-suite that requires a lot of files as part of
|
||||
your submission, if your submission doesn't require the test-suite to be
|
||||
available to run, then in your `remarks.md` you could include URL where such a
|
||||
test-suite may be downloaded from and how to use the test-suite to test your
|
||||
submission, assuming it is not reveal who you are.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you **DO** include a tarball then make sure it uses the v7 format. See the
|
||||
FAQ on "[extra files](../faq.html#extra-files)"
|
||||
for details on how to make a v7 tarball.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
We recommend that all markdown files in your submission observe our
|
||||
[IOCCC markdown guidelines](../markdown.html).
|
||||
</p>
|
||||
|
||||
See the
|
||||
FAQ on "[What should I do with the `try.sh` and `try.alt.sh` scripts?](../faq.html#try_scripts)".
|
||||
@@ -428,7 +465,9 @@ previously uploaded submission by rebuilding your submission with the
|
||||
and then re-uploading it to **the same slot number** on the
|
||||
[submit server](https://submit.ioccc.org).
|
||||
|
||||
<p class="leftbar">
|
||||
The **official locale** of the **IOCCC** is **C**.
|
||||
</p>
|
||||
|
||||
You are **encouraged** to examine the [winners of previous contests](../years.html).
|
||||
|
||||
@@ -713,11 +752,13 @@ source under the size limit.
|
||||
Your source code, post-pre-processing, should not exceed the size of
|
||||
[Microsoft Windows](https://en.wikipedia.org/wiki/Microsoft_Windows). :-)
|
||||
|
||||
<p class="leftbar">
|
||||
You should try to restrict commands used in the build file to commands found in
|
||||
[Single UNIX
|
||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||
environments and systems that conform to the [Single UNIX
|
||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification).
|
||||
</p>
|
||||
|
||||
You may compile and use your own programs. If you do, try to build and execute
|
||||
from the current directory. This restriction is not a hard and
|
||||
@@ -1091,11 +1132,15 @@ For example:
|
||||
mkiocccentry -d workdir topdir
|
||||
```
|
||||
|
||||
Do **NOT** submit a tarball formed by `mkiocccentry -d ..` **OR** by
|
||||
`mkiocccentry -s seed ..` **OR** by using the `test` UUID!
|
||||
<p class="leftbar">
|
||||
Do **NOT** submit a tarball formed by `mkiocccentry -d ...` **OR** by
|
||||
`mkiocccentry -s seed ...` **OR** by using the `test` UUID!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `mkiocccentry(1)` tool creates an `xz(1)` compressed **v7 format** tarball using a `tar(1)`
|
||||
command of the form:
|
||||
</p>
|
||||
|
||||
``` <!---sh-->
|
||||
cd workdir/UUID-slot_num && tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num
|
||||
@@ -1104,9 +1149,10 @@ command of the form:
|
||||
In many places the `mkiocccentry(1)` tool will prompt you to verify what you input, allowing you to
|
||||
correct details as you go along.
|
||||
|
||||
<p class="leftbar">
|
||||
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.
|
||||
to proceed with a default, however make sure the default is the **CORRECT** answer.
|
||||
</p>
|
||||
|
||||
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,
|
||||
@@ -1115,12 +1161,15 @@ 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
|
||||
<p class="leftbar">
|
||||
The use of `mkiocccentry -W ...` is **highly discouraged** as this may ignore
|
||||
warnings about a problem that may cause your submission to be **REJECTED!**"
|
||||
</p>
|
||||
|
||||
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.
|
||||
<p class="leftbar">
|
||||
The same can be said of `mkiocccentry -Y ...` , and to a lesser extent `mkiocccentry -y ...`:
|
||||
the `-y` is mostly for the test script and the `-Y` is like `-y` but even more aggressive.
|
||||
</p>
|
||||
|
||||
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**!
|
||||
@@ -1129,21 +1178,30 @@ 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!**
|
||||
|
||||
<p class="leftbar">
|
||||
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 ..`).
|
||||
such as `chkentry(1)` (`mkiocccentry -C chkentry ...`), `txzchk(1)` (`mkiocccentry -T txzchk ...`),
|
||||
and `fnamchk(1)` (`mkiocccentry -F fnamchk ...`).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `mkiocccentry(1)` tool will ignore any filename or directory that begins with a period (`.`).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `mkiocccentry(1)` tool will ignore all files that begin with `COPYING`, `COPYRIGHT`, and `LICENSE`, regardless
|
||||
of filename case.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `mkiocccentry(1)` tool will reject any of the following files if they are found directly under
|
||||
the top level directory (`topdir`):
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
* README.md
|
||||
* index.html
|
||||
* prog
|
||||
@@ -1151,44 +1209,65 @@ the top level directory (`topdir`):
|
||||
* prog.alt.o
|
||||
* prog.orig.c
|
||||
* filenames matching the `[0-9][0-9][0-9][0-9]_*.tar.bz2` file glob
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The files listed in the above list are allowed to exist in sub-directories: just **NOT** directly under
|
||||
the top level directory (`topdir`).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Having two or more filenames that differ only by case **WILL** lead to problems
|
||||
because of the previous statement.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
When the `mkiocccentry(1)` tool ignores a file, that file is **NOT** included as
|
||||
part of your submission.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
When the `mkiocccentry(1)` tool ignores a directory, that directory,
|
||||
and everything under that directory is **NOT** included as part of
|
||||
your submission.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `mkiocccentry(1)` tool will ignore all symlinks.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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**.
|
||||
</p>
|
||||
|
||||
See
|
||||
FAQ on "[How do I report bugs in an `mkiocccentry` tool?](../faq.html#mkiocccentry_bugs)".
|
||||
@@ -1223,14 +1302,19 @@ may be found on the ["Curios!" about 2503](https://t5k.org/curios/page.php/2503.
|
||||
The 2503 value for [Rule 2b - Net Size](rules.html#rule2b-net-size) is a decimal anagram
|
||||
of the number of the kernel disk pack of one of the judge's [BESM-6](https://en.wikipedia.org/wiki/BESM-6).
|
||||
|
||||
There may or may not be fewer than 2^7+1 reasons why these [IOCCC
|
||||
guidelines](guidelines.html) seem obfuscated.
|
||||
<p class="leftbar">
|
||||
There may or may not be fewer than 2^7+1 reasons why these
|
||||
[IOCCC guidelines](guidelines.html) seem obfuscated.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Excessively "_dotty"_ use of the `chksubmit(1)` or `chkentry(1)` commands suggests that
|
||||
either you like silly things, or that you "_RTFS_" with some level of care.
|
||||
either you like silly things, or that you [RTFS](https://en.wikipedia.org/wiki/RTFM)
|
||||
with some level of care.
|
||||
</p>
|
||||
|
||||
Some people might question what actually constitutes a valid JSON file, given
|
||||
the state of the "_so-called_" JSON spec.. :-)
|
||||
the state of the "_so-called_" JSON spec. :-)
|
||||
|
||||
We prefer programs that do not require a fish license: crayons and
|
||||
cat detector vans not withstanding.
|
||||
@@ -1295,7 +1379,7 @@ unless you count this one, in which case there are 3. :-)
|
||||
<p class="leftbar">
|
||||
You very well might not be completely prohibited from failing to not partly
|
||||
misunderstand this particular _guideline_, but of course, we could not possibly
|
||||
comment! :-) Nevertheless, you are neither prohibited, nor are you fully or partly
|
||||
comment! Nevertheless, you are neither prohibited, nor are you fully or partly
|
||||
required to determine that this or the previous sentence is either false and/or
|
||||
perhaps misleading. Therefore, it might be wise for you to not fail to consider
|
||||
to not do so, accordingly. Thank you very much (allegedly).
|
||||
@@ -1306,7 +1390,7 @@ Speaker of the House of Commons, or to the speaker of your national
|
||||
parliament should you have one.
|
||||
|
||||
<p class="leftbar">
|
||||
Please try to avoid this specific individual _guideline_, if it at all possible.
|
||||
Please try to avoid this specific individual _guideline_, if it is at all possible.
|
||||
</p>
|
||||
|
||||
We believe that Mark Twain's quote:
|
||||
@@ -1324,29 +1408,30 @@ replacement of `init(8)` would not be an interesting submission.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The IOCCC size tool
|
||||
[iocccsize](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
|
||||
is not an original work, unless you are [Anthony C
|
||||
Howe](../authors.html#Anthony_C_Howe), in which it is original! :-)
|
||||
The
|
||||
[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
is not an original work, unless you one of the
|
||||
[several mkiocccentry toolkit contributors](https://github.com/ioccc-src/mkiocccentry/graphs/contributors).
|
||||
in which case it is original! :-)
|
||||
Even so, most of the programs in the toolkit exceed the
|
||||
[Rule 2 - Size](rules.html#rule2-size)
|
||||
so they wouldn't quality anyway.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The IOCCC tarball validator
|
||||
[txzchk](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c) is not
|
||||
an original work, unless you are [Cody Boone
|
||||
Ferguson](../authors.html#Cody_Boone_Ferguson), in which case it is original! :-)
|
||||
</p>
|
||||
|
||||
If the [IOCCC judges](../judges.html) are feeling ornery we
|
||||
If the [IOCCC judges](../judges.html) are feeling like it, they
|
||||
might choose to compile your program for running on an Arduino or
|
||||
a PDP-11. Heck, should we ever find an emulator of 60-bit CDC Cyber
|
||||
CPU, we might just try your submission on that emulator as well :-)
|
||||
</p>
|
||||
|
||||
Do not fear if you're not 100% sure of the significance of
|
||||
`2305567963945518424753102147331756070` as it is not of prime importance: or is
|
||||
it? :-)
|
||||
|
||||
<p class="leftbar">
|
||||
With respect to [nested functions](#nested-functions), try `chkentry -b`.
|
||||
</p>
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
+143
-80
@@ -480,20 +480,36 @@ 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.11 2025-11-30</strong>.</p>
|
||||
<p>These IOCCC Rules are version <strong>29.12 2025-12-01</strong>.</p>
|
||||
<p class="leftbar">
|
||||
The <span style="font-size:28px;"><b>|</b></span> symbol indicates an <strong>change</strong> from the previous IOCCC.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Because the <strong>IOCCC29</strong> rules was a substantial rewrite, only <strong>important changes</strong> from <strong>IOCCC28</strong> have been marked.
|
||||
</p>
|
||||
<p>Reminder: be SURE to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<div id="rule0">
|
||||
<h2 id="rule-0---dates">Rule 0 - Dates</h2>
|
||||
</div>
|
||||
<p>This IOCCC runs from <code>2025-12-03 20:25:12.045045 UTC</code> to <code>2026-03-13 17:19:23.293137 UTC</code>.</p>
|
||||
<p>This contest will enter the <a href="../faq.html#pending">pending state</a> on <code>2025-12-03 20:25:12.045045 UTC</code>,
|
||||
allowing people to <a href="register.html">register for the IOCCC</a>.</p>
|
||||
<p>This contest will enter the <a href="../faq.html#open">open state</a> on <code>2025-12-15 18:21:24.273033 UTC</code>,
|
||||
allowing people to <a href="submit.html">upload submissions</a>.</p>
|
||||
<p>This contest will enter the <a href="../faq.html#judging">judging state</a> on <code>2026-03-13 17:19:23.293137 UTC</code>,
|
||||
when people will no longer be allowed to upload submissions.</p>
|
||||
<p class="leftbar">
|
||||
This IOCCC runs from <code>2025-12-03 20:25:12.045045 UTC</code> to <code>2026-03-13 17:19:23.293137 UTC</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
This contest will enter the <a href="../faq.html#pending">pending state</a> on <code>2025-12-03 20:25:12.045045 UTC</code>,
|
||||
allowing people to <a href="register.html">register for the IOCCC</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
This contest will enter the <a href="../faq.html#open">open state</a> on <code>2025-12-15 18:21:24.273033 UTC</code>,
|
||||
allowing people to <a href="submit.html">upload submissions</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
This contest will enter the <a href="../faq.html#judging">judging state</a> on <code>2026-03-13 17:19:23.293137 UTC</code>,
|
||||
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 class="leftbar">
|
||||
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: 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>
|
||||
@@ -502,7 +518,9 @@ FAQ on “<a href="../faq.html#feedback">How can I comment or make a suggestion
|
||||
<h2 id="rule-1---c-program">Rule 1 - C program</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>Your submission <strong>MUST</strong> be a C program.</p>
|
||||
<p class="leftbar">
|
||||
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">
|
||||
@@ -560,56 +578,68 @@ temporary password, which you <strong>MUST</strong> change within 14 days.</p>
|
||||
<h2 id="rule-4---required-files">Rule 4 - Required files</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>Your submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
|
||||
<p class="leftbar">
|
||||
Your submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
|
||||
<code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>, the latter two of which are
|
||||
generated by <code>mkiocccentry(1)</code>. See <a href="#rule17-mkiocccentry">Rule 17 -
|
||||
Use mkiocccentry</a>.</p>
|
||||
<p>At a <strong>minimum</strong> the following requirements apply. Additional requirements
|
||||
Use mkiocccentry</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
At a <strong>minimum</strong> the following requirements apply. Additional requirements
|
||||
may be imposed by <code>mkiocccentry(1)</code> updates that have yet to be listed
|
||||
below.</p>
|
||||
<p><strong>NOTE</strong>: <code>mkiocccentry(1)</code> will reject any directory which has prohibited
|
||||
files.</p>
|
||||
<p><strong>NOTE</strong>: by ‘top directory’ we mean the directory with <code>prog.c</code>, <code>Makefile</code>,
|
||||
<code>remarks.md</code> and the <code>mkiocccentry(1)</code> generated files <code>.auth.json</code> and
|
||||
<code>.info.json</code> and <strong>NOT</strong> the <code>topdir</code> arg to <code>mkiocccentry(1)</code>.</p>
|
||||
<ul>
|
||||
<li><p><code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by <code>mkiocccenty(1)</code>
|
||||
below:
|
||||
</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* <code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by <code>mkiocccenty(1)</code>
|
||||
when packing a submission. When <code>chksubmit(1)</code> is run on the submission
|
||||
directory <strong>ALL</strong> tests must pass and if there is <strong>ANY</strong> problem with these
|
||||
JSON files or if either is missing it will fail. See <a href="#rule17-mkiocccentry">Rule 17 - use
|
||||
mkiocccentry</a>.</p></li>
|
||||
<li><p>The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
|
||||
mkiocccentry</a>.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
|
||||
have a file size <strong>greater than 0</strong> and <strong>MUST</strong> have content. Note that
|
||||
<code>mkiocccentry(1)</code> will check for file <strong>size</strong> but will <strong>NOT</strong> check for
|
||||
content.</p></li>
|
||||
<li><p>Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
|
||||
content.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
|
||||
compiles your code, the executable (if applicable) <strong>MUST</strong> be called <code>prog</code>.
|
||||
The <code>Makefile</code> may compile your source code into other filenames as well, if you
|
||||
want.</p></li>
|
||||
<li><p>As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
|
||||
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in your <strong>top</strong>
|
||||
directory.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
|
||||
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory: <code>prog.orig.c</code>,
|
||||
<code>README.md</code> or <code>index.html</code> as those files are reserved by the IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file
|
||||
The <code>Makefile</code> may compile your source code into other filenames as well, if you want.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
|
||||
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in your <strong>top</strong> directory.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
|
||||
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory: <code>prog.orig.c</code>,
|
||||
<code>README.md</code> or <code>index.html</code> as those files are reserved by the IOCCC.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file
|
||||
that matches a file glob pattern form <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code>
|
||||
as those files are reserved by IOCCC.</p></li>
|
||||
<li><p>Your submission may <strong>ONLY</strong> contain files and directories. Other file
|
||||
types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.</p></li>
|
||||
<li><p><strong>All</strong> directories <strong>MUST</strong> have permission mode of <strong>0755</strong>. All files
|
||||
as those files are reserved by IOCCC.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* Your submission may <strong>ONLY</strong> contain files and directories. Other file
|
||||
types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* <strong>All</strong> directories <strong>MUST</strong> have permission mode of <strong>0755</strong>. All files
|
||||
<strong>MUST</strong> have the file mode of <strong>0444</strong>, EXCEPT for files that
|
||||
end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p></li>
|
||||
<li><p>All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.
|
||||
We recommend that markdown files observe our
|
||||
<a href="../markdown.html">IOCCC markdown guidelines</a>.</p></li>
|
||||
<li><p>All filenames are treated as case insensitive. For example, <code>REMARKS.MD</code>,
|
||||
end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.</p>
|
||||
<p><span style="font-size:28px;"><b>|</b></span>
|
||||
* All filenames are treated as case insensitive. For example, <code>REMARKS.MD</code>,
|
||||
and <code>Remarks.md</code>, and <code>remarks.md</code> are considered by <code>mkiocccenty(1)</code>
|
||||
to be the <strong>SAME</strong> file. When preparing a submission on a case
|
||||
sensitive filesystem, ensure that the submission will work on
|
||||
a case insensitive filesystem.</p></li>
|
||||
</ul>
|
||||
a case insensitive filesystem.</p>
|
||||
<p class="leftbar">
|
||||
<strong>NOTE</strong>: by ‘top directory’ we mean the directory with <code>prog.c</code>, <code>Makefile</code>,
|
||||
<code>remarks.md</code> and the <code>mkiocccentry(1)</code> generated files <code>.auth.json</code> and
|
||||
<code>.info.json</code> and <strong>NOT</strong> the <code>topdir</code> arg to <code>mkiocccentry(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>NOTE</strong>: <code>mkiocccentry(1)</code> will reject any directory which has prohibited files.
|
||||
</p>
|
||||
<p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p>
|
||||
<p>See <a href="../markdown.html">IOCCC markdown guidelines</a>.</p>
|
||||
<p>See <a href="rules.html#rule17-mkiocccentry">Rule 17 - Use mkiocccentry</a>.</p>
|
||||
@@ -635,8 +665,10 @@ directories and as long as the directory name or filename does <strong>NOT</stro
|
||||
with a <code>.</code> (dot)).</p>
|
||||
<p>The <code>Makefile</code> <code>clobber</code> target <strong>MUST</strong> restore your submission to its
|
||||
original form, including the removal of any created files and directories.</p>
|
||||
<p>Your code should be able to run under a
|
||||
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
|
||||
<p class="leftbar">
|
||||
Your code should be able to run under a
|
||||
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.
|
||||
</p>
|
||||
<div id="rule6">
|
||||
<div id="rule6-free-rule">
|
||||
<h2 id="rule-6---free-rule">Rule 6 - Free Rule</h2>
|
||||
@@ -652,12 +684,16 @@ original form, including the removal of any created files and directories.</p>
|
||||
<h2 id="rule-7---original-work">Rule 7 - Original Work</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you
|
||||
<p class="leftbar">
|
||||
You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you
|
||||
do <strong>NOT</strong> own the work, then you <strong>MUST</strong> have permission from the original
|
||||
owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by others, you
|
||||
<strong>MUST</strong> detail that ownership, i.e., who owns what, and document the permission
|
||||
you obtained from them in your <code>remarks.md</code> file.</p>
|
||||
<p>You are permitted to use tools to write your code.</p>
|
||||
you obtained from them in your <code>remarks.md</code> file.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
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>,
|
||||
and
|
||||
<a href="guidelines.html#guideline-7---original-work">Guidelines for Rule 7 - Original Work</a>.</p>
|
||||
@@ -670,13 +706,15 @@ and
|
||||
registered and <strong>ONLY</strong> while the contest is open.</p>
|
||||
<p>The submit server places a total size limit of <strong>3999971</strong> bytes <strong>PER</strong>
|
||||
submission.</p>
|
||||
<p>Each account has ten (<strong>10.000</strong>) submission slots (<strong>0..9)</strong>. Each submission
|
||||
<p class="leftbar">
|
||||
Each account has ten (<strong>10.000</strong>) submission slots (<strong>0..9)</strong>. Each submission
|
||||
slot should be annotated by the server as to whether its was received,
|
||||
processed, malformed, etc. Please take note of any errors, rectify,
|
||||
and resubmit. In order to avoid potential packaging errors, it is <strong>highly
|
||||
recommended</strong> to use <code>mkiocccentry(1)</code>, <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>
|
||||
validate your submission.
|
||||
</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>,
|
||||
@@ -772,27 +810,32 @@ win, then you are encouraged to mention this in your <code>remarks.md</code> fil
|
||||
<h2 id="rule-15---gnu-makefile">Rule 15 - GNU Makefile</h2>
|
||||
</div>
|
||||
</div>
|
||||
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. It’s highly recommended
|
||||
<p class="leftbar">
|
||||
The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. It’s highly recommended
|
||||
that you copy the <a href="Makefile.example">Makefile.example</a> as a template, renaming
|
||||
it to <code>Makefile</code>. The primary target of the <code>Makefile</code> <strong>MUST</strong> be <code>prog</code> and
|
||||
the source file is <code>prog.c</code>. The C compiler and preprocessor <strong>MUST</strong> be
|
||||
invoked using <code>${CC}</code> and <code>${CPP}</code> macros respectively.</p>
|
||||
invoked using <code>${CC}</code> and <code>${CPP}</code> macros respectively.
|
||||
</p>
|
||||
<p>The <code>clobber</code> target <strong>MUST</strong> clean and restore the submission directory tree to
|
||||
its original state, such as removing temporary files or any modified data files.
|
||||
Don’t assume that <code>git</code> tool chain is installed, i.e. do <strong>NOT</strong> expect <code>git clean -f</code> to work. To be clear: do <strong>NOT</strong> use <code>git</code> to clean out files as this
|
||||
can cause problems in the winner repo!</p>
|
||||
<p>The <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with
|
||||
<p class="leftbar">
|
||||
The <code>Makefile</code> <strong>MUST</strong> use a syntax that is compatible with
|
||||
<code>bash(1)</code> and GNU <code>make(1)</code>. You are encouraged to use <code>SHELL= bash</code> in your <code>Makefile</code>; please add a space between the <code>=</code> and
|
||||
the value such as:</p>
|
||||
the value such as:
|
||||
</p>
|
||||
<pre><code> SHELL= bash</code></pre>
|
||||
<p>Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
<p class="leftbar">
|
||||
Assume that commands commonly found in <a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">Single UNIX
|
||||
Specification</a>
|
||||
environments and systems are available in the search
|
||||
<code>$PATH</code>. Avoid command options that aren’t part of
|
||||
<a href="https://en.wikipedia.org/wiki/Single_UNIX_Specification">SUS</a>, such as
|
||||
GNU long name options (such as <code>--example</code>) or extensions like <code>grep -P</code>.</p>
|
||||
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment
|
||||
variable.</p>
|
||||
GNU long name options (such as <code>--example</code>) or extensions like <code>grep -P</code>.
|
||||
</p>
|
||||
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment variable.</p>
|
||||
<p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>.</p>
|
||||
<p>See
|
||||
FAQ on “<a href="../faq.html#makefile_details">What are the detailed recommendations for a submission Makefile?</a>”.</p>
|
||||
@@ -820,37 +863,55 @@ may result in the submission being disqualified</em></strong>.</p>
|
||||
<p>The files, directories, and paths <strong>MUST</strong> conform to the limits imposed by
|
||||
<code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their names, count, path
|
||||
length, directory tree depth, and permissions.</p>
|
||||
<p>The submission tree may have at most <strong>13</strong> directories and maximum
|
||||
<p class="leftbar">
|
||||
The submission tree may have at most <strong>13</strong> directories and maximum
|
||||
directory depths of <strong>4</strong>. The maximum number of files, excluding
|
||||
<code>prog.c</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>,
|
||||
<code>.info.json</code> and <code>.auth.json</code> is <strong>31</strong>. And the maximum file-path
|
||||
component is <strong>38</strong> and maximum path length is <strong>60</strong>.</p>
|
||||
component is <strong>38</strong> and maximum path length is <strong>60</strong>.
|
||||
</p>
|
||||
<p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball (i.e., tarball compressed by <code>xz(1)</code>)
|
||||
as constructed by <code>mkiocccentry(1)</code>, which <strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.</p>
|
||||
<p>The tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball, and any supplementary tarballs
|
||||
you provide <strong>MUST</strong> also be <strong>v7 format</strong>.</p>
|
||||
<p>The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong> be
|
||||
less than <code>27651*1024</code> (<strong>28314624</strong>) bytes.</p>
|
||||
<p>The submission <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball filename
|
||||
<strong>MUST</strong> pass all <code>fnamchk(1)</code> checks as well.</p>
|
||||
<p>You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code> <strong>OR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.</p>
|
||||
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
|
||||
minimum required version of <code>chksubmit(1)</code>.</p>
|
||||
<p>Submissions may <strong>NOT</strong> use a <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
<p class="leftbar">
|
||||
The submission <strong>MUST</strong> pass all <code>txzchk(1)</code> checks, and the tarball filename
|
||||
<strong>MUST</strong> pass all <code>fnamchk(1)</code> checks as well.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
You may <strong>NOT</strong> submit a tarball created by the <code>-d</code>, <code>-e</code> <strong>OR</strong> by the <code>-s seed</code> options of <code>mkiocccentry(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
|
||||
minimum required version of <code>chksubmit(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Submissions may <strong>NOT</strong> use a <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
toolkit</a> command line options that
|
||||
are labelled as “<strong>for TESTING purposes</strong>”, <strong>OR</strong> labelled as “<strong>for the use by
|
||||
the IOCCC judges only</strong>”, in their respective man pages.</p>
|
||||
<p>Submissions may <strong>ONLY</strong> use <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
the IOCCC judges only</strong>”, in their respective man pages.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Submissions may <strong>ONLY</strong> use <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
toolkit</a> command lines that confirm
|
||||
to the command’s <code>-h</code> “<em>print help message</em>”, again notwithstanding the options
|
||||
for testing and the IOCCC judges.</p>
|
||||
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule2-size">Rule 2 - Size</a>
|
||||
checks performed by <code>iocccsize(1)</code>.</p>
|
||||
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
|
||||
<code>mkiocccentry(1)</code> generates.</p>
|
||||
<p>Any submission that fails to pass the checks performed by the minimum required
|
||||
for testing and the IOCCC judges.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>prog.c</code> file should pass the <a href="rules.html#rule2-size">Rule 2 - Size</a>
|
||||
checks performed by <code>iocccsize(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
|
||||
<code>mkiocccentry(1)</code> generates.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Any submission that fails to pass the checks performed by the minimum required
|
||||
version of the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry toolkit</a>
|
||||
<strong>WILL be rejected</strong>!</p>
|
||||
<strong>WILL be rejected</strong>!
|
||||
</p>
|
||||
<p>See <a href="rules.html#rule4-required-files">Rule 4 - Required files</a>.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how do I obtain it and how do I use it?</a>”.</p>
|
||||
@@ -864,9 +925,11 @@ FAQ on “<a href="../faq.html#mkiocccentry">What is the mkiocccentry tool, how
|
||||
<div id="rule19">
|
||||
<h2 id="rule-19---prime">Rule 19 - Prime</h2>
|
||||
</div>
|
||||
<p>This 19th rule, while prime, is reserved for future abuse 😁.
|
||||
<p class="leftbar">
|
||||
This 19th rule, while prime, is reserved for future abuse 😁.
|
||||
Additional rules, both humorous and otherwise, may be added
|
||||
below this rule in future contests.</p>
|
||||
below this rule in future contests.
|
||||
</p>
|
||||
<p>See <a href="rules.html#rule6-free-rule">Rule 6 - Free Rule</a>.</p>
|
||||
<h2 id="further-reading">Further Reading</h2>
|
||||
<p>Please read the <a href="guidelines.html">Guidelines</a> next for further commentary on these rules.</p>
|
||||
|
||||
+86
-19
@@ -39,7 +39,15 @@ writing by [contacting the judges](../contact.html).
|
||||
|
||||
## Rules Version
|
||||
|
||||
These IOCCC Rules are version **29.11 2025-11-30**.
|
||||
These IOCCC Rules are version **29.12 2025-12-01**.
|
||||
|
||||
<p class="leftbar">
|
||||
The <span style='font-size:28px;'><b>|</b></span> symbol indicates an **change** from the previous IOCCC.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Because the **IOCCC29** rules was a substantial rewrite, only **important changes** from **IOCCC28** have been marked.
|
||||
</p>
|
||||
|
||||
Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
|
||||
|
||||
@@ -48,20 +56,30 @@ Reminder: be SURE to read the [IOCCC guidelines](guidelines.html).
|
||||
## Rule 0 - Dates
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
This IOCCC runs from `2025-12-03 20:25:12.045045 UTC` to `2026-03-13 17:19:23.293137 UTC`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This contest will enter the [pending state](../faq.html#pending) on `2025-12-03 20:25:12.045045 UTC`,
|
||||
allowing people to [register for the IOCCC](register.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This contest will enter the [open state](../faq.html#open) on `2025-12-15 18:21:24.273033 UTC`,
|
||||
allowing people to [upload submissions](submit.html).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
This contest will enter the [judging state](../faq.html#judging) on `2026-03-13 17:19:23.293137 UTC`,
|
||||
when people will no longer be allowed to upload submissions.
|
||||
</p>
|
||||
|
||||
The above **dates and times may change _AT ANY TIME_** until the [contest status](../status.html) is **open**.
|
||||
|
||||
<p class="leftbar">
|
||||
The above timestamps are in "_YYYY-MM-DD HH:MM:SS.micros UTC_" format.
|
||||
</p>
|
||||
|
||||
See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter).
|
||||
|
||||
@@ -75,7 +93,9 @@ FAQ on "[How can I comment or make a suggestion on IOCCC rules, guidelines and t
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
Your submission **MUST** be a C program.
|
||||
</p>
|
||||
|
||||
See the [Guidelines for Rule 1 - C program](guidelines.html#guidelines-for-rule-1---c-program).
|
||||
|
||||
@@ -159,70 +179,83 @@ See [Guidelines for Rule 3 - Register for the IOCCC](guidelines.html#guideline-3
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
Your submission **MUST** include at least these files: `Makefile`, `prog.c`,
|
||||
`remarks.md`,`.info.json`, and `.auth.json`, the latter two of which are
|
||||
generated by `mkiocccentry(1)`. See [Rule 17 -
|
||||
Use mkiocccentry](#rule17-mkiocccentry).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
At a **minimum** the following requirements apply. Additional requirements
|
||||
may be imposed by `mkiocccentry(1)` updates that have yet to be listed
|
||||
below.
|
||||
|
||||
**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited
|
||||
files.
|
||||
|
||||
**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`,
|
||||
`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and
|
||||
`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`.
|
||||
|
||||
below:
|
||||
</p>
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* `.info.json` and `.auth.json` **MUST** be generated by `mkiocccenty(1)`
|
||||
when packing a submission. When `chksubmit(1)` is run on the submission
|
||||
directory **ALL** tests must pass and if there is **ANY** problem with these
|
||||
JSON files or if either is missing it will fail. See [Rule 17 - use
|
||||
mkiocccentry](#rule17-mkiocccentry).
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json` **MUST**
|
||||
have a file size **greater than 0** and **MUST** have content. Note that
|
||||
`mkiocccentry(1)` will check for file **size** but will **NOT** check for
|
||||
content.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submitted source code **MUST** be called `prog.c`. When the `Makefile`
|
||||
compiles your code, the executable (if applicable) **MUST** be called `prog`.
|
||||
The `Makefile` may compile your source code into other filenames as well, if you
|
||||
want.
|
||||
The `Makefile` may compile your source code into other filenames as well, if you want.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* As `prog`, `prog.alt`, `prog.alt.o`, `prog.o` may be created by your
|
||||
`Makefile`, your submission **MUST NOT** include those files in your **top**
|
||||
directory.
|
||||
`Makefile`, your submission **MUST NOT** include those files in your **top** directory.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **NOT** have any file that starts with `COPYING`,
|
||||
`COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **NOT** have in the **top** directory: `prog.orig.c`,
|
||||
`README.md` or `index.html` as those files are reserved by the IOCCC.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **NOT** have in the **top** directory any file
|
||||
that matches a file glob pattern form `[0-9][0-9][0-9][0-9]_*.tar.bz2`
|
||||
as those files are reserved by IOCCC.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* Your submission may **ONLY** contain files and directories. Other file
|
||||
types such as symlinks, sockets etc. are **NOT** allowed.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* **All** directories **MUST** have permission mode of **0755**. All files
|
||||
**MUST** have the file mode of **0444**, EXCEPT for files that
|
||||
end in `.sh` which must have a mode of **0555**.
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* All files that end in `.md` **MUST** be in markdown format.
|
||||
We recommend that markdown files observe our
|
||||
[IOCCC markdown guidelines](../markdown.html).
|
||||
|
||||
<span style='font-size:28px;'><b>|</b></span>
|
||||
* All filenames are treated as case insensitive. For example, `REMARKS.MD`,
|
||||
and `Remarks.md`, and `remarks.md` are considered by `mkiocccenty(1)`
|
||||
to be the **SAME** file. When preparing a submission on a case
|
||||
sensitive filesystem, ensure that the submission will work on
|
||||
a case insensitive filesystem.
|
||||
|
||||
<p class="leftbar">
|
||||
**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`,
|
||||
`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and
|
||||
`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited files.
|
||||
</p>
|
||||
|
||||
The `remarks.md` and `Makefile` are explained in more detail in the Guidelines.
|
||||
|
||||
See [IOCCC markdown guidelines](../markdown.html).
|
||||
@@ -259,8 +292,10 @@ with a `.` (dot)).
|
||||
The `Makefile` `clobber` target **MUST** restore your submission to its
|
||||
original form, including the removal of any created files and directories.
|
||||
|
||||
<p class="leftbar">
|
||||
Your code should be able to run under a
|
||||
[SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="rule6">
|
||||
@@ -285,13 +320,17 @@ See [Rule 19 - Prime](rules.html#rule-19---prime).
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
You, the author(s), **MUST** own the contents of your submission, **OR**, IF you
|
||||
do **NOT** own the work, then you **MUST** have permission from the original
|
||||
owner(s) to its use. If you submit **ANY** content that is owned by others, you
|
||||
**MUST** detail that ownership, i.e., who owns what, and document the permission
|
||||
you obtained from them in your `remarks.md` file.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
You are permitted to use tools to write your code.
|
||||
</p>
|
||||
|
||||
See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging),
|
||||
and
|
||||
@@ -310,6 +349,7 @@ registered and **ONLY** while the contest is open.
|
||||
The submit server places a total size limit of **3999971** bytes **PER**
|
||||
submission.
|
||||
|
||||
<p class="leftbar">
|
||||
Each account has ten (**10.000**) submission slots (**0..9)**. Each submission
|
||||
slot should be annotated by the server as to whether its was received,
|
||||
processed, malformed, etc. Please take note of any errors, rectify,
|
||||
@@ -317,6 +357,7 @@ and resubmit. In order to avoid potential packaging errors, it is **highly
|
||||
recommended** to use `mkiocccentry(1)`, **AND** to check from time to time the
|
||||
status on the submit server, to see if any tests run by the server failed to
|
||||
validate your submission.
|
||||
</p>
|
||||
|
||||
See
|
||||
[Rule 3 - Registering for the IOCCC](rules.html#rule3-register),
|
||||
@@ -446,11 +487,13 @@ win, then you are encouraged to mention this in your `remarks.md` file as this
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** adhere to GNU Makefile syntax. It's highly recommended
|
||||
that you copy the [Makefile.example](Makefile.example) as a template, renaming
|
||||
it to `Makefile`. The primary target of the `Makefile` **MUST** be `prog` and
|
||||
the source file is `prog.c`. The C compiler and preprocessor **MUST** be
|
||||
invoked using `${CC}` and `${CPP}` macros respectively.
|
||||
</p>
|
||||
|
||||
The `clobber` target **MUST** clean and restore the submission directory tree to
|
||||
its original state, such as removing temporary files or any modified data files.
|
||||
@@ -458,23 +501,27 @@ Don't assume that `git` tool chain is installed, i.e. do **NOT** expect `git
|
||||
clean -f` to work. To be clear: do **NOT** use `git` to clean out files as this
|
||||
can cause problems in the winner repo!
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** use a syntax that is compatible with
|
||||
`bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL=
|
||||
bash` in your `Makefile`; please add a space between the `=` and
|
||||
the value such as:
|
||||
</p>
|
||||
|
||||
``` <!---makefile-->
|
||||
SHELL= bash
|
||||
```
|
||||
|
||||
<p class="leftbar">
|
||||
Assume that commands commonly found in [Single UNIX
|
||||
Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification)
|
||||
environments and systems are available in the search
|
||||
`$PATH`. Avoid command options that aren't part of
|
||||
[SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification), such as
|
||||
GNU long name options (such as `--example`) or extensions like `grep -P`.
|
||||
</p>
|
||||
|
||||
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment
|
||||
variable.
|
||||
Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable.
|
||||
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files).
|
||||
|
||||
@@ -514,11 +561,13 @@ The files, directories, and paths **MUST** conform to the limits imposed by
|
||||
`mkiocccentry(1)`, including but **NOT** limited, to their names, count, path
|
||||
length, directory tree depth, and permissions.
|
||||
|
||||
<p class="leftbar">
|
||||
The submission tree may have at most **13** directories and maximum
|
||||
directory depths of **4**. The maximum number of files, excluding
|
||||
`prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`, `try.alt.sh`,
|
||||
`.info.json` and `.auth.json` is **31**. And the maximum file-path
|
||||
component is **38** and maximum path length is **60**.
|
||||
</p>
|
||||
|
||||
The submission **MUST** be a `.txz` compressed tarball (i.e., tarball compressed by `xz(1)`)
|
||||
as constructed by `mkiocccentry(1)`, which **MUST** be within **[1..3999971]** bytes in size.
|
||||
@@ -529,34 +578,50 @@ you provide **MUST** also be **v7 format**.
|
||||
The sum of all file lengths, after unpacking from the tarball, **MUST** be
|
||||
less than `27651*1024` (**28314624**) bytes.
|
||||
|
||||
<p class="leftbar">
|
||||
The submission **MUST** pass all `txzchk(1)` checks, and the tarball filename
|
||||
**MUST** pass all `fnamchk(1)` checks as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
You may **NOT** submit a tarball created by the `-d`, `-e` **OR** by the `-s
|
||||
seed` options of `mkiocccentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The unpacked submission directory **MUST** pass the checks performed by the
|
||||
minimum required version of `chksubmit(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Submissions may **NOT** use a [mkiocccentry
|
||||
toolkit](https://github.com/ioccc-src/mkiocccentry) command line options that
|
||||
are labelled as "**for TESTING purposes**", **OR** labelled as "**for the use by
|
||||
the IOCCC judges only**", in their respective man pages.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Submissions may **ONLY** use [mkiocccentry
|
||||
toolkit](https://github.com/ioccc-src/mkiocccentry) command lines that confirm
|
||||
to the command's `-h` "_print help message_", again notwithstanding the options
|
||||
for testing and the IOCCC judges.
|
||||
</p>
|
||||
|
||||
The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule2-size)
|
||||
<p class="leftbar">
|
||||
The `prog.c` file should pass the [Rule 2 - Size](rules.html#rule2-size)
|
||||
checks performed by `iocccsize(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.auth.json` and `.info.json` files **MUST** be compatible with what
|
||||
`mkiocccentry(1)` generates.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Any submission that fails to pass the checks performed by the minimum required
|
||||
version of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry)
|
||||
**WILL be rejected**!
|
||||
</p>
|
||||
|
||||
See [Rule 4 - Required files](rules.html#rule4-required-files).
|
||||
|
||||
@@ -581,9 +646,11 @@ See [Rule 7 - Original Work](rules.html#rule-7---original-work).
|
||||
## Rule 19 - Prime
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
This 19th rule, while prime, is reserved for future abuse 😁.
|
||||
Additional rules, both humorous and otherwise, may be added
|
||||
below this rule in future contests.
|
||||
</p>
|
||||
|
||||
See [Rule 6 - Free Rule](rules.html#rule6-free-rule).
|
||||
|
||||
|
||||
+4
-4
@@ -16826,11 +16826,11 @@
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/next/guidelines.html</loc>
|
||||
<lastmod>2025-12-01T09:13:14+00:00</lastmod>
|
||||
<lastmod>2025-12-01T10:26:00+00:00</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/next/guidelines.md</loc>
|
||||
<lastmod>2025-12-01T09:13:08+00:00</lastmod>
|
||||
<lastmod>2025-12-01T10:20:36+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-01T09:04:25+00:00</lastmod>
|
||||
<lastmod>2025-12-01T10:26:00+00:00</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/next/rules.md</loc>
|
||||
<lastmod>2025-12-01T09:06:35+00:00</lastmod>
|
||||
<lastmod>2025-12-01T10:21:01+00:00</lastmod>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://www.ioccc.org/next/submit.html</loc>
|
||||
|
||||
Reference in new issue
Block a user