diff --git a/next/guidelines.html b/next/guidelines.html index 066eb705c..39050d632 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -461,7 +461,7 @@ writing by contacting the judges.
-These IOCCC guidelines are version 28.41 2025-03-03. +These IOCCC guidelines are version 28.42 2025-03-03.
The markdown form of these guidelines submit server might be offline and/or
The submit server, in accordance with Rule 17, -places a limit of 3999971 octets on the size of your upload. +places a limit of 3999971 bytes on the size of your upload. +
++The some the byte lengths of all files, after the xz compressed tarball is un-tarred, +must not exceed 27651*1024 bytes.
Submissions are uploaded as a single xz compressed tarball. @@ -717,9 +721,9 @@ The IOCCC size tool algorithm can be summarized as follows:
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 +preprocessor keywords) as 1. The size tool counts all other bytes as 1 excluding ASCII whitespace, and excluding any ‘
;’, ‘{’ or ‘}’ followed by -ASCII whitespace, and excluding any ‘;’, ‘{’ or ‘}’ octet immediately +ASCII whitespace, and excluding any ‘;’, ‘{’ or ‘}’ byte immediately before the end of file.
ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, @@ -791,15 +795,24 @@ Although we are in an age where AI/LLM can create code, we don’t want to stop anyone from using any tools they like when they’re working on their submissions.
-The IOCCC has a rich history of remarkable winning entries created -by authors who skillfully employed various techniques such as code generators, code analysis tools, machine learning tools, natural language models, code copilot tools, so-called AI services, -and/or large language models. Although it is NOT required use such +large language models, etc. Although it is NOT required use such things to develop your submission, you are free to continue to create their submissions using such tools.
+The IOCCC has a rich history of remarkable winning entries created by
+authors who skillfully employed various techniques to develop their code.
+While it is NOT required, you are allowed to use tools to develop
+and test your submission. These tools may include, but are not limited
+to code generators, code analysis tools, static code analysis tools,
+runtime analysis tools, machine learning tools, natural language models,
+code copilot tools, so-called AI services, large language models, etc.
+If you do make use of such tools, then we ENCOURAGE you to describe
+how you used such tools in your remarks.md file.
+
If you do make use of code generator, code analysis tool, machine learning
tool, natural language model, code copilot tool, a so-called AI service,
and/or large language models we ENCOURAGE you to describe how you used
@@ -1668,7 +1681,7 @@ tarball containing a number of extra files may be needed. Such a need for a
tarball MUST be explained in the remarks.md file.
On 28 January 2007, the Judges rescinded the requirement that the
-# in a C preprocessor directive must be the 1st non-whitespace octet.
# in a C preprocessor directive must be the 1st non-whitespace byte.
The exit(3) function returns void. Some broken systems have exit(3)
return int; your submission should assume that exit(3) returns a void.
@@ -1688,7 +1701,7 @@ explain to the Walrus why our seas are boiling hot, the question of whether pigs have wings is likely to remain a debatable point to most.
One line programs should be short one line programs: say around 80 to 120 -octets long. Going well beyond 120 octets is a bit too long to be called +bytes long. Going well beyond 120 bytes is a bit too long to be called a one-liner in our vague opinion.
We tend to DISLIKE programs that:
Makefile:
and then include special notes in your remarks.md file for
alternate / human intervention based building.
We want to get away from source that is simply a compact blob of -octets. Really try to be more creative than blob coding. HINT!
+bytes. Really try to be more creative than blob coding. HINT!Please do not use things like gzip(1) to get around the size limit.
Please try to be much more creative.
We really DISLIKE entries that make blatant use of including @@ -2512,30 +2525,39 @@ into a tattoo! For questions or comments about the contest, see Contacting the IOCCC.
-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. +Be SURE to review the IOCCC Rules and Guidelines as they +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. +PLEASE be sure you have the current IOCCC rules and +IOCCC guidelines prior to submitting to the contest.
+See the Official IOCCC website news for additional information.
-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. See our +For the updates and breaking IOCCC news, you are encouraged to follow +the IOCCC on Mastodon account. See our FAQ on “Mastodon” -for more information. Please be -aware that unless you are mentioned you most likely will NOT get a -notification so you should make sure to check the page. +for more information. Please do note that unless +you are mentioned by us you will NOT get a notification from the app so you +should refresh the page even if you do follow us.
-Check out the Official IOCCC website in general. +Check out the Official IOCCC winner website in general. +
++Consider joining the IOCCC discord community via this link: +https://discord.gg/Wa42Qujwnw +
++See the +FAQ on “obtaining and compiling the mkiocccentry tools” +and the +FAQ on “how to enter the IOCCC” +as that FAQ has important details on +how to register +as well as +how to upload your submission for the IOCCC.
-Jump to: top
-Leonid A. Broukhis
-chongo (Landon Curt Noll) /\cc/\
Jump to: top
diff --git a/next/guidelines.md b/next/guidelines.md index ed4480bb1..d4d07d4f9 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -49,7 +49,7 @@ Jump to: [top](#)-These [IOCCC guidelines](guidelines.html) are version **28.41 2025-03-03**. +These [IOCCC guidelines](guidelines.html) are version **28.42 2025-03-03**.
@@ -205,10 +205,14 @@ Until the contest status becomes **[pending](../faq.html#pending)**, the [submit server](https://submit.ioccc.org) might be offline and/or unresponsive.
-The [submit server](https://submit.ioccc.org), in accordance with [Rule 17](rules.html#rule17), -places a limit of **3999971** octets on the size of your upload. +places a limit of **3999971** bytes on the size of your upload. +
+ ++The some the byte lengths of all files, after the **xz compressed tarball** is un-tarred, +must not exceed **27651\*1024** bytes.
@@ -364,9 +368,9 @@ The IOCCC size tool algorithm can be summarized as follows:
> 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 +preprocessor keywords) as 1. The size tool counts all other bytes as 1 excluding ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' followed by -ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' octet immediately +ASCII whitespace, and excluding any '`;`', '`{`' or '`}`' byte immediately before the end of file. ASCII whitespace includes ASCII tab, ASCII space, ASCII newline, @@ -454,15 +458,25 @@ anyone from using any tools they like when they're working on their submissions.-The IOCCC has a rich history of remarkable winning entries created -by authors who skillfully employed various techniques such as code generators, code analysis tools, machine learning tools, natural language models, code copilot tools, so-called AI services, -and/or large language models. Although it is **NOT** required use such +large language models, etc. Although it is **NOT** required use such things to develop your submission, you are free to continue to create their submissions using such tools.
++The IOCCC has a rich history of remarkable winning entries created by +authors who skillfully employed various techniques to develop their code. +While it is **NOT** required, you are allowed to use tools to develop +and test your submission. These tools may include, but are not limited +to code generators, code analysis tools, static code analysis tools, +runtime analysis tools, machine learning tools, natural language models, +code copilot tools, so-called AI services, large language models, etc. +If you do make use of such tools, then we **ENCOURAGE you to describe +how you used such tools** in your `remarks.md` file. +
+If you do make use of code generator, code analysis tool, machine learning tool, natural language model, code copilot tool, a so-called AI service, @@ -1556,7 +1570,7 @@ tarball **MUST** be explained in the `remarks.md` file.
On 28 January 2007, the Judges rescinded the requirement that the -`#` in a C preprocessor directive must be the 1st non-whitespace octet. +`#` in a C preprocessor directive must be the 1st non-whitespace byte. The `exit(3)` function returns `void`. Some broken systems have `exit(3)` return `int`; your submission should assume that `exit(3)` returns a `void`. @@ -1581,7 +1595,7 @@ whether pigs have wings is likely to remain a debatable point to most. One line programs should be short one line programs: say around 80 to 120 -octets long. Going well beyond 120 octets is a bit too long to be called +bytes long. Going well beyond 120 bytes is a bit too long to be called a one-liner in our vague opinion. We tend to **DISLIKE** programs that: @@ -1708,7 +1722,7 @@ and then include special notes in your `remarks.md` file for alternate / human intervention based building. We want to get away from source that is simply a compact blob of -octets. Really try to be more creative than blob coding. **HINT!** +bytes. Really try to be more creative than blob coding. **HINT!** Please do not use things like `gzip(1)` to get around the size limit. Please try to be much more creative. @@ -2528,6 +2542,7 @@ Last, but not least, [winners](../authors.html) receive international fame and f Jump to: [top](#) +-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. +**Be SURE** to review the [IOCCC Rules and Guidelines](index.html) as they +may (and **often do**) change from year to year.
-You should be sure you have the current [IOCCC rules](rules.html) and -[IOCCC guidelines](guidelines.html) prior to submitting entries. +**PLEASE** be sure you have the current [IOCCC rules](rules.html) and +[IOCCC guidelines](guidelines.html) prior to submitting to the contest.
-See the [Official IOCCC website news](../news.html) for additional information. -
--For the updates and breaking [IOCCC news](../news.html), you are encouraged to follow -the [IOCCC on Mastodon](https://fosstodon.org/@ioccc). See our +
+For the updates and breaking IOCCC news, you are encouraged to follow +the [IOCCC on Mastodon](https://fosstodon.org/@ioccc) account. See our FAQ on "[Mastodon](../faq.html#try_mastodon)" -for more information. **Please be -aware** that unless you are mentioned you most likely will **NOT** get a -notification so you should make sure to check the page. +for more information. Please do note that unless +you are mentioned by us you will **NOT** get a notification from the app _so you +should refresh the page **even if you do follow us**_.
-Check out the [Official IOCCC website](https://www.ioccc.org/index.html) in general. +Check out the [Official IOCCC winner website](https://www.ioccc.org/index.html) in general.
-Jump to: [top](#) ++Consider joining the IOCCC discord community via this link: +[https://discord.gg/Wa42Qujwnw](https://discord.gg/Wa42Qujwnw) +
-Leonid A. Broukhis+See the +FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)" +and the +FAQ on "[how to enter the IOCCC](../quick-start.html#enter)" +as that FAQ has important details on +[how to register](register.html) +as well as +[how to upload your submission](submit.html) for the IOCCC. +
-These IOCCC rules are version 28.28 2025-03-03. +These IOCCC rules are version 28.29 2025-03-03.
The markdown form of these rules is
@@ -560,7 +560,48 @@ as well as
To help us with the volume of submissions, we ask that you follow these rules: To help us with the volume of submissions, we ask that you follow the rules below.
+WARNING: Abusing these rules comes with a fair amount of risk
+that your submission will be rejected. If you do plan to abuse the
+rules, then you MUST CLEARLY EXPLAIN THE RATIONALE in your
+If you use the most recently released official IOCCC submission packaging
+tool (hereby referred to as
+If you do override a rule violation warning from the
+HINT: If you do submit such a rule abusing / rule violating
+submission, then consider also submitting an alternate version in a
+different submission server slot that does NOT violate the rules
+in case your rule abuse excuse is rejected. If you do submit such an
+alternate non-rule abusing version, PLEASE indicate that in your
+
+See also Rule 12.
+ Jump to: top
You see, the contest is not called the International Obfuscated JSON Contest
(IOJSONC), even if the so-called JSON
-spec might be called obfuscated. :-)
+spec might be called obfuscated
+by some people. :-)
Jump to: top The size rule requires your submission to satisfy BOTH Rule 2a and Rule 2b: Rule 2 requires that your submission satisfy BOTH Rule 2a and Rule 2b.
-If you use the most recently released official IOCCC submission
-packaging tool (hereby referred to as Jump to: top
-The
-If you do override the Rule 2a warning from the
-You may check your code prior to submission by giving the filename
+You may check your code with respect to Rule 2 prior to submission by giving the filename
as a command like argument to the Jump to: top
If you use the
-The
-If you do override the Rule 2b warning from the
You may check your code prior to submission by giving the filename
as a command like argument to the
+See also Rule 17.
+ Jump to: top
-See the
-FAQ on “how to register and submit to the IOCCC”
-for instructions on registering and participating in the IOCCC, as the process has changed from previous years!
-
-When the contest is open, an
-IOCCC judge will email you your submit server
-Username and Initial password. It takes some time (maybe even a few days) for an
-IOCCC judge to process your registration and email you your
-initial login and password.
+When the contest is open, the submit server
+will email you your submit server
+Username and Initial password. Please be patient as it may take some time,
+perhaps as much as a few days, for your registration to be processed and for that email to be sent.
Those who register while the contest status is pending
-will receive email with their submit server Username and Initial password
-from an IOCCC judge shortly after the contest status becomes open.
+will receive their email (containing their submit server Username
+and Initial password), much later: few days around the time when the contest status becomes open.
-Once an IOCCC judge emails you your Username and Initial password, you
+Once that email you your Username and Initial password is sent, you
will have 72 hours to change your submit server initial password.
-If you do not change your Initial password in time, you will have to re-register.
+
+If you do not change your Initial password in time, you will have
+to contact an IOCCC judge by email and ask them to reset
+your password. Not only is this a hassle for everyone involved, it will
+delay your IOCCC registration process, perhaps by a number of days that
+
Because it takes time (maybe even a few days) for an IOCCC judge
@@ -705,11 +719,13 @@ The IOCCC judges are NOT responsib
or for those who wait until the last minute to try to register!
-If you have registered and received by email your
-submit server Username and Initial password
-from an IOCCC judge, you may upload your submission to
-the submit server ONLY while the
-contest is open.
+See the
+FAQ on “how to register and submit to the IOCCC”
+for instructions on registering and participating in the IOCCC, as the process
+may change from contest to contest.
+
+See also Rule 8.
Jump to: top
-If you do make a copy and then modify that copy, PLEASE be sure that
+If you do make a copy of a submission file, PLEASE be sure that
the Jump to: top
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:
+you must have permission from the owner(s) to submit their content.
-CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International
- If you submit any content that is owned by others, you MUST
+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, the tools in the mkiocccentry
-repo and the tools and library in
-the jparse repo (that the
-mkiocccentry repo clones) or the
-dbg repo (that the mkiocccentry
-repo clones) or the dyn_array
-repo (that the mkiocccentry
-repo clones) are
-NOT original works, unless of course you’re the respective authors, in
-which case they are. Of course, neither are any of the previous
-winning entries, unless of course you’re the winner! :-)
+permission you obtained in your
- You are allowed to use tools to develop and test your submission.
-These tools may include, but are not limited to code generators, code
-analysis tools, machine learning tools, natural language models, code
-copilot tools, etc.
+Nevertheless tools such as those listed are NOT obfuscated. If submitted, they
+would probably violate a number of rules. :-)
+
+
+The IOCCC has a rich history of remarkable winning entries created by
+authors who skillfully employed various techniques to develop their code.
+While it is NOT required, you are allowed to use tools to develop
+and test your submission. These tools may include, but are not limited
+to code generators, code analysis tools, static code analysis tools,
+runtime analysis tools, machine learning tools, natural language models,
+code copilot tools, so-called AI services, large language models, etc.
+If you do make use of such tools, then we ENCOURAGE you to describe
+how you used such tools in your
See also Rule 5, Rule 18 and Rule 21.
@@ -811,8 +837,15 @@ Submissions may only be uploaded to the IOCCC
while the contest is open.
+If you have registered and received by email your
+submit server Username and Initial password
+from an IOCCC judge, you may upload your submission to
+the submit server ONLY while the
+contest is open.
+
The submit server, in accordance with Rule 17,
-places a limit of 3999971 octets on the size of your upload.
+places a limit of 3999971 bytes on the size of your upload.
Once the contest is in the judging state (or
@@ -843,7 +876,7 @@ for more information about the
-See also Rule 17.
+See also Rule 3 and Rule 17.
Jump to: top
+See also the warning about rule abuse.
+ Jump to: top
Any C source that fails to compile because of lines with trailing
-control-M’s (i.e., lines with a trailing octet
+Please do NOT put trailing control-M’s on
+As we do NOT DOS, please also be sure that the
+You are permitted, in order to try and squeeze your 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. Jump to: top
In order to register for the IOCCC, you MUST have a valid email address.
The judges are NOT responsible for delays in email, please plan
-enough time for the exchange of emails so you can upload your submission.
+The judges are NOT responsible for delays in email, so please plan
+enough time accordingly.
+
See the
FAQ on “how to register”
@@ -928,70 +978,59 @@ for details.
You are STRONGLY encouraged to submit an original submission.
-Submissions that are similar to previous entries are
-discouraged. As we judge anonymously, submissions that have already
-been published may be disqualified. Submissions that are similar to previous winning IOCCC entries are discouraged.
+You are allowed to re-submit to a later contest, a submission that
+did not win the IOCCC. If you do so, then you would be well advised
+to try and enhance and improve your submission.
+If you do re-submit something that did not previously win, then
+you are encouraged to mention this in your
+Re-submitting an improved submission that did not become an
+IOCCC winning entry is a time honored tradition of the IOCCC.
+There are some IOCCC winning entries that were submitted to multiple contests
+before they were improved enough to “climb over” (as the expression
+goes) all the other submissions for a given contest.
+ Jump to: top
-Your submission must be in the form of xz compressed tarball
-that
-Your xz compressed tarball submission file must pass the tests performed by:
-
-
-Your xz compressed tarball submission filename must pass the tests performed by:
-
-
-The resulting directory produced when your xz compressed tarball submission file uncompressed
-must pass the checks performed by:
-
-
-
-The resulting
-
-The
+Your xz compressed tarball submission filename must pass the tests performed by the current version of
+When your xz compressed tarball submission file is un-tarred, the
+resulting directory must pass the checks performed by the current version of
+The resulting
+The
-
-
The Let the
+Let the current version of the Using command line flags or input prompts to override checks and
+
+Using command line flags or input prompts to override checks and
limits made by the above mentioned tools is NOT recommended
and may result in your submission being rejected by the IOCCC
-submit server and/or the IOCCC
-Judges.
See the
FAQ on the “mkiocccentry tool
@@ -1024,22 +1065,46 @@ for very important details behind this rule.
The entirety of your submission must be submitted under the following license:
-CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International
+
+See also Rule 7.
You (the author(s)) MUST own the content 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. Jump to: top
The
-We currently use pandoc to convert markdown to HTML.
+We currently use pandoc(1) to automatically convert markdown to HTML.
+Please try to avoid submitting an HTML file translation to any markdown file.
+If you MUST submit such an HTML translation, PLEASE mention this in your
+For any submission that wins the contest, we modify your
+See the Markdown Cheat Sheet
+for a handy quick reference to the Markdown syntax.
+
+See the Markdown guide
+for free and open-source reference guide that explains
+how to use markdown.
+
+See also the Daring Fireball Markdown:
+Basics for
+information on the markdown format.
Please see our FAQ “remarks.md” and the IOCCC markdown
@@ -1088,9 +1153,14 @@ available in the Your submission MUST NOT create or modify files ABOVE the current directory
with the exception of the
+If you do create files and directories, PLEASE be sure that
+the
See also Rule 5.
Jump to: top
-Rule 28 is a perfect way end to the list of IOCCC rules
+Rule 28 is a perfect way to end the list of IOCCC rules
as we do NOT plan to have 496 rules. :-)
Jump to: top
-Be SURE to review the IOCCC Rules and Guidelines as
-IOCCC rules and the IOCCC guidelines may (and
-often do) change from year to year.
+Be SURE to review the IOCCC Rules and Guidelines as they
+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.
+PLEASE be sure you have the current IOCCC rules and
+IOCCC guidelines prior to submitting to the contest.
See the Official IOCCC website news for additional information.
@@ -1188,6 +1257,10 @@ should refresh the page even if you do follow us.
Check out the Official IOCCC winner website in general.
+Consider joining the IOCCC discord community via this link:
+https://discord.gg/Wa42Qujwnw
+
See the
FAQ on “obtaining and compiling the mkiocccentry tools”
and the
diff --git a/next/rules.md b/next/rules.md
index ce26c3f97..338da3cb4 100644
--- a/next/rules.md
+++ b/next/rules.md
@@ -51,7 +51,7 @@ Jump to: [top](#)
-These [IOCCC rules](rules.html) are version **28.28 2025-03-03**.
+These [IOCCC rules](rules.html) are version **28.29 2025-03-03**.
@@ -185,7 +185,54 @@ Jump to: [top](#)
# IOCCC RULES
+**WARNING:** Abusing these rules comes with a **fair amount of risk**
+that your submission will be rejected. If you do plan to abuse the
+rules, then you **MUST CLEARLY EXPLAIN THE RATIONALE** in your `remarks.md` file,
+as to why you think your rule abuse should be allowed, and as to why you think
+your submission should not be rejected for a rule violation.
+**Nevertheless, _Even if you do_ explain this in your `remarks.md` file
+you submission may still be rejected**.
+
+If you use the most recently released official IOCCC submission packaging
+tool (hereby referred to as `mkiocccentry(1)`), which we **STRONGLY
+recommend you do**, then the `mkiocccentry(1)` tool will warn you
+if there appears to be a rule violation. The `mkiocccentry(1)` tool
+also runs the `fnamchk(1)`, `txzchk(1)` and `chkentry(1)` tools.
+Overriding problems detected by any of these tools comes with a
+**fair amount of risk** that your submission will be rejected.
+
+If you do override a rule violation warning from the `mkiocccentry(1)`
+or related IOCCC tool, or otherwise plan to abuse the rules, then you **MUST CLEARLY
+EXPLAIN THE RATIONALE** of why you are attempting to abuse the rules in your
+`remarks.md` file. **_Even if you do_ explain this in your `remarks.md` file
+your submission may still be rejected**.
+
+**HINT:** If you do submit such a rule abusing / rule violating
+submission, then consider also submitting an alternate version in a
+different submission server slot that does **NOT** violate the rules
+in case your rule abuse excuse is rejected. If you do submit such an
+alternate non-rule abusing version, **PLEASE** indicate that in your
+`remarks.md` file of your non-rule abusing version so that the [IOCCC
+judges](../judges.html) do not think you uploaded a duplicate into a
+wrong slot by mistake.
+
+See also [Rule 12](#rule13).
+
You see, the contest is not called the **International Obfuscated JSON Contest**
(**IOJSONC**), even if the [so-called JSON
-spec](https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec) might be called obfuscated. :-)
+spec](https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec) might be called obfuscated
+by some people. :-)
-If you use the most recently released official IOCCC submission
-packaging tool (hereby referred to as `mkiocccentry(1)`), which we **STRONGLY
-recommend you do** (see also [Rule 17](#rule17)), then the `mkiocccentry(1)`
-tool will warn you if there appears to be a [Rule 2a](#rule2a) violation.
+See also [Rule 2a](#rule2a), [Rule 2b](#rule2b), and [Rule 17](#rule17).
-The `mkiocccentry(1)` tool will give you the option of overriding the [Rule
-2a](#rule2a) warning. Overriding the [Rule 2a](#rule2a) warning carries a
-**fair amount of risk that your submission will be rejected**. Be sure to
-consult the [IOCCC guidelines](guidelines.html) ahead of time if you plan to
-override the [Rule 2a](#rule2a) warning.
-
-If you do override the [Rule 2a](#rule2a) warning from the `mkiocccentry(1)`
-tool, or otherwise plan to violate [Rule 2a](#rule2a), then you **MUST CLEARLY
-EXPLAIN THE RATIONALE** of why you are doing so in your `remarks.md` file.
-**_Even if you do_ explain this in your `remarks.md` file you submission may
-still be rejected**.
-
-You may check your code prior to submission by giving the filename
+You may check your code with respect to [Rule 2](#rule2) prior to submission by giving the filename
as a command like argument to the `iocccsize(1)` tool. For example:
If you use the `mkiocccentry(1)` tool, which we **STRONGLY recommend
-you do** (again, see also [Rule 17](#rule17)),
-then `mkiocccentry(1)` will invoke the `iocccsize(1)` checks before packaging
+you do** then `mkiocccentry(1)` will invoke the `iocccsize(1)` checks before packaging
your submission.
-The `mkiocccentry(1)` tool will give you the option of overriding the [Rule
-2b](#rule2b) warning. Overriding the [Rule 2b](#rule2b) warning carries a **fair
-amount of risk that your submission will be rejected**. Be sure to consult the
-[IOCCC guidelines](guidelines.html) ahead of time if you plan to override the
-[Rule 2b](#rule2b) warning.
-
-If you do override the [Rule 2b](#rule2b) warning from the `mkiocccentry(1)`
-tool, or otherwise plan to violate [Rule 2b](#rule2b), then you **MUST CLEARLY
-EXPLAIN THE RATIONALE** of why you are doing so in your `remarks.md` file.
-**_Even if you do_ explain this in your `remarks.md` file your submission may
-still be rejected**.
-
You may check your code prior to submission by giving the filename
as a command like argument to the `iocccsize(1)` tool. For example:
@@ -332,6 +343,10 @@ as a command like argument to the `iocccsize(1)` tool. For example:
iocccsize prog.c
```
+
+See also [Rule 17](#rule17).
+
-See the
-FAQ on "[how to register and submit to the IOCCC](../quick-start.html#enter)"
-for instructions on registering and participating in the IOCCC, as the process has changed from previous years!
-
-When the contest is **[open](../faq.html#open)**, an
-[IOCCC judge](../judges.html) will email you your [submit server](https://submit.ioccc.org)
-**Username** and **Initial password**. It takes some time (maybe even a few days) for an
-[IOCCC judge](../judges.html) to process your registration and email you your
-initial login and password.
+When the contest is **[open](../faq.html#open)**, the [submit server](https://submit.ioccc.org)
+will email you your [submit server](https://submit.ioccc.org)
+**Username** and **Initial password**. **Please be patient** as it may take some time,
+perhaps as much as a few days, for your registration to be processed and for that email to be sent.
Those who [register](register.html) while the contest status is **[pending](../faq.html#pending)**
-will receive email with their [submit server](https://submit.ioccc.org) **Username** and **Initial password**
-from an [IOCCC judge](../judges.html) shortly after the contest status becomes **[open](../faq.html#open)**.
+will receive their email (containing their [submit server](https://submit.ioccc.org) **Username**
+and **Initial password**), much later: few days around the time when the contest status becomes **[open](../faq.html#open)**.
-Once an [IOCCC judge](../judges.html) emails you your **Username** and **Initial password**, you
+Once that email you your **Username** and **Initial password** is sent, you
will have 72 hours to [change your submit server initial password](pw-change.html).
-If you do not change your **Initial password** in time, you will have to [re-register](register.html).
+
+If you do not change your **Initial password** in time, you will have
+to [contact an IOCCC judge](contact.html) by email and ask them to reset
+your password. Not only is this a hassle for everyone involved, it will
+delay your IOCCC registration process, perhaps by a number of days that
+`egrep(1)` would be able to pattern match. By `egrep(1)`, we refer to the
+long standing **UNIX** utility that should just run and **NOT** whine about
+the command being deprecated.
@@ -382,11 +399,14 @@ or for those who wait until the last minute to try to register!
-If you have [registered](register.html) and received by email your
-[submit server](https://submit.ioccc.org) **Username** and **Initial password**
-from an [IOCCC judge](../judges.html), you may upload your submission to
-the [submit server](https://submit.ioccc.org) **ONLY** while the
-contest is **[open](../faq.html#open)**.
+See the
+FAQ on "[how to register and submit to the IOCCC](../quick-start.html#enter)"
+for instructions on registering and participating in the IOCCC, as the process
+may change from contest to contest.
+
+See also [Rule 8](#rule8).
-If you do make a copy and then modify that copy, **PLEASE** be sure that
+If you do make a copy of a submission file, **PLEASE** be sure that
the `clobber` rule of your `Makefile` removes that copy in order to
-restore the contents of your submission to its original submission.
+in order restore your submission to its original submission state.
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:
+you must have permission from the owner(s) to submit their content.
-**[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
-
-Please note that the IOCCC size tool, the tools in the [mkiocccentry
-repo](https://github.com/ioccc-src/mkiocccentry) and the tools and library in
-the [jparse repo](https://github.com/xexyl/jparse/issues) (that the
-[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) clones) or the
-[dbg repo](https://github.com/lcn2/dbg) (that the [mkiocccentry
-repo](https://github.com/ioccc-src/mkiocccentry) clones) or the [dyn_array
-repo](https://github.com/lcn2/dyn_array) (that the [mkiocccentry
-repo](https://github.com/ioccc-src/mkiocccentry) clones) are
-**NOT** original works, unless of course you're the respective authors, in
-which case they are. Of course, neither are any of the previous
-winning entries, unless of course you're the winner! :-)
+permission you obtained** in your `remarks.md` file.
-You are allowed to use tools to develop and test your submission.
-These tools may include, but are not limited to code generators, code
-analysis tools, machine learning tools, natural language models, code
-copilot tools, etc.
+Please note that [mkiocccentry repo tools](https://github.com/ioccc-src/mkiocccentry)
+are **NOT** original works, unless of course you're the respective authors, in
+which case they are original. :-)
+
+Nevertheless tools such as those listed are **NOT** obfuscated. If submitted, they
+would probably violate a number of rules. :-)
+
+- [mkioccentry(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c)
+- [iooccsize(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)
+- [chkentry(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c)
+- [txzchk(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c)
+- [jparse repo as cloned by the mkiocccentry repo](https://github.com/xexyl/jparse)
+- [dbg repo as cloned by the mkiocccentry repo](https://github.com/lcn2/dbg)
+- [dyn_array repo as cloned by the mkiocccentry repo](https://github.com/lcn2/dyn_array)
+
+The IOCCC has a rich history of remarkable winning entries created by
+authors who skillfully employed various techniques to develop their code.
+While it is **NOT** required, you are allowed to use tools to develop
+and test your submission. These tools may include, but are not limited
+to code generators, code analysis tools, static code analysis tools,
+runtime analysis tools, machine learning tools, natural language models,
+code copilot tools, so-called AI services, large language models, etc.
+If you do make use of such tools, then we **ENCOURAGE you to describe
+how you used such tools** in your `remarks.md` file.
@@ -527,9 +555,17 @@ Submissions may only be uploaded to the [IOCCC submit server](https://submit.ioc
while the contest is **[open](../faq.html#open)**.
+If you have [registered](register.html) and received by email your
+[submit server](https://submit.ioccc.org) **Username** and **Initial password**
+from an [IOCCC judge](../judges.html), you may upload your submission to
+the [submit server](https://submit.ioccc.org) **ONLY** while the
+contest is **[open](../faq.html#open)**.
+
The [submit server](https://submit.ioccc.org), in accordance with [Rule 17](rules.html#rule17),
-places a limit of **3999971** octets on the size of your upload.
+places a limit of **3999971** bytes on the size of your upload.
@@ -567,7 +603,7 @@ See the "[Important IOCCC dates](#dates)" section above for when these contest s
-See also [Rule 17](#rule17).
+See also [Rule 3](#rule3) and [Rule 17](#rule17).
+See also [the warning about rule abuse](#rule_abuse).
+
Any C source that fails to compile because of lines with trailing
-control-M's (i.e., lines with a trailing octet `015`) **_might_** be rejected.
+control-M's (i.e., lines with a trailing byte `015`) **_might_** be rejected.
+Please do **NOT** put trailing control-M's on `prog.c`, `Makefile`, or
+`remarks.md` files but instead end lines with a trailing newline (i.e.,
+byte `012`) character.
+
+As we do **NOT** DOS, please also be sure that the `Makefile` and
+`remarks.md` files end in final newline (i.e., byte `012`) character.
+
+You are permitted, in order to try and squeeze your `prog.c` under
+a [Rule 2a](#rule2a) and/or [Rule 2b](#rule2b) limit, to **NOT**
+end your `prog.c` with a newline (i.e., byte `012`) character.
+If you need to do this, **PLEASE** document that in your `remarks.md` file.
+
+The [judges](../judges.html) **are NOT responsible for delays in email**, so please plan
+enough time accordingly.
+
See the
@@ -696,10 +754,24 @@ Jump to: [top](#)
## Rule 16
+You are allowed to re-submit to a later contest, a submission that
+did not win the IOCCC. If you do so, then you would be well advised
+to try and enhance and improve your submission.
+If you do re-submit something that did not previously win, then
+you are **encouraged** to mention this in your `remarks.md` file
+as this sometimes helps.
+
+Re-submitting an improved submission that did not become an
+IOCCC winning entry is a **time honored** tradition of the IOCCC.
+There are some IOCCC winning entries that were submitted to multiple contests
+before they were improved enough to "climb over" (as the expression
+goes) all the other submissions for a given contest.
+
-Your submission must be in the form of **xz compressed tarball**
-that `mkiocccentry(1)` tool would generate. The files, directories,
-and paths **MUST** conform to the limits imposed by `mkiocccentry(1)`
-including but **NOT LIMITED** to their names, count, path length
-and directory tree depth.
+Your submission must be in the form of a **xz compressed tarball** that
+the current released version of the `mkiocccentry(1)` tool would generate.
+The files, directories, and paths **MUST** conform to the limits imposed
+by `mkiocccentry(1)` including but **NOT LIMITED** to their names, count,
+path length and directory tree depth.
-Your **xz compressed tarball** submission file must pass the tests performed by:
- `txzchk(1)`
-Your **xz compressed tarball** submission filename must pass the tests performed by:
- `fnamchk(1)`
-The resulting directory produced when your **xz compressed tarball** submission file uncompressed
-must pass the checks performed by:
- `chkentry(1)`
-`txzchk(1)` uses the `fnamchk(1)` tool on your tarball to obtain the proper
-directory name. If either name is wrong, it will be flagged as an error.
+Your **xz compressed tarball** must be larger than **0** bytes and no larger than **3999971** bytes.
-The resulting `prog.c` file must pass the [Rule 2](#rule2) size checked performed by:
+The sum of the byte lengths of all files, after the **xz compressed tarball** is un-tarred,
+must not exceed **27651\*1024** bytes.
`iocccsize(1)`
-The `.auth.json` and `.info.json` must be compatible with what hat `mkiocccentry(1)` tool
-would produce as well as pass the tests performed by:
+Your **xz compressed tarball** submission file must pass the tests performed by the current version of `txzchk(1)`.
`jparse(3)` `chkentry(1)`
+Your **xz compressed tarball** submission filename must pass the tests performed by the current version of `fnamchk(1)`.
+
+When your **xz compressed tarball** submission file is un-tarred, the
+resulting directory must pass the checks performed by the current version of `chkentry(1)`.
+
+The resulting `prog.c` file must pass the [Rule 2](#rule2) size checks performed by the current
+version of `iocccsize(1)`.
+
+The `.auth.json` and `.info.json` must be compatible with what the
+current version of the `mkiocccentry(1)` tool would produce. They must
+also pass the tests performed by the current version of `chkentry(1)`.
+
The `Makefile` must **NOT** be empty.
@@ -766,17 +833,19 @@ The `remarks.md` must **NOT** be empty.
### TL;DR Rule 17 - Use `mkiocccentry(1)` to form your submission
-Let the `mkiocccentry(1)` tool form your **xz compressed tarball** submission
-file and don't try to override its checks and limits, in order to be sure you
-submission conforms to this rule.
+
+Let the current version of the `mkiocccentry(1)` tool form your **xz
+compressed tarball** submission file.
+
Using command line flags or input prompts to override checks and
limits made by the above mentioned tools is **NOT** recommended
and may result in your submission being rejected by the [IOCCC
-submit server](https://submit.ioccc.org) and/or the [IOCCC
-Judges](../judges.html).
+submit server](https://submit.ioccc.org) and/or the [IOCCC Judges](../judges.html).
+
See the
@@ -801,13 +870,12 @@ Jump to: [top](#)
The entirety of your submission must be submitted under the following license:
-**[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
+- **[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
+See also [Rule 7](#rule7).
+
The `remarks.md` file, a required non-empty file, must be written in
-markdown format. See the [Daring Fireball Markdown:
-Basics](http://daringfireball.net/projects/markdown/basics).
+[Markdown format](https://www.markdownguide.org/basic-syntax/).
-We currently use [pandoc](https://pandoc.org) to convert markdown to HTML.
+We currently use [pandoc(1)](https://pandoc.org) to automatically convert markdown to HTML.
+Please try to avoid submitting an HTML file translation to any markdown file.
+If you **MUST** submit such an HTML translation, **PLEASE** mention this in your `remarks.md` file.
+
+For any submission that wins the contest, we modify your `remarks.md` file and
+rename it as `README.md` and then use [pandoc(1)](https://pandoc.org) to generate
+the `index.html` file in the top level directory of your submission.
+For this reason, please do **NOT** submit a `README.md` file, **NOR** an `index.html`
+file in the top level directory where your `remarks.md` file resides.
+
+See the [Markdown Cheat Sheet](https://www.markdownguide.org/cheat-sheet/)
+for a handy quick reference to the Markdown syntax.
+
+See the [Markdown guide](https://www.markdownguide.org)
+for free and open-source reference guide that explains
+how to use markdown.
+
+See also the [Daring Fireball Markdown:
+Basics](http://daringfireball.net/projects/markdown/basics) for
+information on the markdown format.
@@ -891,9 +985,15 @@ Jump to: [top](#)
Your submission **MUST NOT** create or modify files **ABOVE** the current directory
_with the exception of_ the `/tmp` and the `/var/tmp` directories. Your submission
**MAY** create subdirectories below the current directory, or in `/tmp`,
-or in `/var/tmp` provided that `.` is **NOT** the first octet in any
+or in `/var/tmp` provided that `.` is **NOT** the first byte in any
directory name or filename you create.
+
+If you do create files and directories, **PLEASE** be sure that
+the `clobber` rule of your `Makefile` removes such created files
+in order restore your submission to its original submission state.
+
See also [Rule 5](#rule5).
-[Rule 28](#rule28) is a perfect way end to the list of [IOCCC rules](rules.html)
+[Rule 28](#rule28) is a perfect way to end the list of [IOCCC rules](rules.html)
as we do **NOT** plan to have **496** rules. :-)
-**Be SURE** to review the [IOCCC Rules and Guidelines](index.html) as
-[IOCCC rules](rules.html) and the [IOCCC guidelines](guidelines.html) may (and
-**often do**) change from year to year.
+**Be SURE** to review the [IOCCC Rules and Guidelines](index.html) as they
+may (and **often do**) change from year to year.
-You should be sure you have the current [IOCCC rules](rules.html) and
-[IOCCC guidelines](guidelines.html) prior to submitting entries.
+**PLEASE** be sure you have the current [IOCCC rules](rules.html) and
+[IOCCC guidelines](guidelines.html) prior to submitting to the contest.
+Consider joining the IOCCC discord community via this link:
+[https://discord.gg/Wa42Qujwnw](https://discord.gg/Wa42Qujwnw)
+
See the
FAQ on "[obtaining and compiling the mkiocccentry tools](../faq.html#mkiocccentry)"
IOCCC RULES
A warning about rule abuse
+remarks.md file,
+as to why you think your rule abuse should be allowed, and as to why you think
+your submission should not be rejected for a rule violation.
+Nevertheless, Even if you do explain this in your remarks.md file
+you submission may still be rejected.
+mkiocccentry(1)), which we STRONGLY
+recommend you do, then the mkiocccentry(1) tool will warn you
+if there appears to be a rule violation. The mkiocccentry(1) tool
+also runs the fnamchk(1), txzchk(1) and chkentry(1) tools.
+Overriding problems detected by any of these tools comes with a
+fair amount of risk that your submission will be rejected.
+mkiocccentry(1)
+or related IOCCC tool, or otherwise plan to abuse the rules, then you MUST CLEARLY
+EXPLAIN THE RATIONALE of why you are attempting to abuse the rules in your
+remarks.md file. Even if you do explain this in your remarks.md file
+your submission may still be rejected.
+remarks.md file of your non-rule abusing version so that the IOCCC
+judges do not think you uploaded a duplicate into a
+wrong slot by mistake.
+Rule 0
@@ -581,18 +622,16 @@ Your submission must be a C program.
Rule 2
mkiocccentry(1)), which we STRONGLY
-recommend you do (see also Rule 17), then the mkiocccentry(1)
-tool will warn you if there appears to be a Rule 2a violation.
+See also Rule 2a, Rule 2b, and Rule 17.
mkiocccentry(1) tool will give you the option of overriding the Rule
-2a warning. Overriding the Rule 2a warning carries a
-fair amount of risk that your submission will be rejected. Be sure to
-consult the IOCCC guidelines ahead of time if you plan to
-override the Rule 2a warning.
-mkiocccentry(1)
-tool, or otherwise plan to violate Rule 2a, then you MUST CLEARLY
-EXPLAIN THE RATIONALE of why you are doing so in your remarks.md file.
-Even if you do explain this in your remarks.md file you submission may
-still be rejected.
-iocccsize(1) tool. For example:
@@ -624,8 +649,7 @@ as a command like argument to the iocccsize prog.ciocccsize(1) tool. For example:
Alternatively, you may use the mkiocccentry(1) option -d to verify that
things check out okay (i.e. no problems are detected) without having to answer
all the questions. See the
-FAQ on “how to test your submission without having
-to answer questions” for more details.
+FAQ on “how to rule test your submission” for more details.
iocccsize(1) may be found in the
mkiocccentry(1) tool, which we STRONGLY recommend
-you do (again, see also Rule 17),
-then mkiocccentry(1) will invoke the iocccsize(1) checks before packaging
+you do then mkiocccentry(1) will invoke the iocccsize(1) checks before packaging
your submission.
mkiocccentry(1) tool will give you the option of overriding the Rule
-2b warning. Overriding the Rule 2b warning carries a fair
-amount of risk that your submission will be rejected. Be sure to consult the
-IOCCC guidelines ahead of time if you plan to override the
-Rule 2b warning.
-mkiocccentry(1)
-tool, or otherwise plan to violate Rule 2b, then you MUST CLEARLY
-EXPLAIN THE RATIONALE of why you are doing so in your remarks.md file.
-Even if you do explain this in your remarks.md file your submission may
-still be rejected.
-iocccsize(1) tool. For example:
+ iocccsize prog.cRule 3
@@ -675,26 +687,28 @@ You may register while the contest is either
pending or open.
egrep(1) would be able to pattern match. By egrep(1), we refer to the
+long standing UNIX utility that should just run and NOT whine about
+the command being deprecated.
Makefile to form that copy.
clobber rule of your Makefile removes that copy in order to
-restore the contents of your submission to its original submission.
+in order restore your submission to its original submission state.
remarks.md file.
+
+
+remarks.md file.
mkiocccentry(1) tool.
See the “Important IOCCC dates” section above for when these contest states are scheduled.
remarks.md file.
the opinion of the judges, violates the rules WILL BE DISQUALIFIED.
Submissions that attempt to abuse the rules MUST try to justify why
their rule abuse is legal, in the remarks.md file.
+Rule 13
@@ -905,11 +941,23 @@ Fun fact: the fear of the number 13 is called triskaidekaphobia.
015) might be rejected.
+control-M’s (i.e., lines with a trailing byte 015) might be rejected.
+prog.c, Makefile, or
+remarks.md files but instead end lines with a trailing newline (i.e.,
+byte 012) character.
+Makefile and
+remarks.md files end in final newline (i.e., byte 012) character.
+prog.c under
+a Rule 2a and/or Rule 2b limit, to NOT
+end your prog.c with a newline (i.e., byte 012) character.
+If you need to do this, PLEASE document that in your remarks.md file.
Rule 15
@@ -917,8 +965,10 @@ any control-M at the end of remark file lines.
Rule 16
remarks.md file
+as this sometimes helps.
+Rule 17
mkiocccentry(1) tool would generate. The files, directories,
-and paths MUST conform to the limits imposed by mkiocccentry(1)
-including but NOT LIMITED to their names, count, path length
-and directory tree depth.
+Your submission must be in the form of a xz compressed tarball that
+the current released version of the mkiocccentry(1) tool would generate.
+The files, directories, and paths MUST conform to the limits imposed
+by mkiocccentry(1) including but NOT LIMITED to their names, count,
+path length and directory tree depth.
-
-txzchk(1)
-
-
-fnamchk(1)
-
-
-chkentry(1)
-txzchk(1) uses the fnamchk(1) tool on your tarball to obtain the proper
-directory name. If either name is wrong, it will be flagged as an error.
+Your xz compressed tarball must be larger than 0 bytes and no larger than 3999971 bytes.
prog.c file must pass the Rule 2 size checked performed by:
+The sum of the byte lengths of all files, after the xz compressed tarball is un-tarred,
+must not exceed 27651*1024 bytes.
-
iocccsize(1)
-.auth.json and .info.json must be compatible with what hat mkiocccentry(1) tool
-would produce as well as pass the tests performed by:
+Your xz compressed tarball submission file must pass the tests performed by the current version of txzchk(1).
+fnamchk(1).
+chkentry(1).
+prog.c file must pass the Rule 2 size checks performed by the current
+version of iocccsize(1).
+.auth.json and .info.json must be compatible with what the
+current version of the mkiocccentry(1) tool would produce. They must
+also pass the tests performed by the current version of chkentry(1).
-
jparse(3)
-chkentry(1)
-Makefile must NOT be empty.
Makefile must NOT be empty.
The remarks.md must NOT be empty.
TL;DR Rule 17 - Use
-mkiocccentry(1) to form your submissionmkiocccentry(1) tool form your xz compressed tarball submission
-file and don’t try to override its checks and limits, in order to be sure you
-submission conforms to this rule.mkiocccentry(1) tool form your xz
+compressed tarball submission file.
+Warning
-Rule 19
remarks.md file, a required non-empty file, must be written in
-markdown format. See the Daring Fireball Markdown:
-Basics.
+Markdown format.
remarks.md file.
+remarks.md file and
+rename it as README.md and then use pandoc(1) to generate
+the index.html file in the top level directory of your submission.
+For this reason, please do NOT submit a README.md file, NOR an index.html
+file in the top level directory where your remarks.md file resides.
+$PATH search path.
/tmp and the /var/tmp directories. Your submission
MAY create subdirectories below the current directory, or in /tmp,
-or in /var/tmp provided that . is NOT the first octet in any
+or in /var/tmp provided that . is NOT the first byte in any
directory name or filename you create.clobber rule of your Makefile removes such created files
+in order restore your submission to its original submission state.
+Rule 28