Fixed broken links.
Restored text that was accidentally removed during the emergency
recovery of guidelines some days back.
Moved some text that was in the wrong place.
The formatting of the markdown files was changed for shorter lines (for
those viewing the markdown in a viewer rather than a web browser).
Added a <div id> to 2024/index.html so the guidelines (or maybe rules)
could link to the important note from the judges in IOCCC28.
Restore rewording of rule 2b done by @SirWumpus.
The FAQ has a new item that is referred to in the guidelines updates.
The guidelines has some link fixes and other minor changes.
Some fun was corrected in the guidelines as well but kept a fair bit
shorter than before (i.e. shorter than IOCCC28). In particular because
some code from the mkiocccentry (from some contributors) is no longer
extant, and because said code was not even a complete program, only
refer to two programs that were strictly written by someone other than
the judges. Those paragraphs are only one sentence (they used to be
more than one) and the rest of the mkiocccentry repos is not mentioned
(this was the longest one and it went into other things that while fun
were not relevant). This keeps it light, fun, very short and more
importantly correct both to the rule about submissions must be a
COMPLETE C program and other rules as well.
Some typo fixes were made.
I believe this commit resolves the problems from yesterday although I
did not go through the file extremely carefully as I know @SirWumpus
also wants to go through it and so does Landon, so I kind of rushed
through it.
Somehow the guidelines got clobbered during an edit. It is not clear to
me if every link is okay in this but from a quick look at it it some of
the links if not all were certainly updated. It will require another
pass in the browser but this is an emergency commit.
The links to rules should all be good. This includes in news.html,
quick-start.html, next/submit.html, 2024/index.html (it had been
modified to refer to next/rules.html instead of 2024/rules.html) as well
as the guidelines and rules themselves (under next/).
Various typo fixes. I'm afraid there are likely others but I must let
others deal with that as I am out of time.
Removed FAQ about mastodon push notifications. When I added the FAQ
about push notifications for mastodon I was incorrect. The web browser
interface suggests it but I never got a push notification even before
Apple broke them. There seems to be no way at this time to get them. I
note that there was a screenshot in the FAQ but this file still is in
the repo possibly.
I regenerated the html files but it's possible I forgot to do one at the
last minute.
This includes typos (including command lines, formatting and other
things), renaming some rules to be a bit more intuitive and other things
I noticed.
Please note that I have not yet checked all links: not in other files or
in this file. This will be done after a break, and it likely will
involve updates to the guidelines and possibly the FAQ too. In other
words this is a work in progress that should be completed later today.
The script needs to use verge(1) (see
https://github.com/xexyl/jparse/blob/master/verge.c) from the jparse
repo (see https://github.com/xexyl/jparse/).
NOTE: it is NOT recommended you install verge(1) from the jparse repo
for IOCCC related things. Instead run (the first line only if you don't
already have the mkiocccentry repo cloned and updated; if you have it
you might wish to pull the current release):
git clone https://github.com/ioccc-src/mkiocccentry.git"
cd mkiocccentry && make clobber all
cd jparse && sudo make install clobber
This is because on a rare occasion the jparse repo can be ahead of the
mkiocccentry's jparse/ directory.
Tested with 'make markdown' (this is enough because it uses the
pandoc-wrapper.sh and it's also what triggered the bug for @SirWumpus in
NetBSD - which does not support sort -V).
In theory the script should work under NetBSD now.
The try.alt.sh used 'make all' and it also called './prog' and not
'./prog.alt'.
The version for both try.sh and try.alt.sh were updated. Presumably
before the contest is opened this will change again (or not due to this)
but since I edited the try.alt.sh and updated the version it seems
fitting to update the try.sh version too.
This was missed in yesterday's edit. There might be others that were
missed but the anchor mkiocccentry_process was removed and now is no
longer referenced anywhere.
A long while back I improved the Makefiles to allow for compiler
specific flags so that they don't have to be only "clang" or "gcc". This
is because in some systems gcc is actually clang (macOS does this). Also
if someone wants to use a different version or path then they can do so
with the right flags enabled. Before that change it would not work
right.
The comments suggested these flags will only be set when CC is exactly
"clang" or "gcc". This has been corrected.
This commit also removed some of the 'new marks' in the guidelines and
rules (as they're no longer new) and some that were in the FAQ (which
only happened when they were changed over to the FAQ).
Removed problematic FAQs (per discussion). This required renumbering.
Updated references of chkentry to chksubmit (only a few references to
chkentry remain now - advising contestants to not use it but simply
stating it is for the judges and it is what chksubmit uses).
Added note in guidelines about gotos becoming 'old' (as Landon told me
it is something Leo wanted in the next guidelines thanks to me). Just so
Landon does not forget my C sins. :-)
I have regenerated the html files but the guidelines.html and rules.html
files have not been link-checked as these files will be modified by the
judges a fair amount so there is no point yet. I believe I got
references to nuked FAQs out but it's possible some were missed.
The quick-start.md and next/submit.md (and their html files) were
updated as well to refer to chksubmit instead of chkentry.
It is quite possible some things were missed but this should help move
things closer to getting ready for IOCCC29 in December.
The index.html file didn't have to be updated as pandoc is smart enough
but the format bothered me ('-' followed by text on a line but it was
not a list).
I did not check typos and I might or might not have gone through the
whole file. The format fixes were mostly if not entirely for code blocks
not having the language in comments (or missing language).
Rebuilt index.html.
Some information is no longer useful - they were put in during the
IOCCC28 to let people know the version changes during the contest which
noted some useful information.
Also added references to chksubmit.
Rebuilt next/guidelines.html with these changes.
A bug in macOS 26 (is anyone surprised any more?) ends up with warning:
clang: warning: overriding deployment version from '16.0' to '26.0' [-Woverriding-deployment-version]
depending on invocation. Particularly with at least some versions of
gcc, even though in this case it was actually gcc and not the system gcc
that is really clang in disguise.
Because of this -Wno-overriding-deployment-version was added to
next/Makefile.example.
One of the warnings disabled (triggered in macOS) that was already added
seemed to be missing.
I also disabled the silly warning triggered by clang with -Weverything (I
think -Weverything) -Wunsafe-buffer-usage as that is against basic C (it
will not even let you iterate through argv without whining about it
being 'unsafe').
The example in the Makefile given is -Wno-int-conversion instead.
When I first wrote the try scripts, and in particular the ovdluhe.alt.c
code to do what the author suggested one try, I just had the option in
try.alt.sh to redefine P once. Now the user can do that but after the
initial loop it loops from 2..10 (the range the author suggested)
running the loop again (on the three files three times) so one can see
what the author means.
The try.sh script has the updated idea by the judges of printing two
lines, not one, after each prompt.
Rebuilt index.html from updated README.md.
Although it's now 21 lines instead of 20 the number of columns is the
same and the shape is restored (or as close as possible with the need of
the extra line).
This was somehow not added during development but was supposed to be. It
is not going in the main code because that would ruin the amount of
gotos (152 for full version, 134 for practical version) and because the
point of the alt code was to have more events anyway.
Tested this new event. Works fine.
At the suggestion of Landon I have added some tips to both icing and the
cake. It might be possible for more to be added later on but hopefully
these are helpful to those who wish to try it. Something I will try
doing is adding sequential pictures of the icing but that involves
remembering it as we can't make it here until the winter (well we can
but it's a lot harder as even the winter can be fairly hot here,
exceeding 35 Celsius).
And to those who (presumably many) do wonder why I submitted this back
then when it has nothing to do with the contest: I really haven't the
foggiest but since this was requested I am doing it.
Landon reported an inconsistency. I discovered a placement issue. I also
added a note. The open issue will take more time to look at and consider
but the inconsistency is at least fixed now.
The truly complete part is a reference to commit
ad622a5354. This also means that prog.c
need never be updated again, which was the entire point of that commit
that fell just short of the mark.
Fixed links in obfuscation.html.
Added litmus test to explain how I actually tested the program with all
the jumps.
Fixed typo in data file that I discovered during the above litmus test.
Fixed other files as well.
The .entry.json had a minor mod too, to better reflect what a file
actually is.
Rebuilt obfuscation.html and index.html.
Added target to Makefile which was also used during testing (this might
be explained in the obfuscation.html).
This is related to the space / word boundary issue (based on how the
language worked) that does not have a good solution. As I think I might
have written in the remarks I tried different ways but each way caused
other problems, problems that would make Navajo -> English not work even
when it should otherwise. Although the index.html already showed some
examples of this it seems good to include some in the bugs.html and add
the INABIAF tag to the index.html.
The alt code was an old version that should not have even been there.
The extra event was something that was meant to be somewhere else (like
it is in the prog.c) and the event (even 23) is something else.
I put in the data files another joke with the intention of using that
for the event until I remembered the event was wrong.
The alt code has an improvement: it now is possible to specify your
hp/stamina and max number of turns.
In prog.c remove an unused variable.
Updated Judges' remarks to better reflect what happens (in particular
improve the commits from yesterday - correcting it but keeping the same
flow of the judges).
Updated deobfuscation.md (rebuilt deobfuscation.html).
Rebuilt index.html.
The file prog.gotos.c has the lines merged so one can use their syntax
highlighter (or grep, see below) to see all the gotos at once (depending
on screen size, perhaps).
For grep try:
grep -E 'goto|hell|heaven|666' prog.gotos.c
if you have colours enabled. The other patterns is because of alignment
that was maintained in the program (one could do this without 'goto' of
course).
A bug was discovered in prog.c (now prog.alt2.c, see below) that has
been fixed. It was not a critical bug but it came about when juggling
things during development, and fixing it means there should now only be
one place where an event might not trigger (or actually it's an event
within an event that does not trigger - polymorphism related).
The prog.c is the goto complete version - what was once prog.goto.max.c
(git status is confused however - it shows that that file is now
prog.alt2.c but actually prog.alt2.c is what prog.c was). For practical
reasons (and to make the judges not weep and curse me quite as much)
this was not the prog.c but since some others have made corrections to
their winning code I have decided to do the same thing here. It was a
hassle to juggle between the different versions and I ran out of the
number of files allowed - that is what I mean by practical reasons.
The prog.c has maintained its thematic 4666 bytes, after some formatting
updates.
Typo fixes were made in some of the supplementary C files.
Makefile updated so that one can compile prog.alt2.c.
.entry.json, index.html and obfuscation.html were all updated.
The judges' remarks were slightly corrected. It is not 134 (now 149)
jumps that occurs but rather gotos. The jumps can be over 1000, in fact
one test run was over 1400, although shorter games can be fewer (though
still a lot).
Other errors in documentation that were artefacts from earlier stages in
development were also corrected, although I'm sure there are more (the
ones that were discovered were ones near to stats that had to be
updated).
The following files (not all of these files were checked yet) were
modified (when mentioning README.md I also rebuilt the index.html file):
2024/burton/README.md
2024/endoh1/README.md
2024/endoh1/try.sh
For practical reasons (and to make the judges weep and curse slightly
less) I only submitted code that only had 134 gotos. I'm a horrible
monster, I know, but I have decided to present this alt version I have
which takes the 134 gotos to 149 and which still fits in rule 2 limits.
If I am going to ruin goto I might as well do it properly, despite
Landon telling me that the 134 might be called near limitless. Now it is
limitless. Some of the very few remaining blocks of code that were where
they belong were moved away from their proper place but other changes
were made too.
Added gotos.c.txt - kind of like the judges' video where it shows all
the gotos only here it is just a text file of only the gotos (after
clang-format like they had). This is of prog.c, not prog.goto.max.c.
Renamed gotos.txt to jumps.txt as it's not just gotos (though most of it
is).
Updated .gitignore and Makefile.
Updated .entry.json and rebuilt index.html as well as obfuscation.html
(obfuscation.md was also updated).
The entry_text for 'ref.mp3' had commas. This is not allowed as the way
the site script (in particular bin/entry2csv.sh) works is it creates a
CSV file which when imported into a spreadsheet application (like
Numbers in macOS) it adds additional columns. Also, because a space is
after the comma, it triggers another error in the bin/csv2entry.sh
script.
What this error meant is that some of the text was not even in the
index.html.
This has all been corrected.
Typos fixed in 2024/index.html.
Show URL added.
This commit also adds the time (how long in the show, not the clock
time) the source code was pushed to the GitHub repo and the total length
of the show.
Due to a manifest mix-up (which had some html files marked as markdown
and as display_via_github as true) the respective entries' index.html
linked to html files on GitHub which do not render right (and is the
wrong place in any case).
This means that the index.html files and the .entry.json files were
updated. This in particular goes for:
2024/burton
2024/ferguson1
2024/howe
Thanks to @SirWumpus for reporting this!
2012/omoikane had some updates but the manifest was not properly updated
(so it would seem - it seems right but I cannot figure out how it was
not as obviously the CSV file was correct).
For some reason 2020/yang/index.html navigation linked to 2024/anders
which of course is a 404 (I seem to recall a mix-up that was fixed but
the html files were not rebuilt).
The 2020/yang/.entry.json file had the wrong manifest version as well.
The gotos.txt file (manifest updated) shows the line changes in a single
run of the program.
Capitalised some text.
Changed width and height attributes in images - they were too hard to
see otherwise (for those of us with poor vision it's still hard on a
mobile device but it was almost impossible to see on the computer for
me - now it scales better, for some definitions of 'better').
Rebuilt html files.
This did involve updates to news.{md,html} and years.html. The prize in
diabolical logistics now reflects the title of the game and the prize in
yil-tas has a capitalisation fix (that was missed yesterday).
Also reworded some of the text of 2024/ferguson1/index.html.
Also rebuilt 2024/guidelines.html, 2024/rules.html (obviously
2024/index.html was also rebuilt).
The other ones were rebuilt because the markdown had 2025 (from 2024)
and it was not rebuilt. I noticed a lot of files have this problem (in
copyright). May I suggest sgit(1) to save you time? :-) (I would do it
but I don't want to cause a problem with any pull requests that might
be opened.
For fun I put in how many line changes there were in an example run
through the entire program from start to finish ('hell'). With 85 lines
(with 14 blank, some functions, #includes, #defines, some lines only
having a brace and possibly other lines like that) there were a total of
985 line changes (an extremely tiny fraction had the same line number
repeated once but that hardly matters).
Fixed typo in Judges' remarks (inspired by Oregon Trail not inspired by
Oregon).
Added note about another version I submitted - helps prevent having to
update the files removing any reference to it.
Updated .gitignore (due to a file one of the scripts generates).
Rebuilt index.html and obfuscation.html.
'an successful' -> 'a successful'.
There is possibly another typo but I have to verify what the judges
meant.
Rebuilt index.html. I hope to make some reductions in text in the coming
days. I also have another fun update planned so people can see just how
wild the gotos are. I hope to do that sometime soon too.
It is not clear, as the FAQ shows for now, whether this works with just
desktop/computers or not - it is only possible to enable it on computers
(or if it's possible in mobile devices I did not see it though I only
checked with an iPhone).
This FAQ should probably be linked to in the guidelines later on as
right now it says that one should reload the feed as you do not get
notifications unless you are mentioned (assuming you have push
notifications enabled). As one of the pending changes post winners being
announced (02 August 2025 at 11 Pacific) is to clean up the guidelines,
rules and maybe the FAQ (that was rushed towards the end so as to not
delay IOCCC28 even longer) I have not done this.
Rebuilt faq.html. New image under png/.
FAQ version: 28.2.21 2025-07-31.
Likely an artefact from before the scripts generated html files for the
website - I had two links, one for markdown, one for html, but now only
html is needed for the links.
The questions:
Can I download my submission tarball from the submit server?
Can I delete a submission from the submit server?
were added per brief discussion in IOCCC28.
This typo ended up with a wrong command (in an echo telling what to do
with modern systems - there was a space between the / and what
translates to mullender.alt).
New FAQ on what the minimum versions are (this should be updated every
contest or updated to refer to the result of the issue I opened at the
other repo - post IOCCC28) for each tool.
Added details about the new (soon to be released) version of the tools
that now search under $PATH.
This commit updated the FAQ, the guidelines and the quick start guide.
As a reminder you do NOT need to use the upcoming release of the tools
and not doing so will not invalidate any of your submissions as it is
based on a minimum version, not an exact version.
The new options to mkiocccentry are -x to delete the submission
directory if if it already exists and the -u uuidfile and -U uuidstr
options.
NOTE: it is NOT required to update the tools for this IOCCC and you do
NOT have to read the updated guidelines to follow the guidelines for
this IOCCC.
The warnings highbit_warning, wordbuf_warning and first_rule_is_all are
no longer used and will be removed for IOCCC29 and beyond. Thus the
tools no longer care about them.
There were other additions to mkiocccentry like the useful -u uuid
option to read in your UUID from a file so you don't have to copy paste
it per submission. Although that would be useful in the guidelines to
do that would require the version update which is problematic in an open
contest. Thus it can be added for IOCCC29 after this one.
IMPORTANT NOTE: you do NOT have to update the tools unless you want to!
The submit server will no longer flag submissions with those booleans
set to true and when the judges run the tools they won't flag them
either. So if you are just fine with what you're doing, and if the
recent fixes do not have an impact on your work you are perfectly fine
using the current versions you have as version requirements are no
longer a single value but a range. Of course you might still wish to
check that you weren't flagged for some other issue but you no longer
have to worry about those three warnings.
After my final commit and merge in mkiocccentry pre-release a pull did
not get the tag. I had to do:
git fetch --all --tags
instead. So to make sure everyone has the correct tag I have added this
to the FAQ (replacing the 'git fetch' by itself).
Regenerated faq.html.
Renamed some FAQs (typos and/or other things).
Fix a number of typos in various files (including markdown format
errors).
Rules and guidelines should be relatively good although as there is a
lot to get through and not much time left maybe I missed something (I
also kind of cheated doing the final checks with the guidelines rather
than going through them all again).
The next/try.sh and next/try.alt.sh scripts have had updates as well and
the next/Makefile.example was modified too.
The index.html page now has an anchor for goals of the contest so that
the goals in the rules could simply link to it in index.html.
Although some text had to be added (and some corrected) a reasonable
amount of text was also removed as it was elsewhere or was extraneous in
some way.