-
diff --git a/Makefile b/Makefile
index 6f613420b..d17c2ae77 100644
--- a/Makefile
+++ b/Makefile
@@ -337,6 +337,8 @@ help:
@echo '# Rules for building specific web pages, a subset of rules mentioned above:'
@echo
@echo 'make bugs ;: generate bugs.html'
+ @echo 'make about ;: generate about.html'
+ @echo 'make contact ;: generate contact.html'
@echo 'make faq ;: generate faq.html'
@echo 'make guidelines ;: generate next/guidelines.hmtl'
@echo 'make markdown ;: generate markdown.hmtl'
@@ -618,6 +620,34 @@ test:
.PHONY: thanks bugs gen_next rules guidelines faq
+# generate about.html
+#
+# What is this all about? It is better that you do not decipher what this is all
+# about because if anyone ever does discover exactly what the IOCCC is for and
+# why it is here, it will instantly disappear and be replaced by something even
+# more bizarre and inexplicable!
+#
+about: ${GEN_TOP_HTML} about.md
+ @echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
+ @echo "You wonder what this is all about?"
+ @${GEN_TOP_HTML} about
+ @echo
+ @echo "You better not, because if you find out,"
+ @echo "it will instantly be replaced by something"
+ @echo "even more bizarre and inexplicable!"
+ @echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+
+# generate contact.html
+#
+contact: ${GEN_TOP_HTML} contact.md
+ @echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
+ @echo "You wish to make contact with the IOCCC Judges?"
+ @${GEN_TOP_HTML} contact
+ @echo
+ @echo "I hope you're used to confused aliens!"
+ @echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
+
+
# generate thanks-for-help.html
#
# So Long, and Thanks for All the Fish :-)
@@ -657,7 +687,10 @@ gen_next: ${GEN_TOP_HTML} next/README.md next/guidelines.md next/rules.md
markdown: ${GEN_TOP_HTML} markdown.md
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
- ${GEN_TOP_HTML} -v 1 markdown
+ @echo "You want to markdown?"
+ @${GEN_TOP_HTML} markdown
+ @echo
+ @echo "Careful that we don't mark down your submission!"
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
rules: ${GEN_TOP_HTML} next/rules.md
@@ -672,7 +705,10 @@ guidelines: ${GEN_TOP_HTML} next/guidelines.md
security: ${GEN_TOP_HTML} SECURITY.md
@echo '=-=-=-=-= IOCCC begin make $@ =-=-=-=-='
- ${GEN_TOP_HTML} -v 1 SECURITY
+ @echo "You wish to make IOCCC entries secure?"
+ @${GEN_TOP_HTML} SECURITY
+ @echo
+ @echo "We also didn't want Pluto demoted!"
@echo '=-=-=-=-= IOCCC complete make $@ =-=-=-=-='
diff --git a/README.html b/README.html
index 0db1968eb..0379a6f07 100644
--- a/README.html
+++ b/README.html
@@ -62,19 +62,19 @@
-
@@ -452,9 +465,9 @@ from the Bourne Shell source and the finger(1) command as distribut
If this is what could result from what some people claim is reasonable
programming practice, then to what depths might quality sink if people really
tried to write poor code?
-
I put that question to the USENET news groups net.lang.c and net.unix-wizards in
-the form of a contest. I selected a form similar to the contest
-(Bulwer-Lytton contest) that asks people to create the
+
I, Landon Curt Noll, put that question to the USENET news groups net.lang.c
+and net.unix-wizards in the form of a contest. I selected a form similar to the
+Bulwer-Lytton Contest that asks people to create the
worst opening line to a novel (that contest in turn was inspired by disgust over
a novel by Edward
Bulwer-Lytton that opened
diff --git a/README.md b/README.md
index 28f979fe6..ed12a4751 100644
--- a/README.md
+++ b/README.md
@@ -56,9 +56,9 @@ If this is what could result from what some people claim is reasonable
programming practice, then to what depths might quality sink if people really
tried to write poor code?
-I put that question to the USENET news groups net.lang.c and net.unix-wizards in
-the form of a contest. I selected a form similar to the contest
-([Bulwer-Lytton](https://www.bulwer-lytton.com) contest) that asks people to create the
+I, Landon Curt Noll, put that question to the USENET news groups `net.lang.c`
+and `net.unix-wizards` in the form of a contest. I selected a form similar to the
+[Bulwer-Lytton Contest](https://www.bulwer-lytton.com) that asks people to create the
worst opening line to a novel (that contest in turn was inspired by disgust over
[a novel](https://en.wikipedia.org/wiki/Paul_Clifford) by [Edward
Bulwer-Lytton](https://en.wikipedia.org/wiki/Edward_Bulwer-Lytton) that opened
diff --git a/SECURITY.html b/SECURITY.html
index ecb9c928d..883cc1d93 100644
--- a/SECURITY.html
+++ b/SECURITY.html
@@ -62,19 +62,19 @@
See the
+FAQ on “entering the IOCCC”
+for information on how to enter and submit to the IOCCC.
+
If you are still confused, consider the nature of
+the IOCCC Rules and of the IOCCC
+Guidelines. You will see a dose of the technical,
+mixed with “nerd humor” (or humour if you prefer 🤓).
+
If after all that you are still confused, sorry (tm Canada 😉).
+Consider this: While the IOCCC often attempts to be presentable,
+it is under no obligation to be wholly understandable. One might
+say that to truly understand the IOCCC is problematic. And if
+someone did manage to fully understand the IOCCC, then perhaps
+this modified quote from the The Hitchhiker’s Guide to the
+Galaxy
+may apply:
+
+
“There is a theory which states that if ever anyone discovers
+exactly what the IOCCC is for and why it is here, it will
+instantly disappear and be replaced by something even more bizarre
+and inexplicable.
+
There is another theory which states that this has
+already happened.” 😜
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/about.md b/about.md
new file mode 100644
index 000000000..be093ac68
--- /dev/null
+++ b/about.md
@@ -0,0 +1,49 @@
+# About the International Obfuscated C Code Contest (IOCCC)
+
+The IOCCC stands for the International Obfuscated C Code Contest.
+The IOCCC is a C programming contest.
+
+The goals of the IOCCC are:
+
+* To write the most Obscure/Obfuscated C program within the rules.
+* To show the importance of programming style, in an ironic way.
+* To stress C compilers with unusual code.
+* To illustrate some of the subtleties of the C language.
+* To provide a safe forum for poor C code. :-)
+* To have fun with C!
+
+See the
+FAQ on "[start of the IOCCC](faq.html#ioccc_start)"
+and the
+FAQ on "[history of the IOCCC website](faq.html#website_history)"
+for more information the background of the IOCCC.
+
+See the
+FAQ on "[entering the IOCCC](faq.html#submit)"
+for information on how to enter and submit to the IOCCC.
+
+If you are still confused, consider the nature of
+the [IOCCC Rules](next/rules.html) and of the [IOCCC
+Guidelines](next/guidelines.html). You will see a dose of the technical,
+mixed with "nerd humor" (or humour if you prefer 🤓).
+
+If after all that you are still confused, sorry (tm Canada 😉).
+Consider this: While the IOCCC often attempts to be presentable,
+it is under no obligation to be wholly understandable. One might
+say that to truly understand the IOCCC is problematic. And if
+someone did manage to fully understand the IOCCC, then perhaps
+this **modified** quote from the [The Hitchhiker's Guide to the
+Galaxy](https://en.wikipedia.org/wiki/The_Hitchhiker's_Guide_to_the_Galaxy)
+may apply:
+
+> "There is a theory which states that if ever anyone discovers
+exactly what the IOCCC is for and why it is here, it will
+instantly disappear and be replaced by something even more bizarre
+and inexplicable.
+>
+> There is another theory which states that this has
+[already happened](faq.html#great_fork_merge)." 😜
+
+Share and enjoy! ☺️
+
+Jump to: [top](#)
diff --git a/archive/historic/index.html b/archive/historic/index.html
index 9820ad260..178d49b96 100644
--- a/archive/historic/index.html
+++ b/archive/historic/index.html
@@ -62,19 +62,19 @@
There are a number of known problems with IOCCC entries: many of
which have to do with differences between today’s compiler environments
@@ -447,6 +461,7 @@ website if you have one, should you wish).
Otherwise if you wish to not worry about it we can do that to make sure the
format is consistent and clean.
If you’re the author of an entry that has been fixed and you find it against
your liking PLEASE let us know and we’ll be happy to undo any fixes even if
@@ -459,6 +474,7 @@ that should not have been. Also the definition of INABIAF was chang
of times. At one point some things were changed to a bug (a usability problem
for example) to be fixed but when looking at the index.html file it was noticed
it was documented so the fixes were undone at that point.
Make ABSOLUTE CERTAIN that you test the entry BEFOREANDAFTER your
changes! This includes output and the same input functionality! Sometimes it
@@ -481,6 +497,7 @@ would be wise to test it under all that you have access to. Otherwise we can do
that. Of course if the entry does not work under any platform and you fix it for
one that’s more than fine (and it has been done numerous times).
@@ -488,7 +505,9 @@ one that’s more than fine (and it has been done numerous times).
Entries below have one or more of the following STATUS values. Please see
the text below for more information. If an entry has more than one status it
means that either they all apply or they complement each other.
In general warnings should NOT be addressed. The only time they should be
CONSIDERED is when the entry does not work. However note that sometimes trying
@@ -518,18 +537,22 @@ was a bit more involved but with 1985/applin one need only add to t
-include unistd.h. So there are some cases where fixing warnings can fix a
problem but in general they should be ignored even if they’re annoying.
Hopefully with the example entries listed above you get the idea.
If you’re fixing an entry please make as FEW CHANGES AS POSSIBLE! This is to
make it as close to the original but allowing it to work. This might be less of
a problem when providing alternate versions but it might still be nice to have
it as close as possible to the original. See also below two points.
For one-liners PLEASE KEEP THE FILE ONE LINE IF AT ALL POSSIBLE! If it needs an
+
For one-liners PLEASE KEEP THE FILE ONE LINE IF AT ALL POSSIBLE! See the
+guidelines for what constitutes a one-liner. If it needs an
include you can update the Makefile CINCLUDE variable. For instance if it
needs stdio.h you could do -include stdio.h. Please leave a space after the
= in the Makefile. You may also have extra long lines if this seems useful to
make it a one-liner even if it kind of makes it longer than what the judges
consider a one-liner, at least within reason. Thank you!
If you make changes PLEASE TRY AND KEEP THE SOURCE CODE LAYOUT AS CLOSE TO THE
ORIGINAL AS POSSIBLE. This might not always be possible and if you have an
@@ -538,6 +561,7 @@ break code! Some have experienced this many times with vim so he tends to
disable all format options when formatting code. In vim you should be able to do
that with:
Entries with this status have one or more bugs that need to be fixed. Are you
@@ -546,28 +570,35 @@ able to fix it? We welcome your help!
where it might sometimes border on tampering with the program. And after all,
these are not meant to be maintainable or even good programming style! Use
careful judgement when fixing bugs please!
+
Entries with this status might or might not have a bug possibly depending on the
system. In these entries it’s unknown if there is a bug and sometimes it’s
because we do not remember and sometimes we don’t have the appropriate system or
environment to test and fix any possible problems.
Although these entries appear to work for one or more reasons we’re unsure if
they are completely functional. Can you confirm this? Please let us know so we
can fix it!
Entries with this status almost certainly have a bug or some other problem. The
issue or issues might depend on the system much like the above STATUS: possible
bug (possibly depending on system).
Please provide alternative code or fix for more compilers!
Some entries do not work with some compilers. A good example is
@@ -578,6 +609,7 @@ tampering this is okay though it’s probably not possible with the above
mentioned entry; otherwise it would be better to provide alternate code. In some
cases it might be better to provide alternate code anyway. Use a judgement call
here as best you can manage.
NOTE: it appears that most if not all of these have been fixed except perhaps
@@ -601,9 +633,8 @@ entries the fix was done with a new function, often called pain() :
NOTE for macOS users: please be aware that gcc under macOS is actually
clang despite the fact it might appear to be gcc: no symlink and both gcc and
clang exist but the gcc is clang which you’ll see if you run gcc --version.
-
A tip and some fix methods from Cody Boone
-Ferguson: in the older days args to main()
-not given a type were implicit ints but when they’re required to be char **
+
A tip and some fix methods: in the older days args to main()
+not given a type were implicit ints but when they’re required to be char **
this can cause a problem. In some cases it was possible to use a char * inside
main() (see 1989/tromp/tromp.c and
1986/holloway/holloway.c for two examples though
@@ -612,6 +643,7 @@ pointers to be used like an int and other times a cast was necessary. There are
various techniques to get these to compile. In some cases this introduced a
problem but typically if not always that problem exists with compilers that are
less strict.
Because some versions of clang complain about the number of args of main() and
@@ -622,6 +654,7 @@ impossible especially as it already claims having only one arg is not allowed.
At this time (04 Feb 2024) there is one entry known (it is possible that not all
were checked) that has this problem but it’s not as simple as the others to fix
without breaking it.
While such entries can compile, the resulting executable sometimes or always
@@ -630,6 +663,7 @@ crashes.
not mutually exclusive in some cases).
REMINDER: if you’re debugging a crash it will be very helpful to have -O0 -g
or if you can -ggdb3 when compiling as that will help with debugging symbols.
Please help us change use of gets() to fgets(), if possible.
Entries with this status use gets() which is unsafe because it has no limit on
@@ -667,12 +701,14 @@ during compiling, linking and/or runtime, sometimes causing confusing output (as
noted above).
Sometimes getline(3) will work but note that this function also stores the
newline just like fgets(3).
In these entries one file or multiple files are missing from the repo. In some
cases these files can be found on the IOCCC website but
in other cases they are entirely absent. In this case you’ll probably have to
contact the author (unless you are the author! :-) ).
This is as they sound: a link is either missing or it’s no longer valid. In many
@@ -680,6 +716,7 @@ cases the Internet Wayback Machine will be
useful but there happens to be numerous links that this is not helpful. In other
cases the URL has changed. Some of these have been discovered by the Internet
Wayback Machine with the orange status.
Entries with this status should NOT be touched (unless they have another status
@@ -710,17 +748,16 @@ known to segfault but are considered features.
says it can be fixed it can be. Otherwise it should not be.
Nonetheless we challenge you to fix these entries for educational/instructional
value and/or enjoyment but we kindly request that you DO NOT submit a pull
-request unless it’s a bug or (mis)feature we would like you to fix! If you can’t
-figure it out you’re invited to look at the git diffs, where there are some
-(some were fixed earlier on but rolled back as both Cody and Landon individually
-felt that the fix was tampering with the entry).
+request unless it’s a bug or (mis)feature we would like you to fix!
NOTE: in the case of gets() we’ve fixed some to avoid the warning of the
compiler, linker or even during runtime, depending on the system. In some cases
like 1990/tbr the fix actually prevents confusing output (though that
was not the only fix made in that entry).
@@ -764,53 +807,64 @@ least as best as can be determined: running the code on the binary itself does
produce a short[] that can compile in modern systems but it will not work.
Before the fix it would fail in some cases and it is possible that in some cases
it might still fail.
+
In linux it might happen that despite no error message or message about doing
so, the program drops a core file into the directory even though the entry works
and does not crash.
@@ -818,9 +872,11 @@ and does not crash.
details) with a number < 0 or larger than, say 20, it’s very likely that the
program will turn into an infinite loop trying to compile code and end up with
with syntax errors. As this was documented it is not a bug to be fixed.
+
@@ -828,9 +884,11 @@ with syntax errors. As this was documented it is not a bug to be fixed.
numbers with non-binary digits.
There are also other cases where this can happen for instance using unsupported
operators like /. To see what operators are supported check the source code.
@@ -838,15 +896,22 @@ operators like /. To see what operators are supported check the sou
it does not. We don’t believe this is because of the fix that lets some versions
be compiled with clang. An example invocation is:
It should be noted that in additional to rot13 names there is code that is the
-reverse of other code (also wrt names). See the source file and the index.html
-(in the author’s remarks) for more details.
+reverse of other code (also with respect to names). See the source file and the
+index.html (in the author’s remarks) for more details.
Fixing the (mis)feature is likely to be a very difficult challenge especially
-without breaking something else which is far more likely (see below in tips from
-Cody, who fixed it so the original would compile with clang and at least one
-generated version would compile with clang too, not compromising the other
-versions with gcc). You are welcome to try and fix it if you can!
+without breaking something else which is far more likely (see below tips from).
+You are welcome to try and fix it if you can but unless you can get all to
+compile with clangANDgcc, which seems unlikely (see below), this
+should not be touched further. Nonetheless you are welcome to try and fix it if
+you can.
+
Be aware, however, that even if you can get it to compile with both gcc and
+clang, different versions will have errors so that it’s not actually a fix.
+For instance it was fixed to work for both clang and gcc but when testing
+the fix in fedora linux it failed to even compile!
The reason this is crashing is that the array irk is being accessed way out of
bounds by the int gnat. For instance:
@@ -856,6 +921,7 @@ bounds by the int gnat. For instance:
23 &&gnat!({)Near,noon,/*krelc*/)<0&&(Near= - irk[-gnat--]-2)))&&main(ABBA,
(gdb) p gnat
$1 = -518733305
+
The real trouble is that the code is generated and in a complex way or rather
ways.
@@ -912,14 +978,17 @@ versions, reversed as well as ROT13 and reversed code, proved much more
problematic. It is now possible to compile (or maybe mostly compile) all versions with
clang but on another system and it had syntax errors.
@@ -981,10 +1050,12 @@ more time and resources to run as well. For instance:
18
12655721857
./baruch 37496.97s user 58.50s system 99% cpu 10:27:48.29 total
-
which seems to be an error message (one of the fixes was to make it not use
perror(3) - this fixed something else though it’s no longer known what except
that in macOS if errno is 0 it reports what looks like an error, rather than
@@ -1016,17 +1089,21 @@ path not having . (this and maybe some other things were fixed) and
wanting to accept reading from stdin (this in particular) even with the right
options used, seemingly, it has to write to disk the tarball which seems to
defeat the purpose. This would ideally be fixed.
@@ -1035,9 +1112,11 @@ fixed but one thing to note is that if you pass two zeroes to theorem_bkp<
fibonacci the program will enter an infinite loop, printing 0 over and over
again; another condition where this occurred was fixed but this one should not
be fixed.
+
@@ -1047,14 +1126,17 @@ original. The reason for the < 0 check is it floods the screen (yes this is
indeed inconsistent with some other entries but it is not worth the time spent,
maybe, to change it back, especially as it is annoying to have the screen
flooded).
+
@@ -1062,9 +1144,11 @@ flooded).
exist or because the default (whatever the source file was at compilation time)
file does not exist in the directory, this program will very likely crash.
Please don’t try and fix it as it’s not a bug and was actually documented as a
possibility. Can you find out how? There’s also a way to make it so that even
when you’re cheating it ends up winning! Can you figure that out as well?
@@ -1101,9 +1188,11 @@ read only mode which is another reason) with the %s specifier it wi
changed either even if it appears to be wrong. Notice too a curious thing: if
you did change it to fprintf(), even if you have the right number of args, you’d
have to remove the outer () pair.
+
@@ -1143,9 +1232,11 @@ for the != 48 is also required.
condition.
The alt version does fix the problem but it is not obfuscated and not like the
entry itself. Can you fix the actual entry? You are welcome to try and do so.
@@ -1157,6 +1248,7 @@ which can be described simply as: first m is set to *++pp is argv. Later m is set to point to h which was of size 256. gets(3)
is called as m = gets(m)) but trying to change it to use fgets(3) breaks the
program.
+
When you start the program everything starts to move over to the right side and
then ends. Yusuke Endoh pointed out that if you
click the mouse it takes it back towards the centre.
-
If you want to try and fix this, you are welcome to try.
@@ -1194,7 +1289,7 @@ properly. Nonetheless it will only work with gcc.
Unfortunately due to the way the entry works and the fact that other compilers
like clang have different warnings and errors this simply does not work with
them.
-
Some tips:
+
Some tips:
This entry relies on specific compiler warnings. With gcc it will look something
like:
[...]
@@ -1246,19 +1341,22 @@ than that. For instance this is what it looks like with clang:
As you might see the part under the warning: line is different.
The entry is supposed to show warnings and then print:
When your own checkmate is imminent it prints "Har har" but does not exit so
it can ‘rub your nose in defeat’, as the author puts it. You will have to exit
it yourself through ctrl-c or killing it in some other fashion.
@@ -1268,14 +1366,17 @@ at 80 columns. However due to the nature of the program if the terminal is <
in column width it will not display right. To see the number of columns in your
terminal try:
Also, when you shoot it will move you to that room so if you end up shooting
into a pit room you will end up dying even though you didn’t explicitly move
there.
@@ -1422,6 +1539,7 @@ compile and there’s a further problem in that fgets(3) retains th
whereas gets(3) does not). Nevertheless looking at these commands will be of
help to understand how it works, in case one wishes to try and fix it.
For the alternate versions the other functionality is unaffected.
The problem is getting the generated code to use fgets() (once it even
compiles which was easy to do) and also have the updated buffer size be the
@@ -1462,6 +1580,7 @@ variable.
provide the correct input in comments or possibly by rearranging some of the
code (this was actually required to make the generated code compile at all when
changing the buffer size, see below).
+
Getting this entry to use fgets(3) is easy but the problem is you’re supposed
to be able to feed the source to the program and the output of that will be
@@ -1475,14 +1594,17 @@ can cause a compilation error! Make sure that the output of:
./schnitzi < schnitzi.c
can be compiled and the output of that new program when fed itself can also be
compiled!
Important reminder and a note about the -1 value check for getc():
This code was fixed to not use -1 for the return value of getc(); this is
important because EOF is NOT guaranteed to be -1 but rather any negative
@@ -1497,16 +1619,16 @@ condition check that the return value is >= 0 does not cause a compilation er
and it functions correctly it will address the systems where EOF != -1 just as
if it checked for != EOF.
Since it works there is no need to fix this except for a challenge to yourself.
The index.html file refers to an alternate version of the code that is not
obfuscated but it is missing from the entry directory and the archive. Do you
have this file?
-
We would be grateful if you could provide it to us. If you can provide this
-file you might consider removing this status from this file as well but if not
-we’ll take care of it.
@@ -1519,14 +1641,17 @@ fix it without breaking something else?
However, the author stated that this is a feature so this should not be fixed.
See also the other bugs the author mentioned that,
as documented, are considered features.
@@ -1537,9 +1662,11 @@ prompt you to press return again. This was thought to be a bug but looking at
the code it can clearly be seen that if g - a is 0 then the message is
supposed to be printed again and one is supposed to press a key as at that point
it calls getchar() via the pointer m. So this is a feature not a bug.
+
The authors stated that they included a version that allows people with just K&R
compilers to use the program but this file is missing. Can you provide it?
-
We would appreciate anyone who has it or even just knows the name! Thank you.
STATUS: missing or dead link or links - please provide it or them
As well: the link which was http://www.uio.no/~jonth is no longer valid and
there’s no archive on the Internet Wayback Machine. Do you know of a proper URL?
We greatly appreciate your help here!
@@ -1673,9 +1815,11 @@ core is a popular result.)
from the rear) looks really odd. And it sometimes hangs. So just don’t fly
through objects. You’ll be happier.
+
@@ -1685,9 +1829,11 @@ for security in modern days!). Do you have a server with enough bandwid
would like to set it up? We’ll gladly thank you in the thanks
file file and link to the page as well! You’ll also have
IOCCC fame for reviving a pootifier! :-)
+
@@ -1697,9 +1843,11 @@ for security in modern days!). Do you have a server with enough bandwid
would like to set it up? We’ll gladly thank you in the thanks
file file and link to the page as well! You’ll also have
IOCCC fame for reviving a pootifier! :-)
+
@@ -1713,20 +1861,24 @@ be a problem including a segfault.
If you use the generated program and do not give enough numbers in input
something funny will happen, very possibly with different results per run. This
is in the index.html file as something to try and ponder.
The author states that in perl < 5.6.0 there is a bug with a core dump in what
they said is in Perl_sv_upgrade. As this is documented it is not considered a
@@ -1895,9 +2048,11 @@ crash this makes sense.
likely print different warnings when compiling. It was observed that with
Homebrew it does not report any warnings but with MacPorts it results in a total
of 92 warnings! Nonetheless neither works okay and both crash.
+
@@ -1913,23 +2068,28 @@ fix this.
try to fix the crashing of this code except to challenge yourself (if you think
that it’ll be worth your two second fix :-) ). If you do fix it please do not
make a pull request.
+
If DISPLAY is not set the program will very likely crash, do something strange
(or if you’re very unlucky your computer might halt and catch
fire! :-) ).
@@ -1946,10 +2106,13 @@ it will not modify the target executable (this part of the fix at least should
be correct).
Note also that if you don’t specify a file or you specify a non-32-bit ELF file
this program will very likely crash or do something strange like slaughter the
-elves of Imladris :-(
@@ -1974,6 +2137,7 @@ and the modification but it appears this also requires i386 linux; inde
looking at the code it hard codes paths that are i386 specific to linux.
Another point of interest is that the author provided unobfuscated versions
which might be of value to look at.
This is a good question. The reason is we believe it better to fix some obvious
problems: there were some bugs that would very possibly prevent it from working
@@ -1984,37 +2148,45 @@ won’t work there.
Also the supplementary program, which did not work at all, was fixed and it can
be run by itself for fun in modern systems, which was not possible before the
fixes there.
There is also a bug in part. During compilation you’re supposed to see some
animation but this does not seem to work with modern gcc versions. It appears
that version 2.95 works but maybe others do as well. Do you have a fix? We would
appreciate your help!
-
If you want to try and fix this, you are welcome to try.
This function uses gets(3) but it would be ideal if it used fgets(3). This
one is rather complicated but you are welcome to try and fix this if you wish.
STATUS: main() has only one arg - try and make it have 2 or 3
This program only has one arg to main(). However changing it to have 2 is not
as simple as it might seem. Doing this breaks things. If memory serves changing
@@ -2077,12 +2259,15 @@ does too. You might try running the try.sh script and redirect it t
first so that you can compare the output. Make sure to recreate the extra files
as described by the author if you do fix this. This might be looked at later if
nobody else takes up the challenge.
@@ -2115,26 +2300,31 @@ to be the case (though this was not tried as many times) if you start shooting
when the missiles come down. The fact you can shoot after it starts that
sleeping in a loop does suggest that it’s not stuck only showing those lines and
sleeping.
+
@@ -2255,22 +2450,27 @@ runs of the same symbol.
results (e.g., generation 1 starting from a string of 257 1s will be
calculated as 11); the remark from the previous paragraph applies here also.
+
If you specify more than three args the program might also crash or do something
strange. This might also happen if you specify excessively large board
dimensions. Try 100 100 100 for instance and see what happens!
@@ -2341,9 +2547,11 @@ first be set up in order to give http commands. This is not a bug but it’s wor
pointing out as it won’t work on as many websites as it used to including the
IOCCC website itself. The author noted that someone did
make a version that supports https but it is not known where this might be.
+
The string specified must be <= 42 characters and may only consist of the
characters in the regex a-z_A-Z0-9@.-. Breaking these constraints will end up
with possibly corrupt GIF files.
@@ -2413,19 +2630,24 @@ but you are welcome to try and fix it.
provide it as an additional alt version. Fixing this is very likely to be very
challenging and in some systems it will not be possible to fix but you are
welcome to try and fix it if you wish to!
+
@@ -2517,6 +2750,7 @@ for security in modern days!). Do you have a server with enough bandwid
would like to set it up? We’ll gladly thank you in the thanks
file file and link to the page as well! You’ll also have
IOCCC fame for reviving a pootifier! :-)
+
@@ -2560,6 +2799,7 @@ work. Some earlier debugging sessions are below as well as a resource from the
author as well as some resources on Apple’s website should anyone wish to take a
crack at it. A starting point might be in
richards.alt.c.
+
At first glance it appeared to be that it might be the function pointers or the
fact it is trying to execute code in memory (as noted above). The function
@@ -2576,7 +2816,7 @@ With address in linux:
@@ -2703,24 +2947,28 @@ A curious thing is in the mprotect() function: #if CONFIG_DYN
VM_PROT_TRUSTED set it might allow overriding the problem but this is
unconfirmed and it’s not known when CONFIG_DYNAMIC_CODE_SIGNING would be
defined.
-
The author stated that the program will crash if no argument is passed to the
program though we note that your computer might also halt and catch
fire :-)
@@ -2803,14 +3059,17 @@ program or if invalid arguments (e.g. file does not exist) or images of
mismatching sizes or unsupported pixel formats though we note that your computer
might also halt and catch
fire :-)
+
@@ -2828,9 +3087,11 @@ antialiasing interferes with color detection in “color” mode.
Only runs on little endian machines (since the BMP format is little endian,
and endianness conversion would make the source too large for IOCCC rule 2).
@@ -2904,14 +3173,17 @@ the socket (which obviously you do). The source is out the scope of this
document but the author does mention the well known (at least to those of us who
have experience with socket programming :-) ) fix. However as the author pointed
it out as a known limitation it is not a bug but a feature.
+
@@ -2929,17 +3201,20 @@ game you cannot go through walls but it’s not a bug.
collide with blocks and get stuck inside them. This is a KNOWN BUG. When your
player become bigger, stay away from blocks!
-
.. but since it’s documented it’s considered a feature, not a bug to fix.
The platform must implement the double type as IEEE754-compliant 64-bit
+
The platform must implement the double type as IEEE754-compliant 64-bit
floating point numbers. The 80-bit intermediate format used by x87 is
considered as an violation of this. The code should print an error message on
-such platforms.
-
The program must start with the CPU / FPU in round-to-nearest mode.
-
+such platforms.
+
The program must start with the CPU / FPU in round-to-nearest mode.
Soft requirements:
-
-
The compiler must respect volatile. The code is formatted to warn about
-that, though.
-
The printed result is only correct on little-endian machines. The program
+
The compiler must respect volatile. The code is formatted to warn about
+that, though.
+
The printed result is only correct on little-endian machines. The program
takes care to warn about this issue after printing an incorrect big-endian
-result. Error messages become garbled, though.
The test scripts do not seem to work properly with bash but this would be ideal
as not all systems have a compatible shell (they assume a POSIX compliant
@@ -3023,18 +3301,22 @@ shell). One, with bash, might see:
The same problem exists in the
prog.alt-test.sh, particularly
because it is the same thing as the other, just updated to use prog.alt.
@@ -3048,26 +3330,31 @@ of bits in a type is sizeof(typ) << 3, it will work correctly
int and so on. On such systems, it will only use 8 * sizeof(typ) bits per
place. It does not work when CHAR_BIT <= 7.
+
@@ -3084,9 +3371,11 @@ behavior. Some erroneous arguments cause segfaults (negative number of channels,
channel id outside valid range). One argument in particular causes an infinite
loop printing whitespace.
+
Some JSON files might cause the program to continue to run and seemingly
infinitely increase the size of the output file. This can happen if you try
fixing the syntax error in the generated ioccc.json file.
where [] is the cursor. When this happens if you hit enter (this is necessary
or else it’ll happen again) and then exit again (ctrl-e) and run prog again
it’ll be okay.
The author stated that if you make a typo it can happen that the boot loader can
crash and halt. If this is the case type ctrl-e to quit the emulator and try
@@ -3124,9 +3416,11 @@ referred to by the author but there was likely no typo involved.
Another issue noticed is that if you are using the saved mode you must type
sync prior to exiting the program or else the next time you run it the file
will not exist (or in the case of compiled code it won’t be executable).
@@ -3213,9 +3514,11 @@ noted in the de.sh/de.alt.sh scripts:
# if it's not impossible. Nevertheless, we do include the other characters
# whether or not they are in your view considered part of the alphabet for the
# reason that so many words have them.
+
This is NOT a bug and you’ll have to (at least at this time?) delete the files
+
This is NOT a bug and you’ll have to delete the files
manually. You shouldn’t have to worry about these being added to git: it seems
to ignore sockets (it did at least in macOS).
-
He provides the following tips on this situation. A simpler way to find sockets
-in the directory:
@@ -3293,9 +3606,11 @@ encountered this myself).
expect. Rather than duplicate the information we refer you to the author’s
remarks in the sections Syntax and
Caveats.
+
@@ -3314,18 +3629,22 @@ shells, you can view the hard limit with ulimit -Hs and set it with ulimit -s
view the hard limit with limit -h stacksize and set it with limit stacksize
65532 (replacing 65532 with the actual hard limit).
+
The author also stated that ‘if input contains CR-LF end of line sequences,
those CRs are silently dropped. In fact, most control codes are silently
ignored except line feeds (preserved) and tabs (expanded to 8 spaces).’
The author noted that the program only supports WAV files that have
exactly 16 bits per sample, but it allows any sample rate and any number of
audio channels.
We hope to run the IOCCCMOCK this year, 2024, and hopefully the next IOCCC, but
-for now we wish everyone a happy new year!
+
We plan to run IOCCC28 this year but the time has not been announced just yet.
Final words
We hope this document was of use to you in determining which entries are known
to have a problem, what entries are known to have features that are not bugs and
@@ -3437,6 +3770,7 @@ fixes] via a GitHub pull
request or otherwise, we
thank you as well for the help! We will happily add you to the
thanks file as well.
$ echo "7 P 6 d P P 8 p" | ./dlowe 1>foo 1>&1
@@ -2097,6 +2278,7 @@ on the stack at that point:
which might (?) suggest that the `+` operator is unimplemented.
+Jump to: [top](#)
### STATUS: INABIAF - please **DO NOT** fix
@@ -2153,12 +2335,15 @@ likely print different warnings when compiling. It was observed that with
Homebrew it does not report any warnings but with MacPorts it results in a total
of 92 warnings! Nonetheless neither works okay and both crash.
+Jump to: [top](#)
## 2000/primenum
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2000/primenum/primenum.c](%%REPO_URL%%/2000/primenum/primenum.c)
### Information: [2000/primenum/index.html](2000/primenum/index.html)
@@ -2182,11 +2367,14 @@ try to fix the crashing of this code except to challenge yourself (if you think
that it'll be worth your two second fix :-) ). If you do fix it please do not
make a pull request.
+Jump to: [top](#)
## 2000/rince
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2000/rince/rince.c](%%REPO_URL%%/2000/rince/rince.c)
### Information: [2000/rince/index.html](2000/rince/index.html)
@@ -2195,6 +2383,7 @@ If `DISPLAY` is not set the program will very likely crash, do something strange
(or if you're very unlucky your computer might [halt and catch
fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing))! :-) ).
+Jump to: [top](#)
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/anonymous/anonymous.c](%%REPO_URL%%/2001/anonymous/anonymous.c)
### Information: [2001/anonymous/index.html](2001/anonymous/index.html)
@@ -2226,13 +2418,17 @@ be correct).
Note also that if you don't specify a file or you specify a non-32-bit ELF file
this program will very likely crash or do something strange like slaughter the
-elves of Imladris :-(
+[Elves](https://www.glyphweb.com/arda/e/elves.html) of
+[Imladris](https://www.glyphweb.com/arda/i/imladris.php) :-(
+Jump to: [top](#)
## 2001/bellard
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/bellard/bellard.c](%%REPO_URL%%/2001/bellard/bellard.c)
### Information: [2001/bellard/index.html](2001/bellard/index.html)
@@ -2265,6 +2461,7 @@ looking at the code it hard codes paths that are i386 specific to linux.
Another point of interest is that the author provided unobfuscated versions
which might be of value to look at.
+Jump to: [top](#)
#### Aside: why were there changes made if INABIAF ?
@@ -2279,33 +2476,42 @@ Also the supplementary program, which did not work at all, was fixed and it can
be run by itself for fun in modern systems, which was not possible before the
fixes there.
+Jump to: [top](#)
## 2001/cheong
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/cheong/cheong.c](%%REPO_URL%%/2001/cheong/cheong.c)
### Information: [2001/cheong/index.html](2001/cheong/index.html)
This program will crash without an arg.
+Jump to: [top](#)
## 2001/dgbeards
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/dgbeards/dgbeards.c](%%REPO_URL%%/2001/dgbeards/dgbeards.c)
### Information: [2001/dgbeards/index.html](2001/dgbeards/index.html)
This program deliberately crashes if it loses (which is what it aims to do).
+Jump to: [top](#)
## 2001/herrmann1
+Jump to: [top](#)
+
### STATUS: missing files - please provide them
### Source code: [2001/herrmann1/herrmann1.c](%%REPO_URL%%/2001/herrmann1/herrmann1.c)
### Information: [2001/herrmann1/index.html](2001/herrmann1/index.html)
@@ -2313,6 +2519,7 @@ This program deliberately crashes if it loses (which is what it aims to do).
The author referred to the file `herrmann1.turing` but it does not exist not even
in the archive. Do you have a copy? Please provide it!
+Jump to: [top](#)
### STATUS: known bug - please help us fix
@@ -2321,13 +2528,14 @@ animation but this does not seem to work with modern gcc versions. It appears
that version 2.95 works but maybe others do as well. Do you have a fix? We would
appreciate your help!
-If you want to try and fix this, you are welcome to try.
-
+Jump to: [top](#)
## 2001/kev
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/kev/kev.c](%%REPO_URL%%/2001/kev/kev.c)
### Information: [2001/kev/index.html](2001/kev/index.html)
@@ -2350,11 +2558,14 @@ points.
Although it is independent of endianness both systems need the same character
set. In other words both have to be ASCII or EBCDIC - not one of each.
+Jump to: [top](#)
## 2001/ollinger
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/ollinger/ollinger.c](%%REPO_URL%%/2001/ollinger/ollinger.c)
### Information: [2001/ollinger/index.html](2001/ollinger/index.html)
@@ -2362,11 +2573,14 @@ set. In other words both have to be ASCII or EBCDIC - not one of each.
This program will very likely crash or do something unexpected if you do not
provide enough args.
+Jump to: [top](#)
## 2001/rosten
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/rosten/rosten.c](%%REPO_URL%%/2001/rosten/rosten.c)
@@ -2374,17 +2588,20 @@ provide enough args.
See list of bugs [here](2001/rosten/index.html#bugs).
+Jump to: [top](#)
### STATUS: missing files - please provide them
The author stated that there is a cat man page for this program in case one
wanted to install it as a tool but this is missing.
+Jump to: [top](#)
## 2001/schweikh
+Jump to: [top](#)
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2001/schweikh/schweikh.c](%%REPO_URL%%/2001/schweikh/schweikh.c)
@@ -2397,11 +2614,13 @@ There's also no way to escape meta characters.
See also the author's list of bugs [here](2001/schweikh/index.html#bugs).
+Jump to: [top](#)
## 2001/westley
+Jump to: [top](#)
### STATUS: uses gets() - change to fgets() if possible
### Source code: [2001/westley/westley.c](%%REPO_URL%%/2001/westley/westley.c)
@@ -2410,6 +2629,7 @@ See also the author's list of bugs [here](2001/schweikh/index.html#bugs).
This function uses `gets(3)` but it would be ideal if it used `fgets(3)`. This
one is rather complicated but you are welcome to try and fix this if you wish.
+Jump to: [top](#)
### STATUS: main() has only one arg - try and make it have 2 or 3
@@ -2424,17 +2644,20 @@ first so that you can compare the output. Make sure to recreate the extra files
as described by the author if you do fix this. This might be looked at later if
nobody else takes up the challenge.
+Jump to: [top](#)
### STATUS: missing files - please provide them
The author referred to a file `card.gif` but this file is missing. Do you have
it? Please provide it!
+Jump to: [top](#)
## 2001/williams
+Jump to: [top](#)
### STATUS: known bug - please help us fix
### Source code: [2001/williams/williams.c](%%REPO_URL%%/2001/williams/williams.c)
@@ -2495,6 +2718,7 @@ when the missiles come down. The fact you can shoot after it starts that
sleeping in a loop does suggest that it's not stuck only showing those lines and
sleeping.
+Jump to: [top](#)
@@ -2504,6 +2728,7 @@ sleeping.
There was no IOCCC in 2002.
+Jump to: [top](#)
@@ -2513,6 +2738,7 @@ There was no IOCCC in 2002.
There was no IOCCC in 2003.
+Jump to: [top](#)
@@ -2520,11 +2746,14 @@ There was no IOCCC in 2003.
+Jump to: [top](#)
## 2004/gavin
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2004/gavin/gavin.c](%%REPO_URL%%/2004/gavin/gavin.c)
### Information: [2004/gavin//index.html](2004/gavin//index.html)
@@ -2550,6 +2779,7 @@ When trying to link `gavin.o` to produce `sh`, the linker generates:
ld: symbol(s) not found for architecture arm64
```
+Jump to: [top](#)
#### Recent 2004/gavin mods:
@@ -2635,10 +2865,14 @@ Please also see [known features in the
index.html](2004/gavin/index.html#known-features) for things that are not bugs
but documented (mis)features.
+Jump to: [top](#)
+
## 2004/hibachi
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2004/hibachi/hibachi.c](%%REPO_URL%%/2004/hibachi/hibachi.c)
### Information: [2004/hibachi//index.html](2004/hibachi//index.html)
@@ -2648,6 +2882,7 @@ The author stated that:
> The links (text) web browser does not support RFC 2616 section 7.2.1 paragraph 3
sentence 2, and so fails to display responses from `hibachi`.
+Jump to: [top](#)
@@ -2655,6 +2890,8 @@ sentence 2, and so fails to display responses from `hibachi`.
## 2004/jdalbec
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2004/jdalbec/jdalbec.c](%%REPO_URL%%/2004/jdalbec/jdalbec.c)
### Information: [2004/jdalbec/index.html](2004/jdalbec/index.html)
@@ -2677,11 +2914,14 @@ runs of the same symbol.
results (e.g., generation 1 starting from a string of 257 `1`s will be
calculated as `11`); the remark from the previous paragraph applies here also.
+Jump to: [top](#)
## 2004/sds
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2004/sds/sds.c](%%REPO_URL%%/2004/sds/sds.c)
### Information: [2004/sds/index.html](2004/sds/index.html)
@@ -2689,6 +2929,7 @@ calculated as `11`); the remark from the previous paragraph applies here also.
The generated code will very likely segfault or do something not intended if not
given the right args. See the index.html file for the correct syntax.
+Jump to: [top](#)
@@ -2696,11 +2937,14 @@ given the right args. See the index.html file for the correct syntax.
+Jump to: [top](#)
## 2005/anon
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2005/anon/anon.c](%%REPO_URL%%/2005/anon/anon.c)
### Information: [2005/anon/index.html](2005/anon/index.html)
@@ -2715,11 +2959,14 @@ If you specify more than three args the program might also crash or do something
strange. This might also happen if you specify excessively large board
dimensions. Try `100 100 100` for instance and see what happens!
+Jump to: [top](#)
## 2005/giljade
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2005/giljade/giljade.c](%%REPO_URL%%/2005/giljade/giljade.c)
### Information: [2005/giljade/index.html](2005/giljade/index.html)
@@ -2732,11 +2979,15 @@ sizeof(FILE *)`.
This entry requires that `sed` and `make` are in your `$PATH`.
+Jump to: [top](#)
## 2005/mikeash
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2005/mikeash/mikeash.c](%%REPO_URL%%/2005/mikeash/mikeash.c)
### Information: [2005/mikeash/index.html](2005/mikeash/index.html)
@@ -2780,11 +3031,15 @@ nowhere near
> Basically, the LISP interpreter is good for some basic math operations, and
for running itself.
+Jump to: [top](#)
## 2005/mynx
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2005/mynx/mynx.c](%%REPO_URL%%/2005/mynx/mynx.c)
### Information: [2005/mynx/index.html](2005/mynx/index.html)
@@ -2798,11 +3053,15 @@ pointing out as it won't work on as many websites as it used to including the
[IOCCC website](https://www.ioccc.org) itself. The author noted that someone did
make a version that supports `https` but it is not known where this might be.
+Jump to: [top](#)
+
## 2005/sykes
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2005/sykes/sykes.c](%%REPO_URL%%/2005/sykes/sykes.c)
### Information: [2005/sykes/index.html](2005/sykes/index.html)
@@ -2832,6 +3091,7 @@ The
[emulation](https://en.wikipedia.org/wiki/Emulator) does not include the seldom
used decimal mode, or any of the "undocumented" instructions.
+Jump to: [top](#)
@@ -2839,11 +3099,15 @@ used decimal mode, or any of the "undocumented" instructions.
+Jump to: [top](#)
## 2006/birken
+
+Jump to: [top](#)
+
### STATUS: uses gets() - change to fgets() if possible
### Source code: [2006/birken/birken.c](%%REPO_URL%%/2006/birken/birken.c)
### Information: [2006/birken/index.html](2006/birken/index.html)
@@ -2858,11 +3122,15 @@ with at least `computer.tofu` input file:
#define gets(c) fgets((c),PI,stdin)&&(((c)[strlen((c))-1]='\0'),c!=NULL)
```
+Jump to: [top](#)
## 2006/borsanyi
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2006/borsanyi/borsanyi.c](%%REPO_URL%%/2006/borsanyi/borsanyi.c)
### Information: [2006/borsanyi/index.html](2006/borsanyi/index.html)
@@ -2871,22 +3139,29 @@ The string specified must be <= 42 characters and may only consist of the
characters in the regex `a-z_A-Z0-9@.-`. Breaking these constraints will end up
with possibly corrupt GIF files.
+Jump to: [top](#)
## 2006/hamre
+Jump to: [top](#)
+
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2006/hamre/hamre.c](%%REPO_URL%%/2006/hamre/hamre.c)
### Information: [2006/hamre/index.html](2006/hamre/index.html)
This program will likely crash or do something funny without an arg.
+Jump to: [top](#)
## 2006/monge
+Jump to: [top](#)
+
### STATUS: doesn't work with some platforms - please help us fix it
### Source code: [2006/monge/monge.c](%%REPO_URL%%/2006/monge/monge.c)
### Information: [2006/monge/index.html](2006/monge/index.html)
@@ -2903,6 +3178,7 @@ provide it as an additional alt version. Fixing this is very likely to be very
challenging and in some systems it will not be possible to fix but you are
welcome to try and fix it if you wish to!
+Jump to: [top](#)
@@ -2910,11 +3186,15 @@ welcome to try and fix it if you wish to!
Incorrect formulas will ungracefully crash the program.
+Jump to: [top](#)
## 2006/stewart
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2006/stewart/stewart.c](%%REPO_URL%%/2006/stewart/stewart.c)
### Information: [2006/stewart/index.html](2006/stewart/index.html)
@@ -2922,11 +3202,15 @@ Incorrect formulas will ungracefully crash the program.
This program will likely crash or do something funny if the file cannot be
opened. The number of args is however checked.
+Jump to: [top](#)
## 2006/sykes1
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2006/sykes1/sykes1.c](%%REPO_URL%%/2006/sykes1/sykes1.c)
### Information: [2006/sykes1/index.html](2006/sykes1/index.html)
@@ -2943,12 +3227,16 @@ result in the 19186 unique solutions.
> If you pick a number higher than 460464 (24x19186) the program will return
without outputting a solution. If you can wait that long.
+Jump to: [top](#)
## 2006/toledo2
+Jump to: [top](#)
+
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2006/toledo2/toledo2.c](%%REPO_URL%%/2006/toledo2/toledo2.c)
### Information: [2006/toledo2/index.html](2006/toledo2/index.html)
@@ -2969,6 +3257,7 @@ be called a bug :-)
You must type in caps (except in strings) and this program is indeed
case-sensitive.
+Jump to: [top](#)
@@ -2979,6 +3268,8 @@ case-sensitive.
There was no IOCCC in 2007.
+Jump to: [top](#)
+
# 2008
@@ -2988,6 +3279,8 @@ There was no IOCCC in 2007.
There was no IOCCC in 2008.
+Jump to: [top](#)
+
# 2009
@@ -2996,6 +3289,7 @@ There was no IOCCC in 2008.
There was no IOCCC in 2009.
+Jump to: [top](#)
@@ -3006,17 +3300,22 @@ There was no IOCCC in 2009.
There was no IOCCC in 2010.
+Jump to: [top](#)
+
# 2011
+Jump to: [top](#)
## 2011/borsanyi
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2011/borsanyi/borsanyi.c](%%REPO_URL%%/2011/borsanyi/borsanyi.c)
### Information: [2011/borsanyi/index.html](2011/borsanyi/index.html)
@@ -3039,11 +3338,15 @@ available stack space.
- Rounding errors might cause an omission in the highest bin. There might be
empty bins at the edges.
+Jump to: [top](#)
## 2011/dlowe
+
+Jump to: [top](#)
+
### STATUS: missing or dead link or links - please provide it or them
### Source code: [2011/dlowe/dlowe.c](%%REPO_URL%%/2011/dlowe/dlowe.c)
### Information: [2011/dlowe/index.html](2011/dlowe/index.html)
@@ -3056,6 +3359,7 @@ file](thanks-for-help.html) file and link to the page as well! You'll also have
IOCCC fame for reviving a pootifier! :-)
+Jump to: [top](#)
### STATUS: INABIAF - please **DO NOT** fix
@@ -3071,11 +3375,14 @@ tends to result in empty output.
* Will crash and die horribly if it runs out of memory.
+Jump to: [top](#)
## 2011/fredriksson
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2011/fredriksson/fredriksson.c](%%REPO_URL%%/2011/fredriksson/fredriksson.c)
### Information: [2011/fredriksson/index.html](2011/fredriksson/index.html)
@@ -3085,11 +3392,14 @@ list is rather long see [other
features](2011/fredriksson/index.html#other-features) and [limitations and
remarks](2011/fredriksson/index.html#limitations-and-remarks) instead.
+Jump to: [top](#)
## 2011/konno
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2011/konno/konno.c](%%REPO_URL%%/2011/konno/konno.c)
### Information: [2011/konno/index.html](2011/konno/index.html)
@@ -3097,6 +3407,7 @@ remarks](2011/fredriksson/index.html#limitations-and-remarks) instead.
This program will very likely crash or do something funny without an arg.
+Jump to: [top](#)
## 2011/richards
@@ -3120,6 +3431,7 @@ author as well as some resources on Apple's website should anyone wish to take a
crack at it. A starting point might be in
[richards.alt.c](%%REPO_URL%%/2011/richards/richards.alt.c).
+Jump to: [top](#)
### Debugging
@@ -3154,7 +3466,7 @@ so it would appear that
x[(u)c]
```
-(at least in my tired head?) is NULL. But why does it work then?
+is NULL. But why does it work then?
**NOTE**: `u` is `int`.
@@ -3285,20 +3597,26 @@ A warning of interest when compiling is:
This can be fixed easily enough however but it doesn't appear to matter in this
case.
+Jump to: [top](#)
### Testing fixes
It might be helpful to use the [try.alt.sh](%%REPO_URL%%/2011/richards/try.alt.sh) script to
test that it does not crash and functions properly.
+Jump to: [top](#)
### Resources
+Jump to: [top](#)
+
#### More from the author
The author has more about the entry at
.
+Jump to: [top](#)
+
#### Apple resources
[Porting Just-In-Time Compilers to Apple
@@ -3315,13 +3633,14 @@ CONFIG_DYNAMIC_CODE_SIGNING` and the protection variable has the
unconfirmed and it's not known when `CONFIG_DYNAMIC_CODE_SIGNING` would be
defined.
-Do you have a fix? We welcome it!
-
+Jump to: [top](#)
## 2011/vik
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2011/vik/vik.c](%%REPO_URL%%/2011/vik/vik.c)
### Information: [2011/vik/index.html](2011/vik/index.html)
@@ -3330,6 +3649,7 @@ The author stated that the program will crash if no argument is passed to the
program though we note that your computer might also [halt and catch
fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-)
+Jump to: [top](#)
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2012/blakely/blakely.c](%%REPO_URL%%/2012/blakely/blakely.c)
### Information: [2012/blakely/index.html](2012/blakely/index.html)
@@ -3351,11 +3674,14 @@ The author stated:
> If there is a division by zero, square-root of a negative number, or similar
operation, then the results are undefined.
+Jump to: [top](#)
## 2012/deckmyn
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2012/deckmyn/deckmyn.c](%%REPO_URL%%/2012/deckmyn/deckmyn.c)
### Information: [2012/deckmyn/index.html](2012/deckmyn/index.html)
@@ -3391,11 +3717,14 @@ musical element of a line is only 2 characters!
The manual referred to is [here](2012/deckmyn/deckmyn.html).
+Jump to: [top](#)
## 2012/dlowe
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2012/dlowe/dlowe.c](%%REPO_URL%%/2012/dlowe/dlowe.c)
### Information: [2012/dlowe/index.html](2012/dlowe/index.html)
@@ -3408,11 +3737,14 @@ The author stated:
`dead.d` and `sprites.d`).
* Cannot build or run without X11 (or an X11 compatibility layer).
+Jump to: [top](#)
## 2012/tromp
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2012/tromp/tromp.c](%%REPO_URL%%/2012/tromp/tromp.c)
### Information: [2012/tromp/index.html](2012/tromp/index.html)
@@ -3434,11 +3766,14 @@ interpreter to crash when looking into a null-pointer environment:
>
> will likely dump core.
+Jump to: [top](#)
## 2012/vik
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2012/vik/vik.c](%%REPO_URL%%/2012/vik/vik.c)
### Information: [2012/vik/index.html](2012/vik/index.html)
@@ -3449,6 +3784,7 @@ mismatching sizes or unsupported pixel formats though we note that your computer
might also [halt and catch
fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-)
+Jump to: [top](#)
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/cable2/cable2.c](%%REPO_URL%%/2013/cable2/cable2.c)
### Information: [2013/cable2/index.html](2013/cable2/index.html)
@@ -3478,11 +3818,15 @@ antialiasing interferes with color detection in "color" mode.
- Only runs on little endian machines (since the BMP format is little endian,
and endianness conversion would make the source too large for IOCCC rule 2).
+Jump to: [top](#)
## 2013/dlowe
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/dlowe/dlowe.c](%%REPO_URL%%/2013/dlowe/dlowe.c)
### Information: [2013/dlowe/index.html](2013/dlowe/index.html)
@@ -3502,11 +3846,14 @@ The author also stated:
* Only works if your terminal is UTF-8 and your font supports the 8 glyphs
used.
+Jump to: [top](#)
## 2013/endoh1
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/endoh1/endoh1.c](%%REPO_URL%%/2013/endoh1/endoh1.c)
### Information: [2013/endoh1/index.html](2013/endoh1/index.html)
@@ -3514,20 +3861,23 @@ The author also stated:
> This program supports only "Combinator-calculus style notation" of Lazy K.
"Unlambda style" and "Iota and Jot" style are not supported.
>
-
+>
> Also, it requires a space between identifiers. In short, use `(S K)` instead of
> `(SK)`, "\`sk", `**i*i*i*ii*i*i*ii`, or `11111100011100`.
>
> Huge memory may be required to compile the program (about 300 MB on my machine).
>
->In addition, there are some limitations (and workarounds) mentioned in the
+> In addition, there are some limitations (and workarounds) mentioned in the
[obfuscation section](2013/endoh1/index.html#obfuscation).
+Jump to: [top](#)
## 2013/endoh3
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/endoh3/endoh3.c](%%REPO_URL%%/2013/endoh3/endoh3.c)
### Information: [2013/endoh3/index.html](2013/endoh3/index.html)
@@ -3541,22 +3891,28 @@ From the author:
>
> A workaround is inserting a whitespace: `C2 E2`.
+Jump to: [top](#)
## 2013/endoh4
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/endoh4/endoh4.c](%%REPO_URL%%/2013/endoh4/endoh4.c)
### Information: [2013/endoh4/index.html](2013/endoh4/index.html)
Invalid input files will very likely crash the program.
+Jump to: [top](#)
## 2013/hou
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/hou/hou.c](%%REPO_URL%%/2013/hou/hou.c)
### Information: [2013/hou/index.html](2013/hou/index.html)
@@ -3564,11 +3920,14 @@ Invalid input files will very likely crash the program.
This program will not terminate on its own; you must kill `hou` (but not Qiming
Hou :-) ) yourself. This should not be fixed.
+Jump to: [top](#)
## 2013/mills
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2013/mills/mills.c](%%REPO_URL%%/2013/mills/mills.c)
### Information: [2013/mills/index.html](2013/mills/index.html)
@@ -3580,6 +3939,7 @@ document but the author does mention the well known (at least to those of us who
have experience with socket programming :-) ) fix. However as the author pointed
it out as a known limitation it is not a bug but a feature.
+Jump to: [top](#)
@@ -3587,11 +3947,14 @@ it out as a known limitation it is not a bug but a feature.
+Jump to: [top](#)
## 2014/maffiodo1
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2014/maffiodo1/prog.c](%%REPO_URL%%/2014/maffiodo1/prog.c)
### Information: [2014/maffiodo1/index.html](2014/maffiodo1/index.html)
@@ -3612,24 +3975,29 @@ On the other hand, the author also stated:
collide with blocks and get stuck inside them. This is a KNOWN BUG. When your
player become bigger, stay away from blocks!
-.. but since it's documented it's considered a feature, not a bug to fix.
-
+Jump to: [top](#)
## 2014/maffiodo2
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2014/maffiodo2/prog.c](%%REPO_URL%%/2014/maffiodo2/prog.c)
### Information: [2014/maffiodo2/index.html](2014/maffiodo2/index.html)
This program will very likely crash if no arg is given.
+Jump to: [top](#)
## 2014/vik
+Jump to: [top](#)
+
### STATUS: known bug - please help us fix
### Source code: [2014/vik/prog.c](%%REPO_URL%%/2014/vik/prog.c)
### Information: [2014/vik/index.html](2014/vik/index.html)
@@ -3679,6 +4047,7 @@ they will properly get:
IOCCC
```
+Jump to: [top](#)
@@ -3686,11 +4055,14 @@ they will properly get:
+Jump to: [top](#)
## 2015/duble
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2015/duble/prog.c](%%REPO_URL%%/2015/duble/prog.c)
### Information: [2015/duble/index.html](2015/duble/index.html)
@@ -3698,11 +4070,15 @@ they will properly get:
This program is known to, in some cases, segfault, and as the judges and the
author noted this, it should not be fixed.
+Jump to: [top](#)
## 2015/hou
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2015/hou/prog.c](%%REPO_URL%%/2015/hou/prog.c)
### Information: [2015/hou/index.html](2015/hou/index.html)
@@ -3711,27 +4087,30 @@ The author stated:
> Hard requirements:
>
-> * The platform must implement the `double` type as IEEE754-compliant 64-bit
+> The platform must implement the `double` type as IEEE754-compliant 64-bit
floating point numbers. The 80-bit intermediate format used by x87 is
considered as an violation of this. The code should print an error message on
such platforms.
>
-> * The program must start with the CPU / FPU in round-to-nearest mode.
+> The program must start with the CPU / FPU in round-to-nearest mode.
>
> Soft requirements:
>
-> * The compiler must respect `volatile`. The code is formatted to warn about
+> The compiler must respect `volatile`. The code is formatted to warn about
that, though.
>
-> * The printed result is only correct on little-endian machines. The program
+> The printed result is only correct on little-endian machines. The program
takes care to warn about this issue after printing an incorrect big-endian
result. Error messages become garbled, though.
+Jump to: [top](#)
## 2015/howe
+Jump to: [top](#)
+
### STATUS: known bug - please help us fix
The test scripts do not seem to work properly with bash but this would be ideal
@@ -3755,11 +4134,15 @@ The same problem exists in the
[prog.alt-test.sh](%%REPO_URL%%/2015/howe/prog.alt-test.sh), particularly
because it is the same thing as the other, just updated to use `prog.alt`.
+Jump to: [top](#)
## 2015/mills2
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2015/mills2/prog.c](%%REPO_URL%%/2015/mills2/prog.c)
### Information: [2015/mills2/index.html](2015/mills2/index.html)
@@ -3770,10 +4153,14 @@ is not compressed data it's likely to crash.
The program depends on little endian systems.
+Jump to: [top](#)
+
## 2015/schweikhardt
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2015/schweikhardt/prog.c](%%REPO_URL%%/2015/schweikhardt/prog.c)
### Information: [2015/schweikhardt/index.html](2015/schweikhardt/index.html)
@@ -3789,6 +4176,7 @@ of bits in a type is `sizeof(typ) << 3`, it will work correctly on 24-bit or
`int` and so on. On such systems, it will only use `8 * sizeof(typ)` bits per
place. It does not work when `CHAR_BIT <= 7`.
+Jump to: [top](#)
@@ -3796,8 +4184,10 @@ place. It does not work when `CHAR_BIT <= 7`.
+
There was no IOCCC in 2016.
+Jump to: [top](#)
@@ -3807,6 +4197,7 @@ There was no IOCCC in 2016.
There was no IOCCC in 2017.
+Jump to: [top](#)
@@ -3814,11 +4205,14 @@ There was no IOCCC in 2017.
+Jump to: [top](#)
## 2018/algmyr
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2018/algmyr/prog.c](%%REPO_URL%%/2018/algmyr/prog.c)
### Information: [2018/algmyr/index.html](2018/algmyr/index.html)
@@ -3836,12 +4230,16 @@ behavior. Some erroneous arguments cause segfaults (negative number of channels,
channel id outside valid range). One argument in particular causes an infinite
loop printing whitespace.
+Jump to: [top](#)
## 2018/hou
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2018/hou/prog.c](%%REPO_URL%%/2018/hou/prog.c)
### Information: [2018/hou/index.html](2018/hou/index.html)
@@ -3861,11 +4259,14 @@ Some JSON files might cause the program to continue to run and seemingly
infinitely increase the size of the output file. This can happen if you try
fixing the syntax error in the generated `ioccc.json` file.
+Jump to: [top](#)
## 2018/mills
+Jump to: [top](#)
+
### STATUS: known bug - please help us fix
### Source code: [2018/mills/prog.c](%%REPO_URL%%/2018/mills/prog.c)
### Information: [2018/mills/index.html](2018/mills/index.html)
@@ -3882,6 +4283,7 @@ where `[]` is the cursor. When this happens if you hit enter (this is necessary
or else it'll happen again) and then exit again (ctrl-e) and run `prog` again
it'll be okay.
+Jump to: [top](#)
### STATUS: INABIAF - please **DO NOT** fix
@@ -3900,11 +4302,14 @@ Another issue noticed is that if you are using the saved mode you must type
`sync` prior to exiting the program or else the next time you run it the file
will not exist (or in the case of compiled code it won't be executable).
+Jump to: [top](#)
## 2018/vokes
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2018/vokes/prog.c](%%REPO_URL%%/2018/vokes/prog.c)
### Information: [2018/vokes/index.html](2018/vokes/index.html)
@@ -3955,6 +4360,7 @@ The author wrote the following:
the values `48` through `57`, rather than using `isdigit(3)`. As noted above,
this program has nothing to do with a hand.
+Jump to: [top](#)
@@ -3962,11 +4368,14 @@ The author wrote the following:
+Jump to: [top](#)
## 2019/adamovsky
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/adamovsky/prog.c](%%REPO_URL%%/2019/adamovsky/prog.c)
### Information: [2019/adamovsky/index.html](2019/adamovsky/index.html)
@@ -3974,11 +4383,14 @@ The author wrote the following:
Certain input can crash this program. The file
[crash.unl](%%REPO_URL%%/2019/adamovsky/crash.unl) is an example file.
+Jump to: [top](#)
## 2019/burton
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/burton/prog.c](%%REPO_URL%%/2019/burton/prog.c)
### Information: [2019/burton/index.html](2019/burton/index.html)
@@ -3986,11 +4398,14 @@ Certain input can crash this program. The file
The author pointed out that some implementations of `wc(1)` show different
values but his implementation matches that of macOS and FreeBSD.
+Jump to: [top](#)
## 2019/ciura
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/ciura/prog.c](%%REPO_URL%%/2019/ciura/prog.c)
### Information: [2019/ciura/index.html](2019/ciura/index.html)
@@ -4024,10 +4439,14 @@ noted in the de.sh/de.alt.sh scripts:
# reason that so many words have them.
```
+Jump to: [top](#)
+
## 2019/dogon
+Jump to: [top](#)
+
### STATUS: uses gets() - change to fgets() if possible
### Source code: [2019/dogon/prog.c](%%REPO_URL%%/2019/dogon/prog.c)
### Information: [2019/dogon/index.html](2019/dogon/index.html)
@@ -4038,11 +4457,14 @@ See the
FAQ on "[gets and fgets](faq.html#gets)"
for more information on the change to `fgets(3)`.
+Jump to: [top](#)
## 2019/duble
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/duble/prog.c](%%REPO_URL%%/2019/duble/prog.c)
### Information: [2019/duble/index.html](2019/duble/index.html)
@@ -4067,12 +4489,13 @@ Ferguson](authors.html#Cody_Boone_Ferguson) showed us this:
[...]
```
-This is NOT a bug and you'll have to (at least at this time?) delete the files
+This is NOT a bug and you'll have to delete the files
manually. You shouldn't have to worry about these being added to git: it seems
to ignore sockets (it did at least in macOS).
-He provides the following tips on this situation. A simpler way to find sockets
-in the directory:
+Jump to: [top](#)
+
+Tips on this situation. A simpler way to find sockets in the directory:
```
file .*|grep socket|cut -f1 -d:
@@ -4086,11 +4509,14 @@ To delete them you can do:
though one might want to check that the program is not currently running. :-)
+Jump to: [top](#)
## 2019/endoh
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/endoh/prog.c](%%REPO_URL%%/2019/endoh/prog.c)
### Information: [2019/endoh/index.html](2019/endoh/index.html)
@@ -4098,11 +4524,14 @@ though one might want to check that the program is not currently running. :-)
As a backtrace quine this entry is **SUPPOSED to segfault** so this should not be
touched either.
+Jump to: [top](#)
## 2019/karns
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/karns/prog.c](%%REPO_URL%%/2019/karns/prog.c)
### Information: [2019/karns/index.html](2019/karns/index.html)
@@ -4124,11 +4553,17 @@ encountered this myself).
- The program could be obfuscated much further.
- The program contains some unused code and data.
+**NOTE**: the segfault problem might have been fixed when the optimiser was disabled
+(which was necessary as part of a bug fix).
+
+Jump to: [top](#)
## 2019/lynn
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/lynn/prog.c](%%REPO_URL%%/2019/lynn/prog.c)
### Information: [2019/lynn/index.html](2019/lynn/index.html)
@@ -4138,11 +4573,14 @@ expect. Rather than duplicate the information we refer you to the author's
remarks in the sections [Syntax](2019/lynn/index.html#syntax) and
[Caveats](2019/lynn/index.html#caveats).
+Jump to: [top](#)
## 2019/mills
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/mills/prog.c](%%REPO_URL%%/2019/mills/prog.c)
### Information: [2019/mills/index.html](2019/mills/index.html)
@@ -4163,10 +4601,14 @@ shells, you can view the hard limit with ulimit -Hs and set it with ulimit -s
view the hard limit with limit -h stacksize and set it with limit stacksize
65532 (replacing 65532 with the actual hard limit).
+Jump to: [top](#)
+
## 2019/poikola
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/poikola/prog.c](%%REPO_URL%%/2019/poikola/prog.c)
### Information: [2019/poikola/index.html](2019/poikola/index.html)
@@ -4176,10 +4618,14 @@ erroneously.
Also, the maximum file size is 1GB.
+Jump to: [top](#)
+
## 2019/yang
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2019/yang/prog.c](%%REPO_URL%%/2019/yang/prog.c)
### Information: [2019/yang/index.html](2019/yang/index.html)
@@ -4190,6 +4636,7 @@ The author also stated that 'if input contains CR-LF end of line sequences,
those `CR`s are silently dropped. In fact, most control codes are silently
ignored except line feeds (preserved) and tabs (expanded to 8 spaces).'
+Jump to: [top](#)
@@ -4199,11 +4646,15 @@ ignored except line feeds (preserved) and tabs (expanded to 8 spaces).'
+Jump to: [top](#)
## 2020/burton
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2020/burton/prog.c](%%REPO_URL%%/2020/burton/prog.c)
### Information: [2020/burton/index.html](2020/burton/index.html)
@@ -4215,11 +4666,15 @@ but it shouldn't be made into a pull request).
It will also show funny output with more than one arg. This should not be fixed
either. But can you figure out why this happens?
+Jump to: [top](#)
## 2020/carlini
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2020/carlini/prog.c](%%REPO_URL%%/2020/carlini/prog.c)
### Information: [2020/carlini/index.html](2020/carlini/index.html)
@@ -4236,11 +4691,15 @@ move.
If you have audible bells enabled the program will beep at every turn.
+Jump to: [top](#)
## 2020/ferguson1
+
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2020/ferguson1/prog.c](%%REPO_URL%%/2020/ferguson1/prog.c)
### Information: [2020/ferguson1/index.html](2020/ferguson1/index.html)
@@ -4250,11 +4709,14 @@ things that are misinterpreted as bugs. See the
[bugs.html](2020/ferguson1/bugs.html) and
[troubleshooting.html](2020/ferguson1/troubleshooting.html) files for details.
+Jump to: [top](#)
## 2020/giles
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2020/giles/prog.c](%%REPO_URL%%/2020/giles/prog.c)
### Information: [2020/giles/index.html](2020/giles/index.html)
@@ -4263,11 +4725,14 @@ The author noted that the program only supports WAV files that have
exactly 16 bits per sample, but it allows any sample rate and any number of
audio channels.
+Jump to: [top](#)
## 2020/otterness
+Jump to: [top](#)
+
### STATUS: INABIAF - please **DO NOT** fix
### Source code: [2020/otterness/prog.c](%%REPO_URL%%/2020/otterness/prog.c)
### Information: [2020/otterness/index.html](2020/otterness/index.html)
@@ -4291,6 +4756,7 @@ See also the [Program error
codes](2020/otterness/index.html#program-error-codes) written by the author
which lists some other conditions which should be considered features, not bugs.
+Jump to: [top](#)
@@ -4300,6 +4766,7 @@ which lists some other conditions which should be considered features, not bugs.
There was no IOCCC in 2021.
+Jump to: [top](#)
@@ -4309,6 +4776,8 @@ There was no IOCCC in 2021.
There was no IOCCC in 2022.
+Jump to: [top](#)
+
@@ -4318,6 +4787,8 @@ There was no IOCCC in 2022.
There was no IOCCC in 2023.
+Jump to: [top](#)
+
@@ -4325,9 +4796,7 @@ There was no IOCCC in 2023.
-We hope to run the IOCCCMOCK this year, 2024, and hopefully the next IOCCC, but
-for now we wish everyone a happy new year!
-
+We plan to run IOCCC28 this year but the time has not been announced just yet.
# Final words
@@ -4339,6 +4808,7 @@ request](https://github.com/ioccc-src/winner/pulls) or otherwise, we
thank you as well for the help! We will happily add you to the
[thanks](thanks-for-help.html) file as well.
+Jump to: [top](#)
diff --git a/contact.html b/contact.html
index 6bc5dd2e6..32d82155e 100644
--- a/contact.html
+++ b/contact.html
@@ -62,19 +62,19 @@
If you must contact the IOCCC judges by email, then please send email to:
diff --git a/contact.md b/contact.md
index 1043da32b..555f0396c 100644
--- a/contact.md
+++ b/contact.md
@@ -48,6 +48,8 @@ and suggestion in the relevant places.
See the above FAQ entries for more details.
+Jump to: [top](#)
+
# Try Mastodon
@@ -61,6 +63,7 @@ See the
FAQ on "[Mastodon](faq.html#try_mastodon)"
for more information on Mastodon.
+Jump to: [top](#)
# If you really need to send email the IOCCC judges
diff --git a/faq.html b/faq.html
index d44a4c1c2..bc5356acc 100644
--- a/faq.html
+++ b/faq.html
@@ -62,19 +62,19 @@
Q 1.2: What are the IOCCC best practices for using markdown?
+
Q 1.2: What is markdown and how does the IOCCC use it?
The IOCCC makes extensive use of markdown.
@@ -943,8 +956,9 @@ submit remarks about entry in markdown format. Every
as the basis for forming the index.html web page for that entry.
All generated HTML pages on the Official IOCCC website
start with some markdown content.
-
IMPORTANT: Please read the IOCCC markdown best practices guide
-as it lists things you should not use in markdown files.
+
IMPORTANT: Please read the IOCCC markdown guidelines
+as it lists things you should NOT use in markdown files and things you
+should do as well.
See the
-FAQ on “entering the IOCCC”
-for information on how to enter and submit to the IOCCC.
-
If you are still confused, consider the nature of
-the IOCCC rules and of the IOCCC
-guidelines. You will see a dose of the technical,
-mixed with “nerd humor” (or humour if you prefer 🤓).
-
If after all that you are still confused, sorry (tm Canada 😉).
-Consider this: While the IOCCC often attempts to be presentable,
-it is under no obligation to be wholly understandable. One might
-say that to truly understand the IOCCC is problematic. And if
-someone did manage to fully understand the IOCCC, then perhaps
-this modified quote from the The Hitchhiker’s Guide to the
-Galaxy
-may apply:
-
-
“There is a theory which states that if ever anyone discovers
-exactly what the IOCCC is for and why it is here, it will
-instantly disappear and be replaced by something even more bizarre
-and inexplicable.
-
There is another theory which states that this has
-already happened.” 😜
The IOCCC makes extensive use of markdown.
For example, when submitting to the IOCCC
@@ -431,6 +456,7 @@ Some of these relate to use of markdown directly and others relate to injecting
into the markdown file.
In particular there are things we ask people to please NOT use in
markdown files for the IOCCC:
@@ -553,6 +585,7 @@ not C code or any other non-markdown content:
NOTE: Again, you are perfectly welcome to use ASCII tab characters in
your C code and other non-markdown files. We simply ask that you do NOT use any
ASCII tab characters in markdown files.
Please use HTML comments to specify a language for a code block
@@ -592,6 +626,7 @@ markdown code block starting fence by a space:
and THEN an opening<!--- (a “<”, a “!” and then three “-”s), and
THEN the language and FINALLY a closing “-->” (two “-”s
followed by a “>”).
+
@@ -675,6 +712,7 @@ HTML from the markdown image construct, the resulting HTML does NOTwidth and height information so browsers have to slow down
on rendering text around the image until it can internally determine
the image size.
+
Please do NOT put a LITERAL “(” or “)” in markdown link titles
@@ -704,6 +743,7 @@ effect in standard HTML 5 and interacts badly with unquoted attribute values. [ls(1)](https://example.com/ls-man-page.1) <=== no thank you
+These [IOCCC markdown guidelines](markdown.html) are version **28.0 2024-10-25**.
+
+
+**IMPORTANT**: Be sure to read the [IOCCC rules](next/rules.html) and [IOCCC
+guidelines](next/guidelines.html).
+
+
+Jump to: [top](#)
+
+
+## IOCCC Markdown guidelines
The IOCCC makes extensive use of [markdown](https://daringfireball.net/projects/markdown/).
@@ -23,6 +41,7 @@ into the markdown file.
In particular there are things we ask people to please **NOT** use in
markdown files for the IOCCC:
+Jump to: [top](#)
@@ -73,6 +92,7 @@ id="string">...
` element, as in:
While some browsers will still recognize the HTML construct `...`, it is possible **they MIGHT NOT** in the future.
+Jump to: [top](#)
## If you can, it is PREFERABLE to use markdown links rather than `...`
@@ -94,6 +114,7 @@ Instead of:
[markdown links](#links) are easier and preferred
```
+Jump to: [top](#)
@@ -115,6 +136,7 @@ Use instead:
...
```
+Jump to: [top](#)
@@ -134,6 +156,7 @@ Use instead:
...
```
+Jump to: [top](#)
@@ -162,6 +185,7 @@ We recommend using the inline markdown code block method instead:
Using the `inline markdown code block` is easier and is **preferred**.
```
+Jump to: [top](#)
@@ -204,6 +228,7 @@ Moreover:
Please do **NOT** indent using ASCII tab characters in markdown files.
+Jump to: [top](#)
@@ -248,6 +273,8 @@ not C code or any other non-markdown content:
your C code and other non-markdown files. We simply ask that you do **NOT** use any
ASCII tab characters in markdown files.
+Jump to: [top](#)
+
### Tip for `vim` users
@@ -282,6 +309,7 @@ To **VERIFY** that there are no tabs in a file you may do, in command mode:
If you're in insert mode hit `ESC` first.
+Jump to: [top](#)
@@ -316,6 +344,7 @@ and **THEN** an **opening** **`
diff --git a/nojs-menu.md b/nojs-menu.md
index 3b7b8c1ab..9d5a09845 100644
--- a/nojs-menu.md
+++ b/nojs-menu.md
@@ -2,32 +2,33 @@
## Entries
-* [Winning Entries](years.html)
-* [Winning Authors](authors.html)
-* [Location of winning authors](location.html)
+* [Winning entries](years.html)
+* [Winning authors](authors.html)
+* [Location of authors](location.html)
* [Bugs and (mis)features](bugs.html)
+* [Fixing entries](faq.html#fix_an_entry)
+* [Updating author info](faq.html#fix_author)
+* [Thanks for the help](thanks-for-help.html)
## Status
-* [IOCCC News](news.html)
+* [News](news.html)
* [Contest status](status.html)
-* [Rules and Guidelines](next/index.html)
-* [IOCCC markdown](markdown.html)
+* [Rules and guidelines](next/index.html)
+* [Markdown guidelines](markdown.html)
+* [Security policy](SECURITY.html)
## FAQ
-* [FAQ](faq.html)
-* [How to enter the IOCCC](faq.html#submit)
-* [Fixing IOCCC entries](faq.html#fix_an_entry)
-* [Fixing the website](faq.html#fix_website)
-* [Updating author info](faq.html#fix_author)
+* [Frequently Asked Questions](faq.html)
+* [How to enter](faq.html#submit)
+* [Compiling entries](faq.html#compiling)
+* [Running entries](faq.html#running_entries)
+* [How to help](faq.html#help)
## About
-* [IOCCC Home](index.html)
-* [The IOCCC Judges](contact.html)
-* [Contacting the IOCCC](contact.html)
-* [IOCCC Security Policy](SECURITY.html)
-* [Thanks for the help](thanks-for-help.html)
-* [Website scripts](bin/index.html)
-* [Script include files](inc/index.html)
+* [Home page](index.html)
+* [About the IOCCC](about.html)
+* [The Judges](judges.html)
+* [Contact us](contact.html)
diff --git a/status.html b/status.html
index 29c347946..545f0f218 100644
--- a/status.html
+++ b/status.html
@@ -62,19 +62,19 @@