Release 2.4.3 2025-03-11 #1247
lcn2
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Release 2.4.3 2025-03-11
IMPORTANT NOTE:
While you are NOT required to use this release in order to submit to IOCCC28,
we do RECOMMEND that you use and install this release of the mkiocccentry toolkit.
BACKWARD COMPATIBILITY:
This release is backward compatible with "Release 2.4.2 2025-03-02".
Submissions made under "Release 2.4.2 2025-03-02" remain valid for IOCCC28.
RELEASE DETAILS FOLLOW:
Fix search of tools under
$PATH
.Fix bugs in
resolve_path()
where even if one had./
or/
in front of thepath it could end up resolving a path that is not a regular executable file
(when it did not have a
/
in the path this did not happen). Another bug wasfixed where if
$PATH
is NULL or empty and the path is not a regular executablefile it still would be a strdup()d copy of the original path.
The above solved a problem where we could get the tools to be found (if they
exist) if we also did a check for
is_file()
andis_exec()
but with the abovefixes we only have to check for
!= NULL
.The
find_utils()
functions now takes a correspondingbool *
for each tool tofind. If the boolean is not NULL then we search for that tool. If it is NULL and
the
char **
is not NULL then we set the*tool
to NULL. This way the callercan, if they wish and they are careful, decide whether or not to find all the
tools. For example
txzchk
only looks fortar
if test mode is not enabled.And although as a safety check before free()ing the pointer we do check that
test mode was not used we do not technically need it as long as we pass in
&tar
(although we do give NULL so we do need to check it).Sync copyright fixes from jparse.
Force set
nul_warning
to false inmkiocccentry(1)
and disable checking ofit in
chkentry(1)
. Post IOCCC28 it will be removed from struct info, the.info.json files and chkentry(1) that checks it.
Rather than directly put in
true
in the writing of the .info.json file, forceset
first_rule_is_all
totrue
inmkiocccentry(1)
and reference thatboolean in the writing of the .info.json file.
Changed
MIN_MKIOCCCENTRY_VERSION
to"2.0.1 2025-03-02"
Updated
MKIOCCCENTRY_VERSION
to"2.0.2 2025-03-11"
.Changed
MIN_TXZCHK_VERSION
to"2.0.1 2025-03-02"
.Updated
TXZCHK_VERSION
to"2.0.2 2025-03-11"
.Changed
MIN_CHKENTRY_VERSION
to"2.0.1 2025-03-02"
.Updated
CHKENTRY_VERSION
to"2.0.2 2025-03-11"
.Resolve issue #1229. Add
-U UUID
tomkiocccentry(1)
to set the username.Also fixed an error with
-u uuidfile
where it would not set thetest
booleanto true if the UUID was
"true"
.The
-u uuidfile
and-U UUID
options may not be used with-i answers
,-d
, nor-s seed
.Partial fix to issue #1208. The
-x
option to force delete thesubmission directory and
-r rm
option to set path torm(1)
were added tomkiocccentry(1)
as part of issue #1208. The part of issue #1208 that was NOTdone was moved into issue #1235: and that will be completed later for IOCCC29.
Fixed bug where
overwrite_answers
was always true by default inmkiocccentry(1)
.Updated man page for the above changes.
Resolved issues #1233 and #1218. Both
mkiocccentry(1)
andtxzchk(1)
(the only onesthat use other tools) now search
$PATH
for the tools first by way of thefind_utils()
function (modified a fair bit) and a new util function in jparsecalled
resolve_path()
. The jparse util functionsshell_cmd()
andpipe_open()
were also improved to resolve paths if no/
is in the commandname. As for
make
: we now search forgmake
first as the Makefiles we needare GNU Makefiles.
Add missing
-r
torm
inmkiocccentry_test.sh
.Resolve issue #1206. Some people wanted this option to submit multiple
submissions without having to repeatedly copy/paste their username UUID. Now they
can just put the UUID in a text file and use
-u uuid
. If the file is not a regularreadable file or it does not have a valid UUID it'll prompt like before. If the
-i answers
flag is used it is not relevant.Resolve issue #1210. The directory/file lists to be ignored prompting was
confusing to some people. The question of 'Is this OK?' was reworded to 'Do you
wish to continue?' and the explanation is hopefully a bit clearer too.
Resolve issue #1221. Removed the check for first rule is all (in Makefiles).
This allows one to also have earlier on the format of
CC:= cc
rather than justCC= cc
, should they wish. The.info.json
file still has this bool but it'salways set to true and chkentry will ignore it. AFTER IOCCC28 it will be
removed from
.info.json
andchkentry(1)
code will no longer have the functionsinvolved.
Resolve issue #1209. Although not labelled 'top priority' it was already done in
the code. If
topdir
is the same asworkdir
it is an error. Ifworkdir
is undertopdir
it is an error. Iftopdir
is somehow slipped into the submissiondirectory it is an error. If
workdir
is encountered intopdir
we skip it withfts_set()
so as to not descend into it. Also, we now check that thedirectories are directories an are the right permissions, prior to even trying
to scan/copy files/directories (to show a better error message).
Resolve issue #1214. With guidance from @SirWumpus and Landon, and at their
request, the iocccsize tool no longer warns against wordbuf warning unless
verbosity is high enough; in
mkiocccentry(1)
it sets the boolean to true or falsedepending on the result but it only notes it as a fun fact, suggesting the user
note it in their remarks. Post IOCCC28 the bool will be removed from .info.json
and
chkentry(1)
functions for it will be removed. For now the function thatchecks this value in
chkentry(1)
simply returns true. Additionally, the wrongvariable was being referenced in
soup/rule_count.c
- it was referencingcounts.wordbuf_warning
when it should have been referencingcounts.ungetc_error
. Also, because rule 13 no longer restricts UTF the charwarning is only shown if verbose enough. This did not need to be updated in
mkiocccentry as it's only referenced
#ifdef ASCII_ONLY
and before that checkis in
soup/rule_count.c
the code does#undef ASCII_ONLY
(and it's not evenreferenced in mkiocccentry.c).
Resolve issue #1215.
Now the version checks for
chkentry(1)
are a >= check. Uses code fromjparse/verge.c
. Itsmain()
was moved toverge_main.c
andverge.c
now hasa new function
vercmp()
.verge.o
is linked into the library andchkentry
now uses it. Also there are new arrays that we called 'poisoned versions' and
this allows for bad versions to be excluded. Each tool and some other versions
have a minimum version allowed which at this time is equivalent to the current
release. If a version is incremented then the minimum version would be changed
to be the version at the time the contest opens. In this way uploaded
submissions will not be invalidated. As for poisoned versions the lists are
currently empty (just NULL terminated - must be last element).
Updated
test_ioccc/gen_test_JSON.sh
to have a new function -get_version
. This was necessary so we can usegrep -v MIN_
. If it was in thesame function it would cause another
MIN_
macro to be excluded fromlimit_ioccc.h
which was a problem. Updated the script's version to"1.0.2 2025-03-07"
.This discussion was created from the release Release 2.4.3 2025-03-11.
Beta Was this translation helpful? Give feedback.
All reactions