Skip to content

Release version 1.6 2024-10-09

Compare
Choose a tag to compare
@lcn2 lcn2 released this 11 Oct 00:21
· 409 commits to master since this release

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 of struct json_string in the decoding functions.
    If json_conv_string() finds that calling json_decode() which calls
    decode_json_string() causes the bool unicode to be false it sets the
    converted boolean to false. 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
    when decode_json_string() does that and this caused a memory leak.

  • If decode_json_string() (which is now a static function in json_parse.c)
    detects an error, the allocated memory is freed before returning NULL.

  • Updated JSON_PARSER_VERSION to "1.1.6 2024-09-24".

  • Updated JPARSE_REPO_VERSION to "1.0.13 2024-09-24".

  • Added MIN and MAX macros to util.h.

  • Rename jenc to byte2asciistr in json_parse.c to avoid confusion about its
    purpose.

  • Expand the output of jstrencode -t and jstrdecode -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 in jstrencode.c.

  • Add function decode_json_string() to help simplify the json_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
    the has_nul as well) and then allocates the char * and does what was the
    second half of the json_decode() function. As json_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 the bool 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 and json_utf8.c) the files unicode.h and unicode.c
    from the C unicode library unicode-c
    repo
    , slightly modified to fit
    our needs. More modification can be done once the bug in json_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
    (when HEADER 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() in jstrencode.c and jstrdecode.c.

  • Fix build of libjparse.a - add json_utf8.o.

  • Remove #line .. from json_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 that verge could
    refer to the JSON parser version. In order to get this to work, the jparse.y
    file now has #include "version.h". This means the backup parser source code
    has been rebuilt with make parser-o.

  • The tools now have a FOO_BASENAME in their header file which is used in both
    the usage string and the version option.

  • The file test_jparse/pr_jparse_test.h has been added for that tool.

  • The Makefiles have been updated including new dependencies.

The FOO_BASENAME will be done for the tools in this repo too. It was done this
way to make sure that the version strings match the tool without having to type
the string literally more than once.

Release 1.5.17 2024-09-15

Sync jparse/ from jparse repo. Added
function to check a string for UTF-8. Fixed make check_man.

Added script soup/is_available.sh: it takes a single arg and if it can find a
program by that name (as in by type -P) it will return 0; otherwise it returns
1.

Fix check_man Makefile rule in all Makefiles. Previously it ignored the result
which meant that prep.sh never reported a problem in a problematic man page.

Release 1.5.16 2024-09-13

Sync jparse/ from jparse repo.

This makes some important fixes to the tools jstrdecode(1) and jstrencode(1)
where in jstrdecode(1) the -Q option did not work and for both the printing
of everything should happen after everything is parsed (especially for the -Q
option but not strictly for that reason). The pr_jparse_test tool had a bug
fix as well where the -h option did not work.

Add to jstr_test.sh tests for jstrdecode(1) options -Q and -e (both
separately and together).

Clarified comment in jparse.l and rebuilt backup jparse.c (jparse.ref.c).

Add an extra sanity check to jencchk(): the macro JSON_BYTE_VALUES must
equal 256. Previously we did check that the table length of jenc is
JSON_BYTE_VALUES with the assumption that this was 256 but now we make sure
that it is 256, before we check the table length.

Release 1.5.14 2024-09-11

Sync jparse/ from jparse repo. This
includes a number of fixes and improvements to various tools and the Makefiles
(including some that will likely be implemented in the Makefiles here).

Release 1.5.13 2024-09-09

Fix Eszett (ß) in soup/utf8_posix_map.c to map to ss, not just one s. In
parentheses the word (though all caps) ESZETT was added to the SHARP S
(another term for it). This was done to make it easier to find for those of us
used to the German term.

Moved paths used by IOCCC tools out of jparse/util.h and into soup/soup.h, the
obvious location.

Updated the repo release version to account for this change.

Release 1.5.12 2024-09-08

In test_ioccc/, soup and the top level Makefiles the ${RM} variable now
uses the ${Q} control variable.

Other than dbg and dyn_array Makefiles (as those changes have to be
committed over there and then synced) the RM_V variable is now empty by
default as it used to be that the ${RM} did not use -v.

Remove from ${RM} the -r option where it is not needed i.e. when a directory
is not being removed.

Sync dbg and dyn_array subdirectories from the dbg
repo
and
dyn_array, with fixes to the Makefiles.

Sync jparse subdirectory from jparse repo
with some fixes. The changes in particular include:

  • Fix make clobber to remove jparse_test.log and Makefile.orig.

  • Fix make legacy_clobber to remove jparse.a.

  • Fix ${RM} in Makefiles to use ${Q} variable (not in make depend as it is
    used in an earlier command in the multiple line commands), in some cases changed
    from the wrong variable, and ${RM_V} (where this was not done).

  • Do not use -r in rm in Makefiles unless removing a directory, for safety.

  • Do not by default use -v for rm in Makefiles, to match what was previously
    done here.

Release 1.5.11 2024-09-07

Synced jparse subdirectory from the jparse
repo
.

It was decided that error messages in jparse(1) could be improved. This was
done in the following ways:

  • If verbosity level is > 0, then it will show the invalid token and hex value
    of that token (along with the line and column).
  • If verbosity is not specified, then it will just show the syntax error (the
    bad token with the line and column) and then the warning that the JSON tree is
    NULL (just like if verbosity specified) and then the error message (from
    jparse(1) itself).

The error files in the bad_loc have been updated as now the error output has
changed.

Updated jparse(1) version to 1.1.6 2024-09-07.

Removed timestamps from beginning/ending messages in Makefiles.

Fix clone rules in Makefile to exclude the .github subdirectory of outside
repos.

Updated .exclude to include (not that that makes sense :-) ) the glob
._.DS_Store which sometimes shows up in macOS (it is different from
.DS_Store).

Release 1.5.10 2024-09-06

Synced jparse subdirectory from the jparse
repo
.

Add -L option to jparse_test.sh to disable the error location tests. This is
not usually needed but it can be useful in some cases.

jparse_test.sh now will, in the case that no file is specified on the command
line, try and read from the default good JSON strings file and the default bad
JSON strings file, in order to verify that things are working well there, too.

Unless some problem occurs this should be the final change for jparse until
after the IOCCC28.

Release 1.5.10 2024-09-05

Synced jparse subdirectory from the jparse
repo
with some useful updates and fixes. See
the git log of that repo for more detailed information. Changes that these
updates required here (and some that are in the jparse subdirectory):

  • The test_ioccc/ioccc_test.sh script no longer runs the jstr_test.sh,
    jnum_chk tests and it does not run jparse_test.sh except
    on the test_ioccc/test_JSON directory as the jparse/Makefile runs the
    appropriate tests in test_jparse/ (in this repo under jparse/test_jparse) -
    obviously the jparse repo knows nothing about test_ioccc/test_JSON so it has
    to be done this way. It's likely that with the -Z topdir option (that was
    recently added to jparse_test.sh) or some other workaround the script could
    run from test_ioccc/ioccc_test.sh but it is redundant and not useful so it no
    longer does.
  • Due to jparse_test.sh path updates (one of the changes is to fix it to work
    on its own but this required some changes in test error files) the error files
    under jparse/test_jparse/test_JSON/bad_loc have been updated here (this is
    another reason that we cannot as easily run jparse_test.sh from ioccc_test/
    without the -Z topdir hack or some other workaround).
  • The bad_loc error files are now always tested as if there is not a matching
    error in the file it indicates a problem with the parser.

A useful update (besides the addition of the -Z topdir hack) to
jparse_test.sh that was synced here is the new -f option for the files that
hold JSON blobs, one per line: it inverts the check, saying that the JSON blobs
must be invalid. This required a new file here,
jparse/test_jparse/json_teststr_fail.txt. As jparse_test.sh always runs on
at least json_teststr.txt (if no files specified) it might be good to not have
the option and always run a fail test on the new file but this can be worried
about another time. As the jparse/test_jparse/Makefile runs it with this
option it doesn't matter much anyway.

The jparse/test_jparse/jparse_test.sh version is now 1.0.5 2024-09-04 (fixed
from the more natural :-) international way 1.0.5 04-09-2024 that
was added by habit, to match the format of the other versions); the old version
was 1.0.3 2023-08-01.

make release should be fine now, after the updates to ioccc_test.sh. The
version of that script is now "1.0.2 2024-09-05".

In the Makefile rules that have echo lines that end with starting" and those
that end with ending" it now shows the timestamp (except or the dyn_array
and dbg Makefiles as those are from other repos also).

Repo release version is now 1.5.10 2024-09-05 (a recent update did not update
the version string so it jumped more than one). Except for some last minute
fixes that might be required it might be the last release until after IOCCC28
(let's all hope it is!).

Release 1.5.9 2024-09-04

Add to -V option of compiled tools that use the jparse library in some form or
another (i.e. links it in) to print out the current json parser version. The
json parser and jparse versions were also updated (from the jparse repo).

Release 1.5.8 2024-09-01

Add to Makefiles the PREFIX variable to allow for installing to a different
location than the default /usr/local.

Added some uninstall rules to the Makefile in a number of subdirectories. The
external repos that are synced to this repo have not had any direct changes as
those repos first need those rules (which will be done soon). This is also why
the top level Makefile does not run make uninstall in those subdirectories.
Once these are all done the top level Makefile can have a simpler uninstall
rule.

Along the lines of silencing (non-verbose) install in the install rule one
may now do the same with the uninstall (instead of INSTALL_V it is RM_V).
This is only done to be congruent with the install rule.

Updated the MKIOCCCENTRY_REPO_VERSION to "1.5.7 2024-09-01".

Release 1.5.7 2024-08-31

Synced jparse subdirectory from the jparse
repo
. There was no code change and the only
functionality changes are that the install rule installs more header files (now
in a subdirectory - /usr/local/include/jparse) and an uninstall rule is added
(for those who wish to deobfuscate their system :-) ).

Updated the MKIOCCCENTRY_REPO_VERSION to "1.5.6 2024-08-31".

Release 1.5.6 2024-08-31

Add to dyn_array/Makefile or dyn_test the flag -L../dbg in hopes to solve
the workflow failure. If this works then the dyn_array repo will also have to
have this added to its Makefile.

Add to jparse/Makefile -L../dbg -L../dyn_array for the same reasons as
above. If this works then the jparse repo Makefile will also have to be
updated for this (along with some other pending changes).

Add to jparse/test_jparse/Makefile -L../dbg -L../dyn_array for the above
reasons as well.

Release 1.5.5 2024-08-30

We updated dbg/ from the dbg repo.

We updated dyn_array/ from the dyn_array repo.

We updated jparse/ from the jparse repo.

Renamed MKIOCCCENTRY_SRC to INTERNAL_INCLUDE.

Updated the MKIOCCCENTRY_REPO_VERSION to "1.5.5 2024-08-30".

Release 1.5.4 2024-08-29

Rename libraries for easier linking in other applications. In particular the
jparse repo (which currently requires some
changes in order to work on its own but this release is part of that) needs the
dbg and dyn_array libraries but in order to link these in properly one must
name them libdbg.a and libdyn_array.a (i.e. add the lib) so that one can
then do -ldbg and -ldyn_array. Along the same lines jparse.a has been
renamed to libjparse.a for linking in (this is something that has not yet been
done in the jparse repo but in order to link it in it will have to be done).

Updated the MKIOCCCENTRY_REPO_VERSION to "1.5.4 2024-08-29".

Release 1.5.3 2024-08-28

Fix hostchk.sh that was broken with the recent change of MKIOCCCENTRY_SRC.
New version for hostchk.sh: "1.0.2 2024-08-28".

Release 1.5.2 2024-08-28

Remove dependence of jparse/jsemtblgen.h on ../iocccsize.h.

Update dyn_array/, dbg/, jparse/ trees as per their GitHub repos.

Require MKIOCCCENTRY_SRC to be defined in order to compile.
We add C_SPECIAL=${C_SPECIAL} to all calls to ${MAKE} in
the Makefile.

Added ${C_SPECIAL} make variable so we can define special things
on the compile line. Bu default we use C_SPECIAL= -DMKIOCCCENTRY_SRC.

Improved the make dbg.help, and make dyn_array.help and make jparse.help.
Removed make dgb.replace_from_clone, make dyn_array.replace_from_clone,
and make parse.replace_from_clone.

When make dbg.update_from_clone is used, we also perform
a make depend where we force C_SPECIAL=-DMKIOCCCENTRY_SRC.

When make dyn_array.update_from_clone is used, we also perform
a make depend where we force C_SPECIAL=-DMKIOCCCENTRY_SRC.

When make jparse.update_from_clone is used, we also perform
a make depend where we force C_SPECIAL=-DMKIOCCCENTRY_SRC.

The above 3 items allows us to clone from the repo and then to force
make depend under -DMKIOCCCENTRY_SRC so that include files for
dbg and dyn_array will be found under this directory tree.

When make dbg.update_into_clone is used, we also perform
a make depend where we force C_SPECIAL=-UMKIOCCCENTRY_SRC.

When make dyn_array.update_into_clone is used, we also perform
a make depend where we force C_SPECIAL=-UMKIOCCCENTRY_SRC.

When make jparse.update_into_clone is used, we also perform
a make depend where we force C_SPECIAL=-UMKIOCCCENTRY_SRC.

The above 3 items allows us to clone from the repo and then to force
make depend under -UMKIOCCCENTRY_SRC so that include files for
dbg and dyn_array will be found under /usr/local/include.

Release 1.5.1 2024-08-28

Move open_json_dir_file() from chkentry.c to open_dir_file() in
jparse/util.c.

Updated MKIOCCCENTRY_REPO_VERSION version to "1.5.1 2024-08-28".