Skip to content

Commit 5021fa6

Browse files
committed
checkpoint rules version 29.03 2025-11-19
Add an `#ruleX` anchor tag to each rule. Fix `GNU Makefile syntax` in `Rule 15 Building`. Remove redundant text in `Rule 17 Packaging` about empty/blank files. Ran `make quick_www` to perform the above.
1 parent be670c3 commit 5021fa6

File tree

3 files changed

+109
-19
lines changed

3 files changed

+109
-19
lines changed

next/rules.html

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -474,38 +474,50 @@ <h1 id="the-ioccc-is-closed">The IOCCC is closed</h1>
474474
<!-- END: the next line ends content from: inc/rules.closed.hdr -->
475475
<!-- This is the last line modified by the tool: bin/gen-status.sh -->
476476
<h2 id="th-international-obfuscated-c-code-contest-official-rules">29th International Obfuscated C Code Contest Official Rules</h2>
477-
<p>Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll.</p>
477+
<p>Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll.</p>
478478
<p>All Rights Reserved. Permission for personal, education or non-profit use is
479479
granted provided this this copyright and notice are included in its entirety
480480
and remains unaltered. All other uses <strong>MUST</strong> receive prior permission in
481481
writing by <a href="../contact.html">contacting the judges</a>.</p>
482482
<h2 id="rules-version">Rules version</h2>
483-
<p>These IOCCC Rules are version <strong>29.02 2025-11-19</strong>.</p>
483+
<p>These IOCCC Rules are version <strong>29.03 2025-11-19</strong>.</p>
484484
<p>Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
485+
<div id="rule0">
485486
<h2 id="rule-0-dates">Rule 0 Dates</h2>
487+
</div>
486488
<p>This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.</p>
487489
<p>This contest will enter the open state on ${OPEN_DATE_TIME} UTC.</p>
488490
<p>This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC.</p>
489491
<p>The above dates are subject to change until the contest is officially open.</p>
490492
<p><strong>NOTE</strong>: As of this draft, the above dates are TBD (to be determined).</p>
493+
<div id="rule1">
491494
<h2 id="rule-1-program">Rule 1 Program</h2>
495+
</div>
492496
<p>Your submission <strong>MUST</strong> be a C program.</p>
497+
<div id="rule2">
493498
<h2 id="rule-2-size">Rule 2 Size</h2>
499+
</div>
494500
<p><code>Rule 2</code> requires that your submission satisfy <strong>BOTH</strong>
495501
<a href="rules.html#rule-2a-gross-size">Rule 2a Gross Size</a>
496502
and
497503
<a href="rules.html#rule-2b-net-size">Rule 2b Next Size</a>.
498504
During development this can be checked using <code>iocccsize(1)</code>:</p>
499505
<p>iocccsize prog.c</p>
506+
<div id="rule2a">
500507
<h3 id="rule-2a-gross-size">Rule 2a Gross Size</h3>
508+
</div>
501509
<p>The overall maximum size of your <code>prog.c</code> program source <strong>MUST NOT</strong>
502510
exceed <strong>4993</strong> bytes.</p>
511+
<div id="rule2b">
503512
<h3 id="rule-2b-net-size">Rule 2b Net Size</h3>
513+
</div>
504514
<p>When the filename of your program source (i.e., <code>prog.c</code>) is given as a
505515
command line argument to the latest version of the official IOCCC size
506516
tool (hereby referred to as <code>iocccsize(1)</code>), the value printed <strong>MUST
507517
NOT</strong> exceed <strong>2503</strong>.</p>
518+
<div id="rule3">
508519
<h2 id="rule-3-register">Rule 3 Register</h2>
520+
</div>
509521
<p>You <strong>MUST</strong> register, using a valid email address, in order to submit
510522
entries to the IOCCC. You may register while the contest is <strong>pending</strong> or <strong>open</strong>.</p>
511523
<p>A few days after registering, you’ll receive your UUID username and
@@ -519,7 +531,9 @@ <h2 id="rule-3-register">Rule 3 Register</h2>
519531
email or for those who wait until the last minute to try to register!</p>
520532
<p>See <a href="../quick-start.html#enter">Entering the IOCCC: the bare minimum you need to know</a>.</p>
521533
<p>See <a href="rules.html#rule-8-submission">Rule 8 Submission</a>.</p>
534+
<div id="rule4">
522535
<h2 id="rule-4-files">Rule 4 Files</h2>
536+
</div>
523537
<p>The submission <strong>MUST</strong> include at least these files: <code>Makefile</code>, <code>prog.c</code>,
524538
<code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>. The last two <strong>MUST</strong> be
525539
generated by <code>mkiocccenty(1)</code> when packing a submission, and <strong>MUST</strong>
@@ -528,7 +542,7 @@ <h2 id="rule-4-files">Rule 4 Files</h2>
528542
have a file size <strong>greater than 0</strong>.</p>
529543
<p>Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the <code>Makefile</code>
530544
compiles your code, the executable (if applicable) <strong>MUST</strong> be called <code>prog</code>.
531-
The `<code>Makefile</code> may compile your source code into other filenames as well.</p>
545+
The <code>Makefile</code> may compile your source code into other filenames as well.</p>
532546
<p>As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
533547
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in
534548
your top directory, as original content.</p>
@@ -555,11 +569,13 @@ <h2 id="rule-4-files">Rule 4 Files</h2>
555569
<p>The <code>remarks.md</code> and <code>Makefile</code> are explained in more detail in the Guidelines.</p>
556570
<p>See <a href="../markdown.html">IOCCC markdown guidelines</a>.</p>
557571
<p>See <a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
572+
<div id="rule5">
558573
<h2 id="rule-5-purity">Rule 5 Purity</h2>
574+
</div>
559575
<p>Your submission <strong>MUST NOT</strong> modify the filenames or content of any of
560576
your original submission, such as <code>prog.c</code>, <code>Makefile</code>, or any supplied
561577
data files. To modify files, your program can make a copy or you can
562-
use the Makefile to setup working copies. Any working copies <strong>MUST</strong> be
578+
use the <code>Makefile</code> to setup working copies. Any working copies <strong>MUST</strong> be
563579
cleaned up by the <code>Makefile</code> <code>clobber</code> target, so as to restore the
564580
directory to its original state.</p>
565581
<p>Your submission <strong>MUST NOT</strong> create or modify directories and files
@@ -570,13 +586,17 @@ <h2 id="rule-5-purity">Rule 5 Purity</h2>
570586
original form, including the removal of any created files and directories.</p>
571587
<p>Your code should be able to run under a
572588
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
589+
<div id="rule6">
573590
<h2 id="rule-6-free">Rule 6 Free</h2>
591+
</div>
574592
<p>I am <strong>NOT</strong> a Rule, I am a <code>free(void *human);</code> ‼️</p>
575593
<div class="sourceCode" id="cb1"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(!(</span>ioccc<span class="op">(</span>rule<span class="op">(</span>you<span class="op">(</span>are<span class="op">(</span>number<span class="op">(</span><span class="dv">6</span><span class="op">))))))</span> <span class="op">{</span></span>
576594
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> ha<span class="op">();</span> ha<span class="op">();</span> ha<span class="op">();</span></span>
577595
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span></code></pre></div>
578596
<p>See <a href="rules.html#rule-19-prime">Rule 19 Prime</a>.</p>
597+
<div id="rule7">
579598
<h2 id="rule-7-original-work">Rule 7 Original Work</h2>
599+
</div>
580600
<p>In short: You wrote it, you own it, and its an original work.</p>
581601
<p>You, the author(s), <strong>MUST</strong> own the contents of your submission, or you <strong>MUST</strong>
582602
have permission from the original owner(s) to its use. If you submit
@@ -593,7 +613,9 @@ <h2 id="rule-7-original-work">Rule 7 Original Work</h2>
593613
If you do make use of such tools or services, then we encourage you to
594614
describe what tools and how you used those tools, in your <code>remarks.md</code> file.</p>
595615
<p>See <a href="rules.html#rule-16-anonymous">Rule 16 Anonymous</a>.</p>
616+
<div id="rule8">
596617
<h2 id="rule-8-submission">Rule 8 Submission</h2>
618+
</div>
597619
<p>The Submit Server will only accept submissions from those who have
598620
registered and only while the contest is open.</p>
599621
<p>The Submit Server places a total submission size limit of <strong>3999971</strong> bytes.</p>
@@ -607,14 +629,18 @@ <h2 id="rule-8-submission">Rule 8 Submission</h2>
607629
<a href="rules.html#rule-15-building">Rule 15 Building</a>,
608630
and
609631
<a href="rules.html#rule-17-packaging">Rule 17 Packaging</a>.</p>
632+
<div id="rule9">
610633
<h2 id="rule-9-no-hands">Rule 9 No hands</h2>
634+
</div>
611635
<p>Entries requiring human interaction to be initially compiled are <strong>NOT</strong>
612636
permitted. However, see the guidelines. Each entry <strong>MUST</strong> automated the
613637
its build process using <code>bash</code>, <code>gmake</code>, <code>gcc</code>, <code>clang</code>, under a
614638
<a href="https://pubs.opengroup.org/onlinepubs/9799919799/">SUS environment</a>.</p>
615639
<p>Note references to <code>gmake</code> can be any GNU Make compatible tool.</p>
616-
<p>See <a href="rules.html#rule-17-building">Rule 17 Building</a>.</p>
640+
<p>See <a href="rules.html#rule-15-building">Rule 15 Building</a>.</p>
641+
<div id="rule10">
617642
<h2 id="rule-10-privileges">Rule 10 Privileges</h2>
643+
</div>
618644
<p>Programs that require special privileges (setuid(2), setgid(2),
619645
super-user, special owner, special group, etc.) are <strong>HIGHLY DISCOURAGED</strong>.
620646
We do <strong>NOT</strong> guarantee these functions will behave as you expect on our
@@ -628,7 +654,9 @@ <h2 id="rule-10-privileges">Rule 10 Privileges</h2>
628654
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>,
629655
and
630656
<a href="rules.html#rule-5-purity">Rule 5 Purity</a>.</p>
657+
<div id="rule11">
631658
<h2 id="rule-11-abuse">Rule 11 Abuse</h2>
659+
</div>
632660
<p>Legal abuse of the rules is somewhat encouraged, but comes with risks.
633661
A submission that, in the opinion of the Judges, violates the rules <strong>WILL
634662
BE DISQUALIFIED</strong>. Submissions that plan to abuse the rules <strong>MUST</strong> justify
@@ -646,9 +674,13 @@ <h2 id="rule-11-abuse">Rule 11 Abuse</h2>
646674
version, please indicate that in your <code>remarks.md</code> file of your non-rule
647675
abusing version so that the Judges don’t think you uploaded a duplicate
648676
into a wrong slot by mistake.</p>
677+
<div id="rule12">
649678
<h2 id="rule-12-utf-8">Rule 12 UTF-8</h2>
679+
</div>
650680
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too by the IOCCC.</p>
681+
<div id="rule13">
651682
<h2 id="rule-13-newlines">Rule 13 Newlines</h2>
683+
</div>
652684
<p>Any C source that fails to compile because lines contain carriage-returns
653685
(CTRL+M, <code>\r</code>) in particular as part of DOS/Windows style newlines might
654686
be rejected. Please do <strong>NOT</strong> put trailing CTRL+M in <code>prog.c</code>, <code>Makefile</code>,
@@ -661,16 +693,20 @@ <h2 id="rule-13-newlines">Rule 13 Newlines</h2>
661693
need to do this, please document that in your <code>remarks.md</code> file and if
662694
your compiler complains about this, document this too and update your
663695
<code>Makefile</code> to account for this.</p>
696+
<div id="rule14">
664697
<h2 id="rule-14-resubmit">Rule 14 Resubmit</h2>
698+
</div>
665699
<p>Submissions that are substantially similar to previous winning IOCCC
666700
entries are discouraged.</p>
667701
<p>You are allowed to resubmit to a later contest, a submission that didn’t
668702
win the IOCCC. If you do so, then you would be well advised to try and
669703
enhance and improve your submission. If you do resubmit something that
670704
didn’t previously win, then you are encouraged to mention this in your
671705
<code>remarks.md</code> file as this sometimes helps.</p>
706+
<div id="rule15">
672707
<h2 id="rule-15-building">Rule 15 Building</h2>
673-
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Make file syntax. Its recommended
708+
</div>
709+
<p>The <code>Makefile</code> <strong>MUST</strong> adhere to GNU Makefile syntax. Its recommended
674710
that you copy and rename the <code>Makefile.example</code> as template. The primary
675711
target of the <code>Makefile</code> <strong>MUST</strong> be <code>prog</code> and the source file is <code>prog.c</code>.
676712
The C compiler and preprocessor <strong>MUST</strong> be invoked using <code>${CC}</code> and <code>${CPP}</code>
@@ -691,7 +727,9 @@ <h2 id="rule-15-building">Rule 15 Building</h2>
691727
GNU long name options <code>--example</code> or extensions like <code>grep -P</code>.</p>
692728
<p>Do <strong>NOT</strong> assume that <code>.</code> (current directory) is in the <code>$PATH</code> environment variable.</p>
693729
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
730+
<div id="rule16">
694731
<h2 id="rule-16-anonymous">Rule 16 Anonymous</h2>
732+
</div>
695733
<p>Your source code, data files, remarks, and program output <strong>MUST NOT</strong>
696734
identify the author(s) of your code (unless you are <strong>Peter Honeyman</strong>
697735
or pretending to be <strong>Peter Honeyman</strong>). In order to be impartial the
@@ -700,7 +738,9 @@ <h2 id="rule-16-anonymous">Rule 16 Anonymous</h2>
700738
a past winner, you <strong>MUST NOT</strong> reveal your identity deliberately or by
701739
accident anywhere in your submission. <strong><em>Failure to comply may result
702740
in the submission being disqualified.</em></strong></p>
741+
<div id="rule17">
703742
<h2 id="rule-17-packaging">Rule 17 Packaging</h2>
743+
</div>
704744
<p>The files, directories, and paths <strong>MUST</strong> conform to the limits imposed by
705745
<code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their names, count, path
706746
length, directory tree depth, and permissions.</p>
@@ -719,8 +759,8 @@ <h2 id="rule-17-packaging">Rule 17 Packaging</h2>
719759
<p>The unpacked submission directory <strong>MUST</strong> pass the checks performed by the
720760
current version of <code>chksubmit(1)</code>.</p>
721761
<p>The <code>prog.c</code> file <strong>MUST</strong> pass the <a href="rules.html#rule-2-size">Rule 2 Size</a>
722-
size checks performed by <code>iocccsize(1)</code>. The <code>Makefile</code> and <code>remarks.md</code> files cannot
723-
be empty. The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
762+
size checks performed by <code>iocccsize(1)</code>.</p>
763+
<p>The <code>.auth.json</code> and <code>.info.json</code> files <strong>MUST</strong> be compatible with what
724764
<code>mkiocccentry(1)</code> generates.</p>
725765
<p>Submissions that package using older versions of the mkiocccentry
726766
toolkit to are <strong>HIGHLY LIKELY</strong> to be <strong>REJECTED</strong>! Be sure
@@ -730,12 +770,16 @@ <h2 id="rule-17-packaging">Rule 17 Packaging</h2>
730770
<p>In summary: it is best to use <code>mkioccentry(1)</code> to package your submission,
731771
rather than roll-it-by-hand.</p>
732772
<p>See <a href="rules.html#rule-4-files">Rule 4 Files</a>.</p>
773+
<div id="rule18">
733774
<h2 id="rule-18-license">Rule 18 License</h2>
775+
</div>
734776
<p>The entirety of your submission <strong>MUST</strong> be submitted under the following license:</p>
735777
<p><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></p>
736778
<p>See <a href="rules.html#rule-7-original-work">Rule 7 Original Work</a>.</p>
779+
<div id="rule19">
737780
<h2 id="rule-19-prime">Rule 19 Prime</h2>
738-
<p>This 19th rule, while prime, is reserved for future abuse. :-)
781+
</div>
782+
<p>This 19th rule, while prime, is reserved for future abuse 😁.
739783
Additional rules, both humorous and otherwise, may be added
740784
below this rule in future contests.</p>
741785
<p>See <a href="rules.html#rule-6-free">Rule 6 Free</a>.</p>

0 commit comments

Comments
 (0)