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. In order to get this to work, thejparse.y
file now has#include "version.h"
. This means the backup parser source code
has been rebuilt withmake 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 removejparse_test.log
andMakefile.orig
. -
Fix
make legacy_clobber
to removejparse.a
. -
Fix
${RM}
in Makefiles to use${Q}
variable (not inmake 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
forrm
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 thejstr_test.sh
,
jnum_chk
tests and it does not runjparse_test.sh
except
on thetest_ioccc/test_JSON
directory as thejparse/Makefile
runs the
appropriate tests intest_jparse/
(in this repo underjparse/test_jparse
) -
obviously the jparse repo knows nothing abouttest_ioccc/test_JSON
so it has
to be done this way. It's likely that with the-Z topdir
option (that was
recently added tojparse_test.sh
) or some other workaround the script could
run fromtest_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
underjparse/test_jparse/test_JSON/bad_loc
have been updated here (this is
another reason that we cannot as easily runjparse_test.sh
fromioccc_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".