Take libakerror 2.0.2, libakstdlib and libakgl 0.9.0
Bumps all three ak* submodules to their current main, applies what their
upgrade notes require, and retires the two workarounds they make obsolete.
libakerror 2.0.1 -> 2.0.2 (63 commits). Two of its fixes were this
repository's own filed issues, and both workarounds are gone:
- It namespaces its embedded `coverage` target now, the same
CMAKE_SOURCE_DIR test it already applied to `mutation` (its issue #15).
The add_custom_target() shadow that renamed it on the way past could
only ever fire on a name the dependency has stopped using, so it is
deleted rather than left as dead code.
- It installs akerrorConfigVersion.cmake at SameMajorVersion (its issue
#16). MAINTENANCE.md said to add a `1.0` floor to our find_dependency
calls when this landed; the floor is now `2.0`, and we have no
find_dependency calls to add it to, so the paragraph says that instead
of an instruction nobody can follow.
Its IGNORE context also changed shape: `__akerr_last_ignored` was an extern
pointer, and is now a per-translation-unit `static akerr_last_ignored` holding
a copy, so the pool slot can be released. Nothing here referenced the symbol,
but it costs us 1.35 MiB of thread-local storage -- 38 TUs x 37,296 bytes,
measured as the entire TLS segment of build/basic, where 2.0.1 produced no TLS
segment at all -- plus 84 -Wunused-variable warnings. Filed upstream as
libakerror issue #37 and recorded in MAINTENANCE.md rather than patched here,
because patching a submodule forks it.
libakstdlib gains directory and file-metadata wrappers with no version bump.
aksl_snprintf keeps its `int *count` -- an intermediate commit removed it and
the merge put it back -- but now reports the required length on truncation
rather than 0. Every call site here reads it only after a successful return,
so nothing moved.
The directory wrappers close the gap DIRECTORY was refused for (libakstdlib
issue #10). The verb is still unwritten, so it still refuses, but it no longer
blames a wrapper that exists: the message is "DIRECTORY is not implemented
yet" and tests/disk_verbs.c asserts both that it says so and that it does not
name libakstdlib. What writing it would need is akbasic issue #55.
libakgl moves to the current main at 0.9.0. It registers libccd and tg as
submodules, so a tree that only ran `git submodule update --init --recursive`
before the bump needs it again or the configure fails on a missing
libccd/src/ccd/config.h.cmake.in.
Verified: 114/114 default, 116/116 under -DAKBASIC_WITH_AKGL=ON, docs_examples
green in both. libakerror's UPGRADING.md documents a 2.0.3 that project()
never stamped, so the version tables read 2.0.2 -- libakerror issue #38.
Co-Authored-By: Andrew Kesterson <andrew@aklabs.net>
Co-Authored-By: Claude Code (Claude Opus 5, claude-opus-5[1m]) <noreply@anthropic.com>
This commit is contained in:
@@ -407,17 +407,22 @@ akerr_ErrorContext *akbasic_cmd_directory(akbasic_Runtime *obj, akbasic_ASTLeaf
|
||||
FAIL_ZERO_RETURN(errctx, (obj != NULL && dest != NULL), AKERR_NULLPOINTER,
|
||||
"NULL argument in DIRECTORY");
|
||||
/*
|
||||
* Refused rather than half-built. Listing a directory needs opendir/readdir,
|
||||
* which `libakstdlib` does not wrap -- and this project's rule is that a
|
||||
* missing capability gets filed upstream rather than worked around here
|
||||
* (MAINTENANCE.md). Filed as libakstdlib issue #10.
|
||||
* Refused rather than half-built. This was blocked upstream: listing a
|
||||
* directory needs opendir/readdir, `libakstdlib` did not wrap them, and
|
||||
* this project's rule is that a missing capability gets filed upstream
|
||||
* rather than worked around here (MAINTENANCE.md). That was libakstdlib
|
||||
* issue #10, and it landed -- aksl_opendir, aksl_readdir, aksl_closedir
|
||||
* and aksl_rewinddir all exist as of the revision this tree pins.
|
||||
*
|
||||
* The alternative was shelling out to `ls`, which a library has no business
|
||||
* doing, or calling readdir directly and stepping outside the error
|
||||
* convention every other call in this file follows.
|
||||
* So the blocker is gone and only the work is left. Writing the verb needs
|
||||
* decisions this commit is not the place for: what a listing looks like on
|
||||
* a filesystem with no disk-image block counts, which of the Commodore
|
||||
* wildcard forms to honour, and where the entries go. Tracked as akbasic
|
||||
* issue #55; the refusal stays honest until then rather than growing a
|
||||
* half-listing nobody specified.
|
||||
*/
|
||||
FAIL_RETURN(errctx, AKBASIC_ERR_DEVICE,
|
||||
"DIRECTORY is not implemented: libakstdlib has no directory-reading wrapper yet");
|
||||
"DIRECTORY is not implemented yet");
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ BSAVE/BLOAD -- */
|
||||
|
||||
Reference in New Issue
Block a user