Skip to content

0.29.5: i386 (i686-linux-musl) - #94

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/0.29.5-i386
Nov 13, 2026
Merged

Sunrisepeak merged 1 commit into
mainfrom
feat/0.29.5-i386

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

The C library for i686-linux-musl (openkal 0.25.1, clause 5.5), above openkal-linux 0.26.2's i386.

  • musl 1.2.5's arch/i386 vendored without PAGESIZE; headers generated into musl-generated/i386 (musl-generated/README.md).
  • The port's argument word is sixty-four bits wherever long is narrower, so a position or size reaches the dispatcher whole. musl's public syscall() reads its arguments at the width they were passed (musl/PATCHES.md, "i386 (0.29.5)"): read as the wider word, two arguments were one (renameat2 reached the dispatcher with its directory as its name).
  • A time is read at the width its number states (okm_wide): the old numbers carry two words, the _time64 numbers two sixty-four bit values; a 20 ms sleep read in the wrong width slept sixteen billion seconds. clock_gettime of the other clocks asks the _time64 number.
  • The thirty-two bit table's forms are answered: _llseek, mmap2, truncate64, fstat64, fcntl64, the getuid32 family, _newselect; the futex bound is read only for a wait.
  • setjmp saves i386's preserved registers.
  • openkal-linux ^0.26.3 (0.26.3: the processor time on i386; the specification by its minor version openkal-linux#56), whose processor time on i386 is read through the sixty-four bit clock. CI resolves once 0.26.3 is in the index.

Measured locally with the family built for i686-linux-musl: a C program (a file past 4 GiB, threads and thread-local storage, the clocks, posix_spawn), a C++23 program (import std, exceptions, std::jthread, std::format, file streams), and the examples posix, link-stubs, threads-cxx, threads-detached, stack-bounds, mmap, long-names, locks, grants, process-identity, malloc-threads, strings, subprocess (Linux's arguments) and net with no failure; wordcount agrees with wc. On the host the same examples are unchanged.

musl 1.2.5's arch/i386 is vendored without PAGESIZE and its headers are
generated into musl-generated/i386. The port's argument word is sixty-four bits
wherever long is narrower, and musl's public syscall() reads its arguments at
the width they were passed. A time is read at the width its number states; the
time64 forms answer every clock but the two read directly. The thirty-two bit
table's forms are answered (_llseek, mmap2, truncate64, fstat64, fcntl64, the
getuid32 family, _newselect), and setjmp saves i386's preserved registers.

openkal-linux ^0.26.3, whose processor time on i386 is read through the
sixty-four bit clock.
@Sunrisepeak
Sunrisepeak merged commit d9be0e1 into main Nov 13, 2026
20 of 22 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/0.29.5-i386 branch November 13, 2026 05:42
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.

1 participant