第 1.15 节 FreeBSD 开发计划
第 1.15 节 FreeBSD 开发计划
翻译同步至 BSDCan 2024 devsummit
FreeBSD 的生命周期为每个大版本 4 年,小版本是发布新的小版本版后 +3 个月。
FreeBSD 14 开发计划 FreeBSD 14.0 Planning
FreeBSD 15 开发计划 FreeBSD 15.0 Planning
FreeBSD 15.0 计划
✔️ 已完成
已提交到源代码存储库的项目。
项目 | 负责人 | 已提交 / 审查 / 补丁 |
---|---|---|
arm64 分支目标识别(BTI) | andrew | |
arm64 bhyve | andrew | |
在 bhyve 中的单步 AMD CPU | jhb Bojan | |
DDB pretty-print with CTF | markj Bojan | |
跨架构的 kldxref | jhb | |
copy_file_range(2) 于 install(1) | mmatuska | |
NVMe-oF/TCP | jhb | |
per-file nullfs | dfr | 521fbb722c3(不支持套接字) |
✈️ 已存在
未来 2 年内 / 在下次发布之前已经存在且可以传递至上游的项目(也许需要努力使其达到可回馈上游的状态)
项目 | 负责人 | 提交 / 审查 / 补丁 |
---|---|---|
在 mv(1) 中实现 copy_file_range() | pjd | |
更好的 copy_file_range() 后备机制/封装器 | pjd | |
arm64 SVE | andrew | |
amd64/arm64 救援内核 | markj / Klara | |
iovec 封装器 | brooks | |
bhyve 虚拟机中的硬件监控功能 | jhb Bojan | |
使用 dtrace 进行内联函数跟踪 | markj Christos | |
谷歌编程之夏——squashfs | chuck | |
改进多核笔记本电脑上的 Powerd | cperciva | (与 gallatin@交谈) |
9p 文件系统的 Port | dfr | 与 Juniper 同步(bkumara,khn) |
CHERI 各式先决条件(ABI 位) | brooks | |
在 ZFS 中的分层速率限制 | pjd | |
改进 NVMe 复位/恢复功能 | imp | 95% D45192 |
简单的库 ABI 检查器 | brooks | 原型在 D44271 |
图形安装程序 | khorben | |
bhyve 直接使用 Linux 引导器 | robn | (请参阅 freebsd 虚拟化) |
🚧 进行中
项目 | 负责人 | 状态 |
---|---|---|
AMD IOMMU 驱动程序 | kib | |
重写 certctl | des | |
DRM 回归基本系统 | manu | 90% 完成 |
devd 事件磁盘错误额外信息 | imp | 75% |
对默认 TCP 堆栈模块化 | jtl | 完成代码;需要 UX 支持,使用户更容易使用 |
真正有效的 UnionFS (overlayfs) | olce | 开始(在计划中) |
符合标准、实际的调度优先级 | olce | 75% |
SO_SPLICE | Klara / markj | 刚开始 |
无头 bhyve | markj | 进行中 |
amd64 的 kboot 支持 | imp | 2024 年夏末 80% |
flua 和引导加载程序的更新至 Lua 5.4.7 | imp | release in coming weeks, looks "boring" |
整合我谷歌编程之夏学生代码中的加载器命令行编辑功能 | imp | git 重做分支可用,需要帮助 |
riscv64 bhyve | br | 在虚拟机中启动 FreeBSD |
💸 需要
未来两年内支持产品和服务所需的东西
项目 | 负责人 | 投入 / 审查 / 补丁 / 状态 |
---|---|---|
新的 ELF 内核转储格式 | jhb markj | |
使 bsdinstall 支持 pkgbase | emaste manu? | |
将 pkgbase 整合到发布和相关流程 | bapt | 我们能否让每个包都有 Makefile |
pkg 组 | allanjude | |
为无工具链的 Poudriere 提供支持 jail | allanjude | |
外部工具链支持 | brooks | |
预提交 CI 源码,文档 | lwhsu imp bofh | make ci WIP. 需要与 oth 集成 |
改进 make ci 以方便提交者 | imp, bofh | |
改进 make ci 以对诸如登录 github 拉取请求等事项有益 | imp | |
预提交 CI ports | lwhsu 将与 bapt 和 decke 审查 | bofh 似乎有一些 PoC |
通用闪存存储(UFS)驱动程序 | loos | 需要用于一些嵌入式部署,但未来将更具通用性。即将登陆英特尔平台。同样支持 LinuxBoot。 |
DTrace 的 -C(大写字母)参数再次生效 | antranigv,markj | PR 尚未提交,只需运行 |
完善了 bsd-user 支持以供发布流程使用 | imp, dfr, cperciva | 32 位系统在 64 位系统上的问题,对非常陈旧的 qemu-bsd-user-static 软件进行更新 |
优化 bsd-user binfmt 等以方便 jail 用户 | cperciva, imp | Colin would like to have per-jail settings for these things |
定制 bsd-user binfmt 等以方便 jail 用户 | cperciva | |
bsd bsd-user + poudriere 支持 RISCV | imp, mhorne, jrtc27 | 软件包构建完全损坏,但基本功能正常,需要修复以便我们可以再次使用 riscv 软件包 |
使用 GitHub runner 拉取请求 | imp | 对 cirrus-ci 漏洞中的解决方案之一 |
使用 GitHub Action 改善外部贡献者的体验 | imp | Need help here |
S0ix 低闲状态 | obiwac, jhb | |
原生 inotify(2) | tcberner | 许多软件都需要这个 |
15.0 应该使用哪个版本的 OpenSSL | gtetlow | 通过在现行环境中运行更新的版本以获取调试时间。 |
不使用 OpenSSL FIPS | gtetlow | 该模块没有经过验证,不要让人们上当 |
🥺 想要 🙏
这些东西是不是必需的,但是如果有也非常好
东西 | 拥有者 | 提交 / 审核 / 补丁 / 状态 |
---|---|---|
清理 make -s | jhb | 清理警告信息并使其保持在控制之下 🔥 |
TPM 支持(GELI,ZFS) | allanjude tsoome | -- |
ZFS 加密启动支持 | tsoome allanjude | 仅支持 UEFI |
取代 smbfs(v2 及更高版本) | emaste jhixson | -- |
virtio-fs | ??? asomers | 重要性表示存在补丁 |
在 Lua 中更新系统调用表生成(makesyscalls.lua 的库化) | imp | |
精简安装程序(使单个盘上的安装有更优的默认设置,一直按回车键就能完成) | emaste brd | |
增补 per-file 以支持套接字/命名管道 | dfr | |
更多容器支持(OCI) | dfr | 需要志愿者。软件 Containerd 需要维护者。官方镜像/仓库 |
精简内核 | imp | 进行中 |
使引导加载程序支持 devmatch | imp manu | PCI 和 USB |
重写 config(8) (使用 lua ?) | imp kevans | |
合并 devmatch 和 devd(库) | imp | Meena 想帮助这个 |
调度程序和 VFS 的相关文档 | mhorne,olce | |
在大小核心上进行调度(P,E) | olce, mkarels | 我认为其他人感兴趣 |
完成内核文档(手册第 9 节)审核 | mhorne | |
简化过于复杂的解决方案 | jhb imp | |
vt(4) i18n 更好(CJK 字体,unicode 字体显示(即表情符号)、输入法) | fanchung | 在 GSoC'21 中有一个 IME 概念验证 |
以 root 运行 tarfs | imp | |
overlayfs(用于 tarfs) | Klara / allanjude | |
内核中对 Rust 的支持 | brooks | |
在用户空间支持 Rust | brooks | |
为 ZFS 提供 Netlink(zfsd/zed) | allanjude | |
以 netlink 取代 devd 套接字 | bapt | 具有内核部分 |
登录配置的 UCL 化 | meena | allanjude 拥有补丁的开端:D25365 |
为其余网络工具添加 libxo | meena | 如有问题请在提议的页面上 ping phil@ |
分层动态登录类 | ngor,meena | |
gve(4) 的 arm64 支持,GCE 的 arm64 实例需要 | delphij,kibab(由 lwhsu 推动) | |
删除 MAC “label”的限制 | allanjude des | 使用 OSD?建立在 bapt 的 mac_do 使用的 per-jail 机制上 |
用于 jails 的 PID 命名空间 | pjd dfr allanjude | 你想要哪些其他命名空间? |
将 dhcpcd 引入基本系统 | 初始(日期)版本在这里:D22012 | |
通过 netlink 访问 jail vnet | dfr | |
在计算哈希值的同时能够在内存中操作文件。 | sjg (wants) | 为 mac_veriexec |
更新 flua,以添加更多标准组件,更多“常见”组件及 FreeBSD 系统调用。 | 启动加载程序也使用 Lua,因此在这里需要小心些。 | |
priv(1) | pjd | 降低进程权限的能力 |
rctl | DFR,PJD? | 当前 RCTL 对于资源限制 jails 的工作效果不佳 |
🗑️ 候选删除 🪓
我们可能希望废弃的项目。可能需要进一步讨论以达成共识。
项目 | 负责人 | 提交 / 审核 / 补丁 |
---|---|---|
Firewire 🔥 | imp | 后来而不是早点(我们在早点时剥离磁盘支持,因为有一个巨大的锁定的 CAM 驱动程序) |
armv6 | imp/manu | |
i386 内核 | imp | 时间? |
powerpc,powerpcsce 内核 | imp | |
PS3 🎮 | imp | 沒有人使用了(我们需要 PS5 port!) |
powerpc64, powerpc64le(整个 powerpc 架构) | https://bugs.freebsd.org/271826 FreeBSD 在 PowerMac G5 上速度极慢…… | |
SoC 评估审查 | imp/manu/mhorne | |
ftpd | allanjude | |
移除 DES | des? | |
sendmail 📮 | bapt? | |
移除引导中的 Forth 编程语言 🔪 | imp/stevek | |
如果使用 EFI 启动安装程序但请求了 BIOS 安装,则发出警告 | ||
NIS 服务器组件 |
| 还在使用,请添加到 ports (chuck) |
publicwkey(5) | manu | |
targ(4) CAM 目标驱动程序 | imp | |
fingerd | ?? | Meena 想要做此事 |
3dfx(4) & | jhb | |
syscons(4) (deprecation at least) | emaste / manu | |
检查以太网驱动程序(100mbps,冷门的 1/10 gbps) | brooks | |
检查 CAM 驱动程序(pms(4), hpt*, siis, mvs 等) | imp | |
ACPI 安全定时器 | cperciva | |
freebsd-update | cperciva | 待 pkgbase 就绪 |
32 位平台(仅内核,仍保留 compat32) | jhb | |
arm*soft removal (支持构建完整的软系统,这是在我移除了 libsoft hack 构建和 ld.so 支持之后剩下的全部内容) | imp | |
支持交换内核堆栈 | markj | 达成共识?+1 +1 +1 +1 +1 |
支持 SMP amd64 内核 ! | markj | 达成共识? +1 +1 |
图例
符号 | 含义 |
---|---|
?? | 状态待定 |
!! | 需要新的负责人 |
FreeBSD 14.0 开发计划
✔️ 已完成
已提交到代码库的任务。
任务 | 负责人 | 提交 / 评审 / 补丁 |
---|---|---|
基于 nvlist(9) 的 /dev/sndstat 接口 | khng | |
bhyve 配置 | jhb | |
现代的 virtio (1.x) 客户端驱动程序 | bryanv | |
支持 KTLS 的 chacha20+poly1035 AEAD | jhb | |
来自 GitHub 的 Sound pin 补丁 | imp | |
vnode 的 Hole-punching | khng | |
用于 FreeBSD 客户端的 kvmclock 驱动程序 | allanjude | |
minidump 实时系统 | mhorne/allanjude | |
KTLS NIC 接收 | kib/hselaskey | |
通过 /dev/crypto 删除非对称加密支持 | jhb | |
移除 mips | imp | c09981f1422e 和其他 |
移除 svnlite | lwhsu | |
移除 an(4) | manu | |
NVMe 错误恢复重写 | imp | |
Union GEOM 功能 | kirk | |
移除 ISA 声卡驱动 | emaste | |
DPAA2 | bz | 正在与 Dmitry Salychev 合作 https://github.com/mcusim/freebsd-src/commits/lx2160acex7-dev |
wireguard 模块 | emaste | 可能在 6 月/7 月底合并 |
OpenVPN DCO | kp | |
ARM64 PMC: CMN-600 驱动程序 | ray / tsoome | |
ARM64 PMC: DMN-620 驱动程序 | ray / tsoome | |
Review inpcb 同步 (SMR) | glebius | |
从非 FreeBSD 平台交叉构建 ftp/(mini-)memstick/disc1 镜像 | jrtc27 | 各种提交 |
为 IPsec 提供 chacha20+poly1035 AEAD 支持 | ae | |
ARM64 上的 IPMI 附件 | allanjude + Ampere | |
在 ZFS 中硬件加速 SHA2 | allanjude | |
通过 MAC 限制调试器命令 | mhorne | |
ARM64 上的 KASAN | mhorne | |
tarfs (挂载压缩的 tar 文件) | des / thj | |
amd64 和 aarch64 的 LinuxBoot 支持 | imp | 7df08a14e3fd (amd64) 75cbdbc9832e (aarch64) |
sys/endian.h 和 byteswap.h 的 Linux 兼容性 | imp | |
Intel Icelake HWPMC | allanjude + Alexander@NetApp / 可能 mhorne | 已由 mav@ 合并 52d973f52c07 |
Intel Alder Lake HWPMC | mav |
✈️ 已有
以下是已存在于外部代码树中的项目,可以在接下来的两年内合并到主线代码树,或在下一个发布版本之前合并(可能需要一些工作以达到可合并状态)。
项目 | 负责人 | 提交 / 评审 / 补丁 |
---|---|---|
bhyve/arm64 | andrew/UPB | |
Morello 支持合并 (来自 CHERI) | brooks/jhb | 由于时间/资金问题,可能在 14.x 时进行重构/准备,但实际支持暂时未确定 |
将 stdio fileno 转换为 int | jhb | 需要解决 gnulib 的问题以使 FILE 不透明化 |
ARM Mali Txxx/Gxx GPU 支持 (Panfrost) | br | 已存在,但取决于 DRM for arm64 项目 |
camcorder / camdump | imp | 需要一些修改和解决依赖问题 (预计在 2023 年第一季度进行评审) |
9pfs 客户端 (将文件系统从主机传递到客户机) | stevek | (https://github.com/Juniper/virtfs) |
DTrace 用于虚拟机 (从主机) 的支持,但差异巨大 | dstolfa | (https://github.com/cadets/freebsd) |
virtqueue SDT 探针 (用于监视请求/响应) | stevek | 预计将贡献补丁 |
修复 mdroot 竞争条件 (md(4) 可能在生成 conf0 之前未将其添加到 rootdevnames) | stevek | 预计将贡献补丁 |
dwc_mmc SDIO | manu | -- |
完整的 GPU Passthrough 支持 bhyve(8) 和 edk2 | manu / corvin | -- |
在 amd64/armv7/arm64 中将 DRM 放入基本系统 | manu | -- |
nvme 动态命名空间支持 | imp | 补丁正在进行中,预计在 2022 年第三季度进行评审 |
jectl (用于 jail 的启动环境) | rew / allanjude | github: jectl - 正在测试 |
通过 USB xHCI 调试进行串行控制台 | hrs | 正在进行中,预计在 2022 年 7 月完成 |
syslogd(8) 重写以支持 TCP 和 TLS | hrs | 正在进行中,预计在 2022 年 7 月完成 |
各种 bhyve 暂停/恢复修复 | 有一些已合并 | |
arm64 从 iscsi 引导 | emaste / dch | src https://reviews.freebsd.org/D34475 + https://reviews.freebsd.org/D34476 + https://reviews.freebsd.org/D34477 |
arm64 Scalable Vector Extension | andrew | -- |
pmcstat 用于 PIEs | jrtc27 | |
pmcstat 用于独立调试文件 | jrtc27 | 正在进行中(重新处理 D39626) |
lposix - 将更多 POSIX 函数添加到基本系统的 flua | kevans | |
jail devctl | dch / jamie | jail_devctl 约 200 行代码 |
记住原始接口名称 | allanjude |
Need
这些是未来两年内某些人需要支持产品或服务的事项:
项目 | 负责人 | 已提交 / 审查 / 补丁 / 状态 |
---|---|---|
将 V4l2 纳入基本系统 | manu | |
将 USB 视频类别纳入基本系统 | manu | |
默认使用 pkgbase | manu/emaste | |
802.11ac Wi-Fi 支持 | bz | 进行中 |
TB3 / USB4 支持 | !! (如果感兴趣,请与 emaste 联系) | (erj 和 hps 对此感兴趣) [usb4]https://github.com/hselasky/usb4 [dpc for hotplug]https://github.com/linnemannr/dpc |
DDC 显示器控制支持 (ddccontrol) | manu | 几乎完成,内核支持已存在,需要移植 Linux 工具 |
内联 IPsec (NIC 辅助加密 / 解密) | kib/hselaskey/np | |
异构核心调度器 (big.LITTLE / AlderLake) | emaste/mav/thj | -- |
重新审视安全选项的默认值 | emaste/mw | -- |
Want
以下是令人愿望的但并非至关重要的事项:
项目 | 负责人 | 已提交 / 审查 / 补丁 / 状态 |
---|---|---|
eBPF (用例,例如,linuxemul seccomp 需要这个功能;可能还有软件定义网络和 Linux 风格的跟踪) https://ebpf.io/summit-2020/ | hrs (可能作为 mentee: 0mp) | |
故障安全的 ZFS 引导码 | allanjude/imp | bootonce 已完成,现在需要处理较困难的部分 (引导码本身) |
smbfs (客户端) v2 & v3 | !! | ?? |
更好的自动调整功能,例如读/写缓存 (来自 Axiado 的演讲) | imp | |
NPF | gnn?? | |
在 netmap 上使用 VPP | gnn?? | |
路由套接字重构 | gnn?? | |
ZFS ARC <-> vm 页面集成 | jeff?? | |
MPSAFE sysctl 处理程序 | kaktus?? | 部分完成 |
杀死 Giant 并将其删除 (寻求帮助) | imp | -- |
在 NEWBUS 中杀死 Giant | imp | -- |
在 AT 键盘驱动程序和相关驱动程序中杀死 Giant (需要帮助) | imp | -- |
jailctl: 在基本系统中自动化 jail.conf 工具,带有防火墙集成 | https://twitter.com/antranigv ?? | (公司有原型,需要整理) |
将更多 ifconfig 的功能移到 libifconfig 中 | freqlabs | 仍在进行中 2021-06-10 |
来自 ${Vendor} 的 Cellular 驱动程序 | gnn?? | |
exFAT 文件系统支持 | delphij / cem | |
suspend/resume arm64 + riscv | mhorne | -- |
低功耗待机/S0ix 支持 (参见 bwidawsky 的早期工作) | jhb?? | (可能需要一个链接指向 Ben 的分支) |
使 USE_LINUX=yes 对 arm64 有效,并添加 arm64 的 ports | Vincent Milum Jr. / emaste | -- |
分离 bpf(9) 和 ifnet(9) | glebius | - |
netgraph(9) 的同步,很可能使用 epoch(9) | glebius (可以提供建议) | - |
更好的声音 Quirk 系统 (寻求帮助) | imp/emaste | - |
Virtio-fs (使用 fuse 协议作为传输) | stevek/jhb | - |
QEMU-user 上游推进工作 | imp/kevans | Warner 上游推进,Kyle 日常,需要更多帮助来整合 Kyua 测试 |
virtio 监控工具 | stevek | 进行中 |
s6-rc 作为 pid 1 | crest | 需要完善 |
将 pf(4) 语法与现代 OpenBSD 同步 | !! | -- |
loader - 命令获取的任何信息也应该可供 loader 使用的语言 | stevek | -- |
英特尔 SKL HDA 声音控制器 (在 X1 Carbon 7 代中) 固件 https://bugs.freebsd.org/242527 | emaste | (麦克风需要,但较新的 Framework 笔记本上的麦克风工作正常) |
类似于 Cisco/Linux 的 "ip" 命令 | cy | -- |
容器的 OCI 支持 | dfr | -- |
适用于单个文件/overlayfs 的 nullfs | dfr | -- |
nvidia.ko 的本机 vt(4) 后端 | jhb | -- |
dhcpcd | emaste | |
tmux | ??? | 如果我们无法得到 pkgbase,则作为全能解决方案将 tmux 纳入基本系统 |
候选删除项
以下是我们可能希望在 14.0 版本中弃用的项目。可能需要进一步讨论以达成共识。
项目 | 负责人 | 已提交 / 审查 / 补丁 |
---|---|---|
Firewire 支持 | imp | -- |
armv6? | imp/manu | -- |
ARM SoC 支持审查 | imp | 由 manu 完成? |
telnetd | brooks | |
ftpd (针对 | emaste/allanjude | 移植至:ftp/freebsd-ftpd |
smbfs v1 (内核中最后一个使用 DES 的用户) | emaste | 在有替代品之前无法删除 |
sendmail | bapt | 现在默认为 dma |
引导加载程序 4th 支持 | imp | PR257018 先解决 (lua/ZFS/... 非 UEFI PXE 加载程序太大) |
NIS "crypto" | cem | -- |
NIS | kaktus | 仍有活跃的用户 |
剩余的 ATM 支持 (netgraph) | brooks | |
遗留的过时 CAM 驱动程序 (FCP) (twe/twa) | imp | 8722e05ae149 (twa) 062a7b918fac (twe) |
publicwkey(5) | manu | |
targ(4) CAM target driver | imp | -- |
fingerd | ?? | -- |
安装程序中的安全设置菜单 | emaste | -- |
3dfx(4) | jhb | -- |
syscons(4) (至少弃用) | emaste / manu | -- |
图例
符号 | 含义 |
---|---|
?? | 状态有问题 |
!! | 需要新的负责人 |
最后更新于