From 75387360d018b279d93dfcd5d7e7c219ad296839 Mon Sep 17 00:00:00 2001 From: Landon Curt Noll Date: Mon, 1 Dec 2025 02:27:06 -0800 Subject: [PATCH] improve rules & guidelines Added a number of change bars to the rules & guidelines. Recommend recommend that all markdown files in your submission observe [IOCCC markdown guidelines](../markdown.html). Made use of "_..._" consistent in the rules & guidelines. Updated some the fun guidelines. Performed some whitespace cleanup in the rules & guidelines. Changed IOCCC Rules to version **29.12 2025-12-01**. Changed IOCCC Guidelines to version **29.04 2025-12-01** Ran `make quick_www` to perform the above. --- next/guidelines.html | 271 ++++++++++++++++++++++++++++--------------- next/guidelines.md | 141 +++++++++++++++++----- next/rules.html | 223 ++++++++++++++++++++++------------- next/rules.md | 105 ++++++++++++++--- sitemap.xml | 8 +- 5 files changed, 524 insertions(+), 224 deletions(-) diff --git a/next/guidelines.html b/next/guidelines.html index 9834e0b99..26e4895e2 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -462,7 +462,7 @@ and remains unaltered. All other uses must receive prior permission in writing by contacting the judges.

Guidelines Version

-These IOCCC guidelines are version 29.03 2025-11-30. +These IOCCC guidelines are version 29.04 2025-12-01.

The | symbol indicates an change from the previous IOCCC. @@ -554,22 +554,30 @@ because of the iocccsize(1) algorithm.

Guidelines for Rule 3 - Register for the IOCCC

-

If a group of people work on a submission, then they should +

+If a group of people work on a submission, then they should register for the IOCCC -using either a group email address, or an email address for one of the authors.

-

Processing your registration is an activity overseen by an IOCCC judge. -Please be patient while an IOCCC judge processes your registration.

+using either a group email address, or an email address for one of the authors. +

+

+Processing your registration is an activity overseen by an IOCCC judge. +Please be patient while an IOCCC judge processes your registration. +

It can take a few days to process your registration and for the server to email your details, therefore make sure to allow yourself ample time to register and submit your entries; DO NOT WAIT UNTIL THE FINAL DAYS to register! The judges are NOT responsible for delayed or lost email or for those who wait until the last minute to try to register!

-

If after a few days you believe your registration hasn’t been process, then -contact the Judges.

-

After your UUID and initial password are emailed to you, you have +

+If after a few days you believe your registration hasn’t been process, then +contact the Judges. +

+

+After your UUID and initial password are emailed to you, you have up to fortnight (14 days) to login and change your temporary password. If you fail to change your temporary password by that deadline, then you’ll need to -contact the Judges by email to request a reset.

+contact the Judges by email to request a reset. +

See How to register for the IOCCC.

See Entering the IOCCC: the bare minimum you need to know.

Jump to: top

@@ -593,7 +601,9 @@ If you fail to change your temporary password by that deadline, then you’ll ne authors who skillfully employed various techniques to develop their code. If you do make use of such tools or services, then we ENCOURAGE you to describe how you used such tools in your remarks.md file.

-

In short: You created it, you own it, its an original work, or you have explicit permission to the work.

+

+In short: You created it, you own it, its an original work, or you have explicit permission to the work. +

See the FAQ on “May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?”.

Jump to: top

@@ -677,14 +687,18 @@ This is one of the reasons why the IOCCC rules and

Submissions will be judged in an environment that has no IDE. Any submission that fails to compile/build because it requires an IDE will be rejected.

-

We will use the GNU make(1) tool, your Makefile, as well as tools found in the +

+We will use the GNU make(1) tool, your Makefile, as well as tools found in the Single UNIX Specification environments, and commonly found on systems that reasonably conform to the Single UNIX Specification -in the building and compiling of your submission.

-

Your Makefile MUST be compatible with GNU make and we suggest you use +in the building and compiling of your submission. +

+

+Your Makefile MUST be compatible with GNU make and we suggest you use Makefile.example as a template, renamed as Makefile of -course.

+course. +

See the FAQ on “What are the detailed recommendations for a submission Makefile?”.

Jump to: top

@@ -695,13 +709,19 @@ FAQ on “What are the detailed recommend -

We STRONGLY recommend you do install the most recent release of +

+We STRONGLY recommend you do install the most recent release of mkiocccentry toolkit -because use of older versions of the mkiocccentry toolkit are HIGHLY LIKELY to be REJECTED!

-

If you submit your own JSON files (OTHER THAN .auth.json and -.info.json) then they do NOT have to be valid JSON.

-

However, if you do provide invalid JSON files, PLEASE -document and clearly explain this in your remarks.md file.

+because use of older versions of the mkiocccentry toolkit are HIGHLY LIKELY to be REJECTED! +

+

+If you submit your own JSON files (OTHER THAN .auth.json and +.info.json) then they do NOT have to be valid JSON. +

+

+However, if you do provide invalid JSON files, PLEASE +document and clearly explain this in your remarks.md file. +

An extra file is defined as a file that is not prog.c, prog.alt.c, try.sh, try.alt.sh, remarks.md, Makefile, .auth.json and .info.json: @@ -715,24 +735,40 @@ are considered free files, and do not count towards the Rule 17 - Use mkiocccentry limit of 31 extra files.

-

If you use an optional filename for something other than their intended use -in order to get past the file limit, we will consider that an abuse of rules.

-

The mkiocccentry generated tarball does NOT reveal who you are! For this -reason, the tarball MUST be a v7 format tarball.

-

You should NOT use a tarball as an extra file for a test-suite unless you +

+If you use an optional filename for something other than their intended use +in order to get past the file limit, we will consider that an abuse of rules. +

+

+The mkiocccentry generated tarball does NOT reveal who you are! For this +reason, the tarball MUST be a v7 format tarball. +

+

+You should NOT use a tarball as an extra file for a test-suite unless you have a very good reason for this: if you do include a tarball as an extra file, -then you MUST specify why in your remarks.md file.

-

If you DO include a tarball as an extra file, and the build process or the +then you MUST specify why in your remarks.md file. +

+

+If you DO include a tarball as an extra file, and the build process or the program extracts said tarball(s), the make clobber rule MUST remove the -extracted files.

-

Instead of including a large test-suite that requires a lot of files as part of +extracted files. +

+

+Instead of including a large test-suite that requires a lot of files as part of your submission, if your submission doesn’t require the test-suite to be available to run, then in your remarks.md you could include URL where such a test-suite may be downloaded from and how to use the test-suite to test your -submission, assuming it is not reveal who you are.

-

If you DO include a tarball then make sure it uses the v7 format. See the +submission, assuming it is not reveal who you are. +

+

+If you DO include a tarball then make sure it uses the v7 format. See the FAQ on “extra files” -for details on how to make a v7 tarball.

+for details on how to make a v7 tarball. +

+

+We recommend that all markdown files in your submission observe our +IOCCC markdown guidelines. +

See the FAQ on “What should I do with the try.sh and try.alt.sh scripts?”.

See the @@ -768,7 +804,9 @@ previously uploaded submission by rebuilding your submission with the mkiocccentry toolkit, and then re-uploading it to the same slot number on the submit server.

-

The official locale of the IOCCC is C.

+

+The official locale of the IOCCC is C. +

You are encouraged to examine the winners of previous contests.

Because rules change from year to year, some past winning entries may be rejected this year.

@@ -982,11 +1020,13 @@ is quite another to use many bytes of -Ds in order to try and squee source under the size limit.

Your source code, post-pre-processing, should not exceed the size of Microsoft Windows. :-)

-

You should try to restrict commands used in the build file to commands found in +

+You should try to restrict commands used in the build file to commands found in Single UNIX Specification environments and systems that conform to the Single UNIX -Specification.

+Specification. +

You may compile and use your own programs. If you do, try to build and execute from the current directory. This restriction is not a hard and absolute one. The intent is to ensure that the building of your @@ -1272,42 +1312,59 @@ without having to type in answers each time, you can use the -d or option to mkiocccentry for the tool to pseudo-randomly create answers for you. For example:

    mkiocccentry -d workdir topdir
-

Do NOT submit a tarball formed by mkiocccentry -d .. OR by -mkiocccentry -s seed .. OR by using the test UUID!

-

The mkiocccentry(1) tool creates an xz(1) compressed v7 format tarball using a tar(1) -command of the form:

+

+Do NOT submit a tarball formed by mkiocccentry -d ... OR by +mkiocccentry -s seed ... OR by using the test UUID! +

+

+The mkiocccentry(1) tool creates an xz(1) compressed v7 format tarball using a tar(1) +command of the form: +

    cd workdir/UUID-slot_num && tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num

In many places the mkiocccentry(1) tool will prompt you to verify what you input, allowing you to correct details as you go along.

-

Pressing the “enter key” at the mkiocccentry(1) tool prompts will allow you -to proceed with a default, however make sure the default is the CORRECT -answer.

+

+Pressing the “enter key” at the mkiocccentry(1) tool prompts will allow you +to proceed with a default, however make sure the default is the CORRECT answer. +

The mkiocccentry(1) tool will use code from iocccsize(1) which detects a number of issues (such as Rule 2 - Size restrictions) that you may ignore, however ignoring such issues comes with a SIGNIFICANT level of risk!

Once the tarball is packaged it will run txzchk(1), which will also run fnamchk(1), as part of its algorithm.

-

The use of mkiocccentry -W .... is highly discouraged as this may ignore -warnings about a problem that may cause your submission to be REJECTED!”

-

The same can be said of the -Y option, and to a lesser extent -y: the -y -is mostly for the test script and the -Y is like -y but even more -aggressive.

+

+The use of mkiocccentry -W ... is highly discouraged as this may ignore +warnings about a problem that may cause your submission to be REJECTED!” +

+

+The same can be said of mkiocccentry -Y ... , and to a lesser extent mkiocccentry -y ...: +the -y is mostly for the test script and the -Y is like -y but even more aggressive. +

If mkiocccentry encounters an error, the program will exit and the xz compressed tarball will NOT be generated: this is a feature, not a bug!

If you encounter a bug with the mkiocccentry toolkit PLEASE run the bug_report.sh script to help us out here!

-

While you don’t have to install the +

+While you don’t have to install the mkiocccentry toolkit, if you don’t, in order to run a tool outside the repo directory you will have to specify mkiocccentry(1) command line options to locate required tools -such as chkentry(1) (mkiocccentry -C chkentry ..), txzchk(1) (mkiocccentry -T txzchk ..), -and fnamchk(1) (mkiocccentry -F fnamchk ..).

-

The mkiocccentry(1) tool will ignore any filename or directory that begins with a period (.).

-

The mkiocccentry(1) tool will ignore all files that begin with COPYING, COPYRIGHT, and LICENSE, regardless -of filename case.

-

The mkiocccentry(1) tool will reject any of the following files if they are found directly under -the top level directory (topdir):

+such as chkentry(1) (mkiocccentry -C chkentry ...), txzchk(1) (mkiocccentry -T txzchk ...), +and fnamchk(1) (mkiocccentry -F fnamchk ...). +

+

+The mkiocccentry(1) tool will ignore any filename or directory that begins with a period (.). +

+

+The mkiocccentry(1) tool will ignore all files that begin with COPYING, COPYRIGHT, and LICENSE, regardless +of filename case. +

+

+The mkiocccentry(1) tool will reject any of the following files if they are found directly under +the top level directory (topdir): +

+

-

The files listed in the above list are allowed to exist in sub-directories: just NOT directly under -the top level directory (topdir).

-

The mkiocccentry(1) tool evaluates all filenames and directory names in a case +

+

+The files listed in the above list are allowed to exist in sub-directories: just NOT directly under +the top level directory (topdir). +

+

+The mkiocccentry(1) tool evaluates all filenames and directory names in a case independent way: thus FOO, Foo, and foo are considered the SAME file -even if your filesystem doesn’t do the same.

-

Having two or more filenames that differ only by case WILL lead to problems -because of the previous statement.

-

When the mkiocccentry(1) tool ignores a file, that file is NOT included as -part of your submission.

-

When the mkiocccentry(1) tool ignores a directory, that directory, +even if your filesystem doesn’t do the same. +

+

+Having two or more filenames that differ only by case WILL lead to problems +because of the previous statement. +

+

+When the mkiocccentry(1) tool ignores a file, that file is NOT included as +part of your submission. +

+

+When the mkiocccentry(1) tool ignores a directory, that directory, and everything under that directory is NOT included as part of -your submission.

-

The mkiocccentry(1) tool will ignore all symlinks.

-

Creating a directory directly under the top level directory (topdir) +your submission. +

+

+The mkiocccentry(1) tool will ignore all symlinks. +

+

+Creating a directory directly under the top level directory (topdir) that is normally considered to be a regular file, such as a directory named Makefile, prog.alt.c, prog.c, remarks.md, try.alt.sh, or try.sh is NOT a good idea and will likely cause the -mkiocccentry(1) tool to abort with a fatal error.

-

The required Makefile and remarks.md files may NOT be empty. This +mkiocccentry(1) tool to abort with a fatal error. +

+

+The required Makefile and remarks.md files may NOT be empty. This does not mean just 0 bytes but also that it MUST have content, and content that is relevant (e.g. a Makefile with just comments is NOT allowed). However, with the exception of the Makefile, the mkiocccentry(1) -tool will ONLY check file size.

-

If the optional file try.alt.sh, or try.sh exists and is an empty file, -the mkiocccentry(1) tool will abort with a fatal error.

-

If the mkiocccentry(1) tool encounters anything that isn’t a file, isn’t a +tool will ONLY check file size. +

+

+If the optional file try.alt.sh, or try.sh exists and is an empty file, +the mkiocccentry(1) tool will abort with a fatal error. +

+

+If the mkiocccentry(1) tool encounters anything that isn’t a file, isn’t a directory, and isn’t a symlink (which the tool ignores), the mkiocccentry(1) -tool to abort with a fatal error.

+tool to abort with a fatal error. +

See FAQ on “How do I report bugs in an mkiocccentry tool?”.

See Rule 11 - Legal rule abuse for warnings about ignoring mkiocccentry(1) tool warnings.

@@ -1365,12 +1443,17 @@ to be a functional UTC time. :-)

may be found on the “Curios!” about 2503.

The 2503 value for Rule 2b - Net Size is a decimal anagram of the number of the kernel disk pack of one of the judge’s BESM-6.

-

There may or may not be fewer than 2^7+1 reasons why these IOCCC -guidelines seem obfuscated.

-

Excessively “dotty” use of the chksubmit(1) or chkentry(1) commands suggests that -either you like silly things, or that you”RTFS” with some level of care.

+

+There may or may not be fewer than 2^7+1 reasons why these +IOCCC guidelines seem obfuscated. +

+

+Excessively “dotty” use of the chksubmit(1) or chkentry(1) commands suggests that +either you like silly things, or that you RTFS +with some level of care. +

Some people might question what actually constitutes a valid JSON file, given -the state of the “so-called” JSON spec.. :-)

+the state of the “so-called” JSON spec. :-)

We prefer programs that do not require a fish license: crayons and cat detector vans not withstanding.

@@ -1423,7 +1506,7 @@ unless you count this one, in which case there are 3. :-)

You very well might not be completely prohibited from failing to not partly misunderstand this particular guideline, but of course, we could not possibly -comment! :-) Nevertheless, you are neither prohibited, nor are you fully or partly +comment! Nevertheless, you are neither prohibited, nor are you fully or partly required to determine that this or the previous sentence is either false and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider to not do so, accordingly. Thank you very much (allegedly). @@ -1432,7 +1515,7 @@ to not do so, accordingly. Thank you very much (allegedly). Speaker of the House of Commons, or to the speaker of your national parliament should you have one.

-Please try to avoid this specific individual guideline, if it at all possible. +Please try to avoid this specific individual guideline, if it is at all possible.

We believe that Mark Twain’s quote:

@@ -1447,25 +1530,27 @@ This isn’t to say that another highly compact and obfuscated replacement of init(8) would not be an interesting submission.

-The IOCCC size tool -iocccsize -is not an original work, unless you are Anthony C -Howe, in which it is original! :-) +The +mkiocccentry toolkit +is not an original work, unless you one of the +several mkiocccentry toolkit contributors. +in which case it is original! :-) +Even so, most of the programs in the toolkit exceed the +Rule 2 - Size +so they wouldn’t quality anyway.

-The IOCCC tarball validator -txzchk is not -an original work, unless you are Cody Boone -Ferguson, in which case it is original! :-) -

-

If the IOCCC judges are feeling ornery we +If the IOCCC judges are feeling like it, they might choose to compile your program for running on an Arduino or a PDP-11. Heck, should we ever find an emulator of 60-bit CDC Cyber -CPU, we might just try your submission on that emulator as well :-)

+CPU, we might just try your submission on that emulator as well :-) +

Do not fear if you’re not 100% sure of the significance of 2305567963945518424753102147331756070 as it is not of prime importance: or is it? :-)

-

With respect to nested functions, try chkentry -b.

+

+With respect to nested functions, try chkentry -b. +

Jump to: top

diff --git a/next/guidelines.md b/next/guidelines.md index 1678e7508..d58a8feb9 100644 --- a/next/guidelines.md +++ b/next/guidelines.md @@ -13,7 +13,7 @@ writing by [contacting the judges](../contact.html). # Guidelines Version

-These IOCCC guidelines are version **29.03 2025-11-30**. +These IOCCC guidelines are version **29.04 2025-12-01**.

@@ -136,12 +136,16 @@ Jump to: [top](#)

+

If a group of people work on a submission, then they should [register for the IOCCC](../quick-start.html#enter) using either a group email address, or an email address for one of the authors. +

+

Processing your registration is an activity overseen by an IOCCC judge. Please be **patient** while an IOCCC judge processes your registration. +

It can take a few days to process your registration and for the server to email your details, therefore make sure to allow yourself ample time to @@ -149,13 +153,17 @@ register and submit your entries; **DO NOT WAIT UNTIL THE FINAL DAYS** to register! The judges are **NOT** responsible for delayed or lost email or for those who wait until the last minute to try to register! +

If after a few days you believe your registration hasn't been process, then [contact the Judges](../contact.html). +

+

After your UUID and initial password are emailed to you, you have up to fortnight (**14 days**) to login and change your temporary password. If you fail to change your temporary password by that deadline, then you'll need to [contact the Judges](../contact.html) by email to request a reset. +

See [How to register for the IOCCC](register.html). @@ -187,7 +195,9 @@ authors who skillfully employed various techniques to develop their code. If you do make use of such tools or services, then we **ENCOURAGE you to describe how you used such tools** in your `remarks.md` file. +

In short: You created it, you own it, its an original work, or you have explicit permission to the work. +

See the FAQ on "[May I use AI, LLM, Virtual coding assistants, or similar tools to write my submission?](../faq.html#ai)". @@ -299,15 +309,19 @@ Submissions will be judged in an environment that has no **IDE**. Any submission that fails to compile/build because it requires an **IDE** will be rejected. +

We will use the GNU `make(1)` tool, your `Makefile`, as well as tools found in the [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) environments, and commonly found on systems that reasonably conform to the [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) in the building and compiling of your submission. +

+

Your Makefile **MUST** be compatible with GNU `make` and we suggest you use [Makefile.example](Makefile.example) as a template, renamed as Makefile of course. +

See the FAQ on "[What are the detailed recommendations for a submission Makefile?](../faq.html#makefile_details)". @@ -325,15 +339,21 @@ Jump to: [top](#) +

We **STRONGLY** recommend you **do** install the most recent release of [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) because use of older versions of the mkiocccentry toolkit are **HIGHLY LIKELY** to be **REJECTED**! +

+

If you submit your own JSON files (**OTHER THAN** `.auth.json` and `.info.json`) then they do **NOT** have to be valid JSON. +

+

However, if you do provide invalid JSON files, **PLEASE** document and **clearly explain** this in your `remarks.md` file. +

An _extra file_ is defined as a file that is not `prog.c`, `prog.alt.c`, @@ -350,29 +370,46 @@ are considered _free files_, and do not count towards the limit of **31** _extra files_.

+

If you use an optional filename for something other than their intended use in order to get past the file limit, we will consider that an abuse of rules. +

+

The `mkiocccentry` generated tarball does **NOT** reveal who you are! For this reason, the tarball **MUST** be a **v7 format** tarball. +

+

You should NOT use a tarball as an _extra file_ for a test-suite unless you have a very good reason for this: if you do include a tarball as an _extra file_, then you **MUST** specify why in your `remarks.md` file. +

+

If you **DO** include a tarball as an _extra file_, and the build process or the program extracts said tarball(s), the make `clobber` rule **MUST** remove the extracted files. +

+

Instead of including a large test-suite that requires a lot of files as part of your submission, if your submission doesn't require the test-suite to be available to run, then in your `remarks.md` you could include URL where such a test-suite may be downloaded from and how to use the test-suite to test your submission, assuming it is not reveal who you are. +

+

If you **DO** include a tarball then make sure it uses the v7 format. See the FAQ on "[extra files](../faq.html#extra-files)" for details on how to make a v7 tarball. +

+ +

+We recommend that all markdown files in your submission observe our +[IOCCC markdown guidelines](../markdown.html). +

See the FAQ on "[What should I do with the `try.sh` and `try.alt.sh` scripts?](../faq.html#try_scripts)". @@ -428,7 +465,9 @@ previously uploaded submission by rebuilding your submission with the and then re-uploading it to **the same slot number** on the [submit server](https://submit.ioccc.org). +

The **official locale** of the **IOCCC** is **C**. +

You are **encouraged** to examine the [winners of previous contests](../years.html). @@ -713,11 +752,13 @@ source under the size limit. Your source code, post-pre-processing, should not exceed the size of [Microsoft Windows](https://en.wikipedia.org/wiki/Microsoft_Windows). :-) +

You should try to restrict commands used in the build file to commands found in [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) environments and systems that conform to the [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification). +

You may compile and use your own programs. If you do, try to build and execute from the current directory. This restriction is not a hard and @@ -1091,11 +1132,15 @@ For example: mkiocccentry -d workdir topdir ``` -Do **NOT** submit a tarball formed by `mkiocccentry -d ..` **OR** by -`mkiocccentry -s seed ..` **OR** by using the `test` UUID! +

+Do **NOT** submit a tarball formed by `mkiocccentry -d ...` **OR** by +`mkiocccentry -s seed ...` **OR** by using the `test` UUID! +

+

The `mkiocccentry(1)` tool creates an `xz(1)` compressed **v7 format** tarball using a `tar(1)` command of the form: +

``` cd workdir/UUID-slot_num && tar --format=v7 -cJf submit.UUID-slot_num.timestamp.txz UUID-slot_num @@ -1104,9 +1149,10 @@ command of the form: In many places the `mkiocccentry(1)` tool will prompt you to verify what you input, allowing you to correct details as you go along. +

Pressing the "_enter key_" at the `mkiocccentry(1)` tool prompts will allow you -to proceed with a default, however make sure the default is the **CORRECT** -answer. +to proceed with a default, however make sure the default is the **CORRECT** answer. +

The `mkiocccentry(1)` tool will use code from `iocccsize(1)` which detects a number of issues (such as [Rule 2 - Size restrictions](rules.html#rule2-size)) that you may ignore, @@ -1115,12 +1161,15 @@ however ignoring such issues **comes with a SIGNIFICANT level of risk!** Once the tarball is packaged it will run `txzchk(1)`, which will also run `fnamchk(1)`, as part of its algorithm. -The use of `mkiocccentry -W ....` is **highly discouraged** as this may ignore +

+The use of `mkiocccentry -W ...` is **highly discouraged** as this may ignore warnings about a problem that may cause your submission to be **REJECTED!**" +

-The same can be said of the `-Y` option, and to a lesser extent `-y`: the `-y` -is mostly for the test script and the `-Y` is like `-y` but even more -aggressive. +

+The same can be said of `mkiocccentry -Y ...` , and to a lesser extent `mkiocccentry -y ...`: +the `-y` is mostly for the test script and the `-Y` is like `-y` but even more aggressive. +

If `mkiocccentry` encounters an **error**, the program will exit and the xz compressed tarball **will NOT be generated**: this is a **feature, not a bug**! @@ -1129,21 +1178,30 @@ If you encounter a **bug** with the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) **PLEASE run the `bug_report.sh` script to help us out here!** +

While you don't have to install the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry), if you don't, in order to run a tool outside the repo directory you will have to specify `mkiocccentry(1)` command line options to locate required tools -such as `chkentry(1)` (`mkiocccentry -C chkentry ..`), `txzchk(1)` (`mkiocccentry -T txzchk ..`), -and `fnamchk(1)` (`mkiocccentry -F fnamchk ..`). +such as `chkentry(1)` (`mkiocccentry -C chkentry ...`), `txzchk(1)` (`mkiocccentry -T txzchk ...`), +and `fnamchk(1)` (`mkiocccentry -F fnamchk ...`). +

+

The `mkiocccentry(1)` tool will ignore any filename or directory that begins with a period (`.`). +

+

The `mkiocccentry(1)` tool will ignore all files that begin with `COPYING`, `COPYRIGHT`, and `LICENSE`, regardless of filename case. +

+

The `mkiocccentry(1)` tool will reject any of the following files if they are found directly under the top level directory (`topdir`): +

+

* README.md * index.html * prog @@ -1151,44 +1209,65 @@ the top level directory (`topdir`): * prog.alt.o * prog.orig.c * filenames matching the `[0-9][0-9][0-9][0-9]_*.tar.bz2` file glob +

+

The files listed in the above list are allowed to exist in sub-directories: just **NOT** directly under the top level directory (`topdir`). +

+

The `mkiocccentry(1)` tool evaluates all filenames and directory names in a case independent way: thus `FOO`, `Foo`, and `foo` are considered the **SAME** file even if your filesystem doesn't do the same. +

+

Having two or more filenames that differ only by case **WILL** lead to problems because of the previous statement. +

+

When the `mkiocccentry(1)` tool ignores a file, that file is **NOT** included as part of your submission. +

+

When the `mkiocccentry(1)` tool ignores a directory, that directory, and everything under that directory is **NOT** included as part of your submission. +

+

The `mkiocccentry(1)` tool will ignore all symlinks. +

+

Creating a directory directly under the top level directory (`topdir`) that is normally considered to be a regular file, such as a directory named `Makefile`, `prog.alt.c`, `prog.c`, `remarks.md`, `try.alt.sh`, or `try.sh` is **NOT** a good idea and will likely cause the `mkiocccentry(1)` tool to abort with a **fatal error**. +

+

The required `Makefile` and `remarks.md` files may **NOT** be empty. This does not mean just 0 bytes but also that it **MUST** have **content**, and content that is relevant (e.g. a Makefile with just comments is **NOT** allowed). However, with the exception of the `Makefile`, the `mkiocccentry(1)` tool will **ONLY** check file size. +

+

If the optional file `try.alt.sh`, or `try.sh` exists and is an empty file, the `mkiocccentry(1)` tool will abort with a **fatal error**. +

+

If the `mkiocccentry(1)` tool encounters anything that isn't a file, isn't a directory, and isn't a symlink (which the tool ignores), the `mkiocccentry(1)` tool to abort with a **fatal error**. +

See FAQ on "[How do I report bugs in an `mkiocccentry` tool?](../faq.html#mkiocccentry_bugs)". @@ -1223,14 +1302,19 @@ may be found on the ["Curios!" about 2503](https://t5k.org/curios/page.php/2503. The 2503 value for [Rule 2b - Net Size](rules.html#rule2b-net-size) is a decimal anagram of the number of the kernel disk pack of one of the judge's [BESM-6](https://en.wikipedia.org/wiki/BESM-6). -There may or may not be fewer than 2^7+1 reasons why these [IOCCC -guidelines](guidelines.html) seem obfuscated. +

+There may or may not be fewer than 2^7+1 reasons why these +[IOCCC guidelines](guidelines.html) seem obfuscated. +

+

Excessively "_dotty"_ use of the `chksubmit(1)` or `chkentry(1)` commands suggests that -either you like silly things, or that you "_RTFS_" with some level of care. +either you like silly things, or that you [RTFS](https://en.wikipedia.org/wiki/RTFM) +with some level of care. +

Some people might question what actually constitutes a valid JSON file, given -the state of the "_so-called_" JSON spec.. :-) +the state of the "_so-called_" JSON spec. :-) We prefer programs that do not require a fish license: crayons and cat detector vans not withstanding. @@ -1295,7 +1379,7 @@ unless you count this one, in which case there are 3. :-)

You very well might not be completely prohibited from failing to not partly misunderstand this particular _guideline_, but of course, we could not possibly -comment! :-) Nevertheless, you are neither prohibited, nor are you fully or partly +comment! Nevertheless, you are neither prohibited, nor are you fully or partly required to determine that this or the previous sentence is either false and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider to not do so, accordingly. Thank you very much (allegedly). @@ -1306,7 +1390,7 @@ Speaker of the House of Commons, or to the speaker of your national parliament should you have one.

-Please try to avoid this specific individual _guideline_, if it at all possible. +Please try to avoid this specific individual _guideline_, if it is at all possible.

We believe that Mark Twain's quote: @@ -1324,29 +1408,30 @@ replacement of `init(8)` would not be an interesting submission.

-The IOCCC size tool -[iocccsize](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c) -is not an original work, unless you are [Anthony C -Howe](../authors.html#Anthony_C_Howe), in which it is original! :-) +The +[mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) +is not an original work, unless you one of the +[several mkiocccentry toolkit contributors](https://github.com/ioccc-src/mkiocccentry/graphs/contributors). +in which case it is original! :-) +Even so, most of the programs in the toolkit exceed the +[Rule 2 - Size](rules.html#rule2-size) +so they wouldn't quality anyway.

-The IOCCC tarball validator -[txzchk](https://github.com/ioccc-src/mkiocccentry/blob/master/txzchk.c) is not -an original work, unless you are [Cody Boone -Ferguson](../authors.html#Cody_Boone_Ferguson), in which case it is original! :-) -

- -If the [IOCCC judges](../judges.html) are feeling ornery we +If the [IOCCC judges](../judges.html) are feeling like it, they might choose to compile your program for running on an Arduino or a PDP-11. Heck, should we ever find an emulator of 60-bit CDC Cyber CPU, we might just try your submission on that emulator as well :-) +

Do not fear if you're not 100% sure of the significance of `2305567963945518424753102147331756070` as it is not of prime importance: or is it? :-) +

With respect to [nested functions](#nested-functions), try `chkentry -b`. +

Jump to: [top](#) diff --git a/next/rules.html b/next/rules.html index d724aec19..ccc6d61fd 100644 --- a/next/rules.html +++ b/next/rules.html @@ -480,20 +480,36 @@ granted provided 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.11 2025-11-30.

+

These IOCCC Rules are version 29.12 2025-12-01.

+

+The | symbol indicates an change from the previous IOCCC. +

+

+Because the IOCCC29 rules was a substantial rewrite, only important changes from IOCCC28 have been marked. +

Reminder: be SURE to read the IOCCC guidelines.

Rule 0 - Dates

-

This IOCCC runs from 2025-12-03 20:25:12.045045 UTC to 2026-03-13 17:19:23.293137 UTC.

-

This contest will enter the pending state on 2025-12-03 20:25:12.045045 UTC, -allowing people to register for the IOCCC.

-

This contest will enter the open state on 2025-12-15 18:21:24.273033 UTC, -allowing people to upload submissions.

-

This contest will enter the judging state on 2026-03-13 17:19:23.293137 UTC, -when people will no longer be allowed to upload submissions.

+

+This IOCCC runs from 2025-12-03 20:25:12.045045 UTC to 2026-03-13 17:19:23.293137 UTC. +

+

+This contest will enter the pending state on 2025-12-03 20:25:12.045045 UTC, +allowing people to register for the IOCCC. +

+

+This contest will enter the open state on 2025-12-15 18:21:24.273033 UTC, +allowing people to upload submissions. +

+

+This contest will enter the judging state on 2026-03-13 17:19:23.293137 UTC, +when people will no longer be allowed to upload submissions. +

The above dates and times may change AT ANY TIME until the contest status is open.

-

The above timestamps are in “YYYY-MM-DD HH:MM:SS.micros UTC” format.

+

+The above timestamps are in “YYYY-MM-DD HH:MM:SS.micros UTC” format. +

See Entering the IOCCC: the bare minimum you need to know.

See FAQ on “How can I comment or make a suggestion on IOCCC rules, guidelines and tools?”.

@@ -502,7 +518,9 @@ FAQ on “How can I comment or make a suggestion

Rule 1 - C program

-

Your submission MUST be a C program.

+

+Your submission MUST be a C program. +

See the Guidelines for Rule 1 - C program.

@@ -560,56 +578,68 @@ temporary password, which you MUST change within 14 days.

Rule 4 - Required files

-

Your submission MUST include at least these files: Makefile, prog.c, +

+Your submission MUST include at least these files: Makefile, prog.c, remarks.md,.info.json, and .auth.json, the latter two of which are generated by mkiocccentry(1). See Rule 17 - -Use mkiocccentry.

-

At a minimum the following requirements apply. Additional requirements +Use mkiocccentry. +

+

+At a minimum the following requirements apply. Additional requirements may be imposed by mkiocccentry(1) updates that have yet to be listed -below.

-

NOTE: mkiocccentry(1) will reject any directory which has prohibited -files.

-

NOTE: by ‘top directory’ we mean the directory with prog.c, Makefile, -remarks.md and the mkiocccentry(1) generated files .auth.json and -.info.json and NOT the topdir arg to mkiocccentry(1).

- +a case insensitive filesystem.

+

+NOTE: by ‘top directory’ we mean the directory with prog.c, Makefile, +remarks.md and the mkiocccentry(1) generated files .auth.json and +.info.json and NOT the topdir arg to mkiocccentry(1). +

+

+NOTE: mkiocccentry(1) will reject any directory which has prohibited files. +

The remarks.md and Makefile are explained in more detail in the Guidelines.

See IOCCC markdown guidelines.

See Rule 17 - Use mkiocccentry.

@@ -635,8 +665,10 @@ directories and as long as the directory name or filename does NOT. (dot)).

The Makefile clobber target MUST restore your submission to its original form, including the removal of any created files and directories.

-

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

+

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

Rule 6 - Free Rule

@@ -652,12 +684,16 @@ original form, including the removal of any created files and directories.

Rule 7 - Original Work

-

You, the author(s), MUST own the contents of your submission, OR, IF you +

+You, the author(s), MUST own the contents of your submission, OR, IF you do NOT own the work, then you MUST have permission from the original owner(s) to its use. If you submit ANY content that is owned by others, you MUST detail that ownership, i.e., who owns what, and document the permission -you obtained from them in your remarks.md file.

-

You are permitted to use tools to write your code.

+you obtained from them in your remarks.md file. +

+

+You are permitted to use tools to write your code. +

See Rule 16 - Anonymous Judging, and Guidelines for Rule 7 - Original Work.

@@ -670,13 +706,15 @@ and registered and ONLY while the contest is open.

The submit server places a total size limit of 3999971 bytes PER submission.

-

Each account has ten (10.000) submission slots (0..9). Each submission +

+Each account has ten (10.000) submission slots (0..9). Each submission slot should be annotated by the server as to whether its was received, processed, malformed, etc. Please take note of any errors, rectify, and resubmit. In order to avoid potential packaging errors, it is highly recommended to use mkiocccentry(1), AND to check from time to time the status on the submit server, to see if any tests run by the server failed to -validate your submission.

+validate your submission. +

See Rule 3 - Registering for the IOCCC, Rule 15 - GNU Makefile, @@ -772,27 +810,32 @@ win, then you are encouraged to mention this in your remarks.md fil

Rule 15 - GNU Makefile

-

The Makefile MUST adhere to GNU Makefile syntax. It’s highly recommended +

+The Makefile MUST adhere to GNU Makefile syntax. It’s highly recommended that you copy the Makefile.example as a template, renaming it to Makefile. The primary target of the Makefile MUST be prog and the source file is prog.c. The C compiler and preprocessor MUST be -invoked using ${CC} and ${CPP} macros respectively.

+invoked using ${CC} and ${CPP} macros respectively. +

The clobber target MUST clean and restore the submission directory tree to its original state, such as removing temporary files or any modified data files. Don’t assume that git tool chain is installed, i.e. do NOT expect git clean -f to work. To be clear: do NOT use git to clean out files as this can cause problems in the winner repo!

-

The Makefile MUST use a syntax that is compatible with +

+The Makefile MUST use a syntax that is compatible with bash(1) and GNU make(1). You are encouraged to use SHELL= bash in your Makefile; please add a space between the = and -the value such as:

+the value such as: +

    SHELL= bash
-

Assume that commands commonly found in Single UNIX +

+Assume that commands commonly found in Single UNIX Specification environments and systems are available in the search $PATH. Avoid command options that aren’t part of SUS, such as -GNU long name options (such as --example) or extensions like grep -P.

-

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

+GNU long name options (such as --example) or extensions like grep -P. +

+

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

See Rule 4 - Required files.

See FAQ on “What are the detailed recommendations for a submission Makefile?”.

@@ -820,37 +863,55 @@ may result in the submission being disqualified
.

The files, directories, and paths MUST conform to the limits imposed by mkiocccentry(1), including but NOT limited, to their names, count, path length, directory tree depth, and permissions.

-

The submission tree may have at most 13 directories and maximum +

+The submission tree may have at most 13 directories and maximum directory depths of 4. The maximum number of files, excluding prog.c, remarks.md, Makefile, prog.alt.c, try.sh, try.alt.sh, .info.json and .auth.json is 31. And the maximum file-path -component is 38 and maximum path length is 60.

+component is 38 and maximum path length is 60. +

The submission MUST be a .txz compressed tarball (i.e., tarball compressed by xz(1)) as constructed by mkiocccentry(1), which MUST be within [1..3999971] bytes in size.

The tarball MUST be a v7 format tarball, and any supplementary tarballs you provide MUST also be v7 format.

The sum of all file lengths, after unpacking from the tarball, MUST be less than 27651*1024 (28314624) bytes.

-

The submission MUST pass all txzchk(1) checks, and the tarball filename -MUST pass all fnamchk(1) checks as well.

-

You may NOT submit a tarball created by the -d, -e OR by the -s seed options of mkiocccentry(1).

-

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

-

Submissions may NOT use a mkiocccentry +

+The submission MUST pass all txzchk(1) checks, and the tarball filename +MUST pass all fnamchk(1) checks as well. +

+

+You may NOT submit a tarball created by the -d, -e OR by the -s seed options of mkiocccentry(1). +

+

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

+

+Submissions may NOT use a mkiocccentry toolkit command line options that are labelled as “for TESTING purposes”, OR labelled as “for the use by -the IOCCC judges only”, in their respective man pages.

-

Submissions may ONLY use mkiocccentry +the IOCCC judges only”, in their respective man pages. +

+

+Submissions may ONLY use mkiocccentry toolkit command lines that confirm to the command’s -h “print help message”, again notwithstanding the options -for testing and the IOCCC judges.

-

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

-

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

-

Any submission that fails to pass the checks performed by the minimum required +for testing and the IOCCC judges. +

+

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

+

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

+

+Any submission that fails to pass the checks performed by the minimum required version of the mkiocccentry toolkit -WILL be rejected!

+WILL be rejected! +

See Rule 4 - Required files.

See the FAQ on “What is the mkiocccentry tool, how do I obtain it and how do I use it?”.

@@ -864,9 +925,11 @@ FAQ on “What is the mkiocccentry tool, how

Rule 19 - Prime

-

This 19th rule, while prime, is reserved for future abuse 😁. +

+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.

+below this rule in future contests. +

See Rule 6 - Free Rule.

Further Reading

Please read the Guidelines next for further commentary on these rules.

diff --git a/next/rules.md b/next/rules.md index 1fcb22c01..25d4add30 100644 --- a/next/rules.md +++ b/next/rules.md @@ -39,7 +39,15 @@ writing by [contacting the judges](../contact.html). ## Rules Version -These IOCCC Rules are version **29.11 2025-11-30**. +These IOCCC Rules are version **29.12 2025-12-01**. + +

+The | symbol indicates an **change** from the previous IOCCC. +

+ +

+Because the **IOCCC29** rules was a substantial rewrite, only **important changes** from **IOCCC28** have been marked. +

Reminder: be SURE to read the [IOCCC guidelines](guidelines.html). @@ -48,20 +56,30 @@ Reminder: be SURE to read the [IOCCC guidelines](guidelines.html). ## Rule 0 - Dates +

This IOCCC runs from `2025-12-03 20:25:12.045045 UTC` to `2026-03-13 17:19:23.293137 UTC`. +

+

This contest will enter the [pending state](../faq.html#pending) on `2025-12-03 20:25:12.045045 UTC`, allowing people to [register for the IOCCC](register.html). +

+

This contest will enter the [open state](../faq.html#open) on `2025-12-15 18:21:24.273033 UTC`, allowing people to [upload submissions](submit.html). +

+

This contest will enter the [judging state](../faq.html#judging) on `2026-03-13 17:19:23.293137 UTC`, when people will no longer be allowed to upload submissions. +

The above **dates and times may change _AT ANY TIME_** until the [contest status](../status.html) is **open**. +

The above timestamps are in "_YYYY-MM-DD HH:MM:SS.micros UTC_" format. +

See [Entering the IOCCC: the bare minimum you need to know](../quick-start.html#enter). @@ -75,7 +93,9 @@ FAQ on "[How can I comment or make a suggestion on IOCCC rules, guidelines and t +

Your submission **MUST** be a C program. +

See the [Guidelines for Rule 1 - C program](guidelines.html#guidelines-for-rule-1---c-program). @@ -159,70 +179,83 @@ See [Guidelines for Rule 3 - Register for the IOCCC](guidelines.html#guideline-3 +

Your submission **MUST** include at least these files: `Makefile`, `prog.c`, `remarks.md`,`.info.json`, and `.auth.json`, the latter two of which are generated by `mkiocccentry(1)`. See [Rule 17 - Use mkiocccentry](#rule17-mkiocccentry). +

+

At a **minimum** the following requirements apply. Additional requirements may be imposed by `mkiocccentry(1)` updates that have yet to be listed -below. - -**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited -files. - -**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`, -`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and -`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`. - +below: +

+|   * `.info.json` and `.auth.json` **MUST** be generated by `mkiocccenty(1)` when packing a submission. When `chksubmit(1)` is run on the submission directory **ALL** tests must pass and if there is **ANY** problem with these JSON files or if either is missing it will fail. See [Rule 17 - use mkiocccentry](#rule17-mkiocccentry). +|   * The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json` **MUST** have a file size **greater than 0** and **MUST** have content. Note that `mkiocccentry(1)` will check for file **size** but will **NOT** check for content. +|   * Your submitted source code **MUST** be called `prog.c`. When the `Makefile` compiles your code, the executable (if applicable) **MUST** be called `prog`. -The `Makefile` may compile your source code into other filenames as well, if you -want. +The `Makefile` may compile your source code into other filenames as well, if you want. +|   * As `prog`, `prog.alt`, `prog.alt.o`, `prog.o` may be created by your -`Makefile`, your submission **MUST NOT** include those files in your **top** -directory. +`Makefile`, your submission **MUST NOT** include those files in your **top** directory. +|   * Your submission may **NOT** have any file that starts with `COPYING`, `COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC. +|   * Your submission may **NOT** have in the **top** directory: `prog.orig.c`, `README.md` or `index.html` as those files are reserved by the IOCCC. +|   * Your submission may **NOT** have in the **top** directory any file that matches a file glob pattern form `[0-9][0-9][0-9][0-9]_*.tar.bz2` as those files are reserved by IOCCC. +|   * Your submission may **ONLY** contain files and directories. Other file types such as symlinks, sockets etc. are **NOT** allowed. +|   * **All** directories **MUST** have permission mode of **0755**. All files **MUST** have the file mode of **0444**, EXCEPT for files that end in `.sh` which must have a mode of **0555**. +|   * All files that end in `.md` **MUST** be in markdown format. -We recommend that markdown files observe our -[IOCCC markdown guidelines](../markdown.html). +|   * All filenames are treated as case insensitive. For example, `REMARKS.MD`, and `Remarks.md`, and `remarks.md` are considered by `mkiocccenty(1)` to be the **SAME** file. When preparing a submission on a case sensitive filesystem, ensure that the submission will work on a case insensitive filesystem. +

+**NOTE**: by 'top directory' we mean the directory with `prog.c`, `Makefile`, +`remarks.md` and the `mkiocccentry(1)` generated files `.auth.json` and +`.info.json` and **NOT** the `topdir` arg to `mkiocccentry(1)`. +

+ +

+**NOTE**: `mkiocccentry(1)` will reject any directory which has prohibited files. +

+ The `remarks.md` and `Makefile` are explained in more detail in the Guidelines. See [IOCCC markdown guidelines](../markdown.html). @@ -259,8 +292,10 @@ with a `.` (dot)). The `Makefile` `clobber` target **MUST** restore your submission to its original form, including the removal of any created files and directories. +

Your code should be able to run under a [SUS environment](https://pubs.opengroup.org/onlinepubs/9799919799/). +

@@ -285,13 +320,17 @@ See [Rule 19 - Prime](rules.html#rule-19---prime).
+

You, the author(s), **MUST** own the contents of your submission, **OR**, IF you do **NOT** own the work, then you **MUST** have permission from the original owner(s) to its use. If you submit **ANY** content that is owned by others, you **MUST** detail that ownership, i.e., who owns what, and document the permission you obtained from them in your `remarks.md` file. +

+

You are permitted to use tools to write your code. +

See [Rule 16 - Anonymous Judging](rules.html#rule16-anonymous-judging), and @@ -310,6 +349,7 @@ registered and **ONLY** while the contest is open. The submit server places a total size limit of **3999971** bytes **PER** submission. +

Each account has ten (**10.000**) submission slots (**0..9)**. Each submission slot should be annotated by the server as to whether its was received, processed, malformed, etc. Please take note of any errors, rectify, @@ -317,6 +357,7 @@ and resubmit. In order to avoid potential packaging errors, it is **highly recommended** to use `mkiocccentry(1)`, **AND** to check from time to time the status on the submit server, to see if any tests run by the server failed to validate your submission. +

See [Rule 3 - Registering for the IOCCC](rules.html#rule3-register), @@ -446,11 +487,13 @@ win, then you are encouraged to mention this in your `remarks.md` file as this +

The `Makefile` **MUST** adhere to GNU Makefile syntax. It's highly recommended that you copy the [Makefile.example](Makefile.example) as a template, renaming it to `Makefile`. The primary target of the `Makefile` **MUST** be `prog` and the source file is `prog.c`. The C compiler and preprocessor **MUST** be invoked using `${CC}` and `${CPP}` macros respectively. +

The `clobber` target **MUST** clean and restore the submission directory tree to its original state, such as removing temporary files or any modified data files. @@ -458,23 +501,27 @@ Don't assume that `git` tool chain is installed, i.e. do **NOT** expect `git clean -f` to work. To be clear: do **NOT** use `git` to clean out files as this can cause problems in the winner repo! +

The `Makefile` **MUST** use a syntax that is compatible with `bash(1)` and GNU `make(1)`. You are encouraged to use `SHELL= bash` in your `Makefile`; please add a space between the `=` and the value such as: +

``` SHELL= bash ``` + +

Assume that commands commonly found in [Single UNIX Specification](https://en.wikipedia.org/wiki/Single_UNIX_Specification) environments and systems are available in the search `$PATH`. Avoid command options that aren't part of [SUS](https://en.wikipedia.org/wiki/Single_UNIX_Specification), such as GNU long name options (such as `--example`) or extensions like `grep -P`. +

-Do **NOT** assume that `.` (current directory) is in the `$PATH` environment -variable. +Do **NOT** assume that `.` (current directory) is in the `$PATH` environment variable. See [Rule 4 - Required files](rules.html#rule4-required-files). @@ -514,11 +561,13 @@ The files, directories, and paths **MUST** conform to the limits imposed by `mkiocccentry(1)`, including but **NOT** limited, to their names, count, path length, directory tree depth, and permissions. +

The submission tree may have at most **13** directories and maximum directory depths of **4**. The maximum number of files, excluding `prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`, `try.alt.sh`, `.info.json` and `.auth.json` is **31**. And the maximum file-path component is **38** and maximum path length is **60**. +

The submission **MUST** be a `.txz` compressed tarball (i.e., tarball compressed by `xz(1)`) as constructed by `mkiocccentry(1)`, which **MUST** be within **[1..3999971]** bytes in size. @@ -529,34 +578,50 @@ you provide **MUST** also be **v7 format**. The sum of all file lengths, after unpacking from the tarball, **MUST** be less than `27651*1024` (**28314624**) bytes. +

The submission **MUST** pass all `txzchk(1)` checks, and the tarball filename **MUST** pass all `fnamchk(1)` checks as well. +

+

You may **NOT** submit a tarball created by the `-d`, `-e` **OR** by the `-s seed` options of `mkiocccentry(1)`. +

+

The unpacked submission directory **MUST** pass the checks performed by the minimum required version of `chksubmit(1)`. +

+

Submissions may **NOT** use a [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) command line options that are labelled as "**for TESTING purposes**", **OR** labelled as "**for the use by the IOCCC judges only**", in their respective man pages. +

+

Submissions may **ONLY** use [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) command lines that confirm to the command's `-h` "_print help message_", again notwithstanding the options for testing and the IOCCC judges. +

-The `prog.c` file **MUST** pass the [Rule 2 - Size](rules.html#rule2-size) +

+The `prog.c` file should pass the [Rule 2 - Size](rules.html#rule2-size) checks performed by `iocccsize(1)`. +

+

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

+

Any submission that fails to pass the checks performed by the minimum required version of the [mkiocccentry toolkit](https://github.com/ioccc-src/mkiocccentry) **WILL be rejected**! +

See [Rule 4 - Required files](rules.html#rule4-required-files). @@ -581,9 +646,11 @@ See [Rule 7 - Original Work](rules.html#rule-7---original-work). ## Rule 19 - Prime +

This 19th rule, while prime, is reserved for future abuse 😁. Additional rules, both humorous and otherwise, may be added below this rule in future contests. +

See [Rule 6 - Free Rule](rules.html#rule6-free-rule). diff --git a/sitemap.xml b/sitemap.xml index 968db06be..f1fcab2e4 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -16826,11 +16826,11 @@ https://www.ioccc.org/next/guidelines.html - 2025-12-01T09:13:14+00:00 + 2025-12-01T10:26:00+00:00 https://www.ioccc.org/next/guidelines.md - 2025-12-01T09:13:08+00:00 + 2025-12-01T10:20:36+00:00 https://www.ioccc.org/next/index.html @@ -16870,11 +16870,11 @@ https://www.ioccc.org/next/rules.html - 2025-12-01T09:04:25+00:00 + 2025-12-01T10:26:00+00:00 https://www.ioccc.org/next/rules.md - 2025-12-01T09:06:35+00:00 + 2025-12-01T10:21:01+00:00 https://www.ioccc.org/next/submit.html