Skip to content

feat(pkcl): POSIX 互換層 pkcl と、Foundation 上で動く BusyBox - #172

Merged
src3453 merged 5 commits into
mainfrom
claude/project-thread-t59cl1
Oct 25, 2026
Merged

src3453 merged 5 commits into
mainfrom
claude/project-thread-t59cl1

Conversation

@src3453

@src3453 src3453 commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Requested by src3453 · project thread

Closes #165

概要

Fuchsia の fdio のような POSIX のコンパイル時変換レイヤー pkcl(POSIX Kernel Compatibility Layer)の設計と実装、そして最終目標の BusyBox を Foundation 上で動かすところまでです。BusyBox は GPL-2.0 なのでリポジトリには含めず、--busybox-source で外部ソースを指定してビルドします(Newlib も同様に --newlib-source)。

  • doc/spec_pkcl.md: 設計と、BusyBox の取り込み・ビルド・サイズ制約・Newlib 統合の判断
  • foundation/lib/pkcl/: fd 表と POSIX I/O・パス操作(M0)、newlib/ に Newlib の OS 層アダプタ、posix/ に DIR・termios・poll・ソケット失敗スタブ・プロセス/時刻/シグナルの縮退・ユーザー DB・fnmatch
  • foundation/include/pkcl-nolibc/, pkcl-posix/: libc なし用と、Newlib に足す POSIX ヘッダ
  • tools/pkcl/: busybox.py(ホストの make V=1 でコンパイルコマンドを集め、driver.py で各ユニットを IR にして一度にリンク)、busybox.config、busybox_stubs.c
  • tools/llvm-src32: Newlib の posix プロファイル(全 libc を一度 IR にして索引から必要分だけリンク)、-Os/-Oz、-std=gnu11、バックエンドに llvm.fshl/fshr・umul.with.overflow.i64・uadd.sat・get.rounding などを追加
  • テスト: foundation/tests/pkcl/test_busybox.py(SRC32_BUSYBOX_SOURCE/SRC32_NEWLIB_SOURCE を渡したときだけ走る)、test_toolchain に命令の単体テストを追加

動作の確認

Foundation 上で busybox echo、printf %d-%s/%5.2f、ls、cat、mkdir、basename、dirname、wc、test、sleep などが動きます。busybox.wax は 1.04 MB(FND_EXEC_IMAGE_MAX の 1 MiB 未満)。

まだ動かないもの

fork/vfork、pipe(G3)、setjmp/longjmp(G7)、環境変数(G2)、pid(G1)、シグナルの配送。ash/hush にはこれらが要るので、シェルは含めていません(doc/spec_pkcl.md §7、§10)。

検証

実行した: foundation/tests/pkcl(BusyBox 含む、Clang 20 / llvmlite 0.46)、tools/llvm-src32 の test_toolchain(50 件)と test_newlib(外部 Newlib あり)。Rust 全体のテストと Foundation 全体のシェルテストは実行していません。

🤖 Generated with Claude Code

https://claude.ai/code/session_01FqgVXKR79fR8rybAwBZ2fY

@src3453 src3453 added this to the Foundation OS milestone Oct 25, 2026 — with Claude
@src3453 src3453 self-assigned this Oct 25, 2026
@src3453
src3453 force-pushed the claude/project-thread-t59cl1 branch from dc687d9 to c86c585 Compare October 25, 2026 10:38
@src3453 src3453 changed the title feat(pkcl): POSIX 互換層 pkcl の設計と最小実装 feat(pkcl): POSIX 互換層 pkcl と、Foundation 上で動く BusyBox Oct 25, 2026
@src3453
src3453 merged commit 68bf9c1 into main Oct 25, 2026
3 checks 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.

[pkcl M0] POSIX互換層 pkcl の設計と最小実装(fd I/O・パス操作・errno・起動コード)

2 participants