diff --git a/next/guidelines.html b/next/guidelines.html index 4d62b6f5a..8d3d093e7 100644 --- a/next/guidelines.html +++ b/next/guidelines.html @@ -403,7 +403,7 @@ 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.

Guidelines version

-

| This guidelines file is version 2023-04-04-v28.

+

| This guidelines file is version 2024-06-11-v28.

IMPORTANT: Be SURE to read the IOCCC rules.

Change marks

| ← Lines that start with this symbol indicate a change from the previous IOCCC

@@ -419,24 +419,23 @@ Entries that violate the guidelines but remain within the rules are allowed. Even so, you are safer if you remain within the guidelines.

You should read the current IOCCC rules, prior to submitting entries. The rules are typically sent out with these guidelines.

-

WHAT’S NEW IN 2019/2020

-

| This IOCCC runs from 2019-Dec-26 06:01:41 UTC to 2020-Mar-15 06:26:49 UTC.

-

| The reason for the times of day are so that key IOCCC events occur during UTC -| “prime time”. Do you understand why we factored this into the rules and -| guidelines? :-)

+

WHAT’S NEW THIS IOCCC

+

| This IOCCC runs from 2024-MMM-DD HH:MM:SS UTC to YYYY-MMM-DD HH:MM:SS UTC. +** XXX - This date and time is TDB - XXX **.

+

| The reason for the times of day are so that key IOCCC events are calculated +for be a functional UTC time. :-)

Until the start of this IOCCC, these rules, guidelines and iocccsize.c (contained in the mkiocccentry toolkit) tool should be considered provisional BETA versions and may be adjusted AT ANY TIME.

-

| Even though the contest will start in 2019, because the contest will close -| in 2020, URLs, subject lines, and contest related email addresses use 2019.

The IOCCC submission URL is https://submit.ioccc.org/.

-

| The submit URL should be active on or slightly before 2020-Jan-15 12:21:37 UTC.

+

| The submit URL should be active on or slightly before 2024-MMM-DD HH:MM:SS UTC. +** XXX - This date and time is TDB - XXX **.

Please wait to submit your entries until after that time.

The official rules, guidelines and iocccsize.c (invoked by the mkiocccentry) tool will be available on the official IOCCC website on or slightly before start of this IOCCC. -Please check the IOCCC FAQ How to submit. +Please check the IOCCC FAQ How to submit. on or after the start of this IOCCC to be sure you are using the correct versions of these items before using the IOCCC entry submission URL.

HINTS AND SUGGESTIONS:

@@ -473,9 +472,9 @@ is important. For this reason, we often award ‘worst abuse of the rules’ to an entry that illustrates this point in an ironic way.

We do realize that there are holes in the rules, and invite entries to attempt to exploit them. We will award ‘worst abuse of the rules’ -and then plug the hole next year. Even so, we will attempt to use -| the smallest plug needed, if not smaller. Or, maybe not. :-)

-

| There may be less than 2^7-1 reasons why these guidelines seem obfuscated.

+and then plug the hole next year.

+

| Even so, we will attempt to use the smallest plug needed, if not smaller. Or, maybe not. :-)

+

| There may be less than 2^7+1 reasons why these guidelines seem obfuscated.

Check out your program and be sure that it works. We sometimes make the effort to debug an entry that has a slight problem, particularly in or near the final round. On the other hand, we have seen some @@ -499,14 +498,11 @@ misleading comments and variable names might be a good start.

When programs use VTxxx/ANSI sequences, they should NOT limited to a specific terminal brand. Those programs that work in a standard xterm are considered more portable.

-

| Rule 2 (the size rule) refers to the use of an IOCCC size tool. -| The source for this tool is found at:

-
|    https://www.ioccc.org/2020/iocccsize.c
-

To further clarify rule 2, we subdivided it into two parts, 2a and 2b. -| Your entry must satisfy BOTH the maximum size rule 2a AND your entry +

| Rule 2 (the size rule) refers to the use of the IOCCC size tool called iocccsize.

+

| See the mkiocccentry toolkit for how to compile and iocccsize.

+

| To further clarify rule 2, we subdivided it into two parts, 2a and 2b.

+

| Your entry must satisfy BOTH the maximum size rule 2a AND your entry must satisfy the IOCCC size tool rule 2b.

-

The IOCCC size tool should be compiled as:

-
    cc -pedantic -Wall -Wextra -std=c11 iocccsize.c -o iocccsize

This tool imposes a 2nd limit on C code size (rule 2b). To check your code against the 2nd limit of rule 2, use the -i command line option. For example:

@@ -524,27 +520,27 @@ ASCII formfeed, and ASCII carriage return.

In cases where the above summary and the algorithm implemented by the IOCCC size tool source code conflict, the algorithm implemented by the IOCCC size tool source code is preferred by the judges.

-

There are at least 2 other reasons for selecting 2053 as the 2nd limit -besides the fact that 2053 is the next prime > 2048. These reasons -may be searched for and discovered if you are “Curios!” about 2053. :-) -Moreover, 2053 was the number of the kernel disk pack of one of the -judge’s BESM-6.

+

| There are at least 2 other reasons for selecting 2503 as the 2nd limit +| besides the fact that 2053 is a prime. These reasons +| may be searched for and discovered if you are “Curios!” about 2503. :-) +| Moreover, 2053 was the number of the kernel disk pack of one of the +| judge’s BESM-6, and 2503 is a decimal anagram of 2053.

Take note that this secondary limit imposed by the IOCCC size tool obviates some of the need to #define C reserved words in an effort to get around the size limits of rule 2.

Yes Virginia, that is a hint!

-

| We applaud programs that do not issue warnings when compiled. -| To avoid warnings, you might be tempted to add various -Wno-foobar -| flags. Unfortunately such flags are NOT portable. Moreover, -| such flags are not consistent between different C compilers. -| Therefore we recommend that you consider one of several approaches:

+

We applaud programs that do not issue warnings when compiled. +To avoid warnings, you might be tempted to add various -Wno-foobar +flags. Unfortunately such flags are NOT portable. Moreover, +such flags are not consistent between different C compilers. +Therefore we recommend that you consider one of several approaches:

    -
  1. | Write code that does not generate compiler warnings
  2. -
  3. | Do not use flags that disable compiler warnings
  4. -
  5. | Provide instructions (such as in your Makefile) that -| uses appropriate disable compiler warnings flags for -| both clang and gcc
  6. -
  7. | Do something creative
  8. +
  9. Write code that does not generate compiler warnings
  10. +
  11. Do not use flags that disable compiler warnings
  12. +
  13. Provide instructions (such as in your Makefile) that +uses appropriate disable compiler warnings flags for +both clang and gcc
  14. +
  15. Do something creative

OUR LIKES AND DISLIKES:

Doing masses of #defines to obscure the source has become ‘old’. We @@ -600,10 +596,10 @@ flags that would make the program less portable.

One side effect of the above is that you cannot assume the use of nested functions such as:

    main() {
-|       void please_do_not_submit_this() {
-|           printf("The machine that goes BING!\n");
+|       void please_dont_submit_this() {
+|           printf("The machine that goes BING!!\n");
         }
-|       please_do_not_submit_this();
+|       please_dont_submit_this();
     }

This is because such nested functions often requires one to compile with a flag such as -fnested-functions that is not found on some compilers.

@@ -611,8 +607,8 @@ a flag such as -fnested-functions that is not found on some compile nested functions. Such constructions, while interesting and sometimes amusing, will have to wait until they required by a C standard that are actually implemented in commonly used C compilers. Sorry!

-

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

+

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

If your entry uses functions that have a variable number of arguments, be careful. Systems implement va_list as a wide variety of ways. Because of this, a number of operations using va_list are @@ -661,17 +657,17 @@ most POSIX P1003.1/P1003.2 like systems

  • are “blob-ier” than they need to be
  • are rather similar to previous winners :-(
  • are too similar to previous losers :-)
  • -
  • | that mandate the exclusive the use of an specific Integrated
  • -
  • | Development Environment (IDE)
  • +
  • that mandate the exclusive the use of an specific Integrated
  • +
  • Development Environment (IDE)
  • -

    | In order to encourage entry portability, we dislike entries that -| fail to build unless one is using an IDE. For example, do not -| mandate that one must use Microsoft Visual Studio to compile -| your entry. Nevertheless some of the better IDEs have command-line -| interfaces to their compilers, once one learns how to invoke a shell.

    -

    | The program must compile and link cleanly in a POSIX-like environment. -| Therefore do not assume the system has a windows.h include file:

    -
    |   #include <windows.h>        /* we dislike this include */
    +

    In order to encourage entry portability, we dislike entries that +fail to build unless one is using an IDE. For example, do not +mandate that one must use Microsoft Visual Studio to compile +your entry. Nevertheless some of the better IDEs have command-line +interfaces to their compilers, once one learns how to invoke a shell.

    +

    The program must compile and link cleanly in a POSIX-like environment. +Therefore do not assume the system has a windows.h include file:

    +
        #include <windows.h>        /* we dislike this include */

    Unless you are cramped for space, or unless you are entering the ‘best one liner’ category, we suggest that you format your program in a more creative way than simply forming excessively long lines.

    @@ -682,10 +678,9 @@ time of day during a leap-second where the value in seconds after the minute mark is 60.

    The “how to build” make process should not be used to try and get around the size limit. It is one thing to make use of a several -D’s -| on the compile line to help out, but it is quite another to use many +on the compile line to help out, but it is quite another to use many bytes of -D’s in order to try and squeeze the source under the size limit.

    -

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

    +

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

    The judges, as a group, have a history giving wide degree of latitude to reasonable entries. And recently they have had as much longitudinal variation as it is possible to have on Earth. :-)

    @@ -751,7 +746,7 @@ is NOT the smallest C source file that when compiled and run, dumps core:

    However, initialized char arrays are OK to write over. This is OK:

        char b[] = "Is this OK";
         b[9] = 'K';
    -

    | There are more than one typos in this very sentence.

    +

    | There are more than 1 typos in this very sentence.

    X client entries should be as portable as possible. Entries that adapt to a wide collection of environments will be favored. For example, don’t depend on a particular type or size of display. @@ -763,11 +758,12 @@ source program (one that actually works) to display audio/visual data.

    X client entries should avoid using X related libraries and software that is not in wide spread use.

    This is the only guideline that contains the word fizzbin. -| However, do you know how to play fizzbin? You do?!? (Except on Tuesday)

    +| However, do you know how to play fizzbin? +You do?!? (Except on Tuesday)

    We don’t like entries that use proprietary toolkits such as the Mtif, Xvew, or OpenL*ok toolkits, since not everyone has them. Use of an open source toolkit that is widely and freely available instead.

    -

    NOTE: | The previous guideline in this spot has been replaced by this guideline:

    +

    NOTE: The previous guideline in this spot has been replaced by this guideline:

    X client entries should not to depend on particular items on .Xdefaults. If you must do so, be sure to note the required lines in the program “remarks”. They should also not depend on any @@ -778,22 +774,18 @@ Happy Birthday song; music that some people believe is copyrighted the copyright system).

    While we recognize that UNIX is not a universal operating system, the contest does have a bias towards such systems. In an effort to expand -the scope of the contest, we phrase our bias in terms of POSIX P1003.1 -and P1003.2 standards. This will allow certain non-UNIX OS users to -submit entries. On the other hand, this is a guideline and not a rule. -We will not reject an entry based on some POSIX technicality.

    -

    When dealing with OS and application environments, we suggest that you -be reasonable with a nod towards vanilla UNIX-like systems. POSIX will -evolve but not as much as the contest.

    -

    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 required to determine that this or the previous sentence is either false -| and/or misleading. Therefore, it might be wise for you to not fail to consider -| to do so, accordingly. Thank you.

    +the scope of the contest, we phrase our bias to favor:

    +

    | Single UNIX Specification.

    +

    | You are well advised to submit entries that conform to the Single UNIX Specification Version 4.

    +

    | You very well might not be completely be prohibited from failing to not +| partly misunderstand this particular guideline, but of course, we could +| not possibly comment! :-) Nevertheless, you are neither prohibited, nor are +| you fully required to determine that this or the previous sentence is either false +| and/or perhaps misleading. Therefore, it might be wise for you to not fail to consider +| to do so, accordingly. Thank you very much.

    Any complaints about the above guideline could be addressed to the Speaker of the House of Commons, or to the speaker of your national -| parliament should you have one.

    +parliament should you have one.

    We like programs that: