Skip to content

Claude/upgrade ape c library mm z gd - #735

Merged
staalmannen merged 2 commits into
mainfrom
claude/upgrade-ape-c-library-mmZGd
Nov 5, 2026
Merged

staalmannen merged 2 commits into
mainfrom
claude/upgrade-ape-c-library-mmZGd

Conversation

@staalmannen

Copy link
Copy Markdown
Owner

No description provided.

`system-info' completes with every module satisfied.  Three messages
remain on its output and only one is this tree's.

`disk_free_space(): Function not implemented' is strerror(ENOSYS) out
of libap's `stat/statvfs.c', and it is a PROTOCOL limit rather than a
missing implementation: 9P2000 has no `Tstatfs'.  The message set is
Tversion, Tauth, Tattach, Tflush, Twalk, Topen, Tcreate, Tread,
Twrite, Tclunk, Tremove, Tstat, Twstat, and `Tstat' returns a per-file
Dir with no filesystem-level counts at all.  Linux's v9fs gets one
only from the 9P2000.L dialect, which Plan 9 servers do not speak; a
9front server will report its own free space on its console but that
is per-server and needs write access to a srv file.  Established from
the protocol rather than from the stub's comment, which this tree's
own rule says is a claim like any other.

php's config.h answers HAVE_STATVFS yes while libap stubs it, which is
the hand-answered-capability shape a third time after clisp's
mprotect and xz's fsync -- and it is kept, with the reason written
down.  With it yes, filestat.c:224 checks the return, warns with
strerror and gives false.  With it NO, php compiles neither arm, keeps
`bytesfree = 0' and returns SUCCESS: a silent 0.0.  Saying no to a
capability we do not have is the quiet version of the same failure
here, and false is what PHP documents for a platform that cannot
answer.  The shape bites when a caller ignores the return value; this
one checks.

The other two are not ours.  The `strpos()/substr(): Passing null'
deprecations are Phoronix's own code not guarding a phodevi probe that
read a Linux /proc path.  `process exceeds 100 file descriptors'
occurs nowhere under sys/src -- it is the kernel growing an fd table,
a notice rather than a limit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGAwvvTwDg2yknFkmZ3qzs
The previous version was written as commentary on the text it
replaced -- "the original said X", "corrected" -- which is of no use
to someone who wants to set the stack up, and half of it had gone
stale: it listed dom, simplexml, zip and sqlite3 as absent, and they
have been built since.

Rewritten forward: how to get it, what is in the build, how to test
the database layer, how to serve it, and what the platform does not
give you.  The measured/unmeasured marking is kept, as a status
column rather than as argument.

Three things found while re-establishing the facts:

  * `unix-dotfile' and `unix-none' are registered UNCONDITIONALLY.
    The previous text said both were behind
    SQLITE_ENABLE_LOCKING_STYLE, which is 0 here, and that is wrong --
    only unix-flock, unix-posix and the Apple VFSes are gated.  So
    dotfile locking can be tried with `sqlite3 -vfs unix-dotfile' on
    the libsqlite.a already built, with no rebuild and no flag.  It
    uses mkdir/rmdir as its atomic primitive, which is an ordinary 9P
    operation and involves no fcntl.  For PHP, which cannot select a
    VFS from a script, the knob is -DSQLITE_DEFAULT_UNIX_VFS in
    lib/sqlite/mkfile -- not taken, since it changes locking for every
    consumer and dotfile locking leaves a stale lock directory after a
    crash.

  * `php -S' is available: sapi/cli/php_cli_server.c and
    php_http_parser.c are both in OFILES.  It is single-process unless
    PHP_CLI_SERVER_WORKERS is set, and needs only socket/bind/listen/
    accept/select.  It is also its own SAPI, so header() WORKS under
    it -- the opposite of the plain CLI SAPI, where it is a no-op.
    That makes it the first thing to try rather than rc-httpd.

  * disk_free_space() is recorded as a platform limit with the reason
    (9P2000 has no Tstatfs), since an application that checks free
    space before writing will report a full disk.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGAwvvTwDg2yknFkmZ3qzs
@staalmannen
staalmannen merged commit 68eee34 into main Nov 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants