第 1.15 节 FreeBSD 开发计划

FreeBSD 的生命周期为每个大版本 5 年,小版本是发布新的小版本版后 +3 个月。

FreeBSD 14 开发计划 FreeBSD 14.0 Planning

FreeBSD 15 开发计划 FreeBSD 15.0 Planning

FreeBSD 14.0 开发计划

✔️ 已完成

已提交到代码库的任务。

任务负责人提交 / 评审 / 补丁
基于 nvlist(9) 的 /dev/sndstat 接口khngc96151d33509
bhyve 配置jhb621b5090487d
现代的 virtio (1.x) 客户端驱动程序bryanv9da9560c4dd3
支持 KTLS 的 chacha20+poly1035 AEADjhb9c64fc40290e
来自 GitHub 的 Sound pin 补丁impef790cc7407e
vnode 的 Hole-punchingkhngde2e15295966
用于 FreeBSD 客户端的 kvmclock 驱动程序allanjude6fa88a627d5e6c69c6bb4c7f
minidump 实时系统mhorne/allanjude0a5c04a8926e
KTLS NIC 接收kib/hselaskeyfe8c78f0d202
通过 /dev/crypto 删除非对称加密支持jhb76681661be28
移除 mipsimpc09981f1422e 和其他
移除 svnlitelwhsua2bc17474b960333fad1b7e0
移除 an(4)manu663b174b5b53
NVMe 错误恢复重写imp9bbd0a7ca999502dc84a8b67
Union GEOM 功能kirkc7996ddf8000
移除 ISA 声卡驱动emastedf51e63eb5d7 (ad1816) aa83e9b189d6 (ess) 754decef384a (gusc) 5126e5eeeb5e (mss) 5126e5eeeb5e (sbc/sb8/sb16)
DPAA2bz正在与 Dmitry Salychev 合作 https://github.com/mcusim/freebsd-src/commits/lx2160acex7-dev
wireguard 模块emaste可能在 6 月/7 月底合并
OpenVPN DCOkpD34340
ARM64 PMC: CMN-600 驱动程序ray / tsoomeD32321
ARM64 PMC: DMN-620 驱动程序ray / tsoomeD32670
Review inpcb 同步 (SMR)glebiusde2d47842e88
从非 FreeBSD 平台交叉构建 ftp/(mini-)memstick/disc1 镜像jrtc27各种提交
为 IPsec 提供 chacha20+poly1035 AEAD 支持ae9f8f3a8e9ad4
ARM64 上的 IPMI 附件allanjude + AmpereD28707
在 ZFS 中硬件加速 SHA2allanjudePR252316
通过 MAC 限制调试器命令mhorneD35370
ARM64 上的 KASANmhorne89c52f9d59fa
tarfs (挂载压缩的 tar 文件)des / thj69d94f4c7608
amd64 和 aarch64 的 LinuxBoot 支持imp7df08a14e3fd (amd64) 75cbdbc9832e (aarch64)
sys/endian.h 和 byteswap.h 的 Linux 兼容性impD32051
Intel Icelake HWPMCallanjude + Alexander@NetApp / 可能 mhorne已由 mav@ 合并 52d973f52c07
Intel Alder Lake HWPMCmav18054d0220cf

✈️ 已有

以下是已存在于外部代码树中的项目,可以在接下来的两年内合并到主线代码树,或在下一个发布版本之前合并(可能需要一些工作以达到可合并状态)。

项目负责人提交 / 评审 / 补丁
bhyve/arm64andrew/UPBAndrews GitHub 分支
Morello 支持合并 (来自 CHERI)brooks/jhb由于时间/资金问题,可能在 14.x 时进行重构/准备,但实际支持暂时未确定
将 stdio fileno 转换为 intjhb需要解决 gnulib 的问题以使 FILE 不透明化
ARM Mali Txxx/Gxx GPU 支持 (Panfrost)br已存在,但取决于 DRM for arm64 项目
camcorder / camdumpimp需要一些修改和解决依赖问题 (预计在 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 SDIOmanu--
完整的 GPU Passthrough 支持 bhyve(8) 和 edk2manu / corvin--
在 amd64/armv7/arm64 中将 DRM 放入基本系统manu--
nvme 动态命名空间支持imp补丁正在进行中,预计在 2022 年第三季度进行评审
jectl (用于 jail 的启动环境)rew / allanjudegithub: jectl - 正在测试
通过 USB xHCI 调试进行串行控制台hrs正在进行中,预计在 2022 年 7 月完成
syslogd(8) 重写以支持 TCP 和 TLShrs正在进行中,预计在 2022 年 7 月完成
各种 bhyve 暂停/恢复修复有一些已合并
arm64 从 iscsi 引导emaste / dchsrc https://reviews.freebsd.org/D34475 + https://reviews.freebsd.org/D34476 + https://reviews.freebsd.org/D34477
arm64 Scalable Vector Extensionandrew--
pmcstat 用于 PIEsjrtc27D39595
pmcstat 用于独立调试文件jrtc27正在进行中(重新处理 D39626
lposix - 将更多 POSIX 函数添加到基本系统的 fluakevansD39083
jail devctldch / jamiejail_devctl 约 200 行代码
记住原始接口名称allanjudeD28247

Need

这些是未来两年内某些人需要支持产品或服务的事项:

项目负责人已提交 / 审查 / 补丁 / 状态
将 V4l2 纳入基本系统manu
将 USB 视频类别纳入基本系统manu
默认使用 pkgbasemanu/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/impbootonce 已完成,现在需要处理较困难的部分 (引导码本身)
smbfs (客户端) v2 & v3!!??
更好的自动调整功能,例如读/写缓存 (来自 Axiado 的演讲)imp
NPFgnn??
在 netmap 上使用 VPPgnn??
路由套接字重构gnn??
ZFS ARC <-> vm 页面集成jeff??
MPSAFE sysctl 处理程序kaktus??部分完成
杀死 Giant 并将其删除 (寻求帮助)imp--
在 NEWBUS 中杀死 Giantimp--
在 AT 键盘驱动程序和相关驱动程序中杀死 Giant (需要帮助)imp--
jailctl: 在基本系统中自动化 jail.conf 工具,带有防火墙集成https://twitter.com/antranigv ??(公司有原型,需要整理)
将更多 ifconfig 的功能移到 libifconfig 中freqlabs仍在进行中 2021-06-10
来自 ${Vendor} 的 Cellular 驱动程序gnn??
exFAT 文件系统支持delphij / cemD27376
suspend/resume arm64 + riscvmhorne--
低功耗待机/S0ix 支持 (参见 bwidawsky 的早期工作)jhb??(可能需要一个链接指向 Ben 的分支)
使 USE_LINUX=yes 对 arm64 有效,并添加 arm64 的 portsVincent Milum Jr. / emaste--
分离 bpf(9) 和 ifnet(9)glebius-
netgraph(9) 的同步,很可能使用 epoch(9)glebius (可以提供建议)-
更好的声音 Quirk 系统 (寻求帮助)imp/emaste-
Virtio-fs (使用 fuse 协议作为传输)stevek/jhb-
QEMU-user 上游推进工作imp/kevansWarner 上游推进,Kyle 日常,需要更多帮助来整合 Kyua 测试
virtio 监控工具stevek进行中
s6-rc 作为 pid 1crest需要完善
将 pf(4) 语法与现代 OpenBSD 同步!!--
loader - 命令获取的任何信息也应该可供 loader 使用的语言stevek--
英特尔 SKL HDA 声音控制器 (在 X1 Carbon 7 代中) 固件 https://bugs.freebsd.org/242527emaste(麦克风需要,但较新的 Framework 笔记本上的麦克风工作正常)
类似于 Cisco/Linux 的 "ip" 命令cy--
容器的 OCI 支持dfr--
适用于单个文件/overlayfs 的 nullfsdfr--
nvidia.ko 的本机 vt(4) 后端jhb--
dhcpcdemasteD22012freebsd-net thread
tmux???如果我们无法得到 pkgbase,则作为全能解决方案将 tmux 纳入基本系统

候选删除项

以下是我们可能希望在 14.0 版本中弃用的项目。可能需要进一步讨论以达成共识。

项目负责人已提交 / 审查 / 补丁
Firewire 支持imp--
armv6?imp/manu--
ARM SoC 支持审查imp由 manu 完成?
telnetdbrooks0eea46fb1f83
ftpd (针对 ~~13~~14)emaste/allanjude移植至:ftp/freebsd-ftpd
smbfs v1 (内核中最后一个使用 DES 的用户)emaste在有替代品之前无法删除
sendmailbapt现在默认为 dma
引导加载程序 4th 支持impPR257018 先解决 (lua/ZFS/... 非 UEFI PXE 加载程序太大)
NIS "crypto"cem--
NISkaktus仍有活跃的用户
剩余的 ATM 支持 (netgraph)brooksaf0cc0b22362
遗留的过时 CAM 驱动程序 (FCP) (twe/twa)imp8722e05ae149 (twa) 062a7b918fac (twe)
publicwkey(5)manuD30683 D30682
targ(4) CAM target driverimp--
fingerd??--
安装程序中的安全设置菜单emaste--
3dfx(4)jhb--
syscons(4) (至少弃用)emaste / manu--

图例

符号含义
??状态有问题
!!需要新的负责人

FreeBSD 15.0 开发计划

✔️ 已完成

已提交到代码库的事项。

事项负责人提交 / 审查 / 补丁

✈️ 已有事项

已存在于代码库之外的事项,可以在接下来的两年内或者在下一个发布版本之前合并进来(可能需要进一步工作以满足合并要求)。

事项负责人提交 / 审查 / 补丁
对于 amd64 的 kboot 支持imp
NVMe-oF/TCPjhb
在 mv 和 install 中添加 copy_file_range()pjd
更好的 copy_file_range() fallback/wrapperpjd
arm64 分支目标标识andrew
arm64 SVEandrew
amd64/arm64 救援内核markj / Klara
arm64 bhyveandrew
iovec wrappersbrooks
在 bhyve 中支持单步执行 AMD CPUjhb Bojan
在 bhyve 客户机中支持硬件监视点jhb Bojan
DDB 通过 CTF 进行优化打印jhb Bojan
整合来自我的谷歌代码之夏学生的代码的加载器命令行编辑功能imp需要协助
使用 dtrace 进行内联函数追踪markj Christos
谷歌代码之夏:squashfschuck

💸 需要

在接下来的两年内,某些人需要支持产品或服务的事项。

事项负责人提交 / 审查 / 补丁 / 状态
新的 ELF 内核转储格式jhb markj
完成 pkgbaseemaste
Poudriere 支持无需工具链的 jailallanjude brd
外部工具链支持brooks
预提交 CI(代码库、文档)lwhsu imp bofh
预提交 CI(Port)lwhsu 将与 bapt 和 decke 核实
本地和云开发者 CIbofh lwhsu
其他 CI 改进lwhsu
通用闪存存储驱动loos目前在一些嵌入式部署中需要,未来可能更加通用。即将支持 Intel 平台。

🥺 想要

这些是希望有但不是必要的事项。

事项负责人提交 / 审查 / 补丁 / 状态
TPM 支持(GELI,ZFS)allanjude--
smbfs 替代(v2 或更好)emaste jhixson--
9pfs 客户端bkumara,khng / Juniper--
overlayfsthj / Klara
关于 syscall 表生成的更新(makesyscalls.lua 的库化)imp
简化的安装程序(单个磁盘,有更好的默认值,例如按回车键完成)emaste brd
每个文件的 nullfsdfr
更多的容器支持emaste合作学生
MINIMAL 内核imp
启动加载程序支持 devmatchimp manu
重写 config(8)(使用 Lua?)imp kevans
跨 kldxrefbrooks / jhb(kevans 有一种有些混乱的原型或两种)
合并 devmatch 和 devd(库)impmeena 愿意协助
调度器和 VFS 文档覆盖范围mhorne
减少 GIANT 的修改jhb imp
vt(4)的更好 i18n 支持(CJK 字体,Unicode 字体显示(例如表情符号),输入法)fanchung在 GSoC'21 有一个IME PoC
以 tarfs 为根目录imp
内核中对 Rust 的支持brooks
用户空间中对 Rust 的支持brooks
用于 ZFS 的 netlink(zfsd/zed)allanjude
用 netlink 替代 devd 套接字bapt内核部分已完成
将 login.conf 转为 UCL 格式meenaallanjude 已有一些补丁:D25365
剩余网络工具的改进(lixo)meena
层次化动态登录类别ngor,meena

🗑️ 候选删除项 🪓

这些是我们可能希望弃用的事项。可能需要进一步讨论以达成共识。

事项负责人提交 / 审查 / 补丁
Firewire 🔥imp
armv6imp/manu
SoC 支持审查imp/manu/mhorne
ftpdallanjude
删除 DES 的相关模块des?
sendmailbapt?
bootloader 中的 forth 支持 🔪imp/stevek
NIS 服务器组件des?
publicwkey(5)manuD30683D30682
targ(4) CAM 目标驱动程序imp
fingerd??meena 自愿负责
3dfx(4)和*_isajhb
syscons(4)(至少弃用)emaste / manu
审查以太网驱动程序(100Mbps、少见的 1/10Gbps)brooks
审查 CAM 驱动程序(pms(4)等)imp
ACPI 安全定时器cperciva
freebsd-updatecperciva如果 pkgbase 准备好
32 位平台(内核,保留 compat32)jhb
arm*soft 移除(支持构建完整的软件系统,在删除 libsoft hack 构建和 ld.so 支持后,这是唯一剩下的部分)imp

图例

符号含义
??状态有问题
!!需要新的负责人