Skip to content

feat: 裸机分配器与零 libc 层 —— 三个新包,两个新版本 - #226

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/freestanding-alloc-and-nolibc
Aug 20, 2026
Merged

feat: 裸机分配器与零 libc 层 —— 三个新包,两个新版本#226
Sunrisepeak merged 1 commit into
mainfrom
feat/freestanding-alloc-and-nolibc

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

新增

  • std-freestanding-alloc-kal 0.1.0 —— 十二个 operator new/delete 转发 openkal
  • std-freestanding-alloc-libc 0.1.0 —— 同上,转发目标 C 库
  • std-freestanding-nolibc 0.1.0 —— memcpy/memmove/memset/memcmp/strlen

⚠️ 两个 alloc 包同图只能有一个。两者都 provide freestanding-allocator,
operator new 是全程序单例:解析器会点名两个 provider 并拒绝,这正是把选择做成
capability 而不是「链接器先看见谁算谁」的理由。

⚠️ std-freestanding-nolibc 仅用于零 libc 档。mcpp 把依赖包的目标文件无条件
放进消费方的链接行,没有「符号仍缺失才拉入」的归档语义,所以板级包链了 -lc
工程会得到两份 memcpy。其消费者应设 [target.<triple>].sysroot = ""

新版本

  • std-freestanding 0.3.0 —— alloc / alloc-kal / alloc-libc feature。
    feature 作开关、capability 作仲裁、实现在别的包;普通消费者只写一个 feature,
    连 provider 包名都不必知道。
  • riscv-virt-rt 0.4.0 —— 解除对编译器与 C 库的隐式耦合(改向引擎提问),
    新增 openkal 裸机后端(置于 feature 之后)与零 libc 内核模板。

旧版本全部保留:已发布过的版本就是可能有人 pin 过的版本。

校验

五个 tarball 的 GitHub 与 GitCode 镜像逐字节一致(sha256 相同)。
check_mirror_urls / check_package_name / check_platform_version_parity /
check_cross_package_refs 本地全过。min_mcpp 未动。

## 新增

  * `std-freestanding-alloc-kal` 0.1.0 —— 十二个 operator new/delete 转发 openkal
  * `std-freestanding-alloc-libc` 0.1.0 —— 同上,转发目标 C 库
  * `std-freestanding-nolibc` 0.1.0 —— memcpy/memmove/memset/memcmp/strlen

⚠️ 两个 alloc 包**同图只能有一个**。两者都 provide `freestanding-allocator`,
而 `operator new` 是全程序单例:解析器会点名两个 provider 并拒绝,这正是把选择做成
capability 而不是「链接器先看见谁算谁」的理由。

⚠️ `std-freestanding-nolibc` **仅用于零 libc 档**。mcpp 把依赖包的目标文件无条件
放进消费方的链接行,没有「符号仍缺失才拉入」的归档语义,所以板级包链了 `-lc` 的
工程会得到两份 `memcpy`。其消费者应设 `[target.<triple>].sysroot = ""`。

## 新版本

  * `std-freestanding` 0.3.0 —— `alloc` / `alloc-kal` / `alloc-libc` feature。
    feature 作开关、capability 作仲裁、实现在别的包;普通消费者只写一个 feature,
    连 provider 包名都不必知道。
  * `riscv-virt-rt` 0.4.0 —— 解除对编译器与 C 库的隐式耦合(改向引擎提问),
    新增 openkal 裸机后端(置于 feature 之后)与零 libc 内核模板。

旧版本全部保留:已发布过的版本就是可能有人 pin 过的版本。

## 校验

五个 tarball 的 GitHub 与 GitCode 镜像**逐字节一致**(sha256 相同)。
`check_mirror_urls` / `check_package_name` / `check_platform_version_parity` /
`check_cross_package_refs` 本地全过。`min_mcpp` 未动。
@Sunrisepeak
Sunrisepeak merged commit dae86ef into main Aug 20, 2026
8 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/freestanding-alloc-and-nolibc branch August 20, 2026 07:46
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