Releases: ioccc-src/mkiocccentry
Release version 2.4.0 2025-02-28
Release 2.4.0 2025-02-28
Fix and improve warning of -y
and -Y
in mkiocccentry
.
The code did not explicitly check for -Y
; it just used the implicit -y
from
-Y
. That is fixed and now if not -q
show a simple summary but always show
the longer warning to be sure that they know. As for -Y
it really ought to be
used only for the test script but even -y
should be used with EXTREME
caution.
Add extra sanity checks in check_submission_dir()
: it now checks towards the
beginning if the required files exist (that is, the three user submitted files,
not the JSON file as those don't exist yet, though it does check that they do
not exist as dot files here would be an error) and are readable and if they are
not size 0 (for Makefile and remarks.md - prog.c may be empty).
Updated some literal strings of the three required filenames (as above) to their
macros in both mkiocccentry and txzchk.
Fixes in chkentry
with checking if files exist or do not exist (depending on
options) and also add checks for file sizes for certain files, namely Makefile,
remarks.md (in non-winning mode) as well as index.html (in winning mode) and
README.md (in winning mode).
Error messages were improved in chkentry
as well though there are some places
(the manifest check) where they could be improved (this would require lower
level changes that we do not have time for before the freeze later today).
Sync jparse repo to jparse/
for new util
function (that uses its file_size()
function) is_empty()
. This is used in
the update to chkentry
.
Added copyright message to jparse files (at the request of Landon some while
back).
More work on the chkentry_test.sh
script. The script is in better shape so
that when the directories are generated (they cannot be static due to version
changes - at least without a new option) the script should hopefully be easily
updated (though it depends maybe on how the new directories are generated).
Resequence exit codes in jparse/util.c
.
Updated versions of jparse
by changing x.y.z
to x.y+1.0
except that for
those under < 2.0.0
they have been changed to 2.0.0
.
chkentry
now looks for directories that are the wrong permissions as well as
directories with a depth beyond the max as well as any type of file other than a
regular file or directory.
Bug fix an enum in jparse which caused a util function (used in the above fix to
chkentry) to fail.
Updated SOUP_VERSION "2.0.0 2025-02-28"
.
Updated MKIOCCCENTRY_VERSION
to "2.0.0 2025-02-28"
.
Updated FNAMCHK_VERSION
to "2.0.0 2025-02-28"
.
Updated TXZCHK_VERSION
to "2.0.0 2025-02-28"
.
Updated CHKENTRY_VERSION
to "2.0.0 2025-02-28"
.
Updated the version of test_ioccc/chkentry_test.sh
, test_ioccc/hostchk.sh
,
test_ioccc/ioccc_test.sh
, test_ioccc/mkiocccentry_test.sh
,
test_ioccc/prep.sh
and test_ioccc/txzchk_test.sh
to "2.0.0 2025-02-28"
.
Release 2.3.44 2025-02-27
Prepare for code freeze (28 February 2025) with some final changes, some
important (and useful) and some not that important (but done to be complete).
Sync jparse repo to jparse/
before code
freeze (28 February 2025).
Updated copyright messages, some missing, some updated (based on brief
discussions a while back and more recently, recent updates to code and perhaps
other things) to many files.
The script bug_report.sh
actually can have the script in the TOOLS variable as
it will not actually cause an infinite loop as it only gets the version of the
tool - which is quite useful to know that the user is using the most recent
version of the script. This was also done in jparse/
but that doesn't matter
here; it's only mentioned due to the sync.
Enhance mkiocccentry
prompting with -i answers
used. Instead of always
answering yes even when an issue is found, unless the new option -Y
is used,
give the user a chance to confirm things are okay (in particular, it allows one
to answer no to a question; it does not prompt you for everything as that would
defeat the purpose of the answers file). The use of -Y
is highly discouraged
unless you are certain you're good to go and it is mostly used for
mkiocccentry_test.sh
which needs to be non-interactive.
Improve usage string about workdir
and topdir
to make certain things a bit
clearer.
Updated MKIOCCCENTRY_VERSION
to "1.2.35 2025-02-27"
.
Updated MKIOCCCENTRY_TEST_VERSION
to "1.0.15 2025-02-26"
.
Release 2.3.44 2025-02-26
Remove unused arg in write_json_files()
.
Updated MKIOCCCENTRY_VERSION
to "1.2.34 2025-02-26"
.
Release 2.3.43 2025-02-25
Improve mkiocccentry_test.sh
- add only required files test.
Updated MKIOCCCENTRY_TEST_VERSION
to "1.0.14 2025-02-25"
.
Plug a loophole in chkentry(1)
and make it do even more tests that were
missing/not previously thought of.
Updated CHKENTRY_VERSION
to "1.1.5 2025-02-25"
.
Release 2.3.42 2025-02-24
Disable -g3
in Makefile as use of -O
option (besides level 0) makes
debugging much harder so one should not typically use both. This was done in
dbg
and dyn_array
(and opened a pull request in both repos) too; I did
jparse/
(in the repo) a while back for the same reason as cited here.
Fun facts: the repo version is: "2.3.42 2025-02-24"
and so the last two digits
of the version number itself and the last two digits of the date in the version
are opposites (and thus anagrams) for 42, the Ultimate Answer to/of Life, the
Universe and Everything; but no matter
how absurd it is, and no matter how obvious it was a joke and no matter how much
Douglas Adams explicitly said it was a
joke,
people still think it's serious and people still have stated it is real and some
astronomers even spent years studying
it
only to claim that it really is 42! That means that the real
Vogons are
humans, at least until that hyperspace
bypass is formed. :-)
BTW: Landon told me that: at Google Headquarters (previously SGI) at building 42
there is a very hidden copy of The Hitchhiker's Guide to the Galaxy (H2G2) with
drawings and other things that Douglas Adams requested Landon taunt them
[Google] to find and he's had a lot of joy in doing so since very few have been
able to find it (and Landon is one of the very few who know about it).
Okay so there's some fun totally unrelated to the changes but it's fun so why
not? :-)
Fix bug in mkiocccentry
where a submission topdir which only had the three
required files would abort with an error (due to list being not NULL but empty
due to a typo).
Sync jparse repo to jparse/
for some
upcoming fixes to chkentry
(I thought of a loophole in a new option that was
being finalised and more was discovered after this).
chkentry
has had a partial fix but more needs to be done (for the loophole I
thought of with the -w
option). Unfortunately the other things took more time
than I hoped and I cannot get it in today - and fixes and improvements to the
FTS functions requires a minor update to chkentry (both in chkentry.c
and
soup/entry_util.c
) minor change or else it will not compile and also will
likely segfault.
Updated MKIOCCCENTRY_VERSION
to "1.2.33 2025-02-24"
.
Updated CHKENTRY_VERSION
to "1.1.4 2025-02-24"
.
NOTE: the MKIOCCCENTRY_VERSION
in this commit was by accident "1.2.33 2025-02-34"
but we have retroactively fixed it. Thus if you check out this
specific commit you would see that the version is a mismatch here.
Release 2.3.41 2025-02-23
Much work on issue #1152 done.
Both -w
and -i
have been implemented. The man page has not been updated as
the error codes need to be reconsidered now that the tool does more checks.
Depending on the -i path
or -w
(or both) options different checks are now
performed, not just semantics tests (indeed one can actually skip the JSON tests
entirely by -i info -i auth
but other things are still done). The
mkiocccentry
tool will not use either option which is the strictest mode.
Besides error codes needing to be reviewed and the man page (and if necessary
other documentation) being updated, unless something was missed the only thing
left to do is to fix the test script to work with the one arg only model.
Sync jparse repo to jparse/
for some
updates that were necessary for the above to be implemented.
Fixed mkiocccentry
to check for executable filenames by the function, not by
the filenames themselves.
Added the files soup/chk_sem_auth.c
and soup/chk_sem_info.c
to the less
picky variable in soup/Makefile
as the lines are quite long now, due to the
fact that another arg had to be given to the callback functions for the manifest
checks update.
Release 2.3.40 2025-02-22
Significantly simplify and refactor the FTS functions in jparse/util.c. A great
deal of thought and effort was put into this and when the topdir
is passed to
chk_manifest()
(which is being worked on) it will be far easier. The benefit
of these changes, besides being much cleaner, simpler and it being modularised,
is that if some issue is discovered or some new feature is needed (as has
already happened numerous times) function calls do not have to be updated.
mkiocccentry
has been updated to use the simplified interface as well.
A note: jparse/
has not been fully synced because of a change in `json_...
Release version 2.3.3 2025-01-04
Release 2.3.3 2025-01-04
Added soup/not_a_comment.sh
to test if file that exists
contains a non-#-comment.
Both make prep
and make release
will issue a notice (via
soup/not_a_comment.sh
) if a non-empty Makefile.local
is found
containing more than just comments. This will allow for one to
keep a Makefile.local
with only comments in it, without raising
a notice as such a file will not impact the make procedure.
Then if one needs to temporary add comments (perhaps by un-commenting
lines in a Makefile.local
file), one can. However if one then
forgets, then the notice will alert you to the potential problem.
Changed test_ioccc/prep.sh
PREP_VERSION from "1.0.4 2024-11-16"
to "1.0.5 2025-01-03".
Changed MKIOCCCENTRY_REPO_VERSION
from "2.3.1 2025-01-01"
to "2.3.3 2025-01-04".
Release 2.3.2 2025-01-01
Fix exit code errors in jparse_test.sh
.
Remove rule rebuild_jparse_err_files
from top level Makefile. This rule should
only be in jparse/. The reason it would cause a failure is because of argv[0]
being in error messages and since in this repo jparse
binary is in a
subdirectory it changes the name of the program so the error files are
incorrect. It might be possible to do a cd jparse && ...
but this is not
necessary as there are no error location files in this repo itself due to
precisely this reason.
Happy New Year!
Disabled 2 invalid JSON string encode/decode tests.
Release 2.3.1 2024-12-31
Fix a minor issue relating to the invalid UUID error message.
Changed MKIOCCCENTRY_REPO_VERSION
from "2.3 2024-12-31"
to "2.3.1 2024-12-31".
Changed SOUP_VERSION
from "1.1.3 2024-12-31"
to "1.1.4 2024-12-31".
Release version 2.3 2024-12-31
Release 2.3 2024-12-31
Improve jparse
error messages in yyerror()
.
In particular, instead of surrounding the bad token with <>
s, which could be
one of the invalid chars and which might make someone think that that's the
problematic character, do not surround it any more. Since it is by itself after
the ':' (and the next char is the newline) it should be clearer this way.
Updated JPARSE_VERSION
and JPARSE_LIBRARY_VERSION
to "1.2.8 2024-12-31"
and "2.2.3 2024-12-31"
respectively.
NOTE: there is ABSOLUTELY NO functional change in the above, just a
display improvement, and so it's a useful change to include here too.
Fix typo in jparse
's rebuild_jparse_err_files
rule that was causing a
display problem. Also here the -v flag cannot depend on the VERBOSITY
level as
the script was designed specifically for -v 0! This has been fixed.
Moved party.json
and party.json.err
files from
test_ioccc/test_JSON/general.json/bad_loc
to the jparse repo so that it's now
under jparse/test_jparse/test_JSON/bad_loc
. This had to be done due to the
improvement with yyerror()
and how the error messages have to be exact. It
might be possible to fix the issue but it is not worth it as long as jparse here
tests location errors and it now does. Plus party.json
belongs in jparse
anyway.
Updated test_ioccc/ioccc_test.sh
to use option -L
in jparse_test.sh
as we no longer want to test error location messages. This is the only
functional difference in this commit.
Updated ioccc_test.sh
version to: "1.0.3 2024-12-31"
.
mkiocccentry
updated to show that the registration URL and submit server URL
are available and to show what file and what slot to upload, how to register
etc. The macros that checked for the readiness of these servers are no more as
they are always ready now even if one can only register if in pending and open
and only submit if status is open.
Updated mkiocccentry version to
"1.1.2 2024-12-31"and soup version to
"1.1.3 2024-12-31"`. The reason the soup version was updated is because of
macro changes, including new ones for the URLs.
Release 2.2 2024-12-30
Resolve issues #1044, #1045 and #1046.
Fix tools for filename length rule (part of rule 17)
Fix mkiocccentry
, chkentry
and txzchk
for the requirement of filenames to
be of length > 0 && <= 99 as per rule 17.
This is somewhat involved and required all the JSON test files to be updated
(for versions) as well as some new JSON files.
A new macro MAX_FILENAME_LEN
had to be added. Then in soup/entry_util.c
a new
function called test_filename_len()
was added. This function is then used in
txzchk.c
(function check_all_txz_files()
), mkiocccentry.c
(in the check_*()
functions) and then, for chkentry
, in chk_validate.c
the function
chk_extra_file()
; it is not necessary in the code that checks for the required
files as the functions that test those files check for exact filenames. The
function test_extra_file()
calls the new function as test_extra_file()
does
a variety of kinds of tests on the file.
A new bad txzchk test file was also added (with its corresponding .err file).
The mkiocccentry_test.sh
script along with txzchk_test.sh
(see above) and
chkentry_test.sh
now test for too long filenames and too short filenames. In
the case of mkiocccentry_test.sh
a change in the script itself had to be made
so the version was updated to "1.0.2 2024-12-30"
from "1.0.1 2023-02-05"
.
Changed SOUP_VERSION
to "1.1.2 2024-12-30"
from "1.1.1 2024-12-26"
.
Changed MKIOCCCENTRY_VERSION
to "1.1.1 2024-12-30"
from "1.1.0 2024-12-28"
.
Changed TXZCHK_VERSION
to "1.0.9 2024-12-30"
from "1.0.8 2024-07-11"
.
Changed CHKENTRY_VERSION
to "1.0.3 2024-12-30"
from "1.0.2 2024-08-26"
.
Release version 2.1 2024-12-28
Release 2.1 2024-12-28
This is a formal release for public use.
Changed MKIOCCCENTRY_REPO_VERSION
from "2.0 2024-11-17"
to "2.1 2024-12-28".
Updated Makefile.example
from
Makefile.example from the other repo
Release 2.0.3 2024-12-27
Resolve issue #1037
The submit server details are now ready!
Also change the temp-test-ioccc URLs to the main IOCCC website, for once the
Great Fork Merge is performed and the IOCCC website is updated.
Updated mkiocccentry
version to: "1.1.0 2024-12-28"
.
Release 2.0.2 2024-12-27
Resolve issue #1039
This syncs jparse from jparse repo with a variety of bug fixes and improvements,
including a lot of documentation updates.
Release 2.0.1 2024-12-26
Fix issues #1036, #1035 and #1033
The issues in respective order:
- Typo fix in mkiocccentry.c ('You title must ...' -> 'Your title must
...'). - mkiocccentry UUID type 4 was too strict
- Renamed makefile.local -> Makefile.local.
Updated version of mkiocccentry due to the above changes. For the second
one new macros are in soup/limit_ioccc.h so the soup version has been
updated as well.
Release version 2.0 2024-11-17
Release 2.0 2024-11-17
This is a formal release for public use.
Changed MKIOCCCENTRY_REPO_VERSION
from "1.6.13 2024-11-16"
to "2.0 2024-11-17".
This repo is now under a CODE FREEZE.
Only super-critical bugs that have a significant impact the running
of IOCCC28 or the Great Fork Merge process and the temp-test-ioccc
repo will be considered until sometime after the winners of IOCCC28 have
been released.
Release 1.6.14 2024-11-17
Update from dbg and jparse repos.
Prep for code freeze and formal release for IOCCC28.
Release 1.6.13 2024-11-16
Added minor changes to the jparse/jstrdecode(1)
tool.
Release 1.6.12 2024-11-16
Add missing -q
option to txzchk
.
Release 1.6.11 2024-11-15
Fixes and improvements in jparse
synced from the jparse
repo. This includes an update to the jparse
library and some bug fixes and additions to the jstrdecode and jstrencode tools.
Typo fix in mkiocccentry.c.
Also roll back a commit in chkentry.c - a work in progress for after IOCCC28
that was, in a rush to leave the house but still get important fixes in, was
accidentally committed yesterday.
Release 1.6.10 2024-11-14
Synced jparse/
from the jparse repo. The
term encode
and decode
were swapped back to the original meaning. This
problem occurred due to the fact that when focusing for some time on the
encoding/decoding bug of \uxxxx
code points in the jparse repo the fact that
it is a JSON encoder was lost in focus. This change also means that terms
were swapped here.
In the process of an issue in 'the other repo', some bugs were uncovered in
jstrencode(1)
but this should not, I believe, affect the timeline of the next
IOCCC, fortunately. The website tools have to be updated which I will work on
next a bit later on today.
Release 1.6.9 2024-11-09
Synced jparse/
from the jparse repo. This
came from discussion on JSON debug output as well as discussion about wording. A
fix in one of the man pages was also made (no longer true statement) and the man
pages and utils README.md were all expanded with more details and examples.
Release 1.6.8 2024-11-08
Synced jparse/
from the jparse repo. This
includes some important bug fixes in a utility function that resulted, in debug
output, invalid JSON, plus an incorrect calculation in one case.
Release 1.6.7 2024-11-07
Synced jparse/
from the jparse repo to
remove unused code and extra sanity checks added to a function and to match a
filename change.
Improve (to help parse output a bit better) the scripts bug_report.sh
and
hostchk.sh
.
Release 1.6.6 2024-11-05
Synced jparse/
from the jparse repo with
some important documentation changes along with some typo fixes.
Release 1.6.5 2024-11-03
Sync the jparse/
directory from jparse
repo. This adds some extra sanity checks in
jstrencode(1)
/jstrdecode(1)
and it also makes some fixes to the change in
decode/encode terminology, namely to do with comments. An unused macro (after a
fix) was removed. Comments were updated and improved in jparse.l
and
jparse.y
. Regenerated parser backup files.
Release 1.6.4 2024-11-01
Sync the jparse/
directory from jparse
repo. This includes some important bug fixes,
namely that some codepoints that were rejected are no longer rejected as later
Unicode standards allow them. This means that the
JSONTestSuite files now completely pass
jparse.
The CODE_OF_CONDUCT.md
was removed from jparse/
as it referred to the IOCCC
judges which is not correct. Until a better way of doing this is derived, this
file no longer exists. To be clear the mkiocccentry CODE_OF_CONDUCT.md
still
exists!
Release 1.6.3 2024-10-31
Sync the jparse/
directory from jparse
repo. This includes some important bug fixes,
including a segfault when JSON debug level was specified and a string was
encountered (the problem was that when has_nul
was removed it the format
specifier, a %s
, was not removed).
A more significant change (that only requires minor changes in mkiocccentry
code) is that the tools jstrencode(1)
and jstrdecode(1)
were swapped as
according to other sources, converting a code point to another character
(accented character, emoji etc.) is encoding, not decoding. This means that
functions and comments were also changed. Only minor changes in this repo had to
be made, as noted, however and specifically function name changes.
With this merged the temp-test-ioccc repo will have to have the scripts updated
to use the right tool (not jstrdecode but jstrencode) and the correct version
(2.0.0).
Release 1.6.2 2024-10-30
Sync the jparse/
directory from jparse
repo. This includes some important bug fixes,
especially in the make install
rule that did not install a header file. Not
having this would cause a compilation error if one were to try and include
jparse/jparse.h
outside this repo.
The jparse_bug_report.sh
script has an improvement that will test compile a
jparse program to see if the system can link in libjparse.a
, libdbg.a
and
libdyn_array.a
. This script is not needed for this repo though.
Release 1.6.2 2024-10-23
Fix annoying bug where the MKIOCCCENTRY_ANSWERS_VERSION
could not be in
soup/version.h
and the MKIOCCCENTRY_ANSWERS_EOF
could not be in
mkiocccentry.h
.
Fix write_echo()
in test_ioccc/prep.sh
to not leave lines in the log file
that simply say OK
.
Release 1.6.1 2024-10-22
Sync the jparse/
directory with state, as of 2024-10-22, of the
jparse repo . Those updates
include improvements to the jparse test suite including new test cases,
test suite improvements, and related man pages. The jstrencode(1)
,
jstrdecode(1)
and related Unicode / UTF-8 functions have been improved.
Changed MKIOCCCENTRY_ANSWERS_VERSION
from "MKIOCCCENTRY_ANSWERS-IOCCCMOCK-1.0"
to "MKIOCCCENTRY_ANSWERS_IOCCC28-1.0".
Changed MKIOCCCENTRY_REPO_VERSION
from "1.6 2024-10-10"
to 1.6.1 2024-10-22.
Release version 1.6 2024-10-09
Release 1.6 2024-10-09
Prep for "Release 1.6 2024-10-10".
This is a pre-Great Fork Merge code freeze for this repo.
We expect to make one minor change before the full Great Fork Merge
when we replace all references for "ioccc-src/temp-test-ioccc"
with "ioccc-src/winner" and replace all links to the
https://ioccc-src.github.io/temp-test-ioccc/
web site with the official
https://www.ioccc.org/index.html
web site.
Changed MKIOCCCENTRY_REPO_VERSION
from "1.5.25 2024-10-10"
to "1.6 2024-10-10".
Release 1.5.25 2024-10-09
Synced jparse
from jparse repo. This
includes better (additional) testing of JSON encoding/decoding ('Beware of the
dragon fire
drake!' :-) ), a new version
string (UTF-8 version, which is now also displayed in the tools in this repo, as
it also helps identify if there is a mismatch in versions in bug reporting or
something else), amongst various other things. Should one wish to further
progress their dementia! :-) they can look at that repo's log or the
jparse/CHANGES.md file.
New option -N
to jstrdecode(1)
and jstrencode(1)
to ignore (in decoding
and encoding internal to the tool itself, not JSON) all newlines found in data.
Release 1.5.24 2024-10-09
Synced jparse
from jparse repo. This
cleans up some code, removes code that's unnecessary and syncs the versions of
all tools to the same: 1.2.0 2024-10-09
. A new version string was added as
well, JPARSE_UTF8_VERSION
. A bug in a script was also fixed.
Removed soup/entry_time.c
and soup/entry_time.h
. We call time(3)
directly from test_formed_timestam()
in soup/entry_util.c
.
Release 1.5.23 2024-10-08
Noted dependency of MAX_SUBMIT_SLOT
and MAX_TARBALL_LEN
defines
in soup/limit_ioccc.h
with the IOCCC submit server.
The files utf8_posix_map.c
and utf8_posix_map.h
have been renamed
default_handle.c
and default_handle.h
respectively to better account
for their true purpose. Additionally the function check_utf8_posix_map()
was renamed to check_default_handle_map()
for the same clarifying reason.
Synced jparse
from jparse repo. This
should fix JSON decoding bugs. Although a couple things have to be done still to
close that issue out it appears
everything is good now. Some 'good' JSON files were changed to be 'bad' as they
have invalid UTF-8 bytes, it seems, but if this turns out to be false (or if the
so-called JSON spec allows for accepting it), this can be changed back,
especially as some test suites suggest that those files are legal, even though
multiple sources say otherwise.
Release 1.5.22 2024-10-01
Improve soup/is_available.sh
to now verify that checknr(1)
is reliable and
if it is unreliable or cannot be found, the step is skipped in prep.sh
. The
original version of checknr(1)
always returned 0 even with an error so this
check in is_available.sh
expects a non-zero value, not 0, in order to verify
it works okay, as in order to make sure that it works right we construct a
temporary erroneous man page.
The prep.sh
here now skips check_man
rule if checknr
cannot be found or is
unreliable.
The Makefiles (except for dbg
and dyn_array
as these repos do not yet have
the script or the changes) have been updated to better explain the problem if
is_available.sh
reports non-zero.
Sync jparse
from jparse repo with the
above changes (jparse
is where it originated).
Release 1.5.21 2024-09-30
Bug fix prep.sh
wrt skipped messages, and indent URL of each tool.
Make use of is_available.sh
in the Makefiles.
Synced jparse
from jparse repo with the
above changes to do with the jparse repo.
Release 1.5.20 2024-09-29
Sync jparse
from jparse repo. This
includes a new JSON file with some details about it as well as some fixes in the
README.md file (newer synopsis of some tools) as well as a couple functions
added.
Release 1.5.19 2024-09-27
Add FOO_BASENAME
to all tools in this repo. This is used in both -V
option
and -h
option.
The -V
and -h
option of all tools now show the JSON parser version. This is
because it is helpful to know what parser version is linked in, especially for
any bug reports. This should not normally be a problem as the copies in this
repo are linked in but in case there is a problem it is now done (for some the
parser is actually used so it's even more important).
Sync jparse/
from jparse repo. The changes
consist of the FOO_BASENAME
changes described above for the tools in this
repo, plus a broken link in jparse_bug_report.sh
. This needs to be done for
the dbg repo and the dyn_array repo.
Fix comment about CUNKNOWN
in Makefile.example.
The ENTRY_VERSION
has been changed from "1.1 2024-02-11" to "1.2 2024-09-25".
Both "title" and "abstract" we added to the .entry.json
file format.
The entry_JSON_format_version
was changed from "1.1 2024-02-11" to "1.2 2024-09-25".
Release 1.5.18 2024-09-24
Sync jparse/
from jparse repo. The
following was added to the jparse CHANGES.md file:
-
Implement boolean
unicode
ofstruct json_string
in the decoding functions.
Ifjson_conv_string()
finds that callingjson_decode()
which calls
decode_json_string()
causes the boolunicode
to be false it sets the
converted
boolean tofalse
. This will then flag an error in parsing if there
is an invalid Unicode symbol. This does not mean that decoding all symbols work:
it simply means that we detect if there are invalid Unicode symbols. The check
is done on the original string but if it turns out it has to be done on the
decoded string that can be done easily. -
The
json_decode()
had a bug fix: it allocated memory for the return string
whendecode_json_string()
does that and this caused a memory leak. -
If
decode_json_string()
(which is now a static function injson_parse.c
)
detects an error, the allocated memory is freed before returningNULL
. -
Updated
JSON_PARSER_VERSION
to"1.1.6 2024-09-24"
. -
Updated
JPARSE_REPO_VERSION
to"1.0.13 2024-09-24"
. -
Added
MIN
andMAX
macros toutil.h
. -
Rename
jenc
tobyte2asciistr
injson_parse.c
to avoid confusion about its
purpose. -
Expand the output of
jstrencode -t
andjstrdecode -t
to express that the
encode/decode tests have not yet been written. This depends on bug #13 being
resolved first. -
Changed optimisation flags in the Makefiles to not specify
-g3
as debug
symbols are almost useless when optimising and we have-O3
in use. During
debugging one can always use:
make C_OPT="-g3" clobber all
to compile in debug symbols or have a file in the respective directories (those
needed) called makefile.local
with the line:
C_OPT= -g3
which is used for development purposes but should not normally be done.
-
Fix potential use without initialisation of
inputlen
injstrencode.c
. -
Add function
decode_json_string()
to help simplify thejson_decode()
function as it's quite long. This new function takes the length and calculated
decoded size as well as the pointers (the block of memory, the return length and
thehas_nul
as well) and then allocates thechar *
and does what was the
second half of thejson_decode()
function. Asjson_encode()
is much simpler
it seems like at this time that something like this is not needed. This new
function is not static but it is entirely unclear if that is necessary. -
Add to
struct json_string
thebool unicode
. Currently unused (just
initialised to false) the purpose will be to indicate whether or not the string
has any invalid unicode symbols found during decoding. -
Add (as
json_utf8.h
andjson_utf8.c
) the filesunicode.h
andunicode.c
from the C unicode library unicode-c
repo, slightly modified to fit
our needs. More modification can be done once the bug injson_parse.c
's
json_decode()
function is modified to use what appears to be the function
ucs2_to_utf8()
. It is not clear at this point but it might be possible to
greatly reduce these new files in code to just the bare minimum of what we
require but right now it is all included, even the repeat macros in the C file
(whenHEADER
is defined which it is not). The test code was removed from these
files as that was part of its test suite that we do not need. A link back to the
repo has been added, along with the author and the same header comments in the
files. If it turns out we can just use the UTF-8 decoding algorithm by itself we
might reduce the code to just that, making sure to credit (and link back) the
author. But in the meantime we still have to resolve the UTF-8 decoding bugs. -
The Makefiles now compile and link in
json_utf8.c
. -
Run
make seqcexit
. -
Add call to
setlocale()
injstrencode.c
andjstrdecode.c
. -
Fix build of libjparse.a - add
json_utf8.o
. -
Remove
#line ..
fromjson_utf8.h
. -
Removed helper function
is_utf8()
as it appears to be not useful and might
actually be incorrect. A copy of this function has been made in the case it
actually does prove useful, unlikely as that seems. -
Added
version.h
which has the versions for the repo release, the jparse JSON
parser and the jparse tool. The other tools have their respective version in
their source code file. This file was added primarily so thatverge
could
refer to the JSON parser version. I...
Release version 1.5 2024-08-27
Release 1.5 2024-08-27
Prep for "Release 1.5 2024-08-27".
Changed MKIOCCCENTRY_REPO_VERSION
from "1.4 2024-08-11"
to "1.5 2024-08-27".
Release 1.4.4 2024-08-27
Running chkentry(1)
with a single argument is now reserved for future use
(related to a winning IOCCC entry instead of a submission).
Changed CHKENTRY_VERSION
from "1.0.1 2024-03-02"
to "1.0.2 2024-08-26".
Release 1.4.3 2024-08-23
Added a number of test JSON files to demonstrate that the JSON parser is okay
with mixed spacing (spaces and tabs or different number of spaces with or
without tabs etc.), no spacing and so on, even though the mkiocccentry(1)
tool
will form json files with multiples of 4 spaces and no tabs.
Changed MKIOCCCENTRY_VERSION
from "1.4 2024-08-11"
to "1.0.8 2024-08-23".
Release 1.4.2 2024-08-21
Changed mkiocccentry(1)
to form .info.json
and .auth.json
with
multiples of 4 spaces and no TAB characters.
Further simplified the Makefile.example
file.
Release 1.4.1 2024-08-17
Add macros ENTRY_VERSION
and AUTHOR_VERSION
that correspond to the
.entry.json
file of each winning entry and the author_handle.json
file that
corresponds to each winning author.
Release version 1.4 2024-08-11
Release 1.4 2024-08-11
Prep for "Release 1.4 2024-08-11".
Changed MKIOCCCENTRY_REPO_VERSION
from "1.3 2024-08-02"
to "1.4 2024-08-11".
Release 1.3.2 2024-08-10
Removed code files and documentation related to jfmt(1)
, jval(1)
and jnamval(1)
as these tools are not yet ready for release and we do not want people to become
confused about their functionality in the interim.
Release 1.3.1 2024-08-08
Fixed a bug where jparse/jfmt
was printing debug messages even at debug level 0.
Release 1.3 2024-08-02
Release 1.3 2024-08-02
Changed MKIOCCCENTRY_REPO_VERSION from "1.2 2024-07-04".
to "1.3 2024-08-02".
Release 1.2.5 2024-07-28
We add a lot of good and bad JSON files to the test JSON directories
(test_ioccc/test_JSON/good
and test_ioccc/test_JSON/bad
respectively) that
come from the JSONTestSuite repo with
all tests succeeding. We give our gratitude to the maintainers of the repo! For
a quick note on why these results are significant, besides the fact that it is
more validation that our parser is in good shape, is from the maintainers of the
repo. They write about the files:
These files contain weird structures and characters that parsers may understand
differently, e.g.:
huge numbers
dictionaries with similar keys
NULL characters
escaped invalid strings
Again we give a HUGE THANK YOU to the
JSONTestSuite repo maintainers!
The jparse/README.md file has been updated to move the history section to the
very bottom and to discuss (briefly) the testing procedure that Landon and I
(Cody) have implemented.
The make test
, make prep
and make slow_prep
rules now show the time of
starting and time of ending.
Also, since this was not mentioned, we recently added (with thanks to
@SirWumpus) a workflow that runs make slow_prep
on push and pull request so we
can more easily find problems (in case someone forgets to run the rule prior to
commit or if there is a case where the local environment of the committer makes
the test pass even though it should not, which has happened before).
Release 1.2.4 2024-07-14
Add constants for test_formed_timestamp_usec()
in entry_util.c
.
Fix error messages in a number of sem_member_value_*
functions in
jparse/json_sem.c
, where the *
is some of the number checks. In particular
a number of non-boolean checks reported incorrectly that the type was not a bool
when it actually expects something else.
Release 1.2.3 2024-07-12
Add -e
option to mkiocccentry(1)
which if specified will be passed to
txzchk(1)
. The test suite always uses this option. The man page for
mkiocccentry(1)
was updated to show this new option. The guidelines might want
to be updated for this but they might not want to be. This is TBD later.
Updated MKIOCCCENTRY_VERSION
to "1.0.7 2024-07-12"
for the -e
option.
Release 1.2.2 2024-07-11
Removed -q
from txzchk(1)
and make it always show warnings. If one wants to
not see warnings they can do 2> /dev/null
. The point of this change is so that
the submit server does not have to use -q
but also warnings should be showed
in any case if there are any. The option to show warnings, -w
, still exists
but using this should not normally be required. This commit will require an
update to the guidelines which I will do when this has been merged.
The punny messages in txzchk(1)
are now in their own option (or actually
options): -e
and -f
; -f
requires an argument that can be converted to an
unsigned integer but you will have to either try it out, read the source or
check the man page if you wish to know more as I (@xexyl) do not want to spoil
the fun of finding it (including the additional ones)! mkiocccentry(1)
will
use the first option but not the second one. This was suggested on GitHub just
like the removal of -q
was.
Updated TXZCHK_VERSION
to "1.0.8 2024-07-11"
.
Ran make rebuild_txzchk_test_errors
due to slight message changes and then
make release
to test everything.
Release 1.2.1 2024-07-10
Fixed txzchk(1)
to NOT show warnings if -q
is used unless -w
is used
which now disables -q
as it's necessary for the test suite (that always held
but with this fix it caused problems to not disable quiet mode and since -q
does not make sense with -w
anyway it is not a problem).
txzchk_test.sh
no longer uses -q
but this is only because there is no point
in using it due to the change in txzchk(1)
.
I (@xexyl) (re)discovered this problem when working on adding the details of
using txzchk(1)
to the guidelines, as I know how it works best and I felt
there were some details that could be clarified.
Changed TXZCHK_VERSION
to "1.0.7 2024-07-10"
.
Changed TXZCHK_TEST_VERSION
to "1.0.3 2024-07-10"
.
Release 1.2 2024-07-04
Fixed txzchk(1)
for BSD (in particular NetBSD) by #include <sys/wait.h>
.
Thanks to @SirWumpus for the report!
Changed txzchk
TXZCHK_VERSION"1.0.3 2024-03-02" to
"1.0.6 2024-06-25".
Updated bug_report.sh
script with new option -m make
to specify path to
make(1)
. The script now also tries to find gmake
, first and if that fails
it will look for make
. In the case that it is not a regular executable file it
is considered a command line error along the lines of 'command not found'. This
helps simplify the handling of the error codes as without make(1)
the script
is essentially useless anyway (or mostly useless).
Changed bug_report.sh
BUG_REPORT_VERSION from "1.0.3 2024-06-26""
to "1.0.4 2024-06-26"`. Man page updated for these changes.
Fixed bugs that prevented NetBSD from compiling this code. Fixed
a number of compiler warnings under NetBSD. Thanks to @SirWumpus
for the detailed bug report and his assistance in testing.
Fixed a bug that caused iocccsize(1)
to crash on some systems, such
as MacOS under Apple Silicon, when given a binary blob such as the
iocccsize
binary as input.
Changed iocccsize
IOCCCSIZE_VERSION from "28.14 2024-01-04"
to "28.15 2024-06-27".
Updated Makefile.example
to be more like IOCCC winning entry Makefiles.
Expanded remarks.example.md
to include more information about
IOCCC markdown guidelines as well as more consistent with the new
IOCCC submission process.
Improve the Makefile to allow for NetBSD to run make prep
,
make slow_prep
and make release
.
Changed test_ioccc/prep.sh
PREP_VERSION from "1.0.1 2024-03-02"
to "1.0.2 2024-07-03".
Disabled parallel make for most of the repo.
Updated .github/workflows/codeql.yml
to use up to date actions for
checkout, node setup, Initialize CodeQL, Autobuild, and Perform CodeQL Analysis.
Added .github/workflows/test.yml
to perform make actions such as
make slow_prep
and make test
as part of the GitHub workflow.
Fix .github/dependabot.yml
to set an update schedule for GitHub Actions.
Changed MKIOCCCENTRY_REPO_VERSION from "1.1 2024-05-19"
to "1.2 2024-07-04".