diff --git a/2024/README.md b/2024/README.md index 83b0d37ed..6a128c458 100644 --- a/2024/README.md +++ b/2024/README.md @@ -77,7 +77,7 @@ become more skilled in the programming in the C language. We were pleased to observe that while the [IOCCC size limit](../faq.html#size_rule_history) increased by about 21%, we received many submissions that were well under the new -[Rule 2 size limit](../next/rules.html#rule2) including a fair number of quality +[Rule 2 Size](../next/rules.html#rule-2-size) including a fair number of quality small and medium sized submissions. Half of the **IOCCC28 winners** were less than _2/3 of the size limit_, and 10 of the **IOCCC28 winners** were less than _1/2 of the size limit_! @@ -85,10 +85,10 @@ _1/2 of the size limit_! **IMPORTANT NOTE**: The [IOCCC size limit](../faq.html#size_rule_history) increase for **IOCCC28** was the first size increase in over 10 years. Given the quality of submissions we received that were well under the limit, we do **NOT** expect to change the -[Rule 2 size limit](../next/rules.html#rule2) for **at least another 10 years** (and likely longer). +[Rule 2 Size](../next/rules.html#rule-2-size) for **at least another 10 years** (and likely longer). **IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the [Rule -2 size limit](../next/rules.html#rule2). Large code size isn't everything. :-) +2 Size](../next/rules.html#rule-2-size). Large code size isn't everything. :-) Those submitting to future contents should **take a careful note** of that fact. diff --git a/2024/index.html b/2024/index.html index ac2a75322..b41981ca2 100644 --- a/2024/index.html +++ b/2024/index.html @@ -513,16 +513,16 @@ become more skilled in the programming in the C language.
We were pleased to observe that while the IOCCC size limit increased by about 21%, we received many submissions that were well under the new -Rule 2 size limit including a fair number of quality +Rule 2 Size including a fair number of quality small and medium sized submissions. Half of the IOCCC28 winners were less than 2/3 of the size limit, and 10 of the IOCCC28 winners were less than 1/2 of the size limit!
IMPORTANT NOTE: The IOCCC size limit increase for IOCCC28 was the first size increase in over 10 years. Given the quality of submissions we received that were well under the limit, we do NOT expect to change the -Rule 2 size limit for at least another 10 years (and likely longer).
-IMPORTANT HINT: Only 3 of the 23 IOCCC28 winners came close to the Rule -2 size limit. Large code size isn’t everything. :-) +Rule 2 Size for at least another 10 years (and likely longer).
+IMPORTANT HINT: Only 3 of the 23 IOCCC28 winners came close to the Rule +2 Size. Large code size isn’t everything. :-) Those submitting to future contents should take a careful note of that fact.
Here are the final versions of the IOCCC rules and guidelines that were in diff --git a/faq.html b/faq.html index b67b849a1..a06f4651b 100644 --- a/faq.html +++ b/faq.html @@ -657,8 +657,8 @@
This toolkit is from the mkiocccentry repo and it is required that you use it to package your submission. Not doing so puts you at a great risk of -violating the Rules and in particular Rule -17.
+violating the Rules and in particular +Rule 17 Packaging.Jump to: top
mkiocccentry in simple terms?IMPORTANT NOTE: the tools that require other tools, mkiocccentry(1) and
txzchk(1), will, as of version 2.0.2 2025-03-11, search under $PATH. If
you have an earlier version and you have not installed the tools and run the
@@ -932,7 +933,8 @@ rounds; we look at the author name only if an entry wins. See the
guidelines AND rules if this is not clear!
mkiocccentry(1), as it requires it to not be of size 0, though if you only
-include whitespace you would still be violating Rule 17).Jump to: top
See the FAQ on “Rule 17” -and Rule 17 itself.
+and +Rule 17 Packaging +itself.Do remember that if your submission requires different filenames, then you
-MUST make a COPY of them in your Makefile. See also Rule
-11.
Makefile. See also
+Rule 5 Purity.
Jump to: top
txzchk(1) tests; only your submission
tarball needs to pass these tests. However see below if you do do this.
-Please pay careful attention to Rule 17 and in +
Please pay careful attention to Rule 17 Packaging and in particular the part about the maximum number of files per submission, which not only discusses the maximum number of files but also specific rules you must follow if you do include a tarball. Not following these points puts you at great risk -of violating Rule 17!
+of violating Rule 17 Packaging!Also, remember what the guidelines say:
IMPORTANT REMINDER: make SURE your tarball does NOT reveal who you are! @@ -1170,7 +1174,7 @@ contains IMPORTANT tools and libraries such as:
chksubmit(1)(which usesjparse(3)and is a wrapper tochkentry(1))The above mentioned tools will help you verify that your submission -conforms to Rule 17. Each of these tool has a
-h+conforms to Rule 17 Packaging. Each of these tool has a-hoption that provides command line help. For additional details of each tool, see its man page, and in some cases, the IOCCC guidelines.The maximum number of extra files is 31. See the @@ -1220,7 +1224,8 @@ for help.
The
+submission WILL be rejected for violating +Rule 17 Packaging!remarks.mdMUST be a non-empty file in markdown format (mkiocccentry(1)only checks the file size but if you do not have any text in it you still risk violating this rule). See also -Rule 18 and our +Rule 17 Packaging +and our FAQ on “remarks.md”, our FAQ on “markdown” @@ -1312,13 +1317,17 @@ permissions andmkiocccentry(1)does this for you. In particular: d MUST bedrwxr-xr-x(i.e.0755); any file ending with.shMUST be-r-xr-xr-x(i.e.0555); and all other files MUST be-r--r--r--(i.e.0444). If any file or directory does not have the correct permissions, your -submission WILL be rejected for violating Rule 17!After
mkiocccentry(1)creates the directories and copies the files with these modes, it also verifies them after the fact and if they are not correct it is an error.If you do need different permissions, then see the FAQ on “file permissions”. Also keep in mind -Rule 4, Rule 5 and Rule 21.
+Rule 4 Files, +Rule 5 Purity, +and +Rule 16 Anonymous.The
txzchk(1)tool will also verify file/directory permissions (and many other things) for you, and so willchksubmit(1)(along with other checks on files and directories in your submission directory, including the two required JSON files, @@ -1330,14 +1339,19 @@ page.The tarball filename MUST pass
+possible there could be a problem and this poses a big risk of violating +Rule 4 Files +or +Rule 17 Packaging.fnamchk(1); the tooltxzchk(1)will runfnamchk(1)as part of its algorithm. If you usemkiocccentry(1)there should be no problem but if you were to package things manually it is -possible there could be a problem and this poses a big risk of violating Rule -17.The
fnamchk(1), whichtxzchk(1)executes, will verify that the filename is correct. But if you do package your tarball manually, and you have a mismatch in what is in the tarball and the name,txzchk(1)will flag the discrepancy as an error and exit with non-zero.These checks MUST PASS. If they do not you stand a significant chance of -having your submission rejected for violating Rule 17!
+having your submission rejected for violating +Rule 4 Files +or +Rule 17 Packaging.@@ -1366,7 +1380,11 @@ yourself. TheMaximum number of files per submission
mkiocccentry(1)tool uses the v7 format. For instance you might try:tar --format=v7 -cJf foo.txz directory
-IMPORTANT: where Rule 17 and the tools from the latest +
IMPORTANT: where +Rule 4 Files, +and +Rule 17 Packaging. +and the tools from the latest release of the mkiocccentry repo conflict, the IOCCC judges will use their best judgment which is likely to favor mkiocccentry repo code.
@@ -1399,8 +1417,11 @@ page, making sure to runbug_report.sh. See the guidelines for help here and also read our FAQ on “mkiocccentry repo bugs”. -At the risk of stating the obvious: submissions that violate Rule -17 WILL BE REJECTED, so BE SURE to use the latest release of the +
At the risk of stating the obvious: submissions that violate +Rule 4 Files, +or +Rule 17 Packaging +WILL BE REJECTED, so BE SURE to use the latest release of the mkiocccentry repo, to form and test your submission’s xz compressed tarball. Do NOT assume you have the most recent release without pulling or downloading via GitHub and do MAKE SURE you @@ -1878,7 +1899,10 @@ two JSON files,
+a great risk of violating +Rule 4 Files, +or +Rule 17 Packaging!)..auth.jsonand.info.jsonas well as tMakefileandremarks.mdfiles along with all the other files listed in the.info.jsonmanifest. (Okay there is an option to skip files but this is for the judges ONLY; use of this option to validate your submission puts you at -a great risk of violating Rule 17!).As an example, if your submission directory is
@@ -1897,7 +1921,11 @@ checks. FAQ on “.auth.json” and the FAQ on “.info.json” -as well as Rule 17 for more information. +as well as +Rule 4 Files, +and +Rule 17 Packaging +for more information.00000000-0000-4000-0000-000000000000-3/then you should run the following command:NOTE: the
chksubmit(1)tool invokeschkentry(1)but as a contestant you do not need to worry about those details. One should usechksubmit(1)instead ofchkentry(1)when validating a directory;chkentry(1)is for the judges @@ -1986,21 +2014,25 @@ to be valid. If this is not the case your submission WILL BE re
- The IOCCC contestant ID used as a username in the form of in the form of a UUID and submission number; see the Rules for more details -on this, and in particular Rule 17.
+on this, and in particular +Rule 17 Packaging.NOTE: if the contest ID is NOT in this format then
+violating +Rule 17 Packaging.fnamchkwill report it as an error and your submission WILL BE rejected for -violating Rule 17!@@ -2013,7 +2045,8 @@ tarball, this will be flaggd. soup/limit_ioccc.h in the mkiocccentry repo). If this is not the case you stand a great risk of having your submission -rejected for violating Rule 17! +rejected for violating +Rule 17 Packaging.
tarball(double quoted string)
- The xz compressed tarball filename.
IMPORTANT: this MUST match the actual tarball’s filename in order for this to be valid. If there is a mismatch you stand a great risk of having -your submission rejected for violating Rule 17! +your submission rejected for violating +Rule 17 Packaging! Moreover, it is possible that
txzchkwill report a problem through -fnamchk(1)which also puts you at great risk of violating Rule -17.txzchkwill use the output offnamchkto +fnamchk(1)which also puts you at great risk of violating +Rule 17 Packaging. The +txzchk(1)tool will use the output offnamchkto obtain the correct directory name in the tarball; iffnamchkfails to validate your filename, or if you have the wrong directory name in the tarball, this will be flaggd.
author_count(number)
- How many authors this submission has.
@@ -2085,7 +2118,8 @@ the range of 1 THROUGHMAX_AFFILIATION_LEN(see soup/limit_ioccc.h in the mkiocccentry repo). If this is not the case you stand a great risk of having your submission -rejected for violating Rule 17! +rejected for violating +Rule 17 Packaging.NOTE: an affiliation does NOT have any affect on whether you will win or not.
past_winning_author(boolean)@@ -2169,8 +2203,10 @@ will use it on the submission directory as part of the judging process.
At the risk of stating the obvious, if your
+rejected for violating the Rules and in particular +Rule 4 Files, +and +Rule 17 Packaging..auth.jsonfile is invalid JSON or is reported invalid bychksubmit(1), or if your submission directory is reported invalid bychksubmit(1), your submission will almost certainly be -rejected for violating the Rules and in particular Rule -17.An obvious example where
chksubmit(1)would fail to validate.auth.jsonis if there is a mismatch of type in the JSON file with what is expected, for instance, if in.auth.jsontheno_commentthat we chose to not comment on is @@ -2178,7 +2214,11 @@ not a string or is the wrong string. Another obvious example is when things are out of range (see above for list). Two more examples would be if a field is missing or if an unknown filed is in the file. In these cases (and any others that must be established as valid bychksubmit(1)) your submission would be -rejected for violating Rule 17 and in particular +rejected for violating +Rule 4 Files, +and +Rule 17 Packaging +and in particular becausechksubmit(1)would not validate the.auth.jsonfile (and maybe other things too).If you wish to verify that your
.auth.jsonfile is valid JSON then see the @@ -2296,7 +2336,8 @@ this is not the case your submission WILL BE rejected!
- The IOCCC contestant ID used as a username in the form of in the form of a UUID and submission number; see the rules for more details -on this, and in particular Rule 17.
+on this, and in particular +Rule 17 Packaging.soup/limit_ioccc.h in the mkiocccentry repo). If this is not the case you stand a great risk of having your submission -rejected for violating Rule 17! +rejected for violating +Rule 17 Packaging.
submit_slot(number)@@ -2307,7 +2348,8 @@ on this, and in particular Rule 17.
+rejected for violating +Rule 17 Packaging!
title(double quoted string)
- A short name (length >= 1 THROUGH
MAX_TITLE_LEN, defined in @@ -2316,7 +2358,8 @@ in the mkiocccentry repo[a-z0-9][a-z0-9_+-]*.IMPORTANT: if this is NOT the case you stand a great risk of having your submission -rejected for violating Rule 17!
abstract(double quoted string)
- A one line summary of your submission, with a length of 1 THROUGH @@ -2326,33 +2369,37 @@ in the mkiocccentry repo
+stand a great risk of having your submission rejected for violating +Rule 17 Packaging!The
abstractmay not contain a;(semicolon), nor&(ampersand), nor,(comma).IMPORTANT: if your abstract is 0 in length or > the maximum abstract length you -stand a great risk of having your submission rejected for violating Rule -17!
tarball(double quoted string)
- The xz compressed tarball filename.
IMPORTANT: this MUST match the actual tarball’s filename in order for this to be valid. If there is a mismatch you stand a great risk of having -your submission rejected for violating Rule 17! +your submission rejected for violating +Rule 17 Packaging! Moreover, it is possible that
txzchkwill report a problem through -fnamchk(1)which also puts you at great risk of violating Rule -17.txzchkwill use the output offnamchkto +fnamchk(1)which also puts you at great risk of violating +Rule 17 Packaging. +Thetxzchk(1)tool will use the output offnamchkto obtain the correct directory name in the tarball; iffnamchkfails to validate your filename, or if you have the wrong directory name in the tarball, this will be flaggd.
rule_2a_size(number)-
- The size calculated of Rule 2a.
+- The size calculated of Rule 2a Gross Size.
IMPORTANT: if this violates Rule 2a you stand a great chance of having your submission rejected for violating the Rules!
rule_2b_size(number)-
-- The size calculated of Rule 2b.
+- The size calculated of Rule 2b Next Size.
IMPORTANT: if this violates Rule 2b you stand a great +
IMPORTANT: if this violates +Rule 2b Next Size +you stand a great chance of having your submission rejected for violating the Rules!
@@ -2361,30 +2408,41 @@ chance of having your submission rejected for violating the
empty_override(boolean)+submission rejected for violating +Rule 17 Packaging.
rule_2a_override(boolean)-
-trueif user overrides warning of Rule 2a +trueif user overrides warning of +Rule 2a Gross Size violation, elsefalse.IMPORTANT: if the Rule 2a calculated size is NOT +
IMPORTANT: if the +Rule 2a Gross Size +calculated size is NOT violated but this is
truethen you stand a good chance of having your -submission rejected for violating Rule 17!
rule_2a_mismatch(boolean)-
trueif Rule 2a calculated size is not the +trueif +Rule 2a Gross Size +calculated size is not the same as the file size.+submission rejected for violating +Rule 17 Packaging.
rule_2b_override(boolean)-
-trueif user overrides warning of Rule 2b +trueif user overrides warning of +Rule 2b Next Size violation, elsefalse.IMPORTANT: if the Rule 2b calculated size is NOT +
IMPORTANT: if the +Rule 2b Next Size +calculated size is NOT violated but this is
truethen you stand a good chance of having your -submission rejected for violating Rule 17!
highbit_warning(boolean)
- +bit set - octet value >= 128); see +Rule 12 UTF-8, +else
trueifiocccsizedetects a high bit (unescaped octets with the high -bit set - octet value >= 128); see Rule 13, else -false.false.@@ -2421,7 +2479,7 @@ for more information.
nul_warning(boolean)@@ -2411,7 +2469,7 @@ bit set - octet value >= 128); see Rule 13
IMPORTANT: if the
+Rule 17 Packaging!Makefilefile has no problems and this istruethen you stand a good chance of having your submission rejected for violating -Rule 17!See the FAQ on “Makefile” for more information.
IMPORTANT:: if the
+Rule 17 Packaging!Makefilefile does NOT have anallrule then you stand a good chance of having your submission rejected for violating -Rule 17!See the FAQ on “Makefile” for more information.
@@ -2431,7 +2489,8 @@ for more information.IMPORTANT: if the
+submission rejected for violating +Rule 17 Packaging!Makefilefile does NOT have anallrule and this boolean istruethen you stand a good chance of having your -submission rejected for violating Rule 17!See the FAQ on “Makefile” for more information.
@@ -2441,7 +2500,8 @@ for more information.IMPORTANT: if the
+rejected for violating +Rule 17 Packaging!Makefilefile does NOT have acleanrule and this boolean istruethen you stand a good chance of having your submission -rejected for violating Rule 17!See the FAQ on “Makefile” for more information.
@@ -2451,7 +2511,8 @@ for more information.IMPORTANT: if the
+rejected for violating +Rule 17 Packaging!Makefilefile does NOT have anclobberrule and this boolean istruethen you stand a good chance of having your submission -rejected for violating Rule 17!See the FAQ on “Makefile” for more information.
@@ -2461,7 +2522,8 @@ for more information.IMPORTANT: if the
+rejected for violating +Rule 17 Packaging!Makefilefile does NOT have atryrule and this boolean istruethen you stand a good chance of having your submission -rejected for violating Rule 17!See the FAQ on “Makefile” for more information.
@@ -2486,8 +2548,8 @@ FAQ on “.info.json” for more information.IMPORTANT: if this is NOT the case you stand a -great chance of having your submission rejected for violating Rule -17!
+great chance of having your submission rejected for violating +Rule 17 Packaging!+submission rejected for violating +Rule 17 Packaging!
auth_JSON(double quoted string)
- This
MUSTbe".auth.json", defined asAUTH_JSON_FILENAMEin @@ -2499,7 +2561,8 @@ FAQ on “.auth.json” for more information.IMPORTANT: if this is NOT the case you stand a great chance of having your -submission rejected for violating Rule 17!
+submission rejected for violating +Rule 17 Packaging!
c_src(double quoted string)
- This
MUSTbe"prog.c", defined asPROG_C_FILENAMEin @@ -2508,7 +2571,8 @@ in the mkiocccentry repoIMPORTANT: if this is NOT the case you stand a great chance of having your -submission rejected for violating Rule 17!
+submission rejected for violating +Rule 17 Packaging!
Makefile(double quoted string)
- This
MUSTbe"Makefile", defined asMAKEFILE_FILENAMEin @@ -2520,7 +2584,8 @@ FAQ on “Makefile” for more information.IMPORTANT: if this is NOT the case you stand a great chance of having your -submission rejected for violating Rule 17!
+submission rejected for violating +Rule 17 Packaging!
remarks(double quoted string)
- This
MUSTbe"remarks.md", defined asREMARKS_FILENAMEin @@ -2532,7 +2597,8 @@ FAQ on “remarks.md” for more information.IMPORTANT: if this is NOT the case you stand a great chance of having your -submission rejected for violating Rule 17!
The
manifestarray also OPTIONALLY has one or more of the field:@@ -2544,8 +2610,9 @@ submission rejected for violating Rule 17!< and
chksubmitwill verify this for you; it is ALSO an error if the filenames are not unique, not POSIX plus + safe chars only, if they are the wrong permission and various other things. In these cases you stand a great -risk of having your submission rejected for violating Rule -17! On the other hand, ONLYmkiocccentrywill +risk of having your submission rejected for violating +Rule 17 Packaging! +On the other hand, ONLYmkiocccentrywill verify that the files exist and can be read;txzchk(1)will NOT do this for you as it only LISTS the tarball: it does NOT extract it. Even so, the Judges WILL extract the tarball and if a @@ -2606,7 +2673,9 @@ not a string or is the wrong string. Another obvious example is when things are out of range (see above for list). Two more examples would be if a field is missing or if an unknown filed is in the file. In these cases (and any others that must be established as valid bychksubmit) your submission would be -rejected for violating Rule 17 and in particular +rejected for violating +Rule 17 Packaging](next/rules.html#rule-17-packaging), +and in particular becausechksubmitwould not validate the.info.jsonfile.If you wish to verify that your
diff --git a/faq.md b/faq.md index 007d664c2..4b4929194 100644 --- a/faq.md +++ b/faq.md @@ -214,8 +214,8 @@ Jump to: [top](#) This toolkit is from the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) and it is **required** that you use it to package your submission. Not doing so puts you at a great risk of -violating the [Rules](next/rules.html) and in particular [Rule -17](next/rules.html#rule17). +violating the [Rules](next/rules.html) and in particular +[Rule 17 Packaging](next/rules.html#rule-17-packaging). Jump to: [top](#) @@ -385,7 +385,8 @@ is not a directory that can be written to. In **this** directory your **submissi directory** will be created, with the name based on your IOCCC registration username, which is **in the form of a UUID**, and submission number along with the timestamp; see the [rules](next/rules.html) for more details on this, and in -particular [Rule 17](next/rules.html#rule17). +particular +[Rule 17 Packaging](next/rules.html#rule-17-packaging). **IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and `txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If @@ -574,7 +575,8 @@ rounds; we look at the author name only if an entry wins. See the [guidelines](next/guidelines.html) **AND** [rules](next/rules.html) if this is not clear! - leaving the remark section empty (which would also indicate that you did not use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only -include whitespace you would still be violating [Rule 17](next/rules.html#rule17)). +include whitespace you would still be violating +[Rule 17 Packaging](next/rules.html#rule-17-packaging)). Jump to: [top](#) @@ -632,11 +634,13 @@ for more details. See the FAQ on "[Rule 17](#rule17)" -and [Rule 17](next/rules.html#rule17) itself. +and +[Rule 17 Packaging](next/rules.html#rule-17-packaging) +itself. Do remember that if your submission requires different filenames, then you -**MUST** make a **COPY** of them in your `Makefile`. See also [Rule -11](next/rules.html#rule11). +**MUST** make a **COPY** of them in your `Makefile`. See also +[Rule 5 Purity](next/rules.html#rule-5-purity). Jump to: [top](#) @@ -848,12 +852,12 @@ itself is an extra file, meaning it counts **AS** an extra file. This file does **NOT** need to pass the `txzchk(1)` tests; only your submission tarball needs to pass these tests. However see below if you do do this. -Please pay careful attention to [Rule 17](next/rules.html#rule17) and in +Please pay careful attention to [Rule 17 Packaging](next/rules.html#rule-17-packaging) and in particular the part about the maximum number of files per submission, which not only discusses the maximum number of files but also specific rules you must follow if you do include a tarball. Not following these points puts you at great risk -of violating [Rule 17](next/rules.html#rule17)! +of violating [Rule 17 Packaging](next/rules.html#rule-17-packaging)! Also, remember what the [guidelines](next/guidelines.html) say: @@ -915,7 +919,7 @@ contains **IMPORTANT** tools and libraries such as: - `chksubmit(1)` (which uses `jparse(3)` and is a wrapper to `chkentry(1)`) The above mentioned tools will help you verify that your submission -conforms to [Rule 17](next/rules.html#rule17). Each of these tool has a `-h` +conforms to [Rule 17 Packaging](next/rules.html#rule-17-packaging). Each of these tool has a `-h` option that provides command line help. For additional details of each tool, see its man page, and in some cases, the [IOCCC guidelines](next/guidelines.html). @@ -977,7 +981,8 @@ for help. The `remarks.md` **MUST** be a **non**-empty file in markdown format (`mkiocccentry(1)` only checks the file size but if you do not have any text in it you still risk violating this rule). See also -[Rule 18](next/rules.html#rule18) and our +[Rule 17 Packaging](next/rules.html#rule-17-packaging) +and our FAQ on "[remarks.md](#remarks_md)", our FAQ on "[markdown](#markdown)" @@ -1083,7 +1088,8 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories **MUST** be `drwxr-xr-x` (i.e. `0755`); any file ending with `.sh` **MUST** be `-r-xr-xr-x` (i.e. `0555`); and all other files **MUST** be `-r--r--r--` (i.e. `0444`). If any file or directory does not have the correct permissions, your -submission **WILL** be rejected for violating [Rule 17](next/rules.html#rule17)! +submission **WILL** be rejected for violating +[Rule 17 Packaging](next/rules.html#rule17)! After `mkiocccentry(1)` creates the directories and copies the files with these modes, it also verifies them after the fact and if they are not correct it is an @@ -1091,7 +1097,10 @@ modes, it also verifies them after the fact and if they are not correct it is an If you do need different permissions, then see the FAQ on "[file permissions](#file_perms)". Also keep in mind -[Rule 4](next/rules.html#rule4), [Rule 5](next/rules.html#rule5) and [Rule 21](next/rules.html#rule21). +[Rule 4 Files](next/rules.html#rule-4-files), +[Rule 5 Purity](next/rules.html#rule-5-purity), +and +[Rule 16 Anonymous](next/rules.html#rule-16-anonymous). The `txzchk(1)` tool will also verify file/directory permissions (and many other things) for you, and so will `chksubmit(1)` (along with other checks on files and @@ -1105,8 +1114,11 @@ page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug The tarball filename **MUST** pass `fnamchk(1)`; the tool `txzchk(1)` will run `fnamchk(1)` as part of its algorithm. If you use `mkiocccentry(1)` there should be no problem but if you were to package things manually it is -possible there could be a problem and this poses a big risk of violating [Rule -17](next/rules.html#rule17). +possible there could be a problem and this poses a big risk of violating +[Rule 4 Files](next/rules.html#rule-4-files) +or +[Rule 17 Packaging](next/rules.html#rule17). + The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the filename is correct. But if you do package your tarball manually, and you have a @@ -1114,7 +1126,10 @@ mismatch in what is in the tarball and the name, `txzchk(1)` will flag the discrepancy as an error and exit with non-zero. These checks **MUST PASS**. If they do not you stand a significant chance of -having your submission rejected for violating [Rule 17](next/rules.html#rule17)! +having your submission rejected for violating +[Rule 4 Files](next/rules.html#rule-4-files) +or +[Rule 17 Packaging](next/rules.html#rule17)..info.jsonfile is valid JSON then see the FAQ on “validating JSON documents”.#### Maximum number of files per submission @@ -1154,7 +1169,11 @@ The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
-**IMPORTANT**: where [Rule 17](next/rules.html#rule17) and the tools from the latest +**IMPORTANT**: where +[Rule 4 Files](next/rules.html#rule-4-files), +and +[Rule 17 Packaging](next/rules.html#rule-17-packaging). +and the tools from the latest release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) conflict, the [IOCCC judges](judges.html) will use their best judgment which is likely to favor [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) code. @@ -1193,8 +1212,11 @@ page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug for help here and also read our FAQ on "[mkiocccentry repo bugs](#mkiocccentry_bugs)". -At the risk of stating the obvious: submissions that violate [Rule -17](next/rules.html#rule17) **WILL BE REJECTED**, so **BE SURE** to use the latest release of the +At the risk of stating the obvious: submissions that violate +[Rule 4 Files](next/rules.html#rule-4-files), +or +[Rule 17 Packaging](next/rules.html#rule-17-packaging) +**WILL BE REJECTED**, so **BE SURE** to use the latest release of the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test your submission's xz compressed tarball. Do **NOT** assume you have the most recent release without pulling or downloading via GitHub and do **MAKE SURE** you @@ -1851,7 +1873,10 @@ two JSON files, `.auth.json` and `.info.json` as well as the `prog.c`, `Makefile` and `remarks.md` files along with all the other files listed in the `.info.json` manifest. (Okay there is an option to skip files but this is for the judges **ONLY**; use of this option to validate your submission puts you at -a great risk of violating [Rule 17](next/rules.html#rule17)!). +a great risk of violating +[Rule 4 Files](next/rules.html#rule-4-files), +or +[Rule 17 Packaging](next/rules.html#rule-17-packaging)!). As an example, if your submission directory is `00000000-0000-4000-0000-000000000000-3/` then you should run the following @@ -1877,7 +1902,11 @@ See the FAQ on "[.auth.json](#auth_json)" and the FAQ on "[.info.json](#info_json)" -as well as [Rule 17](next/rules.html#rule17) for more information. +as well as +[Rule 4 Files](next/rules.html#rule-4-files), +and +[Rule 17 Packaging](next/rules.html#rule-17-packaging) +for more information. **NOTE**: the `chksubmit(1)` tool invokes `chkentry(1)` but as a contestant you do not need to worry about those details. One should use `chksubmit(1)` instead @@ -1969,21 +1998,25 @@ In order of the file's contents we describe each required field, below: - `IOCCC_contest_id` (double quoted string) * The IOCCC contestant ID used as a username in the form of **in the form of a UUID** and submission number; see the [Rules](next/rules.html) for more details - on this, and in particular [Rule 17](next/rules.html#rule17). + on this, and in particular + [Rule 17 Packaging](next/rules.html#rule-17-packaging). **NOTE:** if the contest ID is **NOT** in this format then `fnamchk` will report it as an **error** and your submission **WILL BE** rejected for - violating [Rule 17](next/rules.html#rule17)! + violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). - `tarball` (double quoted string) * The xz compressed tarball filename. **IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for this to be valid. If there is a mismatch you stand a great risk of having - your submission rejected for violating [Rule 17](next/rules.html#rule17)! + your submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! Moreover, it is possible that `txzchk` will report a problem through - `fnamchk(1)` which also puts you at great risk of violating [Rule - 17](next/rules.html#rule17). `txzchk` will use the output of `fnamchk` to + `fnamchk(1)` which also puts you at great risk of violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). The + `txzchk(1)` tool will use the output of `fnamchk` to obtain the correct directory _name_ in the tarball; if `fnamchk` fails to validate your filename, or if you have the wrong directory name in the tarball, this will be flaggd. @@ -1996,7 +2029,8 @@ In order of the file's contents we describe each required field, below: [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If this is not the case you stand a great risk of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). - `author_count` (number) * How many authors this submission has. @@ -2060,7 +2094,8 @@ author(s) of the submission: [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If this is not the case you stand a great risk of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). **NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not. @@ -2144,8 +2179,10 @@ will use it on the submission directory as part of the judging process. At the risk of stating the obvious, if your `.auth.json` file is invalid JSON or is reported invalid by `chksubmit(1)`, or if your submission directory is reported invalid by `chksubmit(1)`, your submission will almost certainly be -rejected for violating the [Rules](next/rules.html) and in particular [Rule -17](next/rules.html#rule17). +rejected for violating the [Rules](next/rules.html) and in particular +[Rule 4 Files](next/rules.html#rule-4-files), +and +[Rule 17 Packaging](next/rules.html#rule-17-packaging). An obvious example where `chksubmit(1)` would fail to validate `.auth.json` is if there is a mismatch of type in the JSON file with what is expected, for @@ -2154,7 +2191,11 @@ not a string or is the wrong string. Another obvious example is when things are out of range (see above for list). Two more examples would be if a field is missing or if an unknown filed is in the file. In these cases (and any others that must be established as valid by `chksubmit(1)`) your submission would be -rejected for violating [Rule 17](next/rules.html#rule17) and in particular +rejected for violating +[Rule 4 Files](next/rules.html#rule-4-files), +and +[Rule 17 Packaging](next/rules.html#rule-17-packaging) +and in particular because `chksubmit(1)` would not validate the `.auth.json` file (and maybe other things too). @@ -2276,7 +2317,8 @@ In order of the file's contents we describe each required field, below: - `IOCCC_contest_id` (double quoted string) * The IOCCC contestant ID used as a username in the form of **in the form of a UUID** and submission number; see the [rules](next/rules.html) for more details - on this, and in particular [Rule 17](next/rules.html#rule17). + on this, and in particular + [Rule 17 Packaging](next/rules.html#rule-17-packaging). - `submit_slot` (number) * The submission number. @@ -2286,7 +2328,8 @@ In order of the file's contents we describe each required field, below: [soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h) in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)). If this is not the case you stand a great risk of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). - `title` (double quoted string) * A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in @@ -2295,7 +2338,8 @@ In order of the file's contents we describe each required field, below: matches the regexp `[a-z0-9][a-z0-9_+-]*`. **IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! - `abstract` (double quoted string) * A one line summary of your submission, with a length of 1 **THROUGH** @@ -2306,33 +2350,37 @@ In order of the file's contents we describe each required field, below: The `abstract` may not contain a `;` (semicolon), nor `&` (ampersand), nor `,` (comma). **IMPORTANT:** if your abstract is 0 in length or > the maximum abstract length you - stand a great risk of having your submission rejected for violating [Rule - 17](next/rules.html#rule17)! + stand a great risk of having your submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! - `tarball` (double quoted string) * The xz compressed tarball filename. **IMPORTANT:** this **MUST** match the actual tarball's **filename** in order for this to be valid. If there is a mismatch you stand a great risk of having - your submission rejected for violating [Rule 17](next/rules.html#rule17)! + your submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! Moreover, it is possible that `txzchk` will report a problem through - `fnamchk(1)` which also puts you at great risk of violating [Rule - 17](next/rules.html#rule17). `txzchk` will use the output of `fnamchk` to + `fnamchk(1)` which also puts you at great risk of violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). + The `txzchk(1)` tool will use the output of `fnamchk` to obtain the correct directory _name_ in the tarball; if `fnamchk` fails to validate your filename, or if you have the wrong directory name in the tarball, this will be flaggd. - `rule_2a_size` (number) - * The size calculated of [Rule 2a](next/rules.html#rule2a). + * The size calculated of [Rule 2a Gross Size](next/rules.html#rule-2a-gross-size). **IMPORTANT:** if this violates [Rule 2a](next/rules.html#rule2a) you stand a great chance of having your submission rejected for violating the [Rules](next/rules.html)! - `rule_2b_size` (number) - * The size calculated of [Rule 2b](next/rules.html#rule2b). + * The size calculated of [Rule 2b Next Size](next/rules.html#rule-2b-net-size). - **IMPORTANT:** if this violates [Rule 2b](next/rules.html#rule2b) you stand a great + **IMPORTANT:** if this violates + [Rule 2b Next Size](next/rules.html#rule-2b-net-size) + you stand a great chance of having your submission rejected for violating the [Rules](next/rules.html)! @@ -2340,29 +2388,40 @@ In order of the file's contents we describe each required field, below: * `true` if user override warning of an empty source file, else `false`. - `rule_2a_override` (boolean) - * `true` if user overrides warning of [Rule 2a](next/rules.html#rule2a) + * `true` if user overrides warning of + [Rule 2a Gross Size](next/rules.html#rule-2a-gross-size) violation, else `false`. - **IMPORTANT:** if the [Rule 2a](next/rules.html#rule2a) calculated size is **NOT** + **IMPORTANT:** if the + [Rule 2a Gross Size](next/rules.html#rule-2a-gross-size) + calculated size is **NOT** violated but this is `true` then you stand a good chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). - `rule_2a_mismatch` (boolean) - * `true` if [Rule 2a](next/rules.html#rule2a) calculated size is not the + * `true` if + [Rule 2a Gross Size](next/rules.html#rule-2a-gross-size) + calculated size is not the same as the file size. - `rule_2b_override` (boolean) - * `true` if user overrides warning of [Rule 2b](next/rules.html#rule2b) + * `true` if user overrides warning of + [Rule 2b Next Size](next/rules.html#rule-2b-net-size) violation, else `false`. - **IMPORTANT:** if the [Rule 2b](next/rules.html#rule2b) calculated size is **NOT** + **IMPORTANT:** if the + [Rule 2b Next Size](next/rules.html#rule-2b-net-size) + calculated size is **NOT** violated but this is `true` then you stand a good chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging). - `highbit_warning` (boolean) * `true` if `iocccsize` detects a high bit (unescaped octets with the high - bit set - octet value >= 128); see [Rule 13](next/rules.html#rule13), else - `false`. + bit set - octet value >= 128); see + [Rule 12 UTF-8](next/rules.html#rule-12-utf-8), + else `false`. - `nul_warning` (boolean) * `true` if `iocccsize` detects a NUL character in the `prog.c`, else @@ -2384,7 +2443,7 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:** if the `Makefile` file has no problems and this is `true` then you stand a good chance of having your submission rejected for violating - [Rule 17](next/rules.html#rule17)! + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2395,7 +2454,7 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:**: if the `Makefile` file does **NOT** have an `all` rule then you stand a good chance of having your submission rejected for violating - [Rule 17](next/rules.html#rule17)! + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2406,7 +2465,8 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this boolean is `true` then you stand a good chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2417,7 +2477,8 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this boolean is `true` then you stand a good chance of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2428,7 +2489,8 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this boolean is `true` then you stand a good chance of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2439,7 +2501,8 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this boolean is `true` then you stand a good chance of having your submission - rejected for violating [Rule 17](next/rules.html#rule17)! + rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2464,8 +2527,8 @@ The `mkiocccentry(1)` tool will write it in this order: for more information. **IMPORTANT:** if this is **NOT** the case you stand a - great chance of having your submission rejected for violating [Rule - 17](next/rules.html#rule17)! + great chance of having your submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! - `auth_JSON` (double quoted string) * This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in @@ -2477,7 +2540,8 @@ The `mkiocccentry(1)` tool will write it in this order: for more information. **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! - `c_src` (double quoted string) * This `MUST` be `"prog.c"`, defined as `PROG_C_FILENAME` in @@ -2486,7 +2550,8 @@ The `mkiocccentry(1)` tool will write it in this order: is your submission source code. **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! - `Makefile` (double quoted string) * This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in @@ -2498,7 +2563,8 @@ The `mkiocccentry(1)` tool will write it in this order: for more information. **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! - `remarks` (double quoted string) * This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in @@ -2510,7 +2576,8 @@ The `mkiocccentry(1)` tool will write it in this order: for more information. **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your - submission rejected for violating [Rule 17](next/rules.html#rule17)! + submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! The `manifest` **array** also **OPTIONALLY** has one or more of the field: @@ -2522,8 +2589,9 @@ The `manifest` **array** also **OPTIONALLY** has one or more of the field: and `chksubmit` will verify this for you; it is **ALSO** an **error** if the filenames are not unique, not POSIX plus + safe chars only, if they are the wrong permission and various other things. In these cases you stand a great - risk of having your submission rejected for violating [Rule - 17](next/rules.html#rule17)! On the other hand, **ONLY** `mkiocccentry` will + risk of having your submission rejected for violating + [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + On the other hand, **ONLY** `mkiocccentry` will verify that the files exist and can be read; `txzchk(1)` will **NOT** do this for you as it only **LISTS** the tarball: it does **NOT** extract it. Even so, the [Judges](judges.html) **WILL** extract the tarball and if a @@ -2585,7 +2653,9 @@ not a string or is the wrong string. Another obvious example is when things are out of range (see above for list). Two more examples would be if a field is missing or if an unknown filed is in the file. In these cases (and any others that must be established as valid by `chksubmit`) your submission would be -rejected for violating [Rule 17](next/rules.html#rule17) and in particular +rejected for violating +Rule 17 Packaging](next/rules.html#rule-17-packaging), +and in particular because `chksubmit` would not validate the `.info.json` file. If you wish to **verify** that your `.info.json` file is valid **JSON** then see the diff --git a/news.html b/news.html index a3e5332ff..6e5666795 100644 --- a/news.html +++ b/news.html @@ -747,11 +747,11 @@ as well as a critical fix for installing on BSD based systems. and compile the mkiocccentry tool set. You may also wish to install this code. See also the mkiocccentry FAQ for more information.2024-12-30
-The IOCCC Rule 13 no longer discourages the +
The IOCCC Rule 12 UTF-8 no longer discourages the use of UTF-8 in C source. Since the days of
--std=gnu17compilers, UTF-8 characters do not impose a compiler problem. The related guideline states that “Rule 13 no longer discourages the use of UTF-8 +characters in C code”.The IOCCC Rule 8 wording has been fixed. It no longer +
The IOCCC Rule 8 Submission wording has been fixed. It no longer states that email will be sent. Instead it talks about potential slot comment modifications as means to tell the submitter that their submission was received.
All of the import IOCCC dates within the IOCCC rules diff --git a/news.md b/news.md index 06da36478..e5f88a681 100644 --- a/news.md +++ b/news.md @@ -406,12 +406,12 @@ See also the [mkiocccentry FAQ](https://github.com/ioccc-src/mkiocccentry/blob/m ## 2024-12-30 -The IOCCC [Rule 13](next/rules.html#rule13) no longer discourages the +The IOCCC [Rule 12 UTF-8](next/rules.html#rule-12-utf-8) no longer discourages the use of UTF-8 in C source. Since the days of `-std=gnu17` compilers, UTF-8 characters do not impose a compiler problem. The related guideline states that "Rule 13 no longer discourages the use of UTF-8 +characters in C code". -The IOCCC [Rule 8](next/rules.html#rule8) wording has been fixed. It no longer +The IOCCC [Rule 8 Submission](next/rules.html#rule-8-submission) wording has been fixed. It no longer states that email will be sent. Instead it talks about potential slot comment modifications as means to tell the submitter that their submission was received. diff --git a/next/guidelines.html b/next/guidelines.html index 742ad275e..71edd39b7 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -569,10 +569,13 @@ may change from contest to contest.
- using the mkiocccentry tools
Uploading a tarball not formed by
+rejected for violating +Rule 17 Packaging.mkiocccentry(1)puts you at a very big risk of -violating Rule 17, especially asmkiocccentry(1)does a +violating +Rule 17 Packaging, +especially asmkiocccentry(1)does a great number of things that are required, and it also runs many checks, and if any of those checks fail, you are at a very great risk of having your submission -rejected for violating Rule 17.We STRONGLY recommend you do install the mkiocccentry toolkit.
IMPORTANT NOTE: the tools that require other tools,
-mkiocccentry(1)and @@ -608,13 +611,13 @@ option. See the FAQ on “how to avoid re-entering your UUID” for more details. Note that the-i answersoption cannot be used with the UUID options as the answers file includes the UUID.The overall size limit (see Rule 2a) on
prog.chas been +The overall size limit (see Rule 2a Gross Size](rules.html#rule-2a-gross-size)) on
-prog.chas been increased from 4096 to 4993 bytes. -The Rule 2a size was changed from +The Rule 2b Next Sizesize was changed from 4096 to 4993 to keep the “2b to 2a” size ratio to a value similar to the 2001-2012 and 2013-2020 IOCCC eras.The Rule 2b size has increased from 2053 to 2503 +
The Rule 2b Next Size size has increased from 2053 to 2503 bytes.
IMPORTANT HINT: Only 3 of the 23 IOCCC28 winners came close to the -Rule 2 size limit. Large code size isn’t +Rule 2 Size limit. +Large code size isn’t everything. :-) Those submitting to future contents should take a careful note of that fact.
Your submission must satisfy BOTH the maximum size -Rule 2a AND the IOCCC size Rule 2b.
-To check your code against Rule 2, use the
+iocccentry(1)tool. +Rule 2a Gross Size +AND +the IOCCC size +Rule 2b Next Size.To check your code against +Rule 2 Size, use the
iocccentry(1)tool. For example:iocccsize prog.cThe IOCCC size tool algorithm can be summarized as follows:
@@ -657,7 +665,8 @@ if you are “Curios!” abo 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
+to get around the size limits of +Rule 2 Size.#defineC reserved words in an effort -to get around the size limits of Rule 2.Yes Virginia, that is a hint!
The official locale of the IOCCC is C.
Make sure you have the latest version of of the mkiocccentry toolkit -so that you do not violate Rule 17 by mistake.
+so that you do not violate +Rule 17 Packaging +by mistake.Jump to: top
`mkiocccentry(1)` will use code from `iocccsize(1)` which detects a number of -issues (such as [Rule 2](rules.html#rule2)) that you may ignore, if you wish, as +issues (such as [Rule 2 Size](rules.html#rule-2-size)) that you may ignore, if you wish, as noted above. In other words, you no longer need to run `iocccsize` manually. However, the @@ -618,8 +630,8 @@ In other words, `mkiocccentry` **contains everything** you need, and _even if yo do install_ the libraries from their respective repos, it/they will **not be used** when compiling the `mkiocccentry` tools. This is important to make sure that you're using the correct versions, which is also verified by -`chksubmit` (in the JSON files created by `mkiocccentry(1)`). See [Rule -17](rules.html#rule17)! +`chksubmit` (in the JSON files created by `mkiocccentry(1)`). See +[Rule 17 Packaging](rules.html#rule-17-packaging)!@@ -841,7 +853,7 @@ for even more information. execute one or more additional tools.
mkiocccentry(1)synopsis
iocccsize
mkiocccentry(1)will use code fromiocccsize(1)which detects a number of -issues (such as Rule 2) that you may ignore, if you wish, as +issues (such as Rule 2 Size) that you may ignore, if you wish, as noted above.In other words, you no longer need to run
@@ -921,8 +933,8 @@ installed separately, in order to use the tools iniocccsizemanually. However, the checks described above are still made but through themkiocccentry(1)tool itself.mkiocccentry. the libraries from their respective repos, it/they will not be used when compiling themkiocccentrytools. This is important to make sure that you’re using the correct versions, which is also verified by -chksubmit(in the JSON files created bymkiocccentry(1)). See Rule -17! +chksubmit(in the JSON files created bymkiocccentry(1)). See +Rule 17 Packaging! @@ -955,7 +967,8 @@ code or the man page. You might just find a fun option if you do either of these!Of course, as
+check, you could still be violating +Rule 17 Packaging.txzchkdoes not extract the tarball, it is possible that if you manually package your submission tarball and/or find and exploit a missing -check, you could still be violating Rule 17.@@ -970,7 +983,9 @@ file. The non-extra files are considered free files.Including optional and extra files
If you use an optional filename for something other than their intended use in order to get past the file limit, we will consider that an @@ -1000,10 +1015,13 @@ said tarball(s), the make
clobberrule MUST remove Themkiocccentry(1)tool creates a v7 format tarball to prevent this. You can do the same like:-tar --format=v7 -cJf foo.txz directorySee Rule 17 and also the +
See +Rule 17 Packaging +and also the FAQ on “maximum number of files”.
If you do not follow these points, you -are at a great risk of violating Rule 17!
+are at a great risk of violating +Rule 17 Packaging!NOTE: if you want to include a test-suite that requires a lot of files, please suggest this in your
remarks.mdand if your submission wins it can be done. In other words you should NOT use a tarball for a test-suite unless you @@ -1018,14 +1036,16 @@ FAQ on “txzchk”.As an important part of its algorithm, txzchk(1) directly executes
fnamchk(1). If the filename is invalid (or the filename does not match the directory name of the tarball) then it is an error and you risk violating -Rule 17. Nevertheless, you can run the tool manually, +Rule 17 Packaging. +Nevertheless, you can run the tool manually, should you wish to.For more information on
fnamchkand how to manually validate your submission tarball filename, see the FAQ on “fnamchk”.It is extremely unlikely that
fnamchk(1)reporting an invalid filename is a -bug infnamchk(1)and as such, ignoring such an issue risks violating Rule -17 which is a big risk. Of course, usingmkiocccentry(1)+bug infnamchk(1)and as such, ignoring such an issue risks violating +Rule 17 Packaging +which is a big risk. Of course, usingmkiocccentry(1)would prevent this from happening as it would not create such a file anyway. Ifmkiocccentry(1)was used it would rather suggest a bug in one of the tools and you should report it as a bug at the mkiocccentry issues @@ -1037,7 +1057,9 @@ the risk of stating the obvious, you run A VERY BIG RISK of hav your submission rejected if you package your own tarball, and there are ANY problems. For instance, ifchksubmit(1)found a problem in your.info.jsonfile, themkiocccentry(1)tool would not package it. But if you were to package -it manually, you would be violating Rule 17. But even if +it manually, you would be violating +Rule 17 Packaging. +But even if everything checks out OK you should NOT assume that everything IS OK.-[Rule 17](rules.html#rule17) (the `mkiocccentry(1)` rule) states that +[Rule 17 Packaging](rules.html#rule-17-packaging) +(the `mkiocccentry(1)` rule) states that you **REALLY SHOULD** use the `mkiocccentry(1)` tool to package your submission tarball. See the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) @@ -471,7 +481,9 @@ then you will have to specify the options (such as paths) for the tools that are Make sure you have the latest version of of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) -so that you do not violate [Rule 17](rules.html#rule17) by mistake. +so that you do not violate +[Rule 17 Packaging](rules.html#rule-17-packaging) +by mistake. Jump to: [top](#) @@ -515,7 +527,7 @@ execute one or more additional tools.Problems and/or bugs in the mkiocccentry toolkit
@@ -1252,7 +1274,8 @@ themkiocccentry(1)tool. somehow,txzchk(1)will flag it as an error. When the judges runtxzchk(1)on the uploaded submission compressed tarball, if anything is wrong, for instance if you “sneak in” any dot files or dot directories, the submission -WILL BE REJECTED for violating Rule 17! +WILL BE REJECTED for violating +Rule 17 Packaging!You may use whatever tools you need to develop your submission, including the use of
@@ -1499,8 +1522,9 @@ Please try to be much more creative. large data files to get around the source code size limit.git(1)orgh(1), just be sure that your submission code and your submission Makefile don’t depend on such tools.Did we remember to indicate that programs that blatantly use @@ -1514,8 +1538,10 @@ 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 submission. See the IOCCC -rules for details (in particular, Rule 9).
+Remember, you can submit more than one submission. See the +IOCCC rules +for details (in particular, +Rule 8 Submission).We suggest that you avoid trying for the ‘smallest self-replicating’ source. The smallest, a zero byte entry, won in 1994.
@@ -1623,7 +1649,8 @@ or Linux curses. If you do#include <curses.h>make CERTAIN you link in curses (i.e.-lcurses) and not ncurses (i.e.-lncurses). -Rule 13 no longer discourages the use of UTF-8 +
Rule 13 Newlines +no longer discourages the use of UTF-8 characters in C code.
It is a very good idea to, in your
+risk of violating +Rule 7 Original Work.remarks.mdfile, tell us why you think your submission is obfuscated. This is particularly true if @@ -1653,13 +1680,15 @@ Howe, in which case it is original! :-) Submitting source code that uses the contents of iocccsize.c, unless you are Anthony C Howe, might run the -risk of violating Rule 7.The IOCCC submission tarball validator source is not an original work, unless you are Cody Boone Ferguson, in which case it is original! :-) Submitting source code that uses the contents of txzchk.c, unless you are Cody Boone Ferguson, might -run the risk of violating Rule 7.
+run the risk of violating +Rule 7 Original Work.In addition to the above tools, none of the mkiocccentry tools, including, but not limited to @@ -1682,15 +1711,17 @@ are original! :-) Submitting source code that uses the content of any of these t library, unless you are Cody Boone Ferguson or Landon Curt Noll, might run the risk of violating -Rule 7.
+Rule 7 Original Work.And unless you are Landon Curt Noll, the code in dbg and dyn_array are not original works. Submitting source code that uses the contents of those libraries, unless you Landon Curt Noll, -might run the risk of violating Rule 7.
-Rule 7 does not prohibit you from writing your own +might run the risk of violating +Rule 7 Original Work.
+Rule 7 Original Work +does not prohibit you from writing your own obfuscated versions of these tools, unless of course you are Landon Curt Noll, in which case you probably won’t win since IOCCC judges should not enter the IOCCC! :-) @@ -1698,14 +1729,17 @@ However, if you do write your own version, you more interesting than simply implementing the IOCCC tools’ algorithms.
Even so, we do not recommend you try and submit a JSON parser due to -the fact it will likely exceed the source code size limit +the fact it will likely exceed +Rule 2 Size and because you likely can’t beat flex and bison in obfuscation. This isn’t to say that the so-called JSON spec is not obfuscated, but unless you have some really clever way to compact and obfuscate a JSON parser more than flex and bison you will likely not win, either -because of the source code size limit or because it is not +because of the +Rule 2 Size +or because it is not as obfuscated as the flex and bison generated code of jparse.
@@ -1785,7 +1819,9 @@ character tab stop.PLEASE observe our IOCCC markdown guidelines when forming your submission’s
remarks.mdfile. And if your submission contains additional markdown files, please follow those same guidelines for -those files. See also Rule 19 and our +those files. See also +Rule 4 Files, +and the FAQ on “markdown”.We LIKE reading
-remarks.mdfiles, especially if they contain useful, informative, and even humorous content about your submission. Yes, this @@ -1821,8 +1857,11 @@ your submission is valid. Humor and/or creativity help plead a case. As there is no guarantee that you will succeed, you might consider submitting an alternate version that conforms to the IOCCC rules.If you do bypass the
mkiocccentry(1)warnings about Rule -2a and/or about Rule 2b or any other +If you do bypass the
-mkiocccentry(1)warnings about +Rule 2a Gross Size +and/or about +Rule 2b Next Size +or any other rule and submit a submission anyway, you MUST try to justify why the IOCCC IOCCC judges should not reject your submission due to a rule violation, and you would be wise to do this towards the top of yourremarks.md@@ -2001,7 +2040,8 @@ strange/creative layout submission. We sometimes also select a submission that abuses the IOCCC guidelines in an interesting way, or that stretches the contest rules that while legal, it nevertheless goes against the intent of the rules.Nevertheless, see Rule 12.
+Nevertheless, see +Rule 10 Privileges.
In the end, we traditionally pick one submission as ‘best’. Sometimes such a submission simply far exceeds any of the other submissions. More often, the ‘best’ is picked because it does well in a number of categories.
diff --git a/next/guidelines.md b/next/guidelines.md index ba460adf9..52db42eec 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -158,10 +158,13 @@ See FAQs regarding: - [using the mkiocccentry tools](../faq.html#using_mkiocccentry) Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of -violating [Rule 17](rules.html#rule17), especially as `mkiocccentry(1)` does a +violating +[Rule 17 Packaging](rules.html#rule-17-packaging), +especially as `mkiocccentry(1)` does a great number of things that are required, and it also runs many checks, and if any of those checks fail, you are at a very great risk of having your submission -rejected for violating [Rule 17](rules.html#rule17). +rejected for violating +[Rule 17 Packaging](rules.html#rule-17-packaging). We **STRONGLY** recommend you **do** install the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry). @@ -205,14 +208,14 @@ FAQ on "[how to avoid re-entering your UUID](../faq.html#uuid)" for more details. Note that the `-i answers` option cannot be used with the UUID options as the answers file includes the UUID. -The overall size limit (see [Rule 2a](rules.html#rule2a)) on `prog.c` has been +The overall size limit (see Rule 2a Gross Size](rules.html#rule-2a-gross-size)) on `prog.c` has been **increased from 4096 to 4993** bytes. -The [Rule 2a](rules.html#rule2a) size was changed from +The [Rule 2b Next Size](rules.html#rule-2b-net-size)size was changed from **4096** to **4993** to keep the "2b to 2a" size ratio to a value similar to the [2001-2012](../faq.html#size_rule2001-2012) and [2013-2020](../faq.html#size_rule2013-2020) IOCCC eras. -The [Rule 2b](rules.html#rule2b) size has **increased from 2053 to 2503** +The [Rule 2b Next Size](rules.html#rule-2b-net-size) size has **increased from 2053 to 2503** bytes. Your submission must satisfy **BOTH** the maximum size -[Rule 2a](rules.html#rule2a) **AND** the IOCCC size [Rule 2b](rules.html#rule2b). +[Rule 2a Gross Size](rules.html#rule-2a-gross-size) +**AND** +the IOCCC size +[Rule 2b Next Size](rules.html#rule-2b-net-size). -To check your code against [Rule 2](rules.html#rule2), use the `iocccentry(1)` tool. +To check your code against +[Rule 2 Size](rules.html#rule-2-size), use the `iocccentry(1)` tool. For example: ``` @@ -267,7 +275,8 @@ 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](rules.html#rule2). +to get around the size limits of +[Rule 2 Size](rules.html#rule-2-size). Yes Virginia, **that is a hint**! @@ -408,7 +417,8 @@ Jump to: [top](#) # `mkiocccentry`## Including optional and extra files @@ -684,7 +697,9 @@ file_. The non-extra files are considered _free files_. If you use an optional filename for something other than their intended use @@ -725,11 +740,14 @@ do the same like: tar --format=v7 -cJf foo.txz directory ``` -See [Rule 17](rules.html#rule17) and also the +See +[Rule 17 Packaging](rules.html#rule-17-packaging) +and also the FAQ on "[maximum number of files](../faq.html#max-files)". If you do not follow these points, you -are at a great risk of violating [Rule 17](rules.html#rule17)! +are at a great risk of violating +[Rule 17 Packaging](rules.html#rule-17-packaging)! **NOTE**: if you want to include a test-suite that requires a lot of files, please suggest this in your `remarks.md` and if your submission wins it can @@ -750,7 +768,8 @@ Jump to: [top](#) As an important part of its algorithm, [txzchk(1)](#txzchk) directly executes `fnamchk(1)`. If the filename is invalid (or the filename does not match the directory name of the tarball) then it is an **error** and you risk violating -[Rule 17](rules.html#rule17). Nevertheless, you can run the tool manually, +[Rule 17 Packaging](rules.html#rule-17-packaging). +Nevertheless, you can run the tool manually, should you wish to. For more information on `fnamchk` and how to manually validate your submission @@ -758,8 +777,9 @@ tarball filename, see the FAQ on "[fnamchk](../faq.html#fnamchk)". It is extremely unlikely that `fnamchk(1)` reporting an invalid filename is a -bug in `fnamchk(1)` and as such, ignoring such an issue risks violating [Rule -17](rules.html#rule17) which is a big risk. Of course, using `mkiocccentry(1)` +bug in `fnamchk(1)` and as such, ignoring such an issue risks violating +[Rule 17 Packaging](rules.html#rule-17-packaging) +which is a big risk. Of course, using `mkiocccentry(1)` would prevent this from happening as it would not create such a file anyway. If `mkiocccentry(1)` was used it would rather suggest a bug in one of the tools and you should [report it as a bug at the mkiocccentry issues @@ -772,7 +792,9 @@ the risk of stating the obvious, you run **A VERY BIG RISK** of having your submission rejected if you package your own tarball, and there are **ANY problems**. For instance, if `chksubmit(1)` found a problem in your `.info.json` file, the `mkiocccentry(1)` tool would not package it. But if you were to package -it manually, you would be violating [Rule 17](rules.html#rule17). But even if +it manually, you would be violating +[Rule 17 Packaging](rules.html#rule-17-packaging). +But even if everything checks out OK you should **NOT** assume that everything **IS** OK.@@ -1076,7 +1098,8 @@ Even if you did manage to get dot files or dot directories in the tarball somehow, `txzchk(1)` will flag it as an error. When the judges run `txzchk(1)` on the uploaded submission compressed tarball, if anything is wrong, for instance if you "sneak in" any dot files or dot directories, the submission -**WILL BE REJECTED** for violating [Rule 17](rules.html#rule17)! +**WILL BE REJECTED** for violating +[Rule 17 Packaging](rules.html#rule-17-packaging)! You may use whatever tools you need to develop your submission, including the use of `git(1)` or `gh(1)`, just be sure that your submission code and your @@ -1412,8 +1435,9 @@ large data files to get around the source code size limit. @@ -1428,8 +1452,10 @@ 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 submission. See the [IOCCC -rules](rules.html) for details (in particular, [Rule 9](rules.html#rule9)). +Remember, you can submit more than one submission. See the +[IOCCC rules](rules.html) +for details (in particular, +[Rule 8 Submission](rules.html#rule-8-submission)). We suggest that you avoid trying for the '**smallest self-replicating**' source. The smallest, a [zero byte entry](../1994/smr/index.html), won in @@ -1574,7 +1600,8 @@ If you do `#include` make **CERTAIN** you link in curses (i.e. `-lcurses`) and not ncurses (i.e. `-lncurses`). -[Rule 13](rules.html#rule13) no longer discourages the use of UTF-8 +[Rule 13 Newlines](rules.html#rule-13-newlines) +no longer discourages the use of UTF-8 characters in C code. It is a very good idea to, in your `remarks.md` file, tell us why you @@ -1610,14 +1637,16 @@ Howe](../authors.html#Anthony_C_Howe), in which case it is original! :-) Submitting source code that uses the contents of [iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c), _unless_ you are [Anthony C Howe](../authors.html#Anthony_C_Howe), might run the -risk of violating [Rule 7](rules.html#rule7). +risk of violating +[Rule 7 Original Work](rules.html#rule-7-original-work). The IOCCC submission tarball validator source is not an original work, unless you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), in which case it is original! :-) Submitting source code that uses the contents of [txzchk.c](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c), _unless_ you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson), might -run the risk of violating [Rule 7](rules.html#rule7). +run the risk of violating +[Rule 7 Original Work](rules.html#rule-7-original-work). In addition to the above tools, none of the [mkiocccentry tools](https://github.com/ioccc-src/mkiocccentry), _including, **but not @@ -1641,7 +1670,7 @@ are original! :-) Submitting source code that uses the content of any of these library, _unless_ you are [Cody Boone Ferguson](../authors.html#Cody_Boone_Ferguson) or [Landon Curt Noll](http://www.isthe.com/chongo/index.html), might run the risk of violating -[Rule 7](rules.html#rule7). +[Rule 7 Original Work](rules.html#rule-7-original-work). And unless you are [Landon Curt Noll](https://en.wikipedia.org/wiki/Landon_Curt_Noll), the code in @@ -1649,9 +1678,11 @@ the code in [dyn_array](https://github.com/ioccc-src/mkiocccentry/tree/master/dyn_array) are not original works. Submitting source code that uses the contents of those libraries, _unless_ you [Landon Curt Noll](https://en.wikipedia.org/wiki/Landon_Curt_Noll), -might run the risk of violating [Rule 7](rules.html#rule7). +might run the risk of violating +[Rule 7 Original Work](rules.html#rule-7-original-work). -[Rule 7](rules.html#rule7) does not prohibit you from writing your own +[Rule 7 Original Work](rules.html#rule-7-original-work) +does not prohibit you from writing your own obfuscated versions of these tools, unless of course you are [Landon Curt Noll](http://www.isthe.com/chongo/index.html), in which case you _probably_ won't win since [IOCCC judges](../judges.html) should not enter the IOCCC! :-) @@ -1660,14 +1691,17 @@ However, **_if_** you do write your own version, you **_might_** wish to make it tools' algorithms. Even so, we do not recommend you try and submit a JSON parser due to -the fact it will likely exceed [the source code size limit](rules.html#rule2) +the fact it will likely exceed +[Rule 2 Size](rules.html#rule-2-size) and because you likely can't beat [flex](https://github.com/westes/flex) and [bison](https://www.gnu.org/software/bison/) in obfuscation. This isn't to say that [the so-called JSON spec](https://github.com/xexyl/jparse/blob/master/json_README.md#so-called-json-spec) is not obfuscated, but unless you have some really clever way to compact and obfuscate a JSON parser more than [flex](https://github.com/westes/flex) and [bison](https://www.gnu.org/software/bison/) you will likely not win, either -because of the [source code size limit](rules.html#rule2) or because it is not +because of the +[Rule 2 Size](rules.html#rule-2-size) +or because it is not as obfuscated as the [flex](https://github.com/westes/flex) and [bison](https://www.gnu.org/software/bison/) generated code of [jparse](https://github.com/ioccc-src/mkiocccentry/blob/master/jparse). @@ -1759,7 +1793,9 @@ character tab stop. **PLEASE** observe our [IOCCC markdown guidelines](../markdown.html) when forming your submission's `remarks.md` file. And if your submission contains additional markdown files, please follow those same guidelines for -those files. See also [Rule 19](rules.html#rule19) and our +those files. See also +[Rule 4 Files](rules.html#rule-4-files), +and the FAQ on "[markdown](../faq.html#markdown)". We **LIKE** reading `remarks.md` files, especially if they contain @@ -1807,8 +1843,11 @@ As there is no guarantee that you will succeed, you might consider submitting an alternate version that conforms to the [IOCCC rules](rules.html). -If you do bypass the `mkiocccentry(1)` warnings about [Rule -2a](rules.html#rule2a) and/or about [Rule 2b](rules.html#rule2b) or any other +If you do bypass the `mkiocccentry(1)` warnings about +[Rule 2a Gross Size](rules.html#rule-2a-gross-size) +and/or about +[Rule 2b Next Size](rules.html#rule-2b-net-size) +or any other rule and submit a submission anyway, you **MUST** try to justify why the IOCCC [IOCCC judges](../judges.html) should not reject your submission due to a rule violation, and you would be wise to do this towards the top of your `remarks.md` @@ -2031,7 +2070,9 @@ submission that abuses the [IOCCC guidelines](guidelines.html) in an interesting or that stretches the contest [rules](rules.html) that while legal, it nevertheless goes against the **intent** of the [rules](rules.html). -Nevertheless, see [Rule 12](rules.html#rule12). +Nevertheless, see +[Rule 10 Privileges](rules.html#rule-10-privileges). + In the end, we traditionally pick one submission as '**best**'. Sometimes such a submission simply far exceeds any of the other submissions. More often, the diff --git a/next/rules.html b/next/rules.html index a3c7fba3b..f1e04b7a8 100644 --- a/next/rules.html +++ b/next/rules.html @@ -473,633 +473,266 @@ mastodon feed page and/or mastodon app from time to time to view IOCCC mastodon updates. - 28th International Obfuscated C Code Contest Official Rules
- +29th International Obfuscated C Code Contest Official Rules
+Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll.
All Rights Reserved. Permission for personal, education or non-profit use is granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in +and remains unaltered. All other uses MUST receive prior permission in writing by contacting the judges.
-Jump to: top
--- ---IOCCC Rules version
-The markdown form of these rules is -available for download.
-IMPORTANT: Be sure to read the IOCCC guidelines.
-Jump to: top
--- - -Change marks
-Jump to: top
---Obfuscate defined:
-tr.v. -cated, -cating, -cates. -
-
-1a. To render obscure.
-1b. To darken. -
-2. To confuse: his emotions obfuscated his judgment.
- [LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,
- to darken < fuscus, dark.] -obfuscation n. obfuscatory adj.Jump to: top
--- -Goals of the IOCCC (International Obfuscated C Code Contest)
-Jump to: top
--- - - - -Important IOCCC dates
-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 to the IOCCC.
-Jump to: top
---IOCCC RULES
-To help us with the volume of submissions, we ask that you follow the rules below.
---A warning about rule abuse
-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.mdfile, -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 yourremarks.mdfile -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 themkiocccentry(1)tool will warn you if there appears to be a -violation in certain rules (not all can be detected). Themkiocccentry(1)-tool also runschksubmit(1)andtxzchk(1), the latter of which runs -fnamchk(1). 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 -another 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 yourremarks.mdfile. Even if you do explain this in your -remarks.mdfile 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.
-IMPORTANT: if you do submit such an alternate non-rule abusing version, -PLEASE indicate that in your
-remarks.mdfile of your non-rule abusing -version so that the IOCCC judges do not think you uploaded a -duplicate into a wrong slot by mistake.Uploading a tarball not formed by
-mkiocccentry(1)puts you at a very big risk of -violating Rule 17, especially asmkiocccentry(1)does a -great number of things that are required, and it also runs many checks, and if -any of those checks fail, you are at a very great risk of having your submission -rejected for violating Rule 17.See also Rule 12.
-Jump to: top
---Rule 0
-Just as C starts at 0, so the IOCCC starts at Rule 0. :-)
-The “Important IOCCC dates” section above is part of this rule.
-Jump to: top
---Rule 1
-Your submission must be a C program.
-You see, the contest is not called the International Obfuscated JSON Contest -(IOJSONC), even if the so-called JSON -spec might be called obfuscated -by some people. :-)
-Jump to: top
---Rule 2
-Rule 2 requires that your submission satisfy BOTH Rule -2a AND Rule 2b.
-You may check your code with respect to Rule 2a and Rule -2b prior to submitting your code by giving the filename -as a command like argument to the
-iocccsize(1)tool. For example:-iocccsize prog.cThe source to
-iocccsize(1)may be found in the -mkiocccentry repo.See also the -FAQ on “how to further test your submission” -for more more thorough testing, including Rule 2.
-See also Rule 2a, Rule 2b, and Rule 17.
-Jump to: top
--- -Rule 2a
-Jump to: top
---Rule 2b
-When the filename of your program source is given as a command line argument to -the latest version of the official IOCCC size tool (hereby referred to as -
-iocccsize(1)), the value printed MUST NOT exceed 2503.See also Rule 17.
-Jump to: top
---Rule 3
-You must register in order to submit your entry to the IOCCC. -You may register while the contest is either -pending or open.
-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 their email (containing their submit server Username -and Initial password), later: usually a few days around the time when the contest status -becomes open.
-Once that email with your Username and Initial password is sent, you -will have fortnight (14 days) to change your submit server initial password.
-If you do not change your Initial password in time, you will have to -send email to the IOCCC judges -to ask for your password to be reset.
-Because it takes time (maybe even a few days) to process your registration -and for the server to email you your initial login and password, you -should MAKE SURE you give yourself enough time to register well -before the contest closes. In other words, DO NOT WAIT UNTIL THE FINAL DAYS -of the contest to register! The IOCCC judges -are NOT responsible for delayed or lost email, or for those who wait -until the last minute to try to register!
-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
---Rule 4
-If your submission is selected as a winning entry, then your submission may be modified in order -to fit into the structure of the Official IOCCC winner website.
-For example, your submission’s
-Makefilewill be modified and yourremarks.md-will become aREADME.mdwhich will be used to generate anindex.htmlfile.Your source code will be the file
-prog.c. The compiled binary -will be calledprog. If you submission requires different filenames, -then modify your submission’sMakefileto COPY (NOT move!) the files -accordingly.Of course your program may also do this, as long as it works, but you’re welcome -to use your
-Makefileas well.See also Rule 5, Rule 18 and Rule 21.
-Jump to: top
---Rule 5
-Your submission must NOT modify the content OR filename of ANY -part of your original submission including, but not limited to
-prog.c, the -Makefileor any data files you submit.If you submission needs (or wishes :-) ) to modify such content, it MUST -first copy the file to a new filename and then modify that copy.
-You may use your submission (program) to form a copy, or you can make use of -your
-Makefileto form that copy.If you do make a copy of a submission file, PLEASE be sure that -the
-clobberrule of yourMakefileremoves that copy in order to -restore your submission to its original submission state.Jump to: top
---Rule 6
-I am not a rule, I am a
-free(void *human);‼️-
while (!(ioccc(rule(you(are(number(6)))))) {
-ha_ha_ha();
-}Jump to: top
---Rule 7
-The obfuscated C program must be your own original work.
-You (the author(s)) MUST own the contents of your submission OR -you MUST have permission from the owner(s) to submit their content.
-If you submit any content that is owned by others, you MUST -detail that ownership (i.e., who owns what) AND document the -permission you obtained from them, in your
-remarks.mdfile.Please note that the tools in mkiocccentry -repo are NOT original works, -unless of course you’re the original 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. :-)
--
+- mkiocccentry(1)
-- iocccsize(1)
-- chksubmit(1)
-- txzchk(1)
-- location(1)
-- jparse repo as cloned by the mkiocccentry repo
-- dbg repo as cloned by the mkiocccentry repo
-- dyn_array repo as cloned by the mkiocccentry repo
-Rules version
+These IOCCC Rules are version 29.00 2025-11-19.
+Be sure to read the IOCCC guidelines.
+Rule 0 Dates
+This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC.
+This contest will enter the open state on ${OPEN_DATE_TIME} UTC.
+This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC.
+The above dates are subject to change until the contest is officially open.
+NOTE: As of this draft, the above dates are TBD (to be determined).
+Rule 1 Program
+Your submission MUST be C program.
+Rule 2 Size
++
Rule 2requires that your submission satisfy BOTH +Rule 2a Gross Size +and +Rule 2b Next Size. +During development this can be checked usingiocccsize(1):iocccsize prog.c
+Rule 2a Gross Size
+The overall maximum size of your
+prog.cprogram source MUST NOT +exceed 4993 bytes.Rule 2b Net Size
+When the filename of your program source (i.e.,
+prog.c) is given as a +command line argument to the latest version of the official IOCCC size +tool (hereby referred to asiocccsize(1)), the value printed MUST +NOT exceed 2503.Rule 3 Register
+You MUST register, using a valid email address, in order to submit +entries to the IOCCC. You may register while the contest is pending or open.
+A few days after registering, you’ll receive your UUID username and +temporary password, which you MUST change within 14 days. If you +fail to change it in a timely manner, you’ll need to +contact the Judges by email to request a reset.
+It can take a few days to process your registration and for the server to +email your details, therefore make sure to allow yourself ample time to +register and submit your entries; DO NOT WAIT UNTIL THE FINAL DAYS +to register! The judges are NOT responsible for delayed or lost +email or for those who wait until the last minute to try to register!
+See Entering the IOCCC: the bare minimum you need to know.
+See Rule 8 Submission.
+Rule 4 Files
+The submission MUST include at least these files:
+Makefile,prog.c, +remarks.md,.info.json, and.auth.json. The last two MUST be +generated bymkiocccenty(1)when packing a submission, and MUST +pass thechksubmit(1)tests.The
+Makefile,remarks.md,.info.json, and.auth.jsonMUST +have a file size greater than 0.Your submitted source code MUST be called
+prog.c. When theMakefile+compiles your code, the executable (if applicable) MUST be calledprog.Your submission may NOT have any file that starts with
+COPYING, +COPYRIGHT, orLICENSEas those files are reserved by IOCCC.Your submission may NOT have in the top directory,
+prog,prog.alt, +prog.alt.o,prog.o,prog,prog.orig.c,README.md, norindex.html+as those files reserved by IOCCC.Your submission may NOT have a file in the top directory that matches +a file glob pattern of the form
+[0-9][0-9][0-9][0-9]_*.tar.bz2+as those files are reserved by IOCCC.Your submission may ONLY contain files and directories. Other file +types such as symlinks, sockets, etc are NOT allowed.
+All directories MUST have a file mode of 0755. All files +MUST have the file mode of 0444, except for files that +end in
+.shwhich must have a mode of 0555.All files that end in
+.mdMUST be in markdown format. +We recommend that markdown files observe our +IOCCC markdown guidelines.All filenames are treated as case insensitive. For example,
+REMARKS.MD, +andRemarks.md, andremarks.mdare considered bymkiocccenty(1)+to be the SAME file. If you are preparing your submission on a case +sensitive filesystem, ensure that your submission will work on +a case insensitive filesystem.The
+remarks.mdandMakefileare explained in more detail in the Guidelines.See Rule 17 Packaging.
+Rule 5 Purity
+Your submission MUST NOT modify the filenames or content of any of +your original submission, such as
+prog.c,Makefile, or any supplied +data files. To modify files, your program can make a copy or you can +use the Makefile to setup working copies. Any working copies MUST be +cleaned up by theMakefileclobbertarget, so as to restore the +directory to its original state.Rule 6 Free
+I am NOT a Rule, I am a
+free(void *human);‼️+while (!(ioccc(rule(you(are(number(6)))))) { + ha(); ha(); ha(); + }See Rule 19 Prime.
+Rule 7 Original Work
+In short: You wrote it, you own it, and its an original work.
+You, the author(s), MUST own the contents of your submission, or you MUST +have permission from the original owner(s) to its use. If you submit +any content that is owned by others, you MUST detail that ownership, +i.e., who owns what, and document the permission you obtained from them +in your
remarks.mdfile.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 (LLMs), etc. -If you do make use of such tools or services, then we ENCOURAGE you to describe -what tools and how you used those tools, in your
-remarks.mdfile.See also Rule 5, Rule 18 and Rule 21.
-Jump to: top
---Rule 8
-Submissions may only be uploaded to the IOCCC submit server -while the contest is open.
-If you have registered and received by email your submit -server Username and Initial password you may -upload your submission to the submit server but -ONLY while the contest is open.
-The submit server, in accordance with Rule -17, places a limit of 3999971 bytes on the size of your -upload.
-Once the contest is in the judging state (or -closed state), you may NOT upload submissions.
-While the contest is open or in the -judging state, the IOCCC judges -MAY (but are not required to) modify the slot comment of your submission to -indicate that they have received it. If uploaded submission is malformed, the -IOCCC judges MAY (but are not required to) modify the slot -comment accordingly.
-You are STRONGLY advised to use the
-mkiocccentry(1)tool -as found in the mkiocccentry repo -to form the file to upload to the submit server.The submit server will become active when the -contest is open. Until the contest status becomes -open, the submit server may -be offline and/or unresponsive.
-See the -FAQs on “obtaining, compiling, installing and using the latest release of the mkiocccentry tools” -for more information about the
-mkiocccentry(1)tool.See the “Important IOCCC dates” section above for when these contest states are scheduled.
- -Jump to: top
---Rule 9
-Each PERSON may register ONLY ONE account and each account may submit up to -and including 10.000000 (ten in base 10) submissions PER contest.
-Each submission must be submitted separately.
-If this seems unreasonable we suggest you wait until the next contest and in -the interim ponder this (modified or not) quote said by Bill Gates:
---640K submissions ought to be enough for anybody.
-– Bill Gates s/640K/10/ (allegedly :-) )
-Jump to: top
---Rule 10
-Entries requiring human interaction to be initially compiled are not -permitted. However, see the guidelines.
-Jump to: top
---Rule 11
-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 you MUST document this fact, and explain why -it is needed in your submission’sremarks.mdfile.Furthermore, if you need a supplementary program that you include, to have these -permissions, you will also have to explain this, because these bits are not -allowed in submissions and those bits will not be copied by
-mkiocccentry(1).See also Rule 17.
-Jump to: top
---Rule 12
-Legal abuse of the rules is somewhat encouraged. A submission that, in -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.mdfile.See also the warning about rule abuse.
-Jump to: top
---Rule 13
-7 out of 13 UTF-8 characters in C code agree that this rule number is lucky -enough to be a prime number.
-Fun fact: the fear of the number 13 is called triskaidekaphobia.
-Jump to: top
---Rule 14
-Any C source that fails to compile because of lines with trailing -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.mdfiles but instead end lines with a trailing newline (i.e., -byte012) character.As we do NOT use DOS, please also be sure that the
-Makefileand -remarks.mdfiles end in final newline (i.e., byte012) character.You are permitted, in order to try and squeeze your
-prog.cunder -a Rule 2a and/or Rule 2b limit, to NOT -end yourprog.cwith a newline (i.e., byte012) character. -If you need to do this, PLEASE document that in yourremarks.mdfile and -if your compiler complains about this, document this too and update your -Makefileto account for this.Jump to: top
---Rule 15
-In order to register for the IOCCC, you MUST have a valid email address.
-The judges are NOT responsible for delays in email, so please plan -enough time accordingly.
-See the -FAQ on “how to register” -for details.
-Jump to: top
---Rule 16
-Submissions that are similar to previous winning IOCCC entries are discouraged.
-You are allowed to resubmit 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 resubmit something that did not previously win, then -you are encouraged to mention this in your
-remarks.mdfile -as this sometimes helps.Resubmitting 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
---Rule 17
-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 -bymkiocccentry(1)including but NOT LIMITED to their names, count, -path length, directory tree depth and permissions.Your xz compressed tarball must be larger than 0 bytes and no larger -than 3999971 bytes.
-The sum of the byte lengths of all files, after the xz compressed tarball is untarred, -must NOT exceed
-27651*1024bytes.Your xz compressed tarball submission file MUST pass the tests performed by -the current version of
-txzchk(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 untarred, the -resulting directory MUST pass the checks performed by the current version -of
-chksubmit(1).The resulting
-prog.cfile MUST pass the Rule 2 size checks performed by the current -version ofiocccsize(1).The
-.auth.jsonand.info.jsonMUST be compatible with what the -current version of themkiocccentry(1)tool would produce. They MUST -ALSO pass the tests performed by the current version ofchksubmit(1).The required
-Makefilemust NOT be empty.The required
-remarks.mdmust NOT be empty.You may NOT submit a tarball created by the
+-dor-s seedoption of +authors who skilfully employed various techniques to develop their code. +While it isn’t required, you are allowed to use tools to develop and +test your submission. These tools may include, but aren’t 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 (LLMs), etc. +If you do make use of such tools or services, then we encourage you to +describe what tools and how you used those tools, in yourremarks.mdfile.See Rule 16 Anonymous.
+Rule 8 Submission
+The Submit Server will only accept submissions from those who have +registered and only while the contest is open.
+The Submit Server places a total submission size limit of 3999971 bytes.
+Each account has ten (10.000) submission slots (0..9). Each submission +slot should be annotated by the server as to whether its was received, +processed, malformed, etc. Please take note of any errors, rectify, +and resubmit. In order to avoid potential packaging errors, it is highly +recommended to use
+mkiocccentry(1).See +Rule 3 Register, +Rule 15 Building, +and +Rule 17 Packaging.
+Rule 9 No hands
+Entries requiring human interaction to be initially compiled are NOT +permitted. However, see the guidelines. Each entry MUST automated the +its build process using
+bash,gmake,gcc,clang, under a SUS +environment.Note references to
+gmakecan be any GNU Make compatible tool.See Rule 17 Building.
+Rule 10 Privileges
+Programs that require special privileges (setuid(2), setgid(2), +super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED. +We do NOT guarantee these functions will behave as you expect on our +test platforms. If your program needs special permissions you MUST +document this fact and explain why it is needed in your submission’s +
+remarks.mdfile.Furthermore, if you need a supplementary program that you include to +have these permissions, you will also have to explain this, because these +bits are NOT allowed in submissions and those bits will NOT be copied by
- - - -mkiocccentry(1).See the -FAQ on “what extra files are and how to include more” -as well as the guidelines on extra files -for more details.
-TL;DR Rule 17 - Use
-mkiocccentry(1)to form your submissionLet the current version of the
-mkiocccentry(1)tool form your xz -compressed tarball submission file.Warning
-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 toolkit -for how to obtain and use the above mentioned tools.
-IMPORTANT: See the -FAQ on “Rule 17” -for very important details behind this rule.
-Jump to: top
---Rule 18
-The entirety of your submission must be submitted under the following license:
-- --See also Rule 7.
-Jump to: top
---Rule 19
-The
-remarks.mdfile, a required non-empty file, must be written in -Markdown format.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
-remarks.mdfile.For any submission that wins the contest, we modify your
-remarks.mdfile and -rename it asREADME.mdand then use pandoc(1) -to generate theindex.htmlfile in the top level directory of your submission. -For this reason,mkiocccentry(1)will NOT package such files (in the top -level submission directory) and bothtxzchk(1)andchksubmit(1)will flag -them as errors (in the top level submission directory) as well, so please do -NOT try and slip these files in the top level directory where your -remarks.mdresides.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 on “remarks.md” -AND the -IOCCC markdown guidelines for additional markdown guidance.
-Jump to: top
---Rule 20
-The how to build instructions must be in GNU Makefile format. See the -FAQ about “make(1) compatibility the IOCCC supports -for more details.
-You are ENCOURAGED to use the -Makefile example, renamed as
-Makefileof course, for help in constructing your -Makefile. See the Makefile section in the -guidelines for more details.The target of the
-Makefilemust be calledprog. The original -C source file must be calledprog.c.To invoke the C compiler, use
-${CC}. To invoke the C preprocessor use -${CPP}.Do NOT assume that
-.(the current directory) is in the$PATH.When
-make clobberis invoked, we request that your submission directory be restored -to its original submission state. For example, any temporary files -created during the build process, or during execution should be -removed by theclobberrule.Your
-MakefileMUST use a syntax that is compatible withbash(1)-AND GNUmake(1). You are ENCOURAGED to useSHELL= bashin -yourMakefile. Please add a space between the=and the value.Assume that commands commonly found in Single UNIX -Specification -environments and systems that conform to the Single UNIX -Specification are -available in the
-$PATHsearch path.Jump to: top
---Rule 21
-Your submission MUST NOT create or modify files ABOVE the current directory -with the exception of the
-/tmpand the/var/tmpdirectories. Your submission -MAY create subdirectories below the submission directory, or in/tmp, -or in/var/tmpprovided 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
-clobberrule of yourMakefileremoves such created files -in order to restore your submission to its original submission state.See also Rule 5.
-Jump to: top
---Rule 22
-Catch 22:
-Your source code, data files, remarks and program output MUST NOT -identify the authors of your code. The judges STRONGLY PREFER to -NOT know who is submitting entries to the IOCCC.
-Even if you are a previous IOCCC winner, catch 22 still applies.
-Identifying the author(s) of your submission in an obvious way anywhere -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 submission.
-And don’t assume that we won’t be able to determine your name even if it’s not -obvious, because you stand a significant chance of violating this rule if you -do.
-Yes, Virginia, WE REALLY MEAN IT!
-Jump to: top
---Rule 23
-This prime rule number is reserved for future use.
-Jump to: top
---Rule 24
-Even though 24 is not prime, you should still see Rule 23.
-Jump to: top
--- -Rule 25
-Jump to: top
---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.”
-“abcdefg, hijklmnop, qrstu&v, wxy&z.”Jump to: top
---Rule 27
-Unless otherwise needed, Rule 27 is reserved for something cubic. :-)
-Jump to: top
---Rule 28
-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
-----FOR MORE INFORMATION:
-For questions or comments about the contest, see Contacting the IOCCC.
-Be SURE to review the IOCCC Rules and Guidelines as they -may (and often do) change from year to year.
-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.
-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 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 winner website in general.
-Consider joining the IOCCC discord community via this link: -https://discord.gg/Wa42Qujwnw
-See the -FAQ on “obtaining, compiling, installing and using 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 +
See Rule 4 Files, +and +Rule 5 Purity.
+Rule 11 Abuse
+Legal abuse of the rules is somewhat encouraged, but comes with risks. +A submission that, in the opinion of the Judges, violates the rules WILL +BE DISQUALIFIED. Submissions that plan to abuse the rules MUST justify +why their rule abuse is legal (or interesting) in the
+remarks.mdfile.Submission packaging abuse will NOT be tolerated and for this reason +its recommended to use
+mkiocccentry(1). During development you can +check yourprog.csize limits usingiocccsize(1), e.g.,iocccsize -v1 prog.c. +Overriding problems detected by any of the IOCCC tools +risks that the submission will be rejected.If you do submit a rule abusing or 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.
+IMPORTANT: If you do submit such an alternate non-rule abusing +version, please indicate that in your
+remarks.mdfile of your non-rule +abusing version so that the Judges don’t think you uploaded a duplicate +into a wrong slot by mistake.Rule 12 UTF-8
+Use of UTF-8 is supported by
+C89standard and its updates and so too by the IOCCC.Rule 13 Newlines
+Any C source that fails to compile because lines contain carriage-returns +(CTRL+M,
+\r) in particular as part of DOS/Windows style newlines might +be rejected. Please do NOT put trailing CTRL+M inprog.c,Makefile, +orremarks.mdfiles, but instead end lines with Unix newline (line-feed, +CTRL+J,\n).You are permitted, in order to try and squeeze your
+prog.cunder a +Rule 2a Gross Size and/or +Rule 2b Next Size +limits, to NOT end source with a newline. If you +need to do this, please document that in yourremarks.mdfile and if +your compiler complains about this, document this too and update your +Makefileto account for this.Rule 14 Resubmit
+Submissions that are substantially similar to previous winning IOCCC +entries are discouraged.
+You are allowed to resubmit to a later contest, a submission that didn’t +win the IOCCC. If you do so, then you would be well advised to try and +enhance and improve your submission. If you do resubmit something that +didn’t previously win, then you are encouraged to mention this in your +
+remarks.mdfile as this sometimes helps.Rule 15 Building
+The
+MakefileMUST adhere to GNU Make file syntax. Its recommended +that you copy and rename theMakefile.exampleas template. The primary +target of theMakefileMUST beprogand the source file isprog.c. +The C compiler and preprocessor MUST be invoked using${CC}and${CPP}+macros respectively.The
+clobbertarget should clean and restore the submission directory +tree to its original state, such as removing temporary files or any +modified data files. Don’t assume thatgittool chain is installed, +i.e., do NOT expectgit clean -fto work.The
+MakefileMUST use a syntax that is compatible with +bash(1)and GNUmake(1). You are encouraged to useSHELL= bashin yourMakefile; please add a space between the=and +the value. Assume that commands commonly found in +Single UNIX Specification +environments and systems are available in the search$PATH. +Avoid command options that aren’t part of +SUS, +such as GNU long name options--exampleor extensions likegrep -P.Do NOT assume that
+.(current directory) is in the$PATHenvironment variable.See Rule 4 Files.
+Rule 16 Anonymous
+Your source code, data files, remarks, and program output MUST NOT +identify the author(s) of your code (unless you are Peter Honeyman +or pretending to be Peter Honeyman). In order to be impartial the +Judges do NOT know who is submitting +entries to the IOCCC until final selection is made. Even if you are +a past winner, you MUST NOT reveal your identity deliberately or by +accident anywhere in your submission. Failure to comply may result +in the submission being disqualified.
+Rule 17 Packaging
+The files, directories, and paths MUST conform to the limits imposed by +
+mkiocccentry(1), including but NOT limited, to their names, count, path +length, directory tree depth, and permissions.The submission tree may have at most 13 directories and maximum +directory depths of 4. The maximum number of files, excluding +
+prog.c,remarks.md,Makefile,prog.alt.c,try.sh,try.alt.sh, +.info.jsonand.auth.jsonis 31. And the maximum file-path +component is 38 and maximum path length is 60.The submission MUST be a
+.txzcompressed tarball as constructed by +mkiocccentry(1), which MUST be within [1..3999971] bytes in size. +The sum of all file lengths, after unpacking from the tarball, MUST be +less than27651*1024bytes.The tarball file MUST pass all
+txzchk(1)checks and the tarball +filename MUST pass allfnamchk(1)checks. You may NOT submit a tarball +created by the-dor-sseed options ofmkiocccentry(1).The unpacked submission directory MUST pass the checks performed by the +current version of
+chksubmit(1).The
+prog.cfile MUST pass the Rule 2 Size +size checks performed byiocccsize(1). TheMakefileandremarks.mdfiles cannot +be empty. The.auth.jsonand.info.jsonfiles MUST be compatible with what +mkiocccentry(1)generates.Submissions that package using older versions of the mkiocccentry +toolkit to are HIGHLY LIKELY to be REJECTED! Be sure +that you are using the latest tools from the +mkiocccentry toolkit +GitHub repo.
+In summary it is best to use
+mkioccentry(1)to package your submission, rather than roll-it-by-hand.See Rule 4 Files.
+Rule 18 License
+The entirety of your submission MUST be submitted under the following license:
+CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International
+See Rule 7 Original Work.
+Rule 19 Prime
+This 19th rule, while prime, is reserved for future abuse. :-) +Additional rules, both humorous and otherwise, may be added +below this rule in future contests.
+See Rule 6 Free.
+Further Reading
+Please read the Guidelines next for further +commentary on The Rules.
+See also the FAQ.
+Consider joining our Discord +server for discussions about The Rules, questions for the Judges, and +
+Cin general.Leonid A. Broukhis +chongo (Landon Curt Noll) /\cc/\
diff --git a/next/rules.md b/next/rules.md index 22205df0d..bea2a7ceb 100644 --- a/next/rules.md +++ b/next/rules.md @@ -26,934 +26,419 @@ app from time to time to view IOCCC mastodon updates. -# 28th International Obfuscated C Code Contest Official Rules - +29th International Obfuscated C Code Contest Official Rules +------------------------------------------------------------ + +Copyright © 2024-2025 Leonid A. Broukhis and Landon Curt Noll. All Rights Reserved. Permission for personal, education or non-profit use is granted provided this this copyright and notice are included in its entirety -and remains unaltered. All other uses must receive prior permission in +and remains unaltered. All other uses **MUST** receive prior permission in writing by [contacting the judges](../contact.html). -Jump to: [top](#) +Rules version +------------- + +These IOCCC Rules are version **29.00 2025-11-19**. + +Be sure to read the [IOCCC guidelines](guidelines.html). --+Rule 0 Dates +------------ - +This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC. -The markdown form of these rules is -available for download. +This contest will enter the open state on ${OPEN_DATE_TIME} UTC. -**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html). +This contest will enter the judging state on ${JUDGMENT_DATE_TIME} UTC. + +The above dates are subject to change until the contest is officially open. + +**NOTE**: As of this draft, the above dates are TBD (to be determined). -Jump to: [top](#) +Rule 1 Program +--------------- + +Your submission **MUST** be C program. --## IOCCC Rules version ---### Change marks -+Rule 2 Size +----------- - +`Rule 2` requires that your submission satisfy **BOTH** +[Rule 2a Gross Size](rules.html#rule-2a-gross-size) +and +[Rule 2b Next Size](rules.html#rule-2b-net-size). +During development this can be checked using `iocccsize(1)`: - - - -Jump to: [top](#) - - --# Obfuscate defined: -- -tr.v. -cated, -cating, -cates. -
-**1a.** To render obscure.
-**1b.** To darken. -
-**2.** To confuse: his emotions obfuscated his judgment.
- [LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,
- to darken < fuscus, dark.] -obfuscation n. obfuscatory adj. - - -Jump to: [top](#) - - --# Goals of the IOCCC (International Obfuscated C Code Contest) -- - - -Jump to: [top](#) - - --# Important IOCCC dates -- - - - - - - - - -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](../next/register.html) -as well as -[how to upload your submission](../next/submit.html) to the IOCCC. - - -Jump to: [top](#) - - --# IOCCC RULES -- -To help us with the volume of submissions, we ask that you follow the rules below. - --#### A warning about rule abuse -- -**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 -violation in certain rules (not all can be detected). The `mkiocccentry(1)` -tool also runs `chksubmit(1)` and `txzchk(1)`, the latter of which runs -`fnamchk(1)`. 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 -another 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. - -**IMPORTANT**: 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. - -Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of -violating [Rule 17](rules.html#rule17), especially as `mkiocccentry(1)` does a -great number of things that are required, and it also runs many checks, and if -any of those checks fail, you are at a very great risk of having your submission -rejected for violating [Rule 17](rules.html#rule17). - -See also [Rule 12](#rule13). - - -Jump to: [top](#) - - --## Rule 0 -- -Just as C starts at 0, so the IOCCC starts at [Rule 0](#rule0). :-) - -The "[Important IOCCC dates](#dates)" section above is part of this rule. - - -Jump to: [top](#) - - --## Rule 1 -- -Your submission must be a C program. - -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 -by some people. :-) - - -Jump to: [top](#) - - --## Rule 2 -- -[Rule 2](#rule2) requires that your submission satisfy **BOTH** [Rule -2a](#rule2a) **AND** [Rule 2b](#rule2b). - -You may check your code with respect to [Rule 2a](#rule2a) and [Rule -2b](#rule2b) prior to submitting your code by giving the filename -as a command like argument to the `iocccsize(1)` tool. For example: - -``` iocccsize prog.c + +### Rule 2a Gross Size + +The overall maximum size of your `prog.c` program source **MUST NOT** +exceed **4993** bytes. + + +### Rule 2b Net Size + +When the filename of your program source (i.e., `prog.c`) is given as a +command line argument to the latest version of the official IOCCC size +tool (hereby referred to as `iocccsize(1)`), the value printed **MUST +NOT** exceed **2503**. + + +Rule 3 Register +--------------- + +You **MUST** register, using a valid email address, in order to submit +entries to the IOCCC. You may register while the contest is **pending** or **open**. + +A few days after registering, you'll receive your UUID username and +temporary password, which you **MUST** change within 14 days. If you +fail to change it in a timely manner, you'll need to +[contact the Judges](../contact.html) by email to request a reset. + +It can take a few days to process your registration and for the server to +email your details, therefore make sure to allow yourself ample time to +register and submit your entries; **DO NOT WAIT UNTIL THE FINAL DAYS** +to register! The judges are **NOT** responsible for delayed or lost +email or for those who wait until the last minute to try to register! + +See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter). + +See [Rule 8 Submission](rules.html#rule-8-submission). + + +Rule 4 Files +------------ + +The submission **MUST** include at least these files: `Makefile`, `prog.c`, +`remarks.md`,`.info.json`, and `.auth.json`. The last two **MUST** be +generated by `mkiocccenty(1)` when packing a submission, and **MUST** +pass the `chksubmit(1)` tests. + +The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json` **MUST** +have a file size **greater than 0**. + +Your submitted source code **MUST** be called `prog.c`. When the `Makefile` +compiles your code, the executable (if applicable) **MUST** be called `prog`. + +Your submission may **NOT** have any file that starts with `COPYING`, +`COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC. + +Your submission may **NOT** have in the top directory, `prog`, `prog.alt`, +`prog.alt.o`, `prog.o`, `prog`, `prog.orig.c`, `README.md`, nor `index.html` +as those files reserved by IOCCC. + +Your submission may **NOT** have a file in the top directory that matches +a file glob pattern of the form `[0-9][0-9][0-9][0-9]_*.tar.bz2` +as those files are reserved by IOCCC. + +Your submission may **ONLY** contain files and directories. Other file +types such as symlinks, sockets, etc are **NOT** allowed. + +All directories **MUST** have a file mode of **0755**. All files +**MUST** have the file mode of **0444**, except for files that +end in `.sh` which must have a mode of **0555**. + +All files that end in `.md` **MUST** be in markdown format. +We recommend that markdown files observe our +[IOCCC markdown guidelines](../markdown.html). + +All filenames are treated as case insensitive. For example, `REMARKS.MD`, +and `Remarks.md`, and `remarks.md` are considered by `mkiocccenty(1)` +to be the **SAME** file. If you are preparing your submission on a case +sensitive filesystem, ensure that your submission will work on +a case insensitive filesystem. + +The `remarks.md` and `Makefile` are explained in more detail in the Guidelines. + +See [Rule 17 Packaging](rules.html#rule-17-packaging). + + +Rule 5 Purity +------------- + +Your submission **MUST NOT** modify the filenames or content of any of +your original submission, such as `prog.c`, `Makefile`, or any supplied +data files. To modify files, your program can make a copy or you can +use the Makefile to setup working copies. Any working copies **MUST** be +cleaned up by the `Makefile` `clobber` target, so as to restore the +directory to its original state. + + +Rule 6 Free +----------- + +I am **NOT** a Rule, I am a `free(void *human);` ‼️ + +```c + while (!(ioccc(rule(you(are(number(6)))))) { + ha(); ha(); ha(); + } ``` -The source to `iocccsize(1)` may be found in the -[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). - -See also the -FAQ on "[how to further test your submission](../faq.html#mkiocccentry_test)" -for more more thorough testing, including [Rule 2](#rule2). +See [Rule 19 Prime](rules.html#rule-19-prime). -See also [Rule 2a](#rule2a), [Rule 2b](#rule2b), and [Rule 17](#rule17). +Rule 7 Original Work +-------------------- -Jump to: [top](#) +In short: You wrote it, you own it, and its an original work. - --## Rule 2a -- - - -Jump to: [top](#) - - --## Rule 2b -- -When the filename of your program source is given as a command line argument to -the latest version of the official IOCCC size tool (hereby referred to as -`iocccsize(1)`), the value printed **MUST NOT exceed _2503_**. - -See also [Rule 17](#rule17). - -Jump to: [top](#) - - --## Rule 3 -- -You must [register](../next/register.html) in order to submit your entry to the IOCCC. -You may [register](../next/register.html) while the contest is either -**[pending](../faq.html#pending)** or **[open](../faq.html#open)**. - -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](../next/register.html) while the contest status is **[pending](../faq.html#pending)** -will receive their email (containing their [submit server](https://submit.ioccc.org) **Username** -and **Initial password**), later: usually a few days around the time when the contest status -becomes **[open](../faq.html#open)**. - -Once that email with your **Username** and **Initial password** is sent, you -will have fortnight (**14 days**) to [change your submit server initial password](../next/pw-change.html). - -If you do not change your **Initial password** in time, you will have to -[send email to the IOCCC judges](../contact.md#if-you-really-need-to-send-email-the-ioccc-judges) -to ask for your password to be reset. - -Because it takes time (maybe even a few days) to process your registration -and for the server to email you your initial login and password, you -should **MAKE SURE** you give yourself enough time to register well -before the contest closes. In other words, **DO NOT WAIT UNTIL THE FINAL DAYS** -of the contest to register! The [IOCCC judges](../judges.html) -are **NOT** responsible for delayed or lost email, or for those who wait -until the last minute to try to register! - -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). - - -Jump to: [top](#) - - --## Rule 4 -- -If your submission is selected as a winning entry, then your submission may be modified in order -to fit into the structure of the [Official IOCCC winner website](https://www.ioccc.org/index.html). - -For example, your submission's `Makefile` will be modified and your `remarks.md` -will become a `README.md` which will be used to generate an `index.html` file. - -Your source code will be the file `prog.c`. The compiled binary -will be called `prog`. If you submission requires different filenames, -then modify your submission's `Makefile` to **COPY** (**NOT** move!) the files -accordingly. - -Of course your program may also do this, as long as it works, but you're welcome -to use your `Makefile` as well. - -See also [Rule 5](#rule5), [Rule 18](#rule18) and [Rule 21](#rule21). - - -Jump to: [top](#) - - --## Rule 5 -- -Your submission must **NOT** modify the _content_ **OR** _filename_ of **ANY** -part of your original submission including, but not limited to `prog.c`, the -`Makefile` or any data files you submit. - -If you submission needs (or wishes :-) ) to modify such content, it **MUST** -first copy the file to a new filename and then modify that copy. - -You may use your submission (program) to form a copy, or you can make use of -your `Makefile` to form that copy. - -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 your submission to its original submission state. - - -Jump to: [top](#) - - --## Rule 6 -- -I am not a rule, I am a `free(void *human);` ‼️ - - `while (!(ioccc(rule(you(are(number(6)))))) {`
- `ha_ha_ha();`
- `}` - - -Jump to: [top](#) - - --## Rule 7 -- -The obfuscated C program must be your own original work. - -You (the author(s)) **MUST** own the contents of your submission **OR** -you **MUST** have permission from the owner(s) to submit their content. - -If you submit any content that is owned by others, you **MUST -detail that ownership** (i.e., who owns what) **_AND_ document the -permission you obtained from them**, in your `remarks.md` file. - -Please note that the tools in [mkiocccentry -repo](https://github.com/ioccc-src/mkiocccentry) are **NOT** original works, -unless of course you're the original 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. :-) - -- [mkiocccentry(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/mkiocccentry.c) -- [iocccsize(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c) -- [chksubmit(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/chksubmit.c) -- [txzchk(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c) -- [location(1)](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/location_main.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) +You, the author(s), **MUST** own the contents of your submission, or you **MUST** +have permission from the original owner(s) to its use. If you submit +any content that is owned by others, you **MUST** detail that ownership, +i.e., who owns what, and document the permission you obtained from them +in your `remarks.md` file. 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 (LLMs), etc. -If you do make use of such tools or services, then we **ENCOURAGE you to describe -what tools and how you used those tools**, in your `remarks.md` file. +authors who skilfully employed various techniques to develop their code. +While it isn't required, you are allowed to use tools to develop and +test your submission. These tools may include, but aren't 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 (LLMs), etc. +If you do make use of such tools or services, then we encourage you to +describe what tools and how you used those tools, in your `remarks.md` file. -See also [Rule 5](#rule5), [Rule 18](#rule18) and [Rule 21](#rule21). +See [Rule 16 Anonymous](rules.html#rule-16-anonymous). -Jump to: [top](#) +Rule 8 Submission +----------------- + +The Submit Server will only accept submissions from those who have +registered and only while the contest is open. + +The Submit Server places a total submission size limit of **3999971** bytes. + +Each account has ten (**10.000**) submission slots (**0..9)**. Each submission +slot should be annotated by the server as to whether its was received, +processed, malformed, etc. Please take note of any errors, rectify, +and resubmit. In order to avoid potential packaging errors, it is **highly +recommended** to use `mkiocccentry(1)`. + +See +[Rule 3 Register](rules.html#rule-3-register), +[Rule 15 Building](rules.html#rule-15-building), +and +[Rule 17 Packaging](rules.html#rule-17-packaging). --## Rule 8 -+Rule 9 No hands +---------------- -Submissions may only be uploaded to the [IOCCC submit server](https://submit.ioccc.org) -while the contest is **[open](../faq.html#open)**. +Entries requiring human interaction to be initially compiled are **NOT** +permitted. However, see the guidelines. Each entry **MUST** automated the +its build process using `bash`, `gmake`, `gcc`, `clang`, under a [SUS +environment](https://pubs.opengroup.org/onlinepubs/9799919799/). -If you have [registered](../next/register.html) and received by email your [submit -server](https://submit.ioccc.org) **Username** and **Initial password** you may -upload your submission to the [submit server](https://submit.ioccc.org) but -**ONLY** while the contest is **[open](../faq.html#open)**. +Note references to `gmake` can be any GNU Make compatible tool. -The [submit server](https://submit.ioccc.org), in accordance with [Rule -17](rules.html#rule17), places a limit of **3999971** bytes on the size of your -upload. - -Once the contest is in the **[judging](../faq.html#judging)** state (or -**[closed](../faq.html#closed)** state), you may **NOT** upload submissions. - -While the contest is **[open](../faq.html#open)** or in the -**[judging](../faq.html#judging)** state, the [IOCCC judges](../judges.html) -**MAY** (but are not required to) modify the slot comment of your submission to -indicate that they have received it. If uploaded submission is malformed, the -[IOCCC judges](../judges.html) **MAY** (but are not required to) modify the slot -comment accordingly. - -You are **STRONGLY** advised to use the `mkiocccentry(1)` tool -as found in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) -to form the file to upload to the [submit server](https://submit.ioccc.org). - -The [submit server](https://submit.ioccc.org) will become active when the -contest is **[open](../faq.html#open)**. Until the contest status becomes -**[open](../faq.html#open)**, the [submit server](https://submit.ioccc.org) may -be offline and/or unresponsive. - -See the -FAQs on "[obtaining, compiling, installing and using the latest release of the mkiocccentry tools](../faq.html#mkiocccentry)" -for more information about the `mkiocccentry(1)` tool. - -See the "[Important IOCCC dates](#dates)" section above for when these contest states are scheduled. - -See also [Rule 3](#rule3) and [Rule 17](#rule17). +See [Rule 17 Building](rules.html#rule-17-building). -Jump to: [top](#) +Rule 10 Privileges +------------------ + +Programs that require special privileges (setuid(2), setgid(2), +super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED. +We do **NOT** guarantee these functions will behave as you expect on our +test platforms. If your program needs special permissions you **MUST** +document this fact and explain why it is needed in your submission’s +`remarks.md` file. + +Furthermore, if you need a supplementary program that you include to +have these permissions, you will also have to explain this, because these +bits are **NOT** allowed in submissions and those bits will **NOT** be copied by +`mkiocccentry(1)`. + +See [Rule 4 Files](rules.html#rule-4-files), +and +[Rule 5 Purity](rules.html#rule-5-purity). --## Rule 9 -+Rule 11 Abuse +------------- -Each **PERSON** may register **ONLY ONE** account and each account may submit up to -and including **10.000000** (ten in base 10) submissions **PER** contest. +Legal abuse of the rules is somewhat encouraged, but comes with risks. +A submission that, in the opinion of the Judges, violates the rules **WILL +BE DISQUALIFIED**. Submissions that plan to abuse the rules **MUST** justify +why their rule abuse is legal (or interesting) in the `remarks.md` file. -**Each submission _must be submitted separately_**. +Submission packaging abuse will **NOT** be tolerated and for this reason +its recommended to use `mkiocccentry(1)`. During development you can +check your `prog.c` size limits using `iocccsize(1)`, e.g., `iocccsize -v1 prog.c`. +Overriding problems detected by any of the IOCCC tools +risks that the submission will be rejected. -If this seems unreasonable we suggest you wait until the next contest and in -the interim ponder this (modified or not) quote said by Bill Gates: +If you do submit a rule abusing or 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. -> 640K submissions ought to be enough for anybody. -> -> -- Bill Gates s/640K/10/ (allegedly :-) ) +**IMPORTANT**: 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 Judges don't think you uploaded a duplicate +into a wrong slot by mistake. -Jump to: [top](#) +Rule 12 UTF-8 +------------- + +Use of UTF-8 is supported by `C89` standard and its updates and so too by the IOCCC. --## Rule 10 -+Rule 13 Newlines +---------------- +Any C source that fails to compile because lines contain carriage-returns +(CTRL+M, `\r`) in particular as part of DOS/Windows style newlines might +be rejected. Please do **NOT** put trailing CTRL+M in `prog.c`, `Makefile`, +or `remarks.md` files, but instead end lines with Unix newline (line-feed, +CTRL+J, `\n`). -Entries requiring human interaction to be initially compiled **are not -permitted**. However, see the [guidelines](guidelines.html). - - -Jump to: [top](#) - - --## Rule 11 -- -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 you **MUST** document this fact, and explain why -it is needed in your submission's `remarks.md` file. - -Furthermore, if you need a supplementary program that you include, to have these -permissions, you will also have to explain this, because these bits are not -allowed in submissions and those bits will not be copied by `mkiocccentry(1)`. - -See also [Rule 17](#rule17). - -Jump to: [top](#) - - --## Rule 12 -- -**Legal** abuse of the rules is somewhat encouraged. **A submission that, in -the opinion of the [judges](../judges.html), 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. - -See also [the warning about rule abuse](#rule_abuse). - -Jump to: [top](#) - - --## Rule 13 -- -7 out of 13 UTF-8 characters in C code agree that this rule number is lucky -enough to be a prime number. - -Fun fact: the fear of the number 13 is called _triskaidekaphobia_. - - -Jump to: [top](#) - - --## Rule 14 -- -Any C source that fails to compile because of lines with trailing -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** use 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 and -if your compiler complains about this, document this too and update your +You are permitted, in order to try and squeeze your `prog.c` under a +[Rule 2a Gross Size](rules.html#rule-2a-gross-size) and/or +[Rule 2b Next Size](rules.html#rule-2b-net-size) +limits, to **NOT** end source with a newline. If you +need to do this, please document that in your `remarks.md` file and if +your compiler complains about this, document this too and update your `Makefile` to account for this. -Jump to: [top](#) +Rule 14 Resubmit +---------------- +Submissions that are substantially similar to previous winning IOCCC +entries are discouraged. --## Rule 15 -+You are allowed to resubmit to a later contest, a submission that didn't +win the IOCCC. If you do so, then you would be well advised to try and +enhance and improve your submission. If you do resubmit something that +didn't previously win, then you are encouraged to mention this in your +`remarks.md` file as this sometimes helps. -In order to register for the IOCCC, you **MUST** have a valid email address. -The [judges](../judges.html) **are NOT responsible for delays in email**, so please plan -enough time accordingly. +Rule 15 Building +---------------- -See the -FAQ on "[how to register](../quick-start.html#register)" -for details. +The `Makefile` **MUST** adhere to GNU Make file syntax. Its recommended +that you copy and rename the `Makefile.example` as template. The primary +target of the `Makefile` **MUST** be `prog` and the source file is `prog.c`. +The C compiler and preprocessor **MUST** be invoked using `${CC}` and `${CPP}` +macros respectively. +The `clobber` target should clean and restore the submission directory +tree to its original state, such as removing temporary files or any +modified data files. Don't assume that `git` tool chain is installed, +i.e., do **NOT** expect `git clean -f` to work. -Jump to: [top](#) +The `Makefile` **MUST** use a syntax that is compatible with +`bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL= +bash` in your `Makefile`; please add a space between the `=` and +the value. Assume that commands commonly found in +[Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) +environments and systems are available in the search `$PATH`. +Avoid command options that aren't part of +[SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification), +such as GNU long name options `--example` or extensions like `grep -P`. +Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable. --## Rule 16 -+See [Rule 4 Files](rules.html#rule-4-files). -Submissions that are similar to previous winning IOCCC entries are discouraged. -You are allowed to resubmit 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 resubmit something that did not previously win, then -you are **encouraged** to mention this in your `remarks.md` file -as this **sometimes** helps. +Rule 16 Anonymous +----------------- -Resubmitting 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 source code, data files, remarks, and program output **MUST NOT** +identify the author(s) of your code (unless you are **Peter Honeyman** +or pretending to be **Peter Honeyman**). In order to be impartial the +[Judges](https://www.ioccc.org/judges.html) do **NOT** know who is submitting +entries to the IOCCC until final selection is made. Even if you are +a past winner, you **MUST NOT** reveal your identity deliberately or by +accident anywhere in your submission. ***Failure to comply may result +in the submission being disqualified.*** -Jump to: [top](#) +Rule 17 Packaging +----------------- --## Rule 17 -+The files, directories, and paths **MUST** conform to the limits imposed by +`mkiocccentry(1)`, including but **NOT** limited, to their names, count, path +length, directory tree depth, and permissions. -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, directory tree depth and permissions. +The submission tree may have at most **13** directories and maximum +directory depths of **4**. The maximum number of files, excluding +`prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`, `try.alt.sh`, +`.info.json` and `.auth.json` is **31**. And the maximum file-path +component is **38** and maximum path length is **60**. -Your **xz compressed tarball** must be larger than **0** bytes and no larger -than **3999971** bytes. +The submission **MUST** be a `.txz` compressed tarball as constructed by +`mkiocccentry(1)`, which **MUST** be within **[1..3999971]** bytes in size. +The sum of all file lengths, after unpacking from the tarball, **MUST** be +less than `27651*1024` bytes. -The sum of the byte lengths of all files, after the **xz compressed tarball** is untarred, -must **NOT** exceed `27651*1024` bytes. +The tarball file **MUST** pass all `txzchk(1)` checks and the tarball +filename **MUST** pass all `fnamchk(1)` checks. You may **NOT** submit a tarball +created by the `-d` or `-s` seed options of `mkiocccentry(1)`. -Your **xz compressed tarball** submission _file_ **MUST** pass the tests performed by -the current version of `txzchk(1)`. +The unpacked submission directory **MUST** pass the checks performed by the +current version of `chksubmit(1)`. -Your **xz compressed tarball** submission _filename_ **MUST** pass the tests -performed by the current version of `fnamchk(1)`. +The `prog.c` file **MUST** pass the [Rule 2 Size](rules.html#rule-2-size) +size checks performed by `iocccsize(1)`. The `Makefile` and `remarks.md` files cannot +be empty. The `.auth.json` and `.info.json` files **MUST** be compatible with what +`mkiocccentry(1)` generates. -When your **xz compressed tarball** submission file is untarred, the -resulting _directory_ **MUST** pass the checks performed by the current version -of `chksubmit(1)`. +Submissions that package using older versions of the mkiocccentry +toolkit to are **HIGHLY LIKELY** to be **REJECTED**! Be sure +that you are using the latest tools from the +[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) +GitHub repo. -The resulting `prog.c` file **MUST** pass the [Rule 2](#rule2) size checks performed by the current -version of `iocccsize(1)`. +In summary it is best to use `mkioccentry(1)` to package your submission, rather than roll-it-by-hand. -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 `chksubmit(1)`. +See [Rule 4 Files](rules.html#rule-4-files). -The required `Makefile` must **NOT** be empty. -The required `remarks.md` must **NOT** be empty. +Rule 18 License +--------------- -You may **NOT** submit a tarball created by the `-d` or `-s seed` option of -`mkiocccentry(1)`. +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/) - +See [Rule 7 Original Work](rules.html#rule-7-original-work). - -See the -FAQ on "[what extra files are and how to include more](../faq.html#extra-files)" -as well as the [guidelines on extra files](guidelines.html#extra-files) -for more details. +Rule 19 Prime +------------- -### TL;DR Rule 17 - Use `mkiocccentry(1)` to form your submission +This 19th rule, while prime, is reserved for future abuse. :-) +Additional rules, both humorous and otherwise, may be added +below this rule in future contests. -Let the current version of the `mkiocccentry(1)` tool form your **xz -compressed tarball** submission file. +See [Rule 6 Free](rules.html#rule-6-free). -### Warning -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). +Further Reading +--------------- -See the -FAQ on the "[mkiocccentry toolkit](../faq.html#mkiocccentry) -for how to obtain and use the above mentioned tools. +Please read the [Guidelines](guidelines.html) next for further +commentary on The Rules. -**IMPORTANT**: See the -FAQ on "[Rule 17](../faq.html#rule17)" -for very important details behind this rule. +See also the [FAQ](../faq.html). +Consider joining our Discord +server for discussions about The Rules, questions for the Judges, and +`C` in general. -Jump to: [top](#) - --## Rule 18 -- -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/)** - -See also [Rule 7](#rule7). - - -Jump to: [top](#) - - --## Rule 19 -- -The `remarks.md` file, a required non-empty file, must be written in -[Markdown format](https://www.markdownguide.org/basic-syntax/). - -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, `mkiocccentry(1)` will **NOT** package such files (in the top -level submission directory) and both `txzchk(1)` and `chksubmit(1)` will flag -them as errors (in the top level submission directory) as well, so please do -**NOT** try and slip these files in the top level directory where your -`remarks.md` 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. - -**PLEASE** see our -FAQ on "[remarks.md](../faq.html#remarks_md)" -**AND** the -[IOCCC markdown guidelines](../markdown.html) for additional markdown guidance. - - -Jump to: [top](#) - - --## Rule 20 -- -The how to build instructions must be in GNU Makefile format. See the -FAQ about "[make(1) compatibility the IOCCC supports](../faq.html#make_compatibility) -for more details. - -You are **ENCOURAGED** to use the -Makefile example, renamed as `Makefile` of course, for help in constructing your -`Makefile`. See the [Makefile section](guidelines.html#makefile) in the -guidelines for more details. - -The target of the `Makefile` must be called `prog`. The original -C source file must be called `prog.c`. - -To invoke the C compiler, use `${CC}`. To invoke the C preprocessor use -`${CPP}`. - -Do **NOT** assume that `.` (the current directory) is in the `$PATH`. - -When `make clobber` is invoked, we request that your submission directory be restored -to its original submission state. For example, any temporary files -created during the build process, or during execution should be -removed by the `clobber` rule. - -Your `Makefile` **MUST** use a syntax that is compatible with `bash(1)` -**AND** GNU `make(1)`. You are **ENCOURAGED** to use `SHELL= bash` in -your `Makefile`. Please add a space between the `=` and the value. - -Assume that commands commonly found in [Single UNIX -Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) -environments and systems that conform to the [Single UNIX -Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) are -available in the `$PATH` search path. - - -Jump to: [top](#) - - --## Rule 21 -- -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 submission directory, or in `/tmp`, -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 to restore your submission to its original submission state. - -See also [Rule 5](#rule5). - - -Jump to: [top](#) - - --## Rule 22 -- -Catch 22: - -Your source code, data files, remarks and program output **MUST NOT** -identify the authors of your code. The [judges](../judges.html) **STRONGLY PREFER** to -**NOT** know who is submitting entries to the IOCCC. - -Even if you are a previous IOCCC winner, catch 22 still applies. - -Identifying the author(s) of your submission in an obvious way anywhere -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 submission. - -And don't assume that we won't be able to determine your name even if it's not -obvious, because you stand a significant chance of violating this rule if you -do. - -Yes, Virginia, **WE REALLY MEAN IT!** - - -Jump to: [top](#) - - --## Rule 23 -- -This prime rule number is reserved for future use. - - -Jump to: [top](#) - - --## Rule 24 -- -Even though 24 is not prime, you should still see [Rule 23](#rule23). - - -Jump to: [top](#) - - --## Rule 25 -- - - - -Jump to: [top](#) - - --## 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."
-> "abcdefg, hijklmnop, qrstu&v, wxy&z." - -Jump to: [top](#) - - --## Rule 27 -- -Unless otherwise needed, [Rule 27](#rule27) is reserved for something cubic. :-) - - -Jump to: [top](#) - - --## Rule 28 -- -[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. :-) - - -Jump to: [top](#) - --- -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 they -may (and **often do**) change from year to year. - -**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, 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 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 winner website](https://www.ioccc.org/index.html) in general. - -Consider joining the IOCCC discord community via this link: -[https://discord.gg/Wa42Qujwnw](https://discord.gg/Wa42Qujwnw) - -See the -FAQ on "[obtaining, compiling, installing and using 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](../next/register.html) -as well as -[how to upload your submission](../next/submit.html) for the IOCCC. - - -Jump to: [top](#) - - -**Leonid A. Broukhis**-# FOR MORE INFORMATION: --
-**chongo (Landon Curt Noll) `/\cc/\`** - - -
- - -Jump to: [top](#) +Leonid A. Broukhis +chongo (Landon Curt Noll) /\\cc/\\ diff --git a/next/submit.html b/next/submit.html index 4c18569e9..dfca6f01e 100644 --- a/next/submit.html +++ b/next/submit.html @@ -517,8 +517,8 @@ the file selection step.
- the status of the submission
- the filename, which will be in the correct format, assuming you used -
+mkiocccentry(1)which is HIGHLY recommended so that you do not break Rule -17!mkiocccentry(1)which is HIGHLY recommended so that you do not break +Rule 17 Packaging!- the file length, which
txzchk(1)will also verify (the file itself and the tarball listing).- the upload date.
@@ -575,8 +575,8 @@ To see any status updates, you should logout and log back in later.… or ANY other error then you MUST FIX your submission, repackage your tarball with
+this your submission WILL BE REJECTED for violating +Rule 17 Packaging!mkiocccentryand upload to the same slot again! If you do not fix -this your submission WILL BE REJECTED for violating Rule -17!If the format test went well, then you will see:
Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.
@@ -585,8 +585,9 @@ this your submission WILL BE REJECTED for violating Rule 17, even if the -tests passed. +submission rejected for violating +Rule 17 Packaging, +even if the tests passed.For details on
txzchk, see the FAQ on “txzchk”.For details on
chksubmit, see the diff --git a/next/submit.md b/next/submit.md index b0b340e9c..a3f440c3b 100644 --- a/next/submit.md +++ b/next/submit.md @@ -86,8 +86,8 @@ And in the slot it will give you important details like: - the status of the submission - the filename, which will be in the correct format, assuming you used -`mkiocccentry(1)` which is **HIGHLY** recommended so that you do not break [Rule -17](rules.html#rule17)! +`mkiocccentry(1)` which is **HIGHLY** recommended so that you do not break +[Rule 17 Packaging](rules.html#rule-17-packaging)! - the file length, which `txzchk(1)` will also verify (the file itself and the tarball listing). - the upload date. @@ -157,8 +157,8 @@ Or: ... or **ANY** other error then you **MUST FIX** your submission, repackage your tarball with `mkiocccentry` and upload to the same slot again! If you do not fix -this your submission **WILL BE REJECTED** for violating [Rule -17](rules.html#rule17)! +this your submission **WILL BE REJECTED** for violating +[Rule 17 Packaging](rules.html#rule-17-packaging)! If the format test went well, then you will see: @@ -168,8 +168,9 @@ If the format test went well, then you will see: rules or that everything is OK once the tarball is extracted; it simply means the tests performed by the tools passed. If you find a flaw in a tool and abuse it and the tests pass then you stand a significant chance of having your -submission rejected for violating [Rule 17](rules.html#rule17), even if the -tests passed. +submission rejected for violating +[Rule 17 Packaging](rules.html#rule-17-packaging), +even if the tests passed. For details on `txzchk`, see the FAQ on "[txzchk](../faq.html#txzchk)". diff --git a/quick-start.html b/quick-start.html index 53321d71e..6ffd1c2c7 100644 --- a/quick-start.html +++ b/quick-start.html @@ -565,12 +565,14 @@ for more info.NOTE: Please see our IOCCC markdown guide for important information on using markdown in the IOCCC.
If the
mkiocccentrytool indicates that there is a problem with your -submission, especially if it identifies a Rule 2, or -any other rule, related problem, you are strongly encouraged to revise and +submission, especially if it identifies a +Rule 2 Size, +or any other rule, related problem, you are strongly encouraged to revise and correct your entry and then re-run themkiocccentrytool.If you choose to risk violating Rules, be sure and explain your reason for doing so in your
-remarks.mdfile.See also Rule 17!
+See also +Rule 17 Packaging!
IMPORTANT NOTE: the tools that require other tools,
mkiocccentry(1)andtxzchk(1), will, as of version2.0.2 2025-03-11, search under$PATH. If you have an earlier version and you have not installed the tools and run the @@ -578,7 +580,8 @@ tools from outside the repo directory, you will have to use the options to the tools to set the path to the required tools.Do remember to make sure you have the latest vers
chksubmit(1),txzchk(1)andfnamchk(1). And remember to make sure you have -the latest version so you do not violate Rule 17. +the latest version so you do not violate +Rule 17 Packaging. See the FAQ on “obtaining the latest mkiocccentry tools”, the diff --git a/quick-start.md b/quick-start.md index 78d4212bc..9727c7287 100644 --- a/quick-start.md +++ b/quick-start.md @@ -161,14 +161,16 @@ Three files are required to exist in `topdir`: **NOTE**: Please see our [IOCCC markdown guide](markdown.html) for **important information** on using markdown in the IOCCC. If the `mkiocccentry` tool indicates that there is a problem with your -submission, especially if it identifies a [Rule 2](next/rules.html#rule2), or -any other [rule](next/rules.html), related problem, you are **strongly** encouraged to revise and +submission, especially if it identifies a +[Rule 2 Size](next/rules.html#rule-2-size), +or any other [rule](next/rules.html), related problem, you are **strongly** encouraged to revise and correct your entry and then re-run the `mkiocccentry` tool. If you choose to risk violating [Rules](next/rules.html), be sure and explain your reason for doing so in your `remarks.md` file. -See also [Rule 17](next/rules.html#rule17)! +See also +[Rule 17 Packaging](next/rules.html#rule-17-packaging)! **IMPORTANT NOTE**: the tools that require other tools, `mkiocccentry(1)` and `txzchk(1)`, will, as of version `2.0.2 2025-03-11`, search under `$PATH`. If @@ -178,7 +180,8 @@ tools to set the path to the required tools. Do remember to make sure you have the latest vers `chksubmit(1)`, `txzchk(1)` and `fnamchk(1)`. And remember to make sure you have -the latest version so you do not violate [Rule 17](next/rules.html#rule17). +the latest version so you do not violate +[Rule 17 Packaging](next/rules.html#rule-17-packaging). See the FAQ on "[obtaining the latest mkiocccentry tools](faq.html#obtaining_mkiocccentry)", the diff --git a/sitemap.xml b/sitemap.xml index 3786f98bb..1d49e7ab4 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -14954,7 +14954,7 @@https://www.ioccc.org/2024/index.html -2025-08-07T01:59:28+00:00 +2025-11-20T06:14:33+00:00 https://www.ioccc.org/2024/kramer/2024_kramer.tar.bz2 @@ -15374,7 +15374,7 @@https://www.ioccc.org/2024/README.md -2025-08-07T01:59:28+00:00 +2025-11-20T04:29:28+00:00 https://www.ioccc.org/2024/rules.html @@ -16758,11 +16758,11 @@https://www.ioccc.org/faq.html -2025-11-18T18:05:36+00:00 +2025-11-20T06:07:42+00:00 https://www.ioccc.org/faq.md -2025-11-18T18:05:36+00:00 +2025-11-20T05:27:40+00:00 https://www.ioccc.org/inc/index.html @@ -16818,19 +16818,19 @@https://www.ioccc.org/news.html -2025-08-07T03:07:24+00:00 +2025-11-20T06:14:39+00:00 https://www.ioccc.org/news.md -2025-08-07T03:07:11+00:00 +2025-11-20T06:10:33+00:00 https://www.ioccc.org/next/guidelines.html -2025-11-17T20:14:15+00:00 +2025-11-20T06:07:45+00:00 https://www.ioccc.org/next/guidelines.md -2025-11-17T20:14:15+00:00 +2025-11-20T06:03:36+00:00 https://www.ioccc.org/next/index.html @@ -16870,19 +16870,19 @@https://www.ioccc.org/next/rules.html -2025-11-17T20:14:15+00:00 +2025-11-20T06:38:36+00:00 https://www.ioccc.org/next/rules.md -2025-11-17T20:14:15+00:00 +2025-11-20T06:32:43+00:00 https://www.ioccc.org/next/submit.html -2025-11-17T20:14:15+00:00 +2025-11-20T06:07:47+00:00 https://www.ioccc.org/next/submit.md -2025-11-17T20:14:15+00:00 +2025-11-20T06:04:29+00:00 https://www.ioccc.org/next/try.alt.sh @@ -16902,11 +16902,11 @@https://www.ioccc.org/quick-start.html -2025-11-17T20:14:15+00:00 +2025-11-20T06:07:47+00:00 https://www.ioccc.org/quick-start.md -2025-11-17T20:14:15+00:00 +2025-11-20T06:06:04+00:00 https://www.ioccc.org/README.html @@ -16938,11 +16938,11 @@https://www.ioccc.org/status.html -2025-11-18T18:10:17+00:00 +2025-11-20T06:38:54+00:00 https://www.ioccc.org/status.json -2025-08-07T03:07:20+00:00 +2025-11-20T06:15:00+00:00 https://www.ioccc.org/status.md diff --git a/status.html b/status.html index eaaec3c44..33ab655c2 100644 --- a/status.html +++ b/status.html @@ -461,7 +461,7 @@ "no_comment" : "mandatory comment: because comments were removed from the original JSON spec", "IOCCC_status_version" : "1.0 2024-03-09", "contest_status" : "closed", - "news_update" : "2025-08-07T03:07:11+00:00", + "news_update" : "2025-11-20T06:10:33+00:00", "status_update" : "2025-08-01T19:38:14+00:00" } diff --git a/status.json b/status.json index f3fdc4fc2..bbf516359 100644 --- a/status.json +++ b/status.json @@ -2,6 +2,6 @@ "no_comment" : "mandatory comment: because comments were removed from the original JSON spec", "IOCCC_status_version" : "1.0 2024-03-09", "contest_status" : "closed", - "news_update" : "2025-08-07T03:07:11+00:00", + "news_update" : "2025-11-20T06:10:33+00:00", "status_update" : "2025-08-01T19:38:14+00:00" }