From 20d0b2a8d445e40bf9941bd5a0751d9f9d495295 Mon Sep 17 00:00:00 2001
From: Landon Curt Noll
| This guidelines file is version 2024-06-15-v28.
| These IOCCC guidelines are version 2024-06-25-v28.
IMPORTANT: Be SURE to read the IOCCC rules.
| ← Lines that start with this symbol indicate a change from the previous IOCCC
| symbol.
submit entries to the International Obfuscated C Code Contest
(IOCCC).
These are not the IOCCC rules, though it does contain comments about -them. The guidelines should be viewed as hints and suggestions. -Entries that violate the guidelines but remain within the rules are -allowed. Even so, you are safer if you remain within the guidelines.
+them. The IOCCC guidelines should be viewed as hints and suggestions. +Entries that violate the guidelines but remain within the rules are +allowed. Even so, you are safer if you remain within the IOCCC guidelines.You should read the current IOCCC rules, prior to submitting entries. -The rules are typically published along with these guidelines.
+The rules are typically published along with the IOCCC guidelines.| This IOCCC runs from 2024-MMM-DD HH:MM:SS UTC to YYYY-MMM-DD HH:MM:SS UTC.
| XXX - date/time is TBD - XXX
| The reason for the times of day are so that key IOCCC events are calculated
for be a functional UTC time. :-)
Until the start of this IOCCC, these rules, guidelines and iocccsize.c +
Until the start of this IOCCC, the IOCCC rules, IOCCC guidelines and iocccsize.c
(contained in the mkiocccentry
toolkit)
tool should be considered provisional BETA versions and may be
@@ -434,7 +434,7 @@ adjusted AT ANY TIME.
| The submit URL should be active on or slightly before 2024-MMM-DD HH:MM:SS UTC.
| XXX - date/time is TBD - XXX
Please wait to submit your entries until after that time.
-The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) +
The IOCCC rules, IOCCC guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available on the official IOCCC website on or slightly before start of this IOCCC. Please check the IOCCC FAQ about how to submit to see how to submit entries, on or after the start of this IOCCC, to be sure @@ -478,7 +478,7 @@ in an ironic way.
to attempt to exploit them. We will award ‘Worst abuse of the rules’ or ‘Best abuse of the rules’ and then plug the hole next year.| Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)
| There may be less than 2^7+1 reasons why these guidelines seem obfuscated.
| There may be less than 2^7+1 reasons why these IOCCC guidelines seem obfuscated.
Check out your program and be sure that it works. We sometimes make the effort to debug an entry that has a slight problem, particularly in or near the final round. On the other hand, we have seen some @@ -503,21 +503,24 @@ misleading comments and variable names might be a good start.
When programs use VTxxx/ANSI sequences, they should NOT be limited to a specific terminal brand. Those programs that work in a standard xterm are considered more portable.
-| Rule 2 (the size rule) refers to the use of the IOCCC size tool called iocccsize.
| See the mkiocccentry toolkit for how to compile iocccsize.c.
| To further clarify rule 2, we subdivided it into two parts, 2a and 2b.
| Your entry must satisfy BOTH the maximum size rule 2a AND your entry
-must satisfy the IOCCC size tool rule 2b.
This tool imposes a 2nd limit on C code size (rule 2b). To check your -code against the 2nd limit of rule 2, use the -i command line option. +
| Rule 2 (the size rule) refers to the use of the IOCCC size tool called iocccsize.
| See the mkiocccentry toolkit for the iocccsize tool.
| To further clarify Rule 2, we subdivided it into two parts, 2a and 2b.
| The overall size limit (see Rule 2a) on prog.c is now 4993 bytes
| Your entry must satisfy BOTH the maximum size Rule 2a AND your entry
+must satisfy the IOCCC size tool Rule 2b.
This tool imposes a 2nd limit on C code size (see Rule 2a. To check your +code against the 2nd limit of Rule 2, use the -i command line option. For example:
./iocccsize -i < prog.c
The IOCCC size tool, when using the -i option, may be summarized as:
- The size tool counts most C reserved words (keyword, secondary,
- and selected preprocessor keywords) as 1. The size tool counts all
- other octets as 1 excluding ASCII whitespace, and excluding any
- ';', '{' or '}' followed by ASCII whitespace, and excluding any
- ';', '{' or '}' octet immediately before the end of file.
++The size tool counts most C reserved words (keyword, secondary,
+
+and selected preprocessor keywords) as 1. The size tool counts all
+other octets as 1 excluding ASCII whitespace, and excluding any
+‘;’, ‘{’ or ‘}’ followed by ASCII whitespace, and excluding any
+‘;’, ‘{’ or ‘}’ octet immediately before the end of file.
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, ASCII formfeed, and ASCII carriage return.
| When ‘;’, ‘{’ or ‘}’ are within a C string, they may still not be
@@ -532,8 +535,9 @@ by the IOCCC size tool source code is preferred by the judges.
| judge’s BESM-6, and 2503 is a decimal anagram of 2053.
Take note that this secondary limit imposed by the IOCCC size tool
obviates some of the need to #define C reserved words in an effort
-to get around the size limits of rule 2.
Yes Virginia, that is a hint!
+| The Rule 2a size was changed from 4096 to 4993: a change that keeps the “2b to 2a” size ratio to a value similar to the 2001-2020 IOCCC era.
We applaud programs that do not issue warnings when compiled.
To avoid warnings, you might be tempted to add various -Wno-foobar
flags. Unfortunately such flags are NOT portable. Moreover,
@@ -633,7 +637,7 @@ not portable and must not be used:
# in a C preprocessor directive must be the 1st non-whitespace octet.
The exit(3) function returns void. Some broken systems have exit(3)
return int, your entry should assume that exit(3) returns a void.
| This guideline has a change mark at the very start of this line.
| This guideline has a change mark at the very start of this line.
Small programs are best when they are short, obscure and concise. While such programs are not as complex as other winners, they do serve a useful purpose. They are often the only program that people @@ -703,7 +707,7 @@ absolute one. The intent is to ensure that the building if your program is reasonably portable.
We prefer programs that are portable across a wide variety of Unix-like operating systems (i.e., Linux, GNU Hurd, BSD, Unix, etc.).
-You are in a maze of twisty guidelines, all different.
+You are in a maze of twisty guidelines, all different.
There are at least zero judges who think that Fideism has little or nothing to do with the IOCCC judging process.
Don’t forget that the building of your program should be done @@ -740,7 +744,7 @@ of code, and the other that is formatted more like a typical C program, we tend to favor the second version. Of course, a third version of the same program that is formatted in an interesting and/or obfuscated way, would definitely win over the first two! -Remember, you can submit more than one entry. See the rules for details.
+Remember, you can submit more than one entry. See the IOCCC rules for details.We suggest that you avoid trying for the ‘smallest self-replicating’ source. The smallest, a zero byte entry, won in 1994.
Programs that claim to be the smallest C source that does something, really @@ -768,13 +772,14 @@ in the OS. Instead, make use of a well known and widely available open source program (one that actually works) to display audio/visual data.
X client entries should avoid using X related libraries and software that is not in wide spread use.
-This is the only guideline that contains the word fizzbin.
-| However, do you know how to play fizzbin?
-You do?!? (Except on Tuesday)
This is the only guideline that contains the word fizzbin.
+| However, do you know how to play fizzbin?
+You do?!? (Except on Tuesday?)
| OK, there are actually 3 guidelines that contain the word fizzbin.
We don’t like entries that use proprietary toolkits such as the M*tif,
Xv*ew, or OpenL*ok toolkits, since not everyone has them. Use an
open source toolkit that is widely and freely available instead.
NOTE: The previous guideline in this spot has been replaced by this guideline:
+NOTE: The previous guideline in this spot has been replaced by this guideline:
X client entries should not to depend on particular items on
.Xdefaults. If you must do so, be sure to note the required lines
in the program “remarks”. They should also not depend on any
@@ -789,12 +794,12 @@ the scope of the contest, we phrase our bias to favor:
| You are well advised to submit entries that conform to the Single UNIX Specification Version 4.
| You very well might not be completely be prohibited from failing to not
-| partly misunderstand this particular guideline, but of course, we could
+| partly misunderstand this particular guideline, but of course, we could
| not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
| you fully 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 do so, accordingly. Thank you very much.
Any complaints about the above guideline could be addressed to the +
Any complaints about the above guideline could be addressed to the Speaker of the House of Commons, or to the speaker of your national parliament should you have one.
We like programs that:
@@ -813,7 +818,7 @@ areas really does help.You are better off explaining what your entry does in the program “remarks” section rather than leaving it obscure for the judges as we might miss something and/or be too tired to notice.
-| Please avoid this specific individual guideline, if it at all possible.
| Please avoid this specific individual guideline, if it at all possible.
We freely admit that interesting, creative or humorous comments in the program “remarks” help your chances of winning. If you had to read so many twisted entries, you too would enjoy a good laugh or two. @@ -828,7 +833,7 @@ their entries. In some cases tools have a “Save As” option that will prevent such trailing control-M’s being added.
One should restrict libcurses to portable features found on BSD or Linux curses.
-Rule 13 states any C source that fails to compile because of unescaped +
Rule 13 states any C source that fails to compile because of unescaped octets with the high bit set (octet value >= 128) will be rejected. Instead of unescaped octets, you should use or escapes:
@@ -856,13 +861,13 @@ into creating a dense blob. Such are the trade-offs that obfuscators face!
However, it is unwise to assume it will run on an i386 or x86 architecture.
We believe that Mark Twain’s remark:
Get your facts first, then you can distort them as you please.
-is a good guideline for those writing code for the IOCCC.
+is a good motto for those writing code for the IOCCC.
| The IOCCC size tool source
is not an original work,
unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content of iocccsize.c, unless you are
-Anthony C Howe, might run the risk of violating rule 7.
-Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
+Anthony C Howe, might run the risk of violating Rule 7.
+Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
However if you do, you might wish to make your tool do something more
interesting than simply implementing the IOCCC size tool algorithm.
While programs that only run in a specific word size are OK. If you have
@@ -909,47 +914,47 @@ and state:
is given enough time and memory. If the value is not a proper integer, the
program will insult a fish named Eric, even if such a fish does not exist.
Legal abuse of the rules is somewhat encouraged. Legal rule abuse +
Legal abuse of the IOCCC rules is somewhat encouraged. Legal rule abuse may involve, but is not limited to, doing things that are technically allowed by -the rules and yet do not fit the spirit of what we intended to be +the IOCCC rules and yet do not fit the spirit of what we intended to be submitted.
Legal rule abuse is encouraged to help promote creativity. Rule abuse entries, regardless of if they receive an award, result in changes to -the next year’s rules and guidelines.
-Legal abuse of the rules is NOT an invitation to violate the -rules. An entry that violates the rules in the +the next year’s IOCCC rules and IOCCC guidelines.
+Legal abuse of the IOCCC rules is NOT an invitation to violate the +IOCCC rules. An entry that violates the rules in the opinion of the judges, WILL be disqualified. RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK! If you have an entry that might otherwise be interesting, you might want to -submit two versions; one that does not abuse the rules and one that +submit two versions; one that does not abuse the IOCCC rules and one that does.
-If you intend to abuse the rules, indicate so in the program +
If you intend to abuse the IOCCC rules, indicate so in the program “remarks”. You must try to justify why you consider your rule abuse to be -allowed under the rules. That is, you must plead your case as to +allowed under the IOCCC rules. That is, you must plead your case as to why your entry is valid. Humor and/or creativity help plead a case.
Abusing the web submission procedure tends to annoy us more than amuse us. Spend your creative energy on content of your entry rather than on the submission process itself.
-We are often asked why the contest rules and -guidelines seem too +
We are often asked why the contest IOCCC rules and +IOCCC guidelines seem too strange or contain mistakes, flaws or grammatical errors. One reason is that we sometimes make genuine mistakes. But in many cases such problems, flaws or areas of confusion are deliberate. Changes to -rules and guidelines in response to rule abuses, are done in a minimal +IOCCC rules and IOCCC guidelines in response to rule abuses, are done in a minimal fashion. Often we will deliberately leave behind holes (or introduce new ones) so that future rule abuse may continue. A cleaver author should be able to read them and “drive a truck through the holes” in -the rules and guidelines.
+the IOCCC rules and IOCCC guidelines.At the risk of stating the obvious, this contest is a parody of the software -development process. The rules and guidelines +development process. The IOCCC rules and IOCCC guidelines are only a small part of the overall contest. Even so, one may think the -contest rules and guideline process as a parody +contest IOCCC rules and IOCCC guidelines process as a parody of the sometimes tragic mismatch between what a customer (or marketing) wants and what engineering delivers. Real programmers must face obfuscated and sometimes conflicting specifications and requirements from marketing, sales, product management an even from customers themselves on a all too regular basis. -This is one of the reasons why the rules and -guidelines are written in obfuscated form.
+This is one of the reasons why the IOCCC rules and +IOCCC guidelines are written in obfuscated form.Entries are judged by Leonid A. Broukhis and Landon Curt Noll.
Each entry submitted is given a random id number and subdirectory. The @@ -974,8 +979,8 @@ and therefore consider any obfuscated source or data file claiming to be from Honeyman to not be form Honeyman. This of course creates an interesting paradox known as the “obfuscated Peter Honeyman paradox”. Should Peter Honeyman actually submit an obfuscated entry, he alone is excluded from the above, as we -will likely believe it just another attempt at confusion. This guideline is -known as the “Peter Honeyman is exempt” guideline.
+will likely believe it just another attempt at confusion. This guideline is +known as the “Peter Honeyman is exempt” guideline.BTW: None of the entries claiming to be from Peter Honeyman have ever won an award. So it is theoretically possible that Peter Honeyman did submit an entry in the past. In the past, Peter had denied @@ -1019,7 +1024,7 @@ skipping over any #include files
In later rounds, other actions are performed including performing miscellaneous tests on the source and binary.
-| This is the very guideline that goes, BING!
| This is the very guideline that goes, BING!
Until we reduce the stack of entries down to about 25 entries, entries are judged on an individual basis. An entry is set aside because it does not, in our opinion, meet the standard established by the round. @@ -1062,7 +1067,7 @@ into voting for a winning entry by offering a bit high quality chocolate. This technique is highly discouraged for use by non-IOCCC judges.
More often than not, we select a small entry (usually one line), a strange/creative layout entry. We sometimes also select an -entry that abuses the contest guidelines in an interesting way, +entry that abuses the IOCCC guidelines in an interesting way, or that stretches the content rules that while legal, is nevertheless goes against the intent of the rules.
In the end, we traditionally pick one entry as ‘best’. Sometimes such @@ -1102,10 +1107,10 @@ and on T-Shirts. More than one winner has been turned in a tattoo!
Last, but not least, winners receive international fame and flames! :-)
| For questions or comments about the contest, see Contacting the IOCCC.
| Be sure to review the IOCCC Rules and Guidelines as
-rules and the guidelines may (and often do) change from year to year.
| You should be sure you have the current rules and
-guidelines prior to submitting entries.
| Be sure to review the IOCCC Rules and Guidelines as the
+IOCCC rules and the IOCCC guidelines may (and often do) change from year to year.
| You should be sure you have the current IOCCC rules and
+IOCCC guidelines prior to submitting entries.
| See the Official IOCCC website news for additional information.
| For the updates and breaking IOCCC news, you are encouraged to follow
the IOCCC on Mastodon account. See our
diff --git a/next/guidelines.md b/next/guidelines.md
index 5994b3dce..ecd4999b6 100644
--- a/next/guidelines.md
+++ b/next/guidelines.md
@@ -30,9 +30,9 @@ and remains unaltered. All other uses must receive prior permission in
writing by [contacting the judges](../contact.html).
-## Guidelines version
+## IOCCC Guidelines version
-**`|`** This guidelines file is version **2024-06-15-v28**.
+**`|`** These [IOCCC guidelines](guidelines.html) are version **2024-06-25-v28**.
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
@@ -52,12 +52,12 @@ submit entries to the [International Obfuscated C Code Contest
(IOCCC)](https://www.ioccc.org).
These are not the IOCCC rules, though it does contain comments about
-them. The guidelines should be viewed as _hints_ and _suggestions_.
-Entries that violate the guidelines but remain within the rules _are
-allowed_. Even so, you are safer if you remain within the guidelines.
+them. The [IOCCC guidelines](guidelines.html) should be viewed as _hints_ and _suggestions_.
+Entries that violate the _guidelines_ but remain within the rules _are
+allowed_. Even so, you are safer if you remain within the [IOCCC guidelines](guidelines.html).
You should read the current [IOCCC rules](rules.html), prior to submitting entries.
-The rules are typically published along with these guidelines.
+The rules are typically published along with the [IOCCC guidelines](guidelines.html).
# WHAT'S NEW THIS IOCCC
@@ -68,7 +68,7 @@ The rules are typically published along with these guidelines.
**`|`** The reason for the times of day are so that key IOCCC events are **calculated**
for be a **fun**ctional UTC time. :-)
-Until the start of this IOCCC, these rules, guidelines and iocccsize.c
+Until the start of this IOCCC, the [IOCCC rules](rules.html), [IOCCC guidelines](guidelines.html) and `iocccsize.c`
(contained in the [mkiocccentry
toolkit](https://github.com/ioccc-src/mkiocccentry))
tool should be considered provisional **BETA** versions and **may be
@@ -81,7 +81,7 @@ The IOCCC submission URL is
+> and selected preprocessor keywords) as 1. The size tool counts all
+> other octets as 1 excluding ASCII whitespace, and excluding any
+> ';', '{' or '}' followed by ASCII whitespace, and excluding any
+> ';', '{' or '}' octet immediately before the end of file.
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline,
ASCII formfeed, and ASCII carriage return.
@@ -215,10 +215,12 @@ by the IOCCC size tool source code is preferred by the judges.
Take note that this secondary limit imposed by the IOCCC size tool
obviates some of the need to `#define` C reserved words in an effort
-to get around the size limits of rule 2.
+to get around the size limits of [Rule 2](rules.html#rule2).
Yes Virginia, **that is a hint**!
+**`|`** The [Rule 2a](rules.html#rule2a) size was changed from 4096 to 4993: a change that keeps the "2b to 2a" size ratio to a value similar to the [2001-2020 IOCCC era](../faq.html#size_rule).
+
We applaud programs that do not issue warnings when compiled.
To avoid warnings, you might be tempted to add various `-Wno-foobar`
flags. Unfortunately such flags are NOT portable. Moreover,
@@ -369,7 +371,7 @@ On 28 January 2007, the Judges rescinded the requirement that the
The `exit(3)` function returns `void`. Some broken systems have `exit(3)`
return `int`, your entry should assume that `exit(3)` returns a `void`.
-**`|`** This guideline has a change mark at the very start of this line.
+**`|`** This _guideline_ has a change mark at the very start of this line.
Small programs are best when they are short, obscure and concise.
While such programs are not as complex as other winners, they do
@@ -455,7 +457,7 @@ program is reasonably portable.
We prefer programs that are portable across a wide variety of Unix-like
operating systems (i.e., Linux, GNU Hurd, BSD, Unix, etc.).
-You are in a maze of twisty guidelines, all different.
+You are in a maze of twisty _guidelines_, all different.
There are at least zero judges who think that Fideism has little
or nothing to do with the IOCCC judging process.
@@ -509,7 +511,7 @@ of code, and the other that is formatted more like a typical C
program, we tend to favor the second version. Of course, a third
version of the same program that is formatted in an interesting
and/or obfuscated way, would definitely win over the first two!
-Remember, you can submit more than one entry. See the rules for details.
+Remember, you can submit more than one entry. See the [IOCCC rules](rules.html) for details.
We suggest that you avoid trying for the 'smallest self-replicating'
source. The smallest, a zero byte entry, [won in 1994](../1994/smr/index.html).
@@ -555,15 +557,18 @@ source program (one that actually works) to display audio/visual data.
X client entries should avoid using X related libraries and
software that is not in wide spread use.
-This is the only guideline that contains the word fizzbin.
+This is the only _guideline_ that contains the word fizzbin.
+
**`|`** However, do you know how to play [fizzbin](https://en.wikipedia.org/wiki/List_of_games_in_Star_Trek#Fizzbin)?
-You do?!? (Except on Tuesday)
+You do?!? (Except on Tuesday?)
+
+**`|`** OK, there are actually 3 _guidelines_ that contain the word fizzbin.
We don't like entries that use proprietary toolkits such as the `M*tif`,
`Xv*ew`, or `OpenL*ok` toolkits, since not everyone has them. Use an
open source toolkit that is widely and freely available instead.
-**NOTE**: The previous guideline in this spot has been replaced by this guideline:
+**NOTE**: The previous _guideline_ in this spot has been replaced by this _guideline_:
X client entries should not to depend on particular items on
`.Xdefaults`. If you must do so, be sure to note the required lines
@@ -584,13 +589,13 @@ the scope of the contest, we phrase our bias to favor:
**`|`** You are **well advised** to submit entries that conform to the [Single UNIX Specification Version 4](https://unix.org/version4/overview.html).
**`|`** You very well might not be completely be prohibited from failing to not
-**`|`** partly misunderstand this particular guideline, but of course, we could
+**`|`** partly misunderstand this particular _guideline_, but of course, we could
**`|`** not possibly comment! :-) Nevertheless, you are neither prohibited, nor are
**`|`** you fully 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 do so, accordingly. Thank you very much.
-Any complaints about the above guideline could be addressed to the
+Any complaints about the above _guideline_ could be addressed to the
Speaker of the House of Commons, or to the speaker of your national
parliament should you have one.
@@ -612,7 +617,7 @@ You are better off explaining what your entry does in the program
"remarks" section rather than leaving it obscure for the judges
as we might miss something and/or be too tired to notice.
-**`|`** Please avoid this specific individual guideline, if it at all possible.
+**`|`** Please avoid this specific individual _guideline_, if it at all possible.
We freely admit that interesting, creative or humorous comments in
the program "remarks" help your chances of winning. If you had to
@@ -631,7 +636,7 @@ prevent such trailing control-M's being added.
One should restrict libcurses to portable features found on BSD
or Linux curses.
-Rule 13 states any C source that fails to compile because of unescaped
+[Rule 13](rules.html#rule13) states any C source that fails to compile because of unescaped
octets with the high bit set (octet value >= 128) will be rejected.
Instead of unescaped octets, you should use \octal or \hex escapes:
@@ -671,15 +676,15 @@ We believe that Mark Twain's remark:
Get your facts first, then you can distort them as you please.
```
-is a good guideline for those writing code for the IOCCC.
+is a good motto for those writing code for the IOCCC.
**`|`** The [IOCCC size tool source](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
is not an original work,
unless you are Anthony C Howe, in which case it is original!
Submitting source that uses the content of iocccsize.c, unless you are
-Anthony C Howe, might run the risk of violating rule 7.
+Anthony C Howe, might run the risk of violating [Rule 7](rules.html#rule7).
-Rule 7 does not prohibit you from writing your own obfuscated IOCCC size tool.
+[Rule 7](rules.html#rule7) does not prohibit you from writing your own obfuscated IOCCC size tool.
However if you do, you might wish to make your tool do something more
interesting than simply implementing the IOCCC size tool algorithm.
@@ -768,53 +773,53 @@ and state:
# ABUSING THE RULES:
-Legal abuse of the [rules](rules.html) is somewhat encouraged. Legal rule abuse
+Legal abuse of the [IOCCC rules](rules.html) is somewhat encouraged. Legal rule abuse
may involve, but is not limited to, doing things that are technically allowed by
-the [rules](rules.html) and yet do not fit the spirit of what we intended to be
+the [IOCCC rules](rules.html) and yet do not fit the spirit of what we intended to be
submitted.
Legal rule abuse is encouraged to help promote creativity. Rule abuse
entries, regardless of if they receive an award, result in changes to
-the next year's [rules](rules.html) and [guidelines](guidelines.html).
+the next year's [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html).
-Legal abuse of the [rules](rules.html) is NOT an invitation to violate the
-[rules](rules.html). An entry that violates the [rules](rules.html) in the
+Legal abuse of the [IOCCC rules](rules.html) is NOT an invitation to violate the
+[IOCCC rules](rules.html). An entry that violates the [rules](rules.html) in the
opinion of the judges, **WILL** be
disqualified. **_RULE ABUSE CARRIES A CERTAIN LEVEL OF RISK!_** If you
have an entry that might otherwise be interesting, you might want to
-submit two versions; one that does not abuse the [rules](rules.html) and one that
+submit two versions; one that does not abuse the [IOCCC rules](rules.html) and one that
does.
-If you intend to abuse the [rules](rules.html), indicate so in the program
+If you intend to abuse the [IOCCC rules](rules.html), indicate so in the program
"remarks". You must try to justify why you consider your rule abuse to be
-allowed under the [rules](rules.html). That is, you must plead your case as to
+allowed under the [IOCCC rules](rules.html). That is, you must plead your case as to
why your entry is valid. Humor and/or creativity help plead a case.
Abusing the web submission procedure tends to annoy us more
than amuse us. Spend your creative energy on content of your
entry rather than on the submission process itself.
-We are often asked why the contest [rules](rules.html) and
-[guidelines](guidelines.html) seem too
+We are often asked why the contest [IOCCC rules](rules.html) and
+[IOCCC guidelines](guidelines.html) seem too
strange or contain mistakes, flaws or grammatical errors. One reason
is that we sometimes make genuine mistakes. But in many cases such
problems, flaws or areas of confusion are deliberate. Changes to
-[rules](rules.html) and [guidelines](guidelines.html) in response to rule abuses, are done in a minimal
+[IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html) in response to rule abuses, are done in a minimal
fashion. Often we will deliberately leave behind holes (or introduce
new ones) so that future rule abuse may continue. A cleaver author
should be able to read them and "drive a truck through the holes" in
-the [rules](rules.html) and [guidelines](guidelines.html).
+the [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html).
At the risk of stating the obvious, this contest is a parody of the software
-development process. The [rules](rules.html) and [guidelines](guidelines.html)
+development process. The [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html)
are only a small part of the overall contest. Even so, one may think the
-contest [rules](rules.html) and [guideline](guidelines.html) process as a parody
+contest [IOCCC rules](rules.html) and [IOCCC guidelines](guidelines.html) process as a parody
of the sometimes tragic mismatch between what a customer (or marketing) wants
and what engineering delivers. Real programmers must face obfuscated and
sometimes conflicting specifications and requirements from marketing, sales,
product management an even from customers themselves on a all too regular basis.
-This is one of the reasons why the [rules](rules.html) and
-[guidelines](guidelines.html) are written in obfuscated form.
+This is one of the reasons why the [IOCCC rules](rules.html) and
+[IOCCC guidelines](guidelines.html) are written in obfuscated form.
# JUDGING PROCESS:
@@ -847,8 +852,8 @@ and therefore consider any obfuscated source or data file claiming to be from
Honeyman to not be form Honeyman. This of course creates an interesting paradox
known as the "obfuscated Peter Honeyman paradox". Should Peter Honeyman
actually submit an obfuscated entry, he alone is excluded from the above, as we
-will likely believe it just another attempt at confusion. This guideline is
-known as the "Peter Honeyman is exempt" guideline.
+will likely believe it just another attempt at confusion. This _guideline_ is
+known as the "Peter Honeyman is exempt" _guideline_.
BTW: None of the entries claiming to be from Peter Honeyman have ever
won an award. So it is theoretically possible that Peter Honeyman
@@ -901,7 +906,7 @@ A reading consists of a number of actions:
In later rounds, other actions are performed including performing
miscellaneous tests on the source and binary.
-**`|`** This is the very guideline that goes, BING!
+**`|`** This is the very _guideline_ that goes, BING!
Until we reduce the stack of entries down to about 25 entries, entries
are judged on an individual basis. An entry is set aside because it
@@ -951,7 +956,7 @@ This technique is highly discouraged for use by non-IOCCC judges.
More often than not, we select a small entry (usually one line), a
strange/creative layout entry. We sometimes also select an
-entry that abuses the contest guidelines in an interesting way,
+entry that abuses the [IOCCC guidelines](guidelines.html) in an interesting way,
or that stretches the content rules that while legal, is
nevertheless goes against the intent of the rules.
@@ -1027,11 +1032,11 @@ Last, but not least, winners receive international fame and flames! :-)
**`|`** For questions or comments about the contest, see [Contacting the IOCCC](../contact.html).
-**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as
-[rules](rules.html) and the [guidelines](guidelines.html) may (and often do) change from year to year.
+**`|`** Be sure to review the [IOCCC Rules and Guidelines](index.html) as the
+[IOCCC rules](rules.html) and the [IOCCC guidelines](guidelines.html) may (and often do) change from year to year.
-**`|`** You should be sure you have the current [rules](rules.html) and
-[guidelines](guidelines.html) prior to submitting entries.
+**`|`** You should be sure you have the current [IOCCC rules](rules.html) and
+[IOCCC guidelines](guidelines.html) prior to submitting entries.
**`|`** See the [Official IOCCC website news](../news.html) for additional information.
diff --git a/next/rules.html b/next/rules.html
index 4a8e6deef..48b9afc45 100644
--- a/next/rules.html
+++ b/next/rules.html
@@ -404,8 +404,10 @@ future IOCCC openings.
| These rules are version 2024-06-15-v28.
| These IOCCC rules are version 2024-06-23-v28.
IMPORTANT: Be sure to read the IOCCC guidelines.
| ← Lines that start with this symbol indicate a change from the previous IOCCC
| symbol.
The goals of the IOCCC:
| symbol.
| This IOCCC runs from 2024-MMM-DD HH:MM:SS UTC to 202x-MMM-DD HH:MM:SS UTC.
| XXX - date/time is TBD - XXX
Until the start of this IOCCC, these rules,
-guidelines and iocccsize.c (contained in the mkiocccentry
+ Until the start of this IOCCC, these IOCCC rules,
+IOCCC guidelines and iocccsize.c (contained in the mkiocccentry
toolkit and invoked by the
mkiocccentry(1) tool) should be considered provisional BETA versions and
may be adjusted AT ANY TIME.
| The submit URL should be active on or slightly before 2024-MMM-DD HH:MM:SS UTC.
| XXX - date/time is TBD - XXX
Please wait to submit your entries until after that time.
-The official rules and guidelines will be +
The official IOCCC rules and IOCCC guidelines will be
available on the official IOCCC website on or slightly before
the start of this IOCCC. The mkiocccentry toolkit may be obtained at any time
at the mkiocccentry toolkit repo.
Please recheck on or after the start of this IOCCC to be sure you are using the correct versions of these items before using the IOCCC entry submission URL.
-To help us with the volume of entries, we ask that you follow these rules:
We need a rule 0. :-)
+Your entry must be a complete program.
+The size rule requires your entry to satisfy BOTH rule 2a and rule 2b:
+The size rule requires your entry to satisfy BOTH Rule 2a and Rule 2b:
+| The size of your program source MUST BE <= 4993 bytes in length.
| When your program source is fed as input to the current IOCCC size
tool, and the IOCCC size tool -i command line option is used, the
value printed shall not exceed 2503.
mkiocccentry tool (which we STRONGLY recommend you do) it will invoke
this tool before packaging your entry for submission.
+Submissions should be performed using the instructions outlined at: the How to enter FAQ.
To submit to an open IOCCC, you must use the IOCCC submit server.
@@ -478,65 +490,89 @@ the How to enter FAQ.| The submit URL should be active on or slightly before 2024-MMM-DD HH:MM:SS UTC.
| XXX - date/time is TBD - XXX
Please wait to submit your entries until after that time.
+If your entry is selected as a winner, it will be modified as follows:
Your ‘build’ instructions will be incorporated into a Makefile.
Your source code will be the file prog.c. The compiled binary will be called prog.
+Your entry MUST not modify the content or filename of any part of your original entry including, but not limited to prog.c, the Makefile (that we create from your how to build instructions), as well as any data files you submit.
If you entry wishes to modify such content, it MUST first copy the file to a new filename and then modify that copy.
+| I am not a rule, I am a free(void *human); ‼️
| while (!(ioccc(rule(you(are(number(6)))))) {
| ha_ha_ha();
| }
The obfuscated C program must be an original work that you own.
You (the author(s)) must own the contents of your submission OR you must have permission from the owner(s) to submit their content under the following license:
| CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International
See also rule 18.
+See also Rule 18.
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.
Please note that the IOCCC size tool is NOT an original work.
+| Entries must be received prior to the end of this IOCCC which is 2024-MMM-DD HH:MM:SS UTC.
| XXX - date/time is TBD - XXX
A confirmation of submission will be sent to the submitting email address before the close of the contest.
+| Each person may submit up to and including 10.000000 entries per contest.
Each entry must be submitted separately.
+Entries requiring human interaction to be initially compiled are not permitted.
+Programs that require special privileges (setuid(2), setgid(2), super-user,
special owner, special group, etc.) are still highly discouraged. We
do not guarantee these functions will behave as you expect on our test
platforms. If your program needs special permissions please document
them in the remarks file.
Legal abuse of the rules is somewhat encouraged. An entry that, in the opinion of the judges, violates the rules will be disqualified. Entries that attempt to abuse the rules MUST try to justify why their rule abuse is legal, in the remarks file.
+Any C source that fails to compile because of unescaped octets with the high bit set (octet value >= 128) will be rejected.
+Any C source that fails to compile because of lines with trailing
control-M’s (i.e., lines with a tailing octet 015) will be rejected.
Please do not put trailing control-M’s on remarks file lines. Please check to be sure, before submitting, that you have removed any control-M at the end of remark file lines.
+When you submit your entry you must have a valid email address that can both send and receive email. The online submission method is a two phase process that requires the use of an @@ -552,12 +588,16 @@ be valid for submitting and editing the entry for the lifetime of the competition.
See also How may I submit to the IOCCC? in the FAQ.
+You are STRONGLY encouraged to submit a previously unpublished AND original entry. Submissions that are similar to previous entries are discouraged. As we judge anonymously, submissions that have already been published may be disqualified.
+| The total size of your submission: the sum of the size of the program,
hints, comments, build and info files MUST be less than or equal
to 28314624 octets (27651K) in size.
| The mkiocccentry toolkit
(see mkiocccentry(1) and txzchk(1)) will help you verify that your
-submission conforms to this rule.
The entirety of your entry must be submitted under the following license:
| CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International
You (the author(s)) MUST own the contents of your submission OR you MUST HAVE PERMISSION from the owner(s) to submit their content.
You must not submit anything that cannot be submitted under that license.
+The remarks file must be written in markdown format. See the Daring Fireball Markdown: Basics for more information.
| We currently use pandoc to convert markdown to HTML.
The how to build instructions must be in Makefile format. See the FAQ about make(1) compatibility the IOCCC supports for more details.
@@ -597,13 +643,17 @@ to use. for help in constructing your Makefile. Themkiocccentry, which can be found
at the mkiocccentry repo, tries to
detect if required rules exist in your Makefile.
+Your entry must not create or modify files above the current directory
with the exception of the /tmp and the /var/tmp directories. Your entry
MAY create subdirectories below the current directory, or in /tmp,
or in /var/tmp provided that . is NOT the first octet in any
directory name or filename you submit.
Catch 22:
Your source code, data files, remarks and program output must NOT identify the authors of your code. The judges STRONGLY prefer to @@ -614,29 +664,41 @@ within your code, data, remarks or program output (unless you are Peter Honeyman or pretending to be Peter Honeyman) will be grounds for disqualification of your entry.
Yes, Virginia, WE REALLY MEAN IT!
+This prime rule number is reserved for future use.
+Even though 24 is not prime, you should still see rule #23.
+Even though 24 is not prime, you should still see Rule 23.
+| The IOCCC rule set needs more than 5^2 rules: see rule #26.
| The IOCCC rule set needs more than 5^2 rules: see Rule 26.
| “The quick brown fox jumps over the lazy dog”.
| “Pack my box with five dozen liquor jugs.”
| “How vexingly quick daft zebras jump!”
| “Sphinx of black quartz, judge my vow.”
| “Waltz, bad nymph, for quick jigs vex.”
| “Mr. Jock, TV quiz PhD, bags few lynx.”
| Unless otherwise needed, rule 27 is reserved for something cubic. :-)
| Unless otherwise needed, Rule 27 is reserved for something cubic. :-)
| Rule 28 is a perfect way end to the list of rules as we do not plan to have 496 rules.
| Rule 28 is a perfect way end to the list of IOCCC rules as we do not plan to have 496 rules. :-)
| For questions or comments about the contest, see Contacting the IOCCC.
| Be sure to review the IOCCC Rules and Guidelines as
-rules and the guidelines may (and often do) change from year to year.
| You should be sure you have the current rules and
-guidelines prior to submitting entries.
| You should be sure you have the current IOCCC rules and
+IOCCC guidelines prior to submitting entries.
| See the Official IOCCC website news for additional information.
| For the updates and breaking IOCCC news, you are encouraged to follow
the IOCCC on Mastodon account. See our
diff --git a/next/rules.md b/next/rules.md
index 6232ccba1..f36c6ee48 100644
--- a/next/rules.md
+++ b/next/rules.md
@@ -32,9 +32,11 @@ and remains unaltered. All other uses must receive prior permission in
writing by [contacting the judges](../contact.html).
-## Rules version
+