From ee2f499839c40b3fbc336a43f8c3c7ff970f6314 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Thu, 20 Nov 2025 16:16:50 -0800 Subject: [PATCH] checkpoint rules version 29.04 2025-11-20 Switched to "#" (hash) for headings in `rules.md`. Added "-" (dash) after the rule number and before the rule keyword. Adjusted links rules elsewhere according to the above. Ran `make quick_www` to perform the above. --- faq.html | 122 +++++++++++++++++++++---------------------- faq.md | 122 +++++++++++++++++++++---------------------- news.html | 4 +- news.md | 4 +- next/guidelines.html | 58 ++++++++++---------- next/guidelines.md | 58 ++++++++++---------- next/rules.html | 89 +++++++++++++++---------------- next/rules.md | 118 +++++++++++++++++------------------------ next/submit.html | 6 +-- next/submit.md | 6 +-- quick-start.html | 6 +-- quick-start.md | 6 +-- sitemap.xml | 28 +++++----- status.html | 2 +- status.json | 2 +- 15 files changed, 305 insertions(+), 326 deletions(-) diff --git a/faq.html b/faq.html index a06f4651b..50aa08d68 100644 --- a/faq.html +++ b/faq.html @@ -480,7 +480,7 @@
  • Q 1.4: How can I check if my submission passes tests without having to answer questions?
  • Q 1.5: What are extra files and how may I include additional files beyond the max allowed?
  • Q 1.6: May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?
  • -
  • Q 1.7: What are the details behind Rule 17?
  • +
  • Q 1.7: What are the details behind Rule 17 - Packaging?
  • Q 1.8: How can I avoid re-entering my UUID to mkiocccentry?
  • Q 1.9: How can I avoid having to move or delete my submission directory for the same workdir?
  • Q 1.10: Can I download my submission tarball from the submit server?
  • @@ -492,7 +492,7 @@
  • Q 2.1: How can I comment or make a suggestion on IOCCC rules, guidelines and tools?
  • Q 2.2: Are there any compiler warnings that I should not worry about in my submissions?
  • Q 2.3: What types of entries have been frequently submitted to the IOCCC?
  • -
  • Q 2.4: How did an entry that breaks the size rule 2 win the IOCCC?
  • +
  • Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size?
  • Q 2.5: How many submissions do the judges receive for a given IOCCC?
  • Q 2.6: How much time does it take to judge the contest?
  • Q 2.7: How many judging rounds do you have?
  • @@ -658,7 +658,7 @@ 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 Packaging.

    +Rule 17 - Packaging.

    Jump to: top

    Q 0.1.1: What is mkiocccentry in simple terms?

    @@ -773,7 +773,7 @@ directory will be created, with the name based on your IOCCC registrati username, which is in the form of a UUID, and submission number along with the timestamp; see the rules for more details on this, and in particular -Rule 17 Packaging.

    +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 you have an earlier version and you have not installed the tools and run the @@ -934,7 +934,7 @@ rounds; we look at the author name only if an entry wins. See the

  • 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 Packaging).
  • +Rule 17 - Packaging).

    Jump to: top

    @@ -978,11 +978,11 @@ for more details.

    See the FAQ on “Rule 17” and -Rule 17 Packaging +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 5 Purity.

    +Rule 5 - Purity.

    Jump to: top



    @@ -1126,12 +1126,12 @@ level directory.

    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 Packaging 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 Packaging!

    +of violating Rule 17 - Packaging!

    Also, remember what the guidelines say:

    IMPORTANT REMINDER: make SURE your tarball does NOT reveal who you are! @@ -1155,7 +1155,7 @@ ultimate author of the code you submit.

    you used as well as how you used them to help write your submission.

    Jump to: top

    -

    Q 1.7: What are details behind Rule 17?

    +

    Q 1.7: What are details behind Rule 17 - Packaging?

    TL;DR Rule 17 - Use mkiocccentry(1)

    This is a COMPLEX rule. Violating this rule WILL CAUSE YOUR SUBMISSION TO @@ -1174,7 +1174,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 Packaging. Each of these tool has a -h +conforms to 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.

    The maximum number of extra files is 31. See the @@ -1224,7 +1224,7 @@ 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 17 Packaging +Rule 17 - Packaging and our FAQ on “remarks.md”, our @@ -1318,16 +1318,16 @@ permissions and mkiocccentry(1) does this for you. In particular: d -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 Packaging!

    +Rule 17 - Packaging!

    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 Files, -Rule 5 Purity, +Rule 4 - Files, +Rule 5 - Purity, and -Rule 16 Anonymous.

    +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 directories in your submission directory, including the two required JSON files, @@ -1340,18 +1340,18 @@ page.

    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 4 Files +Rule 4 - Files or -Rule 17 Packaging.

    +Rule 17 - Packaging.

    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 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 4 Files +Rule 4 - Files or -Rule 17 Packaging.

    +Rule 17 - Packaging.

    Maximum number of files per submission

    @@ -1381,9 +1381,9 @@ The mkiocccentry(1) tool uses the v7 format. For instance you might
        tar --format=v7 -cJf foo.txz directory

    IMPORTANT: where -Rule 4 Files, +Rule 4 - Files, and -Rule 17 Packaging. +Rule 17 - Packaging. and the tools from the latest release of the mkiocccentry repo conflict, the IOCCC judges will use their best judgment which @@ -1418,9 +1418,9 @@ page, for help here and also read our FAQ on “mkiocccentry repo bugs”.

    At the risk of stating the obvious: submissions that violate -Rule 4 Files, +Rule 4 - Files, or -Rule 17 Packaging +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 @@ -1683,7 +1683,7 @@ of the same theme.

    Jump to: top

    -

    Q 2.4: How did an entry that breaks the size rule 2 win the IOCCC?

    +

    Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size?

    As entries have been fixed it is entirely possible that some of the entries no @@ -1900,9 +1900,9 @@ two JSON files, .auth.json and .info.json as well as t .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 4 Files, +Rule 4 - Files, or -Rule 17 Packaging!).

    +Rule 17 - Packaging!).

    As an example, if your submission directory is 00000000-0000-4000-0000-000000000000-3/ then you should run the following command:

    @@ -1922,9 +1922,9 @@ FAQ on “.auth.json” and the FAQ on “.info.json” as well as -Rule 4 Files, +Rule 4 - Files, and -Rule 17 Packaging +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 @@ -2015,12 +2015,12 @@ 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 Packaging.
  • +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 Packaging.

    +Rule 17 - Packaging.

  • tarball (double quoted string)

    • The xz compressed tarball filename.
    • @@ -2028,10 +2028,10 @@ violating

      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 Packaging! +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 Packaging. The +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 @@ -2046,7 +2046,7 @@ tarball, this will be flaggd.

      in the mkiocccentry repo). If this is not the case you stand a great risk of having your submission rejected for violating -Rule 17 Packaging.

      +Rule 17 - Packaging.

    • author_count (number)

      • How many authors this submission has.
      • @@ -2119,7 +2119,7 @@ the range of 1 THROUGH MAX_AFFILIATION_LEN (see in the mkiocccentry repo). If this is not the case you stand a great risk of having your submission rejected for violating -Rule 17 Packaging.

        +Rule 17 - Packaging.

        NOTE: an affiliation does NOT have any affect on whether you will win or not.

      • past_winning_author (boolean)

          @@ -2204,9 +2204,9 @@ will use it on the submission directory as part of the judging process.

          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 and in particular -Rule 4 Files, +Rule 4 - Files, and -Rule 17 Packaging.

          +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 instance, if in .auth.json the no_comment that we chose to not comment on is @@ -2215,9 +2215,9 @@ 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 4 Files, +Rule 4 - Files, and -Rule 17 Packaging +Rule 17 - Packaging and in particular because chksubmit(1) would not validate the .auth.json file (and maybe other things too).

          @@ -2337,7 +2337,7 @@ 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 Packaging.
        • +Rule 17 - Packaging.
      • submit_slot (number)

          @@ -2349,7 +2349,7 @@ on this, and in particular in the mkiocccentry repo). If this is not the case you stand a great risk of having your submission rejected for violating -Rule 17 Packaging.

          +Rule 17 - Packaging.

        • title (double quoted string)

          • A short name (length >= 1 THROUGH MAX_TITLE_LEN, defined in @@ -2359,7 +2359,7 @@ 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 Packaging!

        • +Rule 17 - Packaging!

        • abstract (double quoted string)

          • A one line summary of your submission, with a length of 1 THROUGH @@ -2370,7 +2370,7 @@ in the mkiocccentry repoThe 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 Packaging!

          • +Rule 17 - Packaging!

          • tarball (double quoted string)

            • The xz compressed tarball filename.
            • @@ -2378,10 +2378,10 @@ stand a great risk of having your submission rejected for violating

              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 Packaging! +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 Packaging. +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 @@ -2417,7 +2417,7 @@ violation, else false. calculated size is NOT violated but this is true then you stand a good chance of having your submission rejected for violating -Rule 17 Packaging.

              +Rule 17 - Packaging.

            • rule_2a_mismatch (boolean)

              • true if @@ -2436,12 +2436,12 @@ violation, else false.
              • calculated size is NOT violated but this is true then you stand a good chance of having your submission rejected for violating -Rule 17 Packaging.

                +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 12 UTF-8, +Rule 12 - UTF-8, else false.
              • nul_warning (boolean)

                @@ -2469,7 +2469,7 @@ else false.

              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 Packaging!

              +Rule 17 - Packaging!

              See the FAQ on “Makefile” for more information.

            • @@ -2479,7 +2479,7 @@ for more information.

            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 Packaging!

            +Rule 17 - Packaging!

            See the FAQ on “Makefile” for more information.

          • @@ -2490,7 +2490,7 @@ for more information.

            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 Packaging!

            +Rule 17 - Packaging!

            See the FAQ on “Makefile” for more information.

            @@ -2501,7 +2501,7 @@ for more information.

            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 Packaging!

            +Rule 17 - Packaging!

            See the FAQ on “Makefile” for more information.

            @@ -2512,7 +2512,7 @@ for more information.

            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 Packaging!

            +Rule 17 - Packaging!

            See the FAQ on “Makefile” for more information.

            @@ -2523,7 +2523,7 @@ for more information.

            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 Packaging!

            +Rule 17 - Packaging!

            See the FAQ on “Makefile” for more information.

            @@ -2549,7 +2549,7 @@ for more information.

          IMPORTANT: if this is NOT the case you stand a great chance of having your submission rejected for violating -Rule 17 Packaging!

        • +Rule 17 - Packaging!

        • auth_JSON (double quoted string)

          • This MUST be ".auth.json", defined as AUTH_JSON_FILENAME in @@ -2562,7 +2562,7 @@ for more information.

          IMPORTANT: if this is NOT the case you stand a great chance of having your submission rejected for violating -Rule 17 Packaging!

        • +Rule 17 - Packaging!

        • c_src (double quoted string)

          • This MUST be "prog.c", defined as PROG_C_FILENAME in @@ -2572,7 +2572,7 @@ 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 Packaging!

        • +Rule 17 - Packaging!

        • Makefile (double quoted string)

          • This MUST be "Makefile", defined as MAKEFILE_FILENAME in @@ -2585,7 +2585,7 @@ for more information.

          IMPORTANT: if this is NOT the case you stand a great chance of having your submission rejected for violating -Rule 17 Packaging!

        • +Rule 17 - Packaging!

        • remarks (double quoted string)

          • This MUST be "remarks.md", defined as REMARKS_FILENAME in @@ -2598,7 +2598,7 @@ for more information.

          IMPORTANT: if this is NOT the case you stand a great chance of having your submission rejected for violating -Rule 17 Packaging!

        • +Rule 17 - Packaging!

        The manifest array also OPTIONALLY has one or more of the field:

          @@ -2611,7 +2611,7 @@ and chksubmit will verify this for you; it is ALSO 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 Packaging! +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. @@ -2674,7 +2674,7 @@ 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 Packaging](next/rules.html#rule-17-packaging), +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/faq.md b/faq.md index 4b4929194..14a59f60c 100644 --- a/faq.md +++ b/faq.md @@ -26,7 +26,7 @@ This is FAQ version **28.2.24 2025-11-18**. - **Q 1.4**: How can I check if my submission passes tests without having to answer questions? - **Q 1.5**: What are extra files and how may I include additional files beyond the max allowed? - **Q 1.6**: May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission? -- **Q 1.7**: What are the details behind Rule 17? +- **Q 1.7**: What are the details behind Rule 17 - Packaging? - **Q 1.8**: How can I avoid re-entering my UUID to mkiocccentry? - **Q 1.9**: How can I avoid having to move or delete my submission directory for the same workdir? - **Q 1.10**: Can I download my submission tarball from the submit server? @@ -38,7 +38,7 @@ This is FAQ version **28.2.24 2025-11-18**. - **Q 2.1**: How can I comment or make a suggestion on IOCCC rules, guidelines and tools? - **Q 2.2**: Are there any compiler warnings that I should not worry about in my submissions? - **Q 2.3**: What types of entries have been frequently submitted to the IOCCC? -- **Q 2.4**: How did an entry that breaks the size rule 2 win the IOCCC? +- **Q 2.4**: How did an entry win the IOCCC that breaks Rule 2 - Size? - **Q 2.5**: How many submissions do the judges receive for a given IOCCC? - **Q 2.6**: How much time does it take to judge the contest? - **Q 2.7**: How many judging rounds do you have? @@ -215,7 +215,7 @@ 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 Packaging](next/rules.html#rule-17-packaging). +[Rule 17 - Packaging](next/rules.html#rule-17---packaging). Jump to: [top](#) @@ -386,7 +386,7 @@ 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 Packaging](next/rules.html#rule-17-packaging). +[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 @@ -576,7 +576,7 @@ rounds; we look at the author name only if an entry wins. See the - 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 Packaging](next/rules.html#rule-17-packaging)). +[Rule 17 - Packaging](next/rules.html#rule-17---packaging)). Jump to: [top](#) @@ -635,12 +635,12 @@ for more details. See the FAQ on "[Rule 17](#rule17)" and -[Rule 17 Packaging](next/rules.html#rule-17-packaging) +[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 5 Purity](next/rules.html#rule-5-purity). +[Rule 5 - Purity](next/rules.html#rule-5---purity). Jump to: [top](#) @@ -852,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 Packaging](next/rules.html#rule-17-packaging) 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 Packaging](next/rules.html#rule-17-packaging)! +of violating [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! Also, remember what the [guidelines](next/guidelines.html) say: @@ -896,7 +896,7 @@ Jump to: [top](#)

          -### Q 1.7: What are details behind Rule 17? +### Q 1.7: What are details behind Rule 17 - Packaging?
          @@ -919,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 Packaging](next/rules.html#rule-17-packaging). 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). @@ -981,7 +981,7 @@ 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 17 Packaging](next/rules.html#rule-17-packaging) +[Rule 17 - Packaging](next/rules.html#rule-17---packaging) and our FAQ on "[remarks.md](#remarks_md)", our @@ -1089,7 +1089,7 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories `-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 Packaging](next/rules.html#rule17)! +[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 @@ -1097,10 +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 Files](next/rules.html#rule-4-files), -[Rule 5 Purity](next/rules.html#rule-5-purity), +[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). +[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 @@ -1115,9 +1115,9 @@ 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 4 Files](next/rules.html#rule-4-files) +[Rule 4 - Files](next/rules.html#rule-4---files) or -[Rule 17 Packaging](next/rules.html#rule17). +[Rule 17 - Packaging](next/rules.html#rule17). The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the @@ -1127,9 +1127,9 @@ 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 4 Files](next/rules.html#rule-4-files) +[Rule 4 - Files](next/rules.html#rule-4---files) or -[Rule 17 Packaging](next/rules.html#rule17). +[Rule 17 - Packaging](next/rules.html#rule17).
          #### Maximum number of files per submission @@ -1170,9 +1170,9 @@ The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
          **IMPORTANT**: where -[Rule 4 Files](next/rules.html#rule-4-files), +[Rule 4 - Files](next/rules.html#rule-4---files), and -[Rule 17 Packaging](next/rules.html#rule-17-packaging). +[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 @@ -1213,9 +1213,9 @@ 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 4 Files](next/rules.html#rule-4-files), +[Rule 4 - Files](next/rules.html#rule-4---files), or -[Rule 17 Packaging](next/rules.html#rule-17-packaging) +[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 @@ -1575,7 +1575,7 @@ Jump to: [top](#)
          -### Q 2.4: How did an entry that breaks the size rule 2 win the IOCCC? +### Q 2.4: How did an entry win the IOCCC that breaks Rule 2 - Size?
          @@ -1874,9 +1874,9 @@ two JSON files, `.auth.json` and `.info.json` as well as the `prog.c`, `.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 4 Files](next/rules.html#rule-4-files), +[Rule 4 - Files](next/rules.html#rule-4---files), or -[Rule 17 Packaging](next/rules.html#rule-17-packaging)!). +[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 @@ -1903,9 +1903,9 @@ FAQ on "[.auth.json](#auth_json)" and the FAQ on "[.info.json](#info_json)" as well as -[Rule 4 Files](next/rules.html#rule-4-files), +[Rule 4 - Files](next/rules.html#rule-4---files), and -[Rule 17 Packaging](next/rules.html#rule-17-packaging) +[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 @@ -1999,12 +1999,12 @@ In order of the file's contents we describe each required field, below: * 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 Packaging](next/rules.html#rule-17-packaging). + [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 Packaging](next/rules.html#rule-17-packaging). + [Rule 17 - Packaging](next/rules.html#rule-17---packaging). - `tarball` (double quoted string) * The xz compressed tarball filename. @@ -2012,10 +2012,10 @@ In order of the file's contents we describe each required field, below: **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 Packaging](next/rules.html#rule-17-packaging)! + [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 Packaging](next/rules.html#rule-17-packaging). The + [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 @@ -2030,7 +2030,7 @@ In order of the file's contents we describe each required field, below: 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 Packaging](next/rules.html#rule-17-packaging). + [Rule 17 - Packaging](next/rules.html#rule-17---packaging). - `author_count` (number) * How many authors this submission has. @@ -2095,7 +2095,7 @@ author(s) of the submission: 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 Packaging](next/rules.html#rule-17-packaging). + [Rule 17 - Packaging](next/rules.html#rule-17---packaging). **NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not. @@ -2180,9 +2180,9 @@ 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 4 Files](next/rules.html#rule-4-files), +[Rule 4 - Files](next/rules.html#rule-4---files), and -[Rule 17 Packaging](next/rules.html#rule-17-packaging). +[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 @@ -2192,9 +2192,9 @@ 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 4 Files](next/rules.html#rule-4-files), +[Rule 4 - Files](next/rules.html#rule-4---files), and -[Rule 17 Packaging](next/rules.html#rule-17-packaging) +[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). @@ -2318,7 +2318,7 @@ In order of the file's contents we describe each required field, below: * 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 Packaging](next/rules.html#rule-17-packaging). + [Rule 17 - Packaging](next/rules.html#rule-17---packaging). - `submit_slot` (number) * The submission number. @@ -2329,7 +2329,7 @@ In order of the file's contents we describe each required field, below: 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 Packaging](next/rules.html#rule-17-packaging). + [Rule 17 - Packaging](next/rules.html#rule-17---packaging). - `title` (double quoted string) * A short name (length >= 1 **THROUGH** `MAX_TITLE_LEN`, defined in @@ -2339,7 +2339,7 @@ In order of the file's contents we describe each required field, below: **IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [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** @@ -2351,7 +2351,7 @@ In order of the file's contents we describe each required field, below: **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 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! - `tarball` (double quoted string) * The xz compressed tarball filename. @@ -2359,10 +2359,10 @@ In order of the file's contents we describe each required field, below: **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 Packaging](next/rules.html#rule-17-packaging)! + [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 Packaging](next/rules.html#rule-17-packaging). + [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 @@ -2397,7 +2397,7 @@ In order of the file's contents we describe each required field, below: calculated size is **NOT** violated but this is `true` then you stand a good chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging). + [Rule 17 - Packaging](next/rules.html#rule-17---packaging). - `rule_2a_mismatch` (boolean) * `true` if @@ -2415,12 +2415,12 @@ In order of the file's contents we describe each required field, below: calculated size is **NOT** violated but this is `true` then you stand a good chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging). + [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 12 UTF-8](next/rules.html#rule-12-utf-8), + [Rule 12 - UTF-8](next/rules.html#rule-12---utf-8), else `false`. - `nul_warning` (boolean) @@ -2443,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 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2454,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 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2466,7 +2466,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 and this boolean is `true` then you stand a good chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2478,7 +2478,7 @@ 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 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2490,7 +2490,7 @@ 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 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2502,7 +2502,7 @@ 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 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! See the FAQ on "[Makefile](#makefile)" @@ -2528,7 +2528,7 @@ The `mkiocccentry(1)` tool will write it in this order: **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [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 @@ -2541,7 +2541,7 @@ The `mkiocccentry(1)` tool will write it in this order: **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [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 @@ -2551,7 +2551,7 @@ The `mkiocccentry(1)` tool will write it in this order: **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! - `Makefile` (double quoted string) * This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in @@ -2564,7 +2564,7 @@ The `mkiocccentry(1)` tool will write it in this order: **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! - `remarks` (double quoted string) * This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in @@ -2577,7 +2577,7 @@ The `mkiocccentry(1)` tool will write it in this order: **IMPORTANT:** if this is **NOT** the case you stand a great chance of having your submission rejected for violating - [Rule 17 Packaging](next/rules.html#rule-17-packaging)! + [Rule 17 - Packaging](next/rules.html#rule-17---packaging)! The `manifest` **array** also **OPTIONALLY** has one or more of the field: @@ -2590,7 +2590,7 @@ The `manifest` **array** also **OPTIONALLY** has one or more of the field: 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 Packaging](next/rules.html#rule-17-packaging)! + [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. @@ -2654,7 +2654,7 @@ 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 Packaging](next/rules.html#rule-17-packaging), +[Rule 17 - Packaging](next/rules.html#rule-17---packaging), and in particular because `chksubmit` would not validate the `.info.json` file. diff --git a/news.html b/news.html index 6e5666795..af10fb17a 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 12 UTF-8 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=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 Submission 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 e5f88a681..8783f9f10 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 12 UTF-8](next/rules.html#rule-12-utf-8) 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 Submission](next/rules.html#rule-8-submission) 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 71edd39b7..e5b437f2e 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -570,12 +570,12 @@ may change from contest to contest.

        Uploading a tarball not formed by mkiocccentry(1) puts you at a very big risk of violating -Rule 17 Packaging, +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 Packaging.

        +Rule 17 - Packaging.

        We STRONGLY recommend you do install the mkiocccentry toolkit.

        IMPORTANT NOTE: the tools that require other tools, mkiocccentry(1) and @@ -626,7 +626,7 @@ index.html:

        IMPORTANT HINT: Only 3 of the 23 IOCCC28 winners came close to the -Rule 2 Size limit. +Rule 2 - Size limit. Large code size isn’t everything. :-) Those submitting to future contents should take a careful note of that fact.

        @@ -638,7 +638,7 @@ note
        of that fact.

        the IOCCC size Rule 2b Next Size.

        To check your code against -Rule 2 Size, use the iocccentry(1) tool. +Rule 2 - Size, use the iocccentry(1) tool. For example:

            iocccsize prog.c

        The IOCCC size tool algorithm can be summarized as follows:

        @@ -666,7 +666,7 @@ 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 Size.

        +Rule 2 - Size.

        Yes Virginia, that is a hint!

        The official locale of the IOCCC is C.

        @@ -774,7 +774,7 @@ misleading comments and variable names might be a VERY GOOD START

        Jump to: top

        mkiocccentry

        -

        Rule 17 Packaging +

        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 @@ -825,7 +825,7 @@ 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 so that you do not violate -Rule 17 Packaging +Rule 17 - Packaging by mistake.

        Jump to: top

        @@ -853,7 +853,7 @@ for even more information.

        execute one or more additional tools.

        iocccsize

        mkiocccentry(1) will use code from iocccsize(1) which detects a number of -issues (such as Rule 2 Size) 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 iocccsize manually. However, the checks described above are still made but through the mkiocccentry(1) tool itself.

        @@ -934,7 +934,7 @@ do install the libraries from their respective repos, it/they will 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 Packaging!

        +Rule 17 - Packaging!

        We HIGHLY recommend you install the mkiocccentry toolkit, however.

        @@ -968,7 +968,7 @@ page. You might just find a fun option if you do either of these!

        Of course, as txzchk does 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 Packaging.

        +Rule 17 - Packaging.

        Including optional and extra files

        @@ -984,7 +984,7 @@ file. The non-extra files are considered free files.

        Of course any dot file that is not .auth.json and .info.json will result in a violation of -Rule 17 Packaging, +Rule 17 - Packaging, regardless of its depth.

        If you use an optional filename for something other than their intended use @@ -1016,12 +1016,12 @@ The mkiocccentry(1) tool creates a v7 format tarball to prevent thi do the same like:

            tar --format=v7 -cJf foo.txz directory

        See -Rule 17 Packaging +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 Packaging!

        +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 be done. In other words you should NOT use a tarball for a test-suite unless you @@ -1036,7 +1036,7 @@ 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 Packaging. +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 @@ -1044,7 +1044,7 @@ tarball filename, see the FAQ on “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 Packaging +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 @@ -1058,7 +1058,7 @@ your submission rejected if you package your own tarball, and there are 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 Packaging. +Rule 17 - Packaging. But even if everything checks out OK you should NOT assume that everything IS OK.

        @@ -1275,7 +1275,7 @@ somehow, txzchk(1) will flag it as an error. When the judges run WILL BE REJECTED for violating -Rule 17 Packaging!

        +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 submission Makefile don’t depend on such tools.

        @@ -1523,7 +1523,7 @@ large data files to get around the source code size limit.

        We do not recommend submitting systemd source code to the IOCCC, if nothing else because that code is likely to exceed -Rule 2 Size. +Rule 2 - Size. This isn’t to say that another highly compact and obfuscated replacement of init(8) would not be an interesting submission.

        @@ -1541,7 +1541,7 @@ 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 8 Submission).

        +Rule 8 - Submission).

        We suggest that you avoid trying for the ‘smallest self-replicating’ source. The smallest, a zero byte entry, won in 1994.

        @@ -1649,7 +1649,7 @@ 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 Newlines +

        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 @@ -1681,14 +1681,14 @@ Submitting source code that uses the contents of iocccsize.c, unless you are Anthony C Howe, might run the risk of violating -Rule 7 Original Work.

        +Rule 7 - Original Work.

        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 Original Work.

        +Rule 7 - Original Work.

        In addition to the above tools, none of the mkiocccentry tools, including, but not limited to @@ -1711,7 +1711,7 @@ 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 Original Work.

        +Rule 7 - Original Work.

        And unless you are Landon Curt Noll, the code in dbg and @@ -1719,8 +1719,8 @@ the code in 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 Original Work.

        -

        Rule 7 Original Work +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 @@ -1730,7 +1730,7 @@ However, if you do write your own version, you

        Even so, we do not recommend you try and submit a JSON parser due to the fact it will likely exceed -Rule 2 Size +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 @@ -1738,7 +1738,7 @@ 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 -Rule 2 Size +Rule 2 - Size or because it is not as obfuscated as the flex and bison generated code of @@ -1820,7 +1820,7 @@ character tab stop.

        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 4 Files, +Rule 4 - Files, and the FAQ on “markdown”.

        We LIKE reading remarks.md files, especially if they contain @@ -2041,7 +2041,7 @@ submission that abuses the IOCCC guidelines in an or that stretches the contest rules that while legal, it nevertheless goes against the intent of the rules.

        Nevertheless, see -Rule 10 Privileges.

        +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 52db42eec..92659405d 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -159,12 +159,12 @@ See FAQs regarding: Uploading a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of violating -[Rule 17 Packaging](rules.html#rule-17-packaging), +[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 Packaging](rules.html#rule-17-packaging). +[Rule 17 - Packaging](rules.html#rule-17---packaging). We **STRONGLY** recommend you **do** install the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry). @@ -225,7 +225,7 @@ index.html](../2024/index.html):

        > **IMPORTANT HINT**: Only 3 of the 23 **IOCCC28 winners** came close to the -[Rule 2 Size](rules.html#rule-2-size) limit. +[Rule 2 - Size](rules.html#rule-2---size) limit. Large code size isn't everything. :-) Those submitting to future contents should **take a careful note** of that fact. @@ -239,7 +239,7 @@ the IOCCC size [Rule 2b Next Size](rules.html#rule-2b-net-size). To check your code against -[Rule 2 Size](rules.html#rule-2-size), use the `iocccentry(1)` tool. +[Rule 2 - Size](rules.html#rule-2---size), use the `iocccentry(1)` tool. For example: ``` @@ -276,7 +276,7 @@ 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 Size](rules.html#rule-2-size). +[Rule 2 - Size](rules.html#rule-2---size). Yes Virginia, **that is a hint**! @@ -417,7 +417,7 @@ Jump to: [top](#) # `mkiocccentry`

        -[Rule 17 Packaging](rules.html#rule-17-packaging) +[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. @@ -482,7 +482,7 @@ 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 Packaging](rules.html#rule-17-packaging) +[Rule 17 - Packaging](rules.html#rule-17---packaging) by mistake. @@ -527,7 +527,7 @@ execute one or more additional tools.
        `mkiocccentry(1)` will use code from `iocccsize(1)` which detects a number of -issues (such as [Rule 2 Size](rules.html#rule-2-size)) 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 @@ -631,7 +631,7 @@ 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 Packaging](rules.html#rule-17-packaging)! +[Rule 17 - Packaging](rules.html#rule-17---packaging)!

        We **HIGHLY** recommend you install the `mkiocccentry` toolkit, however. @@ -678,7 +678,7 @@ page. You might just find a fun option if you do either of these! Of course, as `txzchk` does 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 Packaging](rules.html#rule-17-packaging). +[Rule 17 - Packaging](rules.html#rule-17---packaging).

        ## Including optional and extra files @@ -698,7 +698,7 @@ file_. The non-extra files are considered _free files_.

        Of course any dot file that is not `.auth.json` and `.info.json` will result in a violation of -[Rule 17 Packaging](rules.html#rule-17-packaging), +[Rule 17 - Packaging](rules.html#rule-17---packaging), regardless of its depth.

        @@ -741,13 +741,13 @@ do the same like: ``` See -[Rule 17 Packaging](rules.html#rule-17-packaging) +[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 Packaging](rules.html#rule-17-packaging)! +[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 @@ -768,7 +768,7 @@ 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 Packaging](rules.html#rule-17-packaging). +[Rule 17 - Packaging](rules.html#rule-17---packaging). Nevertheless, you can run the tool manually, should you wish to. @@ -778,7 +778,7 @@ 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 Packaging](rules.html#rule-17-packaging) +[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 @@ -793,7 +793,7 @@ 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 Packaging](rules.html#rule-17-packaging). +[Rule 17 - Packaging](rules.html#rule-17---packaging). But even if everything checks out OK you should **NOT** assume that everything **IS** OK. @@ -1099,7 +1099,7 @@ 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 Packaging](rules.html#rule-17-packaging)! +[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 @@ -1436,7 +1436,7 @@ large data files to get around the source code size limit.

        We do not recommend submitting [systemd](https://systemd.io) source code to the IOCCC, if nothing else because that code is likely to exceed -[Rule 2 Size](rules.html#rule-2-size). +[Rule 2 - Size](rules.html#rule-2---size). This isn't to say that another highly compact and obfuscated replacement of `init(8)` would not be an interesting submission.

        @@ -1455,7 +1455,7 @@ 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 8 Submission](rules.html#rule-8-submission)). +[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 @@ -1600,7 +1600,7 @@ If you do `#include ` make **CERTAIN** you link in curses (i.e. `-lcurses`) and not ncurses (i.e. `-lncurses`).

        -[Rule 13 Newlines](rules.html#rule-13-newlines) +[Rule 13 - Newlines](rules.html#rule-13---newlines) no longer discourages the use of UTF-8 characters in C code. @@ -1638,7 +1638,7 @@ 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 Original Work](rules.html#rule-7-original-work). +[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 @@ -1646,7 +1646,7 @@ 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 Original Work](rules.html#rule-7-original-work). +[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 @@ -1670,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 Original Work](rules.html#rule-7-original-work). +[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 @@ -1679,9 +1679,9 @@ the code in 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 Original Work](rules.html#rule-7-original-work). +[Rule 7 - Original Work](rules.html#rule-7---original-work). -[Rule 7 Original Work](rules.html#rule-7-original-work) +[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_ @@ -1692,7 +1692,7 @@ tools' algorithms. Even so, we do not recommend you try and submit a JSON parser due to the fact it will likely exceed -[Rule 2 Size](rules.html#rule-2-size) +[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 @@ -1700,7 +1700,7 @@ 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 -[Rule 2 Size](rules.html#rule-2-size) +[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 @@ -1794,7 +1794,7 @@ character tab stop. 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 4 Files](rules.html#rule-4-files), +[Rule 4 - Files](rules.html#rule-4---files), and the FAQ on "[markdown](../faq.html#markdown)". @@ -2071,7 +2071,7 @@ 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 10 Privileges](rules.html#rule-10-privileges). +[Rule 10 - Privileges](rules.html#rule-10---privileges). In the end, we traditionally pick one submission as '**best**'. Sometimes such diff --git a/next/rules.html b/next/rules.html index e2c895b16..fe7850692 100644 --- a/next/rules.html +++ b/next/rules.html @@ -473,17 +473,17 @@ mastodon feed page and/or mastodon app from time to time to view IOCCC mastodon updates.

        -

        29th International Obfuscated C Code Contest Official Rules

        +

        29th International Obfuscated C Code Contest Official Rules

        Copyright © 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 writing by contacting the judges.

        Rules version

        -

        These IOCCC Rules are version 29.03 2025-11-19.

        +

        These IOCCC Rules are version 29.04 2025-11-20.

        Be sure to read the IOCCC guidelines.

        -

        Rule 0 Dates

        +

        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.

        @@ -491,11 +491,11 @@ writing by contacting the judges.

        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

        +

        Rule 1 - Program

        Your submission MUST be a C program.

        -

        Rule 2 Size

        +

        Rule 2 - Size

        Rule 2 requires that your submission satisfy BOTH Rule 2a Gross Size @@ -504,19 +504,19 @@ and During development this can be checked using iocccsize(1):

        iocccsize prog.c

        -

        Rule 2a Gross Size

        +

        Rule 2a - Gross Size

        The overall maximum size of your prog.c program source MUST NOT exceed 4993 bytes.

        -

        Rule 2b Net Size

        +

        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

        +

        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.

        @@ -530,9 +530,9 @@ register and submit your entries; DO NOT WAIT UNTIL THE FINAL DAYSNOT 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.

        +

        See Rule 8 - Submission.

        -

        Rule 4 Files

        +

        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 @@ -568,9 +568,9 @@ 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 IOCCC markdown guidelines.

        -

        See Rule 17 Packaging.

        +

        See Rule 17 - Packaging.

        -

        Rule 5 Purity

        +

        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 @@ -587,15 +587,15 @@ original form, including the removal of any created files and directories.

        Your code should be able to run under a SUS environment.

        -

        Rule 6 Free

        +

        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.

        +

        See Rule 19 - Prime.

        -

        Rule 7 Original Work

        +

        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 @@ -612,9 +612,9 @@ 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 Rule 16 Anonymous.

        +

        See Rule 16 - Anonymous.

        -

        Rule 8 Submission

        +

        Rule 8 - Submission

        The Submit Server will only accept submissions from those who have registered and only while the contest is open.

        @@ -625,21 +625,21 @@ 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, +Rule 3 - Register, +Rule 15 - Building, and -Rule 17 Packaging.

        +Rule 17 - Packaging.

        -

        Rule 9 No hands

        +

        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 gmake can be any GNU Make compatible tool.

        -

        See Rule 15 Building.

        +

        See Rule 15 - Building.

        -

        Rule 10 Privileges

        +

        Rule 10 - Privileges

        Programs that require special privileges (setuid(2), setgid(2), super-user, special owner, special group, etc.) are HIGHLY DISCOURAGED. @@ -651,11 +651,11 @@ document this fact and explain why it is needed in your submission’s 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, +

        See Rule 4 - Files, and -Rule 5 Purity.

        +Rule 5 - Purity.

        -

        Rule 11 Abuse

        +

        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 @@ -675,11 +675,11 @@ version, please indicate that in your remarks.md file of your non-r abusing version so that the Judges don’t think you uploaded a duplicate into a wrong slot by mistake.

        -

        Rule 12 UTF-8

        +

        Rule 12 - UTF-8

        Use of UTF-8 is supported by C89 standard and its updates and so too by the IOCCC.

        -

        Rule 13 Newlines

        +

        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 @@ -694,7 +694,7 @@ need to do this, please document that in your remarks.md file and i your compiler complains about this, document this too and update your Makefile to account for this.

        -

        Rule 14 Resubmit

        +

        Rule 14 - Resubmit

        Submissions that are substantially similar to previous winning IOCCC entries are discouraged.

        @@ -704,7 +704,7 @@ 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.

        -

        Rule 15 Building

        +

        Rule 15 - Building

        The Makefile MUST adhere to GNU Makefile syntax. Its recommended that you copy and rename the Makefile.example as template. The primary @@ -726,9 +726,9 @@ environments and systems are available in the search SUS, such as GNU long name options --example or extensions like grep -P.

        Do NOT assume that . (current directory) is in the $PATH environment variable.

        -

        See Rule 4 Files.

        +

        See Rule 4 - Files.

        -

        Rule 16 Anonymous

        +

        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 @@ -739,7 +739,7 @@ a past winner, you MUST NOT reveal your identity deliberately o accident anywhere in your submission. Failure to comply may result in the submission being disqualified.

        -

        Rule 17 Packaging

        +

        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 @@ -758,7 +758,7 @@ filename MUST pass all fnamchk(1) checks. You may created by the -d or -s seed options of mkiocccentry(1).

        The unpacked submission directory MUST pass the checks performed by the current version of chksubmit(1).

        -

        The prog.c file MUST pass the Rule 2 Size +

        The prog.c file MUST pass the Rule 2 - Size size checks performed by iocccsize(1).

        The .auth.json and .info.json files MUST be compatible with what mkiocccentry(1) generates.

        @@ -769,27 +769,28 @@ that you are using the latest tools from the 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.

        +

        See Rule 4 - Files.

        -

        Rule 18 License

        +

        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.

        +

        See Rule 7 - Original Work.

        -

        Rule 19 Prime

        +

        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.

        +

        See Rule 6 - Free.

        Further Reading

        -

        Please read the Guidelines next for further -commentary on The Rules.

        +

        Read the +Entering the IOCCC: the bare minimum you need to know +for an overview of how to enter the contest.

        +

        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 -C in general.

        +

        Consider joining the IOCCC Discord Server +for discussions about The Rules, questions for the Judges, and C in general.

        Leonid A. Broukhis chongo (Landon Curt Noll) /\cc/\

        diff --git a/next/rules.md b/next/rules.md index c53329c2e..5ab7c9a0d 100644 --- a/next/rules.md +++ b/next/rules.md @@ -27,8 +27,7 @@ app from time to time to view IOCCC mastodon updates. -29th International Obfuscated C Code Contest Official Rules ------------------------------------------------------------- +# 29th International Obfuscated C Code Contest Official Rules Copyright © 2025 Leonid A. Broukhis and Landon Curt Noll. @@ -38,17 +37,15 @@ and remains unaltered. All other uses **MUST** receive prior permission in writing by [contacting the judges](../contact.html). -Rules version -------------- +## Rules version -These IOCCC Rules are version **29.03 2025-11-19**. +These IOCCC Rules are version **29.04 2025-11-20**. Be sure to read the [IOCCC guidelines](guidelines.html).
        -Rule 0 Dates ------------- +## Rule 0 - Dates
        This IOCCC runs from ${START_DATE_TIME} UTC to ${CLOSE_DATE_TIME} UTC. @@ -63,16 +60,14 @@ The above dates are subject to change until the contest is officially open.
        -Rule 1 Program ---------------- +## Rule 1 - Program
        Your submission **MUST** be a C program.
        -Rule 2 Size ------------ +## Rule 2 - Size
        `Rule 2` requires that your submission satisfy **BOTH** @@ -84,7 +79,7 @@ During development this can be checked using `iocccsize(1)`: iocccsize prog.c
        -### Rule 2a Gross Size +### Rule 2a - Gross Size
        The overall maximum size of your `prog.c` program source **MUST NOT** @@ -92,7 +87,7 @@ exceed **4993** bytes.
        -### Rule 2b Net Size +### Rule 2b - Net Size
        When the filename of your program source (i.e., `prog.c`) is given as a @@ -102,8 +97,7 @@ NOT** exceed **2503**.
        -Rule 3 Register ---------------- +## Rule 3 - Register
        You **MUST** register, using a valid email address, in order to submit @@ -122,12 +116,11 @@ 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). +See [Rule 8 - Submission](rules.html#rule-8---submission).
        -Rule 4 Files ------------- +## Rule 4 - Files
        The submission **MUST** include at least these files: `Makefile`, `prog.c`, @@ -177,12 +170,11 @@ The `remarks.md` and `Makefile` are explained in more detail in the Guidelines. See [IOCCC markdown guidelines](../markdown.html). -See [Rule 17 Packaging](rules.html#rule-17-packaging). +See [Rule 17 - Packaging](rules.html#rule-17---packaging).
        -Rule 5 Purity -------------- +## Rule 5 - Purity
        Your submission **MUST NOT** modify the filenames or content of any of @@ -205,8 +197,7 @@ Your code should be able to run under a
        -Rule 6 Free ------------ +## Rule 6 - Free
        I am **NOT** a Rule, I am a `free(void *human);` ‼️ @@ -217,12 +208,11 @@ I am **NOT** a Rule, I am a `free(void *human);` ‼️ } ``` -See [Rule 19 Prime](rules.html#rule-19-prime). +See [Rule 19 - Prime](rules.html#rule-19---prime).
        -Rule 7 Original Work --------------------- +## Rule 7 - Original Work
        In short: You wrote it, you own it, and its an original work. @@ -243,12 +233,11 @@ 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 [Rule 16 Anonymous](rules.html#rule-16-anonymous). +See [Rule 16 - Anonymous](rules.html#rule-16---anonymous).
        -Rule 8 Submission ------------------ +## Rule 8 - Submission
        The Submit Server will only accept submissions from those who have @@ -263,15 +252,14 @@ 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), +[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 17 - Packaging](rules.html#rule-17---packaging).
        -Rule 9 No hands ----------------- +## Rule 9 - No hands
        Entries requiring human interaction to be initially compiled are **NOT** @@ -281,12 +269,11 @@ its build process using `bash`, `gmake`, `gcc`, `clang`, under a Note references to `gmake` can be any GNU Make compatible tool. -See [Rule 15 Building](rules.html#rule-15-building). +See [Rule 15 - Building](rules.html#rule-15---building).
        -Rule 10 Privileges ------------------- +Rule 10 - Privileges
        Programs that require special privileges (setuid(2), setgid(2), @@ -301,14 +288,13 @@ 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), +See [Rule 4 - Files](rules.html#rule-4---files), and -[Rule 5 Purity](rules.html#rule-5-purity). +[Rule 5 - Purity](rules.html#rule-5---purity).
        -Rule 11 Abuse -------------- +## Rule 11 - Abuse
        Legal abuse of the rules is somewhat encouraged, but comes with risks. @@ -334,16 +320,14 @@ into a wrong slot by mistake.
        -Rule 12 UTF-8 -------------- +## Rule 12 - UTF-8
        Use of UTF-8 is supported by `C89` standard and its updates and so too by the IOCCC.
        -Rule 13 Newlines ----------------- +## Rule 13 - Newlines
        Any C source that fails to compile because lines contain carriage-returns @@ -362,8 +346,7 @@ your compiler complains about this, document this too and update your
        -Rule 14 Resubmit ----------------- +## Rule 14 - Resubmit
        Submissions that are substantially similar to previous winning IOCCC @@ -377,8 +360,7 @@ didn't previously win, then you are encouraged to mention this in your
        -Rule 15 Building ----------------- +## Rule 15 - Building
        The `Makefile` **MUST** adhere to GNU Makefile syntax. Its recommended @@ -408,12 +390,11 @@ GNU long name options `--example` or extensions like `grep -P`. Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable. -See [Rule 4 Files](rules.html#rule-4-files). +See [Rule 4 - Files](rules.html#rule-4---files).
        -Rule 16 Anonymous ------------------ +## Rule 16 - Anonymous
        Your source code, data files, remarks, and program output **MUST NOT** @@ -427,8 +408,7 @@ in the submission being disqualified.***
        -Rule 17 Packaging ------------------ +## Rule 17 - Packaging
        The files, directories, and paths **MUST** conform to the limits imposed by @@ -453,7 +433,7 @@ created by the `-d` or `-s` seed options of `mkiocccentry(1)`. The unpacked submission directory **MUST** pass the checks performed by the current version of `chksubmit(1)`. -The `prog.c` file **MUST** pass the [Rule 2 Size](rules.html#rule-2-size) +The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule-2---size) size checks performed by `iocccsize(1)`. The `.auth.json` and `.info.json` files **MUST** be compatible with what @@ -468,45 +448,43 @@ 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](rules.html#rule-4-files). +See [Rule 4 - Files](rules.html#rule-4---files).
        -Rule 18 License ---------------- +## 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](https://creativecommons.org/licenses/by-sa/4.0/) -See [Rule 7 Original Work](rules.html#rule-7-original-work). +See [Rule 7 - Original Work](rules.html#rule-7---original-work).
        -Rule 19 Prime -------------- +## 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](rules.html#rule-6-free). +See [Rule 6 - Free](rules.html#rule-6---free). -Further Reading ---------------- +## Further Reading -Please read the [Guidelines](guidelines.html) next for further -commentary on The Rules. +Read the +[Entering the IOCCC: the bare minimum you need to know](https://www.ioccc.org/quick-start.html#enter) +for an overview of how to enter the contest. + +Please read the [Guidelines](guidelines.html) next for further commentary on The Rules. See also the [FAQ](../faq.html). -Consider joining our Discord -server for discussions about The Rules, questions for the Judges, and -`C` in general. - +Consider joining the [IOCCC Discord Server](https://discord.com/invite/Wa42Qujwnw) +for discussions about The Rules, questions for the Judges, and `C` in general. Leonid A. Broukhis chongo (Landon Curt Noll) /\\cc/\\ diff --git a/next/submit.html b/next/submit.html index dfca6f01e..df14ca71e 100644 --- a/next/submit.html +++ b/next/submit.html @@ -518,7 +518,7 @@ 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 Packaging!
      • +Rule 17 - Packaging!
      • the file length, which txzchk(1) will also verify (the file itself and the tarball listing).
      • the upload date.
      • @@ -576,7 +576,7 @@ 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 mkiocccentry and upload to the same slot again! If you do not fix this your submission WILL BE REJECTED for violating -Rule 17 Packaging!

        +Rule 17 - Packaging!

        If the format test went well, then you will see:

        Status: submit file received by the IOCCC judges. Passed both txzchk and chksubmit tests.

        @@ -586,7 +586,7 @@ 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 Packaging, +Rule 17 - Packaging, even if the tests passed.

        For details on txzchk, see the FAQ on “txzchk”.

        diff --git a/next/submit.md b/next/submit.md index a3f440c3b..60a5cb6b5 100644 --- a/next/submit.md +++ b/next/submit.md @@ -87,7 +87,7 @@ 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 Packaging](rules.html#rule-17-packaging)! +[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. @@ -158,7 +158,7 @@ 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 Packaging](rules.html#rule-17-packaging)! +[Rule 17 - Packaging](rules.html#rule-17---packaging)! If the format test went well, then you will see: @@ -169,7 +169,7 @@ 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 Packaging](rules.html#rule-17-packaging), +[Rule 17 - Packaging](rules.html#rule-17---packaging), even if the tests passed. For details on `txzchk`, see the diff --git a/quick-start.html b/quick-start.html index 6ffd1c2c7..2d58ee0e1 100644 --- a/quick-start.html +++ b/quick-start.html @@ -566,13 +566,13 @@ for more info.

        NOTE: Please see our IOCCC markdown guide 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 Size, +Rule 2 - Size, or any other rule, 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, be sure and explain your reason for doing so in your remarks.md file.

        See also -Rule 17 Packaging!

        +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 you have an earlier version and you have not installed the tools and run the @@ -581,7 +581,7 @@ 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 Packaging. +Rule 17 - Packaging. See the FAQ on “obtaining the latest mkiocccentry tools”, the diff --git a/quick-start.md b/quick-start.md index 9727c7287..192fdf4bb 100644 --- a/quick-start.md +++ b/quick-start.md @@ -162,7 +162,7 @@ Three files are required to exist in `topdir`: If the `mkiocccentry` tool indicates that there is a problem with your submission, especially if it identifies a -[Rule 2 Size](next/rules.html#rule-2-size), +[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. @@ -170,7 +170,7 @@ If you choose to risk violating [Rules](next/rules.html), be sure and explain yo for doing so in your `remarks.md` file. See also -[Rule 17 Packaging](next/rules.html#rule-17-packaging)! +[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 @@ -181,7 +181,7 @@ 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 Packaging](next/rules.html#rule-17-packaging). +[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 bc88b2af0..3261479cc 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -16758,11 +16758,11 @@ https://www.ioccc.org/faq.html - 2025-11-20T06:07:42+00:00 + 2025-11-21T00:14:43+00:00 https://www.ioccc.org/faq.md - 2025-11-20T05:27:40+00:00 + 2025-11-21T00:14:46+00:00 https://www.ioccc.org/inc/index.html @@ -16818,19 +16818,19 @@ https://www.ioccc.org/news.html - 2025-11-20T06:14:39+00:00 + 2025-11-21T00:14:45+00:00 https://www.ioccc.org/news.md - 2025-11-20T06:10:33+00:00 + 2025-11-21T00:07:02+00:00 https://www.ioccc.org/next/guidelines.html - 2025-11-20T06:07:45+00:00 + 2025-11-21T00:14:45+00:00 https://www.ioccc.org/next/guidelines.md - 2025-11-20T06:03:36+00:00 + 2025-11-21T00:07:07+00:00 https://www.ioccc.org/next/index.html @@ -16870,19 +16870,19 @@ https://www.ioccc.org/next/rules.html - 2025-11-20T21:45:59+00:00 + 2025-11-21T00:14:47+00:00 https://www.ioccc.org/next/rules.md - 2025-11-20T21:45:51+00:00 + 2025-11-21T00:11:37+00:00 https://www.ioccc.org/next/submit.html - 2025-11-20T06:07:47+00:00 + 2025-11-21T00:14:47+00:00 https://www.ioccc.org/next/submit.md - 2025-11-20T06:04:29+00:00 + 2025-11-21T00:07:19+00:00 https://www.ioccc.org/next/try.alt.sh @@ -16902,11 +16902,11 @@ https://www.ioccc.org/quick-start.html - 2025-11-20T06:07:47+00:00 + 2025-11-21T00:14:48+00:00 https://www.ioccc.org/quick-start.md - 2025-11-20T06:06:04+00:00 + 2025-11-21T00:07:25+00:00 https://www.ioccc.org/README.html @@ -16938,11 +16938,11 @@ https://www.ioccc.org/status.html - 2025-11-20T21:47:23+00:00 + 2025-11-21T00:15:04+00:00 https://www.ioccc.org/status.json - 2025-11-20T06:15:00+00:00 + 2025-11-21T00:15:03+00:00 https://www.ioccc.org/status.md diff --git a/status.html b/status.html index 33ab655c2..9bb66d0d0 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-11-20T06:10:33+00:00", + "news_update" : "2025-11-21T00:07:02+00:00", "status_update" : "2025-08-01T19:38:14+00:00" } diff --git a/status.json b/status.json index bbf516359..915458738 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-11-20T06:10:33+00:00", + "news_update" : "2025-11-21T00:07:02+00:00", "status_update" : "2025-08-01T19:38:14+00:00" }