In other words now the version that can compile with clang is the
giljade.c and the other is giljade.alt.c.
The reason is that the actual award is about a 2D puzzle and this still
works with the clang compilable version. It also lets those who are
forced to use clang compile the code and at least enjoy the puzzle.
The Makefile has been updated to remove the note about clang or rather
reworded so that the user is made aware that the alt version will run
the self-test but the original will not and to see the README.md for
more details.
The version that compiles with clang now will run some of the self-tests
right. Unfortunately it does not run them all okay. Because of this I
have decided to make the clang compilable version the alt code and the
one that will work with compilers without clang's defect (or this
specific defect amongst others of clang I might say) is the original
(well the fixed original).
The clang version fix has something of a hack in it to make it work
somewhat but it's not ideal. This is another reason that I have for now
moved it to the alt version. I explain more in bugs.md.
The Makefile has been updated to note that the code requires a compiler
that will let one have non-standard types of args to main() and that if
one does not have such a compiler they should use the alternate code
instead.
In time I hope to look at this more and then we might not have to have
two versions but we shall see.
In order to not require being compiled as 32-bit the 'long*E' has to be
a 'int*E'. This version works fine and I wonder if it should be the main
version with alt being for clang that does not work fully: not sure.
Updated bugs.md with more information (what I came up with yesterday and
today).
As a new issue was opened in the mkiocccentry repo I will be doing less
here for a while most likely but there probably will still be some
commits. I felt however that this was a needed commit to make as it was
left unfinished yesterday. I actually can provide a bit more information
on this entry but for now it'll suffice. The additional information has
to do with what system() is passed.
I've actually figured out the problem and now the errors (on running the
program on its output) is down to 3 errors instead of I think it was 9.
I have not updated bugs.md but I will in time if I don't end up fixing
this (in the end I will most likely fix it or at least attempt to). A
look at the diff here might give a clue however. Still I do intend to
address this further to get it to work properly.
The problem was due to sizes so the long * is now an int *. I have no
idea what made me think of it other than on a hunch (and based on my
previous suspicions).
Format fix README.md as well.
Update bugs.md. Added an INABIAF as well as change the status of the
program not working on some platforms to a known bug. This is to due
with clang's deficiency in not allowing the args of main() to be
different. Believe it or not some of the problem appears to be more than
two spaces in the program (other than where it originally was).
Added alt code - the original that will not compile with clang but with
the 64-bit fix. This is because the fix for clang breaks the self-test
feature of the program. Maybe the clang fix should be the alt code. I
don't know.
Updated .gitignore.
Of course the above fix to the code and the adding of the alt code means
that the Makefile was also updated.
There were many many README.md files with the wrong heading level for
different sections. These have been changed.
To help go through the changes it should be noted I used sgit and also
here is what is changed:
The 'Try', 'To build' and 'To run' lines have two '#'s. Some had one and
others had three.
An exception is that in 1984/anonymous/README.md for the alternative
code that had three '#'s. This is not consistent yet and it might be
that only two are desired. But for now that one at least has three.
Simply the Makefile header.
Refer to the //www.ioccc.org/bugs.md URL (that will eventually exist).
Now using CC BY-SA 4.0 License to how you may share and adapt the
Makefile.
I've discovered that this entry has to have the optimiser disabled and
it also requires 32 bit. I believe the 32-bit is to do with the many
bitwise operations but the size of the ints are different. This is just
a hunch though from what I saw earlier when debugging it. The fact it's
32-bit only (at this time?) means it won't easily compile under macOS as
Apple has made it hard to compile 32-bit programs.
It might be possible to change the size of the ints to fix this problem
but it of course could also be entirely true that I'm wrong here. I've
not added this to the bugs file but perhaps it should be added.
The commit 00ae59cd47 had a
mistake that introduces changes to Makefiles for 1996 thru 2020
that should not have been included.
This change reverses these intermediate changes until
the given year's Makefiles are ready.
The 2020 winners are hinted it, but the source code is not there,
nor are the hints. Someone could look into the HTML and
see what was commented out, but that is not a problem because
WHO won is known and the name of their AWARD is known already.
Moreover a number of the winners have talked about what their
entirs do, so the commented out spoiler text is not a bit problem.
One will find HTML commented out with:
<!-- XXX remove when 2020 is ready
2020 links here
XXX remove when 2020 is ready -->
The "XXX remove when 2020 is ready" string is found at the
start and end comment blocks. Again, soneone could read
what was commented out, but that is OK since most of that
information is known or can be known. The following files
have such HTML comment blocks in them.
./winners.html
./years-spoiler.html
./years.html
In addition, ./all/summary.txt was modified to not
include the 2020 entries for the momemt.
The 2020 winner code AND write-ups are NOT part of this set.
p.s. The all/all.tar.bz2 does not contain the 2020 source code (yet?).