一句话总览
这期跨度 18 天(上一份周报停在 7 月初,中间欠了一期),所以下面是将近三周的累积。但最值得说的就一件:Cinux v1.0.0 正式发版了 🎉——网络、信号、终端三件套补齐,用户态终于能 ping,还能 Ctrl+C 打断它。同期 CFDesktop 把控制中心 + 通知系统整条链路做通,micro-forge 发了 v0.2.0 并 GUI 大爆发,rk-forge 接入 OpenWrt,CFBox 走完网络工具 + POSIX 两波。
本周开发进展
先说这期最猛的 Cinux。从 rc1 一路打到 v1.0.0 正式版,网络、信号、终端三件套一起补齐——落了 SOCK_RAW + IPPROTO_ICMP 让用户态 ping 跑通,顺手把 setitimer(ITIMER_REAL) 做成真的(驱动 busybox ping 每秒发包),再把 EINTR 和 PTY 转发 ^C 到前台进程组的链路打通:GUI 终端里终于能 Ctrl+C 打断 ping,这件事之前卡了很久。顺带 GUI host 也补齐了:多终端窗口、click-to-focus、USB HID 软件自动重复、终端方向键和 ANSI 256 色。内核侧这期干了一票硬活——SMP 数据竞争检测基建落地(顺带治了 ext2 inode_cache_ / block_buf_ / NVMe io_submit 一串 race),内存管理补了 IPI TLB shootdown + deferred CoW free + 文件页读失败投 SIGBUS(不再 fall-through 零页)+ 用户态异常投信号让进程死而不是 panic 内核;VFS 增强弧收官(Dentry Cache、flock、mount factory 扩 ext2/ext4)。最后 cmake 一条命令构建 buildroot+gcc+desktop rootfs,CI 出两个 variant 镜像,README 重写、CHANGELOG 落地。说白了这是一条很长的弧,这期收口了。
CFDesktop 这期也爆了(81 commits)。Phase F 把控制中心 + 通知系统整条链路做通了:NotificationService、banner、通知中心、IPC notify;设置窗口三 tab(壁纸/主题/关于)带主题切换和壁纸热重载;CrashReporter 对话框带 addr2line 符号化,开机还会主动弹未见过的崩溃。首页从 CCIMX verbatim 移植(UserInfo/Calendar/disk-gauge + Memory/CPU/Disk 实时卡片),加了多页滑动桌面和桌面时钟 widget。窗口管理这期补了完整状态机(最小化/最大化/恢复、FloatingPolicy cascade、taskbar 点击切换),桌面图标层也支持拖拽/增删/持久化。顺手把 IMX6ULL 平台开了起来,Windows MSVC 兼容修了一批。
micro-forge 发了 v0.2.0,但更狠的是 GUI 大爆发:dock 框架、STM32F103 板级可视化(引脚 + LED 排)、CPU/GPIO/内存面板、时钟树可视化、probe mode(列未实现指令)。最关键是把 C++ HAL 样例真正跑通(点灯 spike),为此修了 Cortex-M3 模拟器几处 bug——IT block 条件码解码、异常 entry/return 的 ITSTATE 保存、pop{pc} 的 SP writeback 顺序、NVIC 优先级寄存器字节写。QuarkWidgets 控件库也在这一波立起来,从空库长成了 MD3 + 嵌入式双库。
rk-forge 主线是 OpenWrt 集成:作为 --rootfs=openwrt profile 接进来,跟 buildroot 走 from-source 差异化,中间修了 THUMB2_KERNEL vermagic、ubiprog from-source 擦写 mtd5、linux-7.1.tar.gz 本地生成(上游下载 URL 挂了)一串坑,最后跑出 27.9MB 的 update.img。顺带把 buildmeter 进度条接到了 kernel/uboot/initramfs/buildroot 全链路。
CFBox 走完 Phase 3-4:Phase 3 把网络工具整组补齐(nc / ifconfig 读写 / netstat / ip / route / hostname / ping / traceroute),Phase 4 上 POSIX conformance gate + POSIX dd applet + sh 的 10 个强制 builtin + 跟 busybox 做差异测试的 harness。
教程线也很活跃。Tutorial_AwesomeModernCPP 在 v0.8.0 release 的同时,社区开始陆续补 C 语言系统教程的参考答案(第 2~7 章,好几个 issue 都是外部贡献),又上了 vol9 的 weak_ptr/flat_map/no_destructor 和 TinyInferCpp-Lab AI 卷 Stage 0/1。C-Journey 修了几个站点老坑(相对链接 404 改 GitHub 绝对 URL、在线编译器、roadmap markdownlint)。
组织动态
这期多了 4 个新仓库,基本是「从大仓抽出来独立化」的节奏:
- anatomy_memory:《内存池实战》B 站教程配套代码(FreeList → ThreadCache → CentralPool 三层)。
- buildmeter:之前是 rk-forge 里的 progress.py,这期抽成独立 Python 包(dual backend + buildroot in-pkg 计数),imx-forge 也接上了。
- CFDeskit:从 CFDesktop 里抽出的 mini-apps,正式改名独立。
- engineering_cpp:《现代 C++ 工程实践》配套代码,阶段 0/1 收口(miniwget 并进来、hub 收敛 + Catch2 真测 + CI 守门 + ASan/UBSan)。
另外 aex 从 active 降到 maintaining——这个状态更贴近它的实际节奏。
本周手记
这期想认真谢谢几个人——Tutorial_AwesomeModernCPP 的教程线这期收到的反馈密度明显比以往高,说明真有人在逐章读、逐章挑,名单直接抄自仓库的 CONTRIBUTORS.md(这期刚被写进官方名单):
- @owollz4 — 提了内容提案(#102 改进浮点数讲解、#103 课后练习配参考答案)之后直接动手,交 PR 把 C 语言系统教程第 2~7 章参考答案补完(#108/#114/#117),还给 C_Journey 第六章状态机代码补了注释(#104)。
- @Leon19960120 — 横跨三个仓库:反馈了 C-Journey 的链接 404 / 文字显示异常,ST-Forge 的内容重复,还提了 ST-Forge 的 STM32F103 规格澄清 PR(#3)。
- @Zch0 — 反馈卷一函数模板章节「模板特化与重载混合使用不会产生二义性」的表述问题(#109),促成表述修正。
- @HiAirman — 就「C++98 进阶」章节 alignas 示例的正确性发起讨论(#96)。
- @cyberxnomad — 在 rk-forge 留了句「确实是个大活👍」还问 CANFD 能不能用(#15),被看见的感觉很好。
教程写出来有人认真读、认真挑,是这个项目能走下去的理由。这条弧我们继续接住。
待办 / 关注
公开仓库里几个需要收尾的项(私有仓库 lightroot 的 LICENSE 缺失已按惯例剔除,不报):
- buildmeter 还没加 LICENSE(刚独立出来的新仓库)。
- 一批 issue 还开着:CFBox(1)、Cinux-Book(1)、imx-forge(2)、rk-forge(2)、ST-Forge(1)、Tutorial_AwesomeHardware(1)、Tutorial_AwesomeModernCPP(5 + 1 个 PR)。