Skip to content

Releases: ioccc-src/mkiocccentry

Release version 2.0 2024-11-17

17 Nov 16:34
Compare
Choose a tag to compare

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

11 Oct 00:21
Compare
Choose a tag to compare

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. I...

Read more

Release version 1.5 2024-08-27

27 Aug 20:25
Compare
Choose a tag to compare

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

11 Aug 20:27
Compare
Choose a tag to compare

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

02 Aug 18:29
Compare
Choose a tag to compare

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

05 Jul 01:08
Compare
Choose a tag to compare

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".

Release 1.1.1 2024-06-23

23 Jun 19:58
Compare
Choose a tag to compare

Changed LOCATION_VERSION to "1.0.4 2024-05-22".

Fixed usage string in location_main.c: it did not suggest that one can specify
more than one location but it can.

Added to the README.md brief documentation of the location(1) tool (it was not
there at all) and fixed some typos and added some clarity in the location.1
man page.

Updated the Rule 2a size from 4096 to 4993: a change that keeps the
"Rule 2b:Rule 2a" ratio (that was recently changed from 2053 to 2503)
similar to the 2001-2020 IOCCC era.

mkiocccentry 1.1 2024-05-19

20 May 16:32
30979b0
Compare
Choose a tag to compare

Release 1.1 2024-05-19

Release version 1.1 of the mkiocccentry tool set.

Release 1.0.64 2024-05-18

Changed all submission_num to submit_slot (including json tags) and changed
all MAX_SUBMISSION_NUM to MAX_SUBMIT_SLOT_NUM and
all MAX_SUBMISSION_CHARS to MAX_SUBMIT_SLOT_CHARS and
changed relater comment and prompt text to be more consistent with the
pending submit server AND reduce the chance that someone revising their
submission incorrectly thinks they need to increment that value each time.

Remove formed_UTC JSON member from .auth.json and .info.json.
The formed_UTC JSON member was redundant in that it was simply
a different coding of the formed_timestamp in ASCII date string form.
It was a source of errors in editing formed_timestamp values.

Changed INFO_VERSION from "1.15 2024-03-02"
to "1.16 2024-05-18" as a result of the JSON member name above changes.

Changed AUTH_VERSION from "1.21 2024-03-04"
to "1.22 2024-05-18" s a result of the JSON member name above changes.

Fix soup/reset_tstamp.sh and soup/Makefile to look for the
correct location of the limit_ioccc.h file and fixed the prompts
result messages.

Changed soup/reset_tstamp.sh RESET_TSTAMP_VERSION from "1.0.1 2024-03-02"
to "1.0.2 2024-05-15" as a result of the above changes.

Changed MKIOCCCENTRY_VERSION from "1.0.5 2024-05-15"
to "1.0.6 2024-05-19" as a result of the above changes.

Changed TXZCHK_VERSION from "1.0.4 2024-05-16"
to "1.0.5 2024-05-19" as a result of the above changes.

Performed make reset_min_timestamp to change MIN_TIMESTAMP from 1675547786
to 1716103155 due to the changes in both .auth.json and .info.json.

Release 1.0.63 2024-05-16

Changed more references of entry to submission and entries to
submissions and updated the man pages for mkiocccentry(1) and chkentry(1)
about this as there are places where it is NOT appropriate to update the terms.
It might be that there are no more places where entry or entries is used
incorrectly (except perhaps for iocccsize.c) but the other terms have not been
checked.

Make txzchk(1) not show output if -q specified. Updated version to "1.0.4 2024-05-16".

The mkiocccentry(1) tool prints both the location name and the
common location name when prompting the user to validate author
location data.

Release 1.0.62 2024-05-15

Changed MKIOCCCENTRY_REPO_VERSION from "1.0.1 2023-02-14"
to "1.0.62 2024-05-15" to match the above release version.

Changed IOCCC_CONTEST from "IOCCCMOCK"
to "IOCCC28" for testing purposes. :-)

Changed IOCCC_YEAR from "2023"
to "2024" for testing purposes. :-)

Changed MKIOCCCENTRY_VERSION from "1.0.4 2024-03-04"
to "1.0.5 2024-05-15" because of the above constant changes.

The filename formed by mkiocccentry(1) was changed
to start with submit. instead of entry..

Changed FNAMCHK_VERSION from "1.0.1 2024-03-02"
to "1.0.2 2024-05-15" because of the above change.

Updated mkiocccentry(1) and chkentry(1) man pages accordingly.

Updated the test files according to the above changes.

Release 1.0.61 2024-03-07

Remove from comments the winner_handle. Fixed the regexp of an allowed handle
(in comments and in strings). It is regrettable but due to the use of
posix_plus_safe() additional characters are allowed that might be better left
out (these have been allowed for a long time but the comments and strings said
otherwise). The regexp that is allowed for author_handles is:

^[0-9A-Za-z][0-9A-Za-z._+-]*$

The difference is that it allows upper case characters too. In particular the
old regexp was ^[0-9a-z][0-9a-z._+-]*$.

Typo fix in txzchk.h: referred to posix_safe_plus() instead of
posix_plus_safe().

Change words entry and entries to submission and submissions (exception:
in iocccsize).

Added FAQ 12 "Why do these tools sometimes use the incorrect IOCCC terms?".

Release 1.0.59 2024-03-04

Added a distinction between a "common name" and "name" for locations.

Added -c to the location command line to change using "name"
(the default) to ""common name".

Removed location_name JSON member from .auth.json.

While mkiocccentry will ask the user to verify their location_code
by also showing them the location_name, it will no longer add
the JSON member with the JSON member name of "location_name" to .auth.json.

Changed LOCATION_VERSION from "1.0.2 2023-08-04" to "1.0.3 2024-03-03".
Changed MKIOCCCENTRY_VERSION from "1.0.3 2024-03-02 to "1.0.4 2024-03-04".
Changed IOCCC_auth_version from "1.20 2024-03-02" to "1.21 2024-03-04".
Changed MKIOCCCENTRY_REPO_VERSION from "1.0.1 2023-02-14" to "1.1 2023-03-04".

Added a simple make unstall rule to uninstall all files installed by this repo.

Release 1.0.58 2024-03-02

Address part (possibly all) of the issue of new IOCCC terms (only part because
some things need to be decided still especially with file names and related
specifics but possibly all if it's decided these should stay the same).

Changed version of txzchk to "1.0.3 2024-03-02".
Changed version of fnamchk to "1.0.1 2024-03-02".
Changed version of mkiocccentry to "1.0.3 2024-03-04".
Changed AUTH_VERSION to "1.20 2024-03-02".
Changed INFO_VERSION to "1.15 2024-03-02".

In many cases the word entry was changed to submission. For chkentry and
mkiocccentry it has been decided to keep the names. However in text, variable
and comments the word is now submission. It is not clear, however, if a
submission directory needs to have a different prefix (currently it's entry.).
If this is necessary then more changes will have to be made. If it needs to be
renamed then changes in fnamchk and txzchk plus data files (at the very
least - there might be other places that'd have to be updated) will have to be
made.

winner/winners changed to winning author/winning authors (a more
thorough check has to be performed to make sure all are caught, see below). A
winning submission is an entry and at least in some cases this is now clear. In
the case of winner_handle (or even just winner handle) this was not changed.
There already exists an author_handle and that's what is in the files but in
comments winner_handle also exists. In other words this ambiguity should be
addressed.

The json past_winner was changed to past_winning_author. This
involved updating some patch files and all the auth json files as well.

Typo fix in bug_report.sh. No version update.

In many cases (not all) the year 2023 was changed to 2024. The IOCCC_YEAR was
NOT updated to 2024 as this causes other problems that require a bit more time.

A fun problem to resolve is the text along the lines of 'submit your entry'
being changed to 'submit your submission'. In some cases the surrounding text
was reworded but not in all. If you like this can be submissions all the way
down!

Release 1.0.57 2024-01-21

Rename "print_test" to "pr_jparse_test". The name "print_test" was
too generic and might conflict with some test print application
if it was installed.

Release 1.0.56 2024-01-20

Changed "iocccsize_version" in JSON files (those that were "28.13 2023-02-04") to ""28.14 2024-01-04". This fixed a problem with make prep
failing due to the script chkentry_test.sh failing due to many errors
reported, some of which didn't seem to make any sense whatever.

Change fd_is_ready() to return true if isatty(fd).

Release 1.0.55 2023-11-07

Add another forbidden file name in submissions: prog.alt (prog.alt.c is
allowed).

Modularise the checks for invalid filenames in entries. For instance in
check_extra_file() there's no need to check each extra filename and then give
the same error message changing the macro of the filename that's disallowed when
we can just print the string being tested against. The only difference is that
there's one if (with multiple checks) and instead of duplicating the same error
message we just print it once with the string being tested against. Note that
there are two sets of checks: one for extra files being required filenames and
another for disallowed filenames.

Make sure to use the macros for the filenames, not the literal strings (e.g. use
PROG_FILENAME not "prog").

Check filenames in alphabetical order (I think :-) .. very tired so maybe missed
one or two).

Note that the function check_extra_file() CANNOT be used in every case so it's
not used except in chkentry!

Release 1.0.54 2023-11-06

The following filenames are no longer allowed in an entry's extra files list:

  • README.md
  • prog
  • prog.orig
  • prog.orig.c
  • index.html
  • inventory.html

The mkiocccentry tool checks for this, giving an error early on (rather than
making the user retry after inputting more details). The function
test_extra_file() now checks for these files too, giving an error if any are
found.

New mkiocccentry version: 1.0.2 2023-11-06.

txzchk also checks for these files in the tarball. New version: 1.0.2
2023-11-06.

Release 1.0.53 2023-09-13

Minor fix in jval and jnamval - new version "0.0.15 2023-09-13". The ne
operator for -S and -n already was parsed (by foresight that it would
be needed, maybe) but it was not in the help. Also I decided to change the order
of the enum so that JSON_CMP_OP_NE comes right after JSON_CMP_OP_EQ rather
than at the end.

Man pages updated - added ne to -S and -n options.

Release 1.0.52 2023-08-09

New version of jval and jnamval, "0.0.14 2023-08-09".

Fixed the lists of -S and -n option parsing. For now it should just be a
string that's strdup()d. The operators are in the list in the order specified,
one list for strings and one list for numbers. This can be c...

Read more

mkiocccentry 1.0.0 2023-02-04

06 Feb 05:45
Compare
Choose a tag to compare

Release 1.0.0 2023-02-04

Resolved all macOS -Weverything issues worth addressing. See
test_ioccc/static_analysis.md for details and to see how you can also help as
well as the fixes we applied, what might need to be fixed and what we ignore
(and why we choose to ignore them). Note that originally the commit ids were
bogus and although we fixed those in that file the git commit log obviously has
the bogus ids.

Restore Makefile use -Werror and use of -O0. With the exception of the dbg code,
use of -Werror and compiling with -O0 -g is restored in various Makefiles while
version 1.0.0 is still in development.

Fix some memory leaks detected with valgrind. See
test_ioccc/dynamic_analysis.md for details and to see how you might also help.

Exit codes checked for consistency across usage strings, man pages and the tools
themselves.

Changed DBG_VERSION from "2.6 2022-11-09" to "2.8 2023-01-29".
Minor improvements made on when warning messages are printed.
Added dbg_version as a global string for users of the dbg.a library.

Changed DYN_ARRAY_VERSION from "2.0 2022-06-09" to "2.1 2023-01-21" and then
from "2.1 2023-01-21" to "2.2 2023-01-22".
Added dyn_array_version as a global string for users of the dyn_array.a library.

Changed JSON_PARSER_VERSION from "0.12 2022-11-09" to "0.13 2023-01-21".
Added json_parser_version as a global string for users of the jparse.a library.

Moved JPARSE_VERSION "0.11 2022-07-04" from jparse_main.h to jparse.h.
Added jparse_version as a global string for users of the jparse.a library.

Changed JNUM_GEN_VERSION from "0.7 2022-05-01" to "0.8 2023-01-22".
Current JNUM_CHK_VERSION is "0.8 2022-05-01".
Fixed bug where jnum_gen.c had JNUM_CHK_VERSION.

Added SOUP_VERSION as "1.0 2023-01-21".
Added soup_version as a global string for users of the soup.a library.

Changed jsemtblgen so that -P prefix will always be used on function names.
Use of -M func will override any specific member name.
Changed JSEMTBLGEN_VERSION from "0.4 2022-07-13" to "0.6 2023-01-22".
The jsemtblgen tool, with the -I option, will not print duplicate
extern function declarations.

Fixed a number of tests relating to conversion of floating point values.
Corrected jparse/test_jparse/jnum_test.c test results for
the as_double is an integer test cases.

Added a system to notice "Notice:" messages and count then for make prep.
The test_ioccc/prep.sh tool removed the generated bug report log file
if the bug-report.sh tool does an exit 0, even if there are notices.
Changed BUG_REPORT_VERSION from "0.12 2023-01-24" to "0.13 2023-01-24".
Then with more improvements (see below) it was changed to "0.14 2023-01-30". The
improvements: check for Makefile in all subdirectories, check for overriding
makefile.local in all subdirectories and check that all subdirectories exist and
are readable and are executable.

Changed PREP_VERSION from "0.3 2023-01-24" to "0.4 2023-01-24".

Moved static variables from header to source files.

Fix segfault when author length is too long from NULL pointer dereference: due
to an else being left off from an if after rejecting the author, freeing and
setting to NULL the code went on to check for unique author names which would
then dereference the just rejected NULL author name. See commit
48ea6cc.

Go through all files and fix typos and do a check for consistency in messages as
well (error, debug, general, warnings etc.). This excludes .json, .txt and .err
files under test_ioccc/ as there's no point in checking them (some of the .txt
files do have text that would trigger spellchecking problems but they're part of
invalid tarball listings). The iocccsize related files have not been checked.
Where the alternative and incorrect English (that is American English) spelling
was in the repo it was untouched as it is after all the International Obfuscated
C Code Contest, not the Obfuscated C Code Contest for people who use proper
English. :-)

Fix some grammar errors. More could probably be done later but whether this is
worth it can be TBD at another time. There are some places that are problematic
in fixing and it's time consuming to find all the remaining issues. Besides,
this is for the IOCCC so if a few things here and there are misleading or
confusing it's probably not all that bad anyway! :-)

Improved man pages, error messages and documentation. Went through all
documentation and fixed noticed problems, typos, formatting issues etc.

Add CodeQL Analysis for GitHub commits: added codeql.yml as a new GitHub
workflow.

Fix internal Makefile rules to do with the
dbg repo.
Fold in .gitignore from dbg repo.

Improve Makefile #! lines.

Fix shellcheck errors under macOS.

Moved utf8_test(8) to test_ioccc/man/man8.

Improve getopt() calls. We now control the error messages for better output like
removing "-h help mode" when -h is specified. Compress the '?', ':' and default
cases by way of new function check_invalid_option().

Fix bug_report.sh options -l and -x.

Improve dyn_alloc code robustness.

Fix several implicit signed conversion issues and double precision floating
point tests. Improve other fixes to various warnings.

Change remaining calls to strtok() to strtok_r().

Remove duplicate object in jparse Makefile.

Update README.md for information on how to help (for when we're ready for such
help). The note that we're not yet ready will be removed once we are.

Fixed debug calls in jparse.y to match the functions being called that changed
due to making the parser re-entrant.

Fixed various compile errors in systems that were not initially tested (debian
and linux in general depending on the issue).

Improve prep.sh so that issues reported are more specific. In particular it will
show which rule failed rather than just that a make action failed.

Change in txzchk the txzpath to tarball_path to be clearer what it is.

Fix double notices by bug_report.sh for unknown versions of tools.

Improve how bug_report.sh reports on missing commands.

Fix man pages to use formatting macros throughout and add them to the SYNOPSIS
and OPTIONS sections. This makes run_usage.sh (which was always a quick, dirty
and ugly hack) even less useful but not entirely useless. Update checknr call
in Makefiles so that checknr is aware of the additional macros.

Fix (prevent) stray jparse related files after bug_report.sh.

Fix potential NULL pointer dereferences.

Improve make clobber so that specific files and directories that were being
erroneously being removed no longer are removed.

Make it easier to make soup. :-) Yes this is for fun only and that sentence has
a slight hint.

Typo fix in soup/location.c: although ions have their place when peroxide ions
in particular combine with water and diluted acids it forms hydrogen peroxide
which has ended up killing people when those unaware of the dangers
misunderstand the request that someone would like a glass of H2O too. Thus we
should get rid of stray ions in the repo and now have. See commit
532d337 for details.

Make parameters in usage() functions consistent across all files. Add usage() to
utf8_test.c and improve usage message. Change VERSION to UTF8_TEST_VERSION in
utf8_test.c.

Change boldness of foo([138]) in man pages so that only foo is in bold.

Fix usage message in fnamchk.

Change some local variables to not be the name of functions in the dbg library
(which the files in question used).
Improve iocccsize -h output. This includes adding version information to the
message.

Add version information to jsemcgen -h. More generally fix shell script -h
version in several scripts to print script name and version string.

Remove extra spaces in all_sem_ref.sh -h output.

Remove trailing blank lines to various scripts -h output.

Clarify comments about rule 2a and rule 2b tests.

Improve jsemcgen(8), jsemtblgen(8) and all_sem_ref(8).
Improve output of jsemtblgen -h.

Add FAQ.md for information on getting help with various problems.

Bug fix hostchk.sh. In particular in some cases it would be that the non-zero
exit code would be reported as 0.

Update dbg/README.md to refer to other dbg(3) man pages (the main files not the
symlinks). The jparse/README.md does not refer to an example yet (for the
library) as an example program does not exist. The dyn_array/README.md does not
explain how to link in the library yet because it depends on the dbg repo and it
is not yet determined how this will be approached. Similar can be said for
jparse though we do have json_dbg() and other related functions.

In order to make it easier to run tools from the top level directory, we
changed the default path of fnamchk from "./fnamchk" to "./test_ioccc/fnamchk",
and the path of jparse from "./jparse" to "./jparse/jparse".

Check return value of function yylex_init_extra() and warn with errno
information if non-zero return value. Sequenced exit codes, updated backup
parser files.

Remove unused function string_to_intmax() and change string_to_intmax2() to be
string_to_intmax().

Added IOCCC_NEWS_URL to mkiocccentry.h to define the URL to
read IOCCC news. Added IOCCC_REGISTRATION_READY to mkiocccentry.h
to indicate if the registration process is ready independently from
the submit server.

Fixed coredump in verge when a version string starts with a non-digit
(!isascii() && !isdigit()).

Make verge use string_to_intmax() (instead of string_to_long()) and get rid of
the following unused functions:

        extern long string_to_long(char const *str);
        extern long long string_to_long_long(char const *str);
        extern int string_to_int(char const *str);
        extern unsigned long string_to_unsigned_long(char const *str);
        e...
Read more