这份报告涵盖了 hrev57901 至 hrev58042 。
R1/beta5 已于几天前发布,报告中的许多(并非全部)更改已纳入该版本。
应用程序
- madmax 修复了 AboutSystem 中因错误添加版权条目导致的崩溃。
- apl 对 HaikuDepot 的代码进行了多项重构,包括语言模型、路径处理、包数据获取、发布者显示等。
- nipos 和 nephele 为 ColumnListView、Debugger、WebPositive、ResEdit、FontDemo、Cortex、Sudoku 等提交了修复,以去除硬编码颜色并在“暗模式”下使界面更美观。他们还调整了“暗模式”下某些颜色的计算,使其更适配。
- waddlesplash 修复了 Debugger 中用于处理地址计算中来自寄存器的地址的反汇编器(并将修复提交到上游,因为这是一个第三方库)。
- jscipione 调整了 Tracker,在进入或离开卷时重新填充菜单,并在更新菜单时正确启用和禁用“新建”菜单中的某些项目。他还修复了“复制”和“剪切”操作,使其不会改变选择(并修复了围绕移动和复制的一些其他问题,与重绘相关),修复了“打开方式...”窗口中的一些颜色问题,并使从虚拟文件夹的拖放创建符号链接(而不是复制基础文件)。
- humdinger 修复了 Tracker 中与复制或创建新文件命名相关的一些错误,包括区域意识方面的问题。他还添加了创建“新模板文件夹”的选项。
- humdinger 调整了各种应用程序中的一些 GUI 字符串。
- CalistoMathias(一个 GSoC '24 学生)的在 Tracker 查询中实现基本文件夹过滤的更改已合并(然而,这是在 beta5 版本分支之后完成的,因此此功能不在该版本中)。jscipione 后来进行了一些清理。
- nephele 修复了“切换器”的构建。
- OscarL 修复了 Clock,以确保首次绘制使用当前时间(而不是某些默认时间)。
- jscipione 修复了 Keymap 中“修饰键”窗口中不显示状态图标问题。
命令行工具
- waddlesplash 为
profile
添加了逻辑,以报告系统分析器丢弃的事件计数。 - mmlr 为
package_repo
的“更新”命令添加了一个参数,使其可在存储库中并非所有包都本地存在的环境中使用(例如,它们可能存储在 S3 存储桶中)。
服务器
- madmax 为 app_server 添加了一些缺失的字体管理器锁,并加强了字体添加和删除的逻辑。他还修复了字体管理器,使其在启动时不会两次扫描所有目录。
- waddlesplash 修复了 app_server 中(可能无害)的超时计算错误(在处理下面提到的内核定时器更改过程中发现)。
- jscipione 修复了 app_server 中的窗口标签无效逻辑,修复了一些非常旧的“标签在从堆栈中删除后仍显示”的重绘故障。
- waddlesplash 修复了媒体混合器中的多个时间计算错误(由下面提到的
BTimeSource
断言更改发现),这修复了许多(如果不是大多数或全部)“启动后立即没有音频,仅在一段时间后才有”的错误。他还提高了其事件调度效率,修复了其在断开/重新连接到输出时的一些逻辑,并修复了某些音频设备报告无效控制类型导致的多音频节点中的一些崩溃。(他还尝试添加在不重新启动媒体服务的情况下切换声音输出的逻辑,但目前还不行。) - waddlesplash 在注册器中添加了一个检查,以确保剪贴板下载消息被正确发送,并为未发送时添加了错误处理。(这与
libbe
中的相应更改一起,修复了某些应用在低内存情况下的一些挂起问题,特别是当剪贴板特别大时。) - madmax 在 input_server 中添加了一些检查,以避免无效的鼠标设置文件导致鼠标完全无法工作。
- waddlesplash 在
app_server
中移动了一些字体管理代码,以避免在启动时不必要地等待字体管理器的线程。 - PulkoMandy 和 X512 修复了“电源”键码与日本
\_
键之间的冲突,并调整了键盘映射文档。 - waddlesplash 更改了 Debugger,使其在非交互模式下根本不查询 Package Kit(并修复了 Debugger 和 Package Kit 中与此相关的一些其他错误,这些错误在各种情况下导致崩溃甚至挂起)。
- mmlr 修复了 DHCP 客户端中未初始化内存的使用(通过使用受保护的堆发现)。
工具包
- Zardshard 进行了一项更改,使设置了
ACCEPTS_VIEWS
标志的 BBitmaps 不会自动清除,修复了与 BeOS 的兼容性问题(并使在 WebKit 等多进程应用中使用此类位图更方便)。 - waddlesplash 在 Media Kit 的
BTimeSource
中添加了一个断言,以防止应用和服务尝试发布“漂移”因子为 0 的时间。“漂移”值用作乘法器和除数以校正时间/时钟漂移,因此值为零(或负数)会产生错误结果。这是由下面提到的内核定时器更改发现的,并且它反过来又发现了媒体附加代码中的更多错误。 - waddlesplash 修复了
BListView
中的 API 兼容性回归,该回归导致某些应用(如 WonderBrush)在拖放滚动时发生堆栈溢出崩溃。jscipione 调整了BListView
,使其在拖动时鼠标抬起时不更新选择。 - PulkoMandy 修复了
BMenu
,使其在矩阵布局菜单上正确绘制复选标记。
驱动程序
- waddlesplash 在
virtio_net
中为 IP、TCP 和 UDP 实现了接收校验和卸载,并修复了驱动程序中的一些逻辑和缓冲区大小错误。 - korli 为“SuperSpeedPlus”(USB3 的一个修订版,允许 10 Gbps 连接)添加了定义和逻辑。
- waddlesplash 修订了 TCP 模块中的一些乱序 ACK 逻辑,调整了一些调试代码以帮助诊断一些用户报告的间歇性 KDL,调整了窗口更新发送逻辑以避免不必要地发送窗口更新。这都是为了实现动态接收窗口大小调整做准备,该调整也在上个月合并(以及相关的往返时间计算修复),导致 TCP 吞吐量大幅提高(根据连接情况,最多可提高 10 倍或更多)。以前在 Haiku 上通过长距离连接看到下载速度慢的用户现在应该会看到非常显著的改进。
- waddlesplash 清理了以太网 MTU 周围的一些代码和常量,修复了一些地方的不正确大小。然后,他禁用了大于以太网最大值的 MTU,因为目前这些 MTU 处理不当,只会导致流量丢失。(为了正确处理这些,我们需要实现“路径 MTU 发现”,目前我们还没有。)
- PulkoMandy 修复了“增强”(通常为 ACPI)PCI 总线配置空间代码中的边界检查并调整了读写逻辑,以解决 PCI 重构后的“启动失败”回归问题。
- waddlesplash 降低了一些跟踪常量,以避免在某些驱动程序中出现 syslog 垃圾信息。
- waddlesplash 修复了 FreeBSD/OpenBSD 网络驱动程序中 DMA 缓冲区分配的一些错误。他还修复了接收路径中的一个不正确的缓冲区大小,这是最近的一个回归问题,导致某些驱动程序在某些硬件上根本无法工作。
- waddlesplash 对 NVMe 驱动程序进行了一些轻微的效率改进。
- PulkoMandy 将 ACPICA 更新到今年 3 月的版本,并修复了我们与它接口的代码中的一些小问题。
- waddlesplash 清理了 UNIX 域套接字模块中与辅助数据相关的各种代码,并修复了与此相关的网络堆栈中的一些小内存泄漏。他还修复了关闭此类套接字时偶尔发生的一个相对罕见的 KDL。
文件系统
- waddlesplash 统一了
ramfs
和ram_disk
之间之前重复的代码,进行了一些小的效率调整,然后修复它以分配“已清除”的页面。这修复了 Clang 在使用ramfs
上的内存映射文件时依赖的 POSIX 规范的违反。他还清理并统一了一些代码,调整了内存预留优先级(以避免在低内存情况下整个系统挂起),并修复了ramfs
中的一些缺失集,这些缺失集导致了 KDL。 - waddlesplash 为 packagefs 添加了一些更多的锁定断言(并修复了它们发现的小错误),然后为请求挂载冲突的包的情况添加了更好的诊断消息。
- Jim906 修复了 FAT 驱动程序中媒体字节的初始化,更改以加快大卷的挂载速度,并修复了卷标签处理中的错误。
- waddlesplash 将通用查询解析器中的内核恐慌转换为正确报告的错误。
- waddlesplash 开始清理 packagefs 中内存区域(
object_cache
s)的使用,为减少其总体内存使用的更改做准备。
libroot & 内核
- waddlesplash 清理了
WeakReferenceable
中的一些代码,这是一个允许“弱”引用的侵入式引用计数类。 - waddlesplash 清理了内核线程代码中的一些逻辑,不再依赖某些返回值来取消超时(尽管此更改引入了一个回归,直到本月才修复)。他还修复了“绝对实时超时”的调度;具有相对于实时时钟的时间(而不是系统运行时间时钟)的超时。这些以前只是偶然起作用(并且在某些情况下可能会随机卡住比应有的时间更长)。他同时对定时器代码进行了一些清理。
- waddlesplash 修复了内核用户调试器代码(Debugger 应用程序使用的内核接口)中的一个检查,该检查在某些情况下(如低内存)导致整个系统挂起,当
debug_server
崩溃或挂起时。 - waddlesplash 在 VFS 中添加了一些更多的健全性检查,以更早地捕获行为不端的文件系统驱动程序,而不是稍后导致神秘的 KDL。
- waddlesplash 为“启动分析器”添加了一种新模式,允许
scheduling_recorder
捕获启动过程,从而可以分析启动过程中的线程延迟和锁争用。(他还修复了与此相关的各种工具周围的一些其他杂项问题:DebugAnalyzer 中的滚动条、transfer_area
中的内核权限等。) - waddlesplash 从设备管理器中删除了对 SCSI 总线和驱动程序的不必要扫描,从而减少了启动时间。
- waddlesplash 修复了内核
IORequest
API 中的一个重大疏忽,该疏忽导致请求的总大小与最后传输的偏移量(即起始偏移量加上总大小)之间的混淆。这导致了文件缓存中的缓冲区溢出,导致 KDL 和其他带有关于页结构的神秘错误的问题。(他后来在页代码中添加了更多断言,以便在未来更轻松地捕获此类对页结构的滥用。) - waddlesplash 在内核的中断处理逻辑中添加了一个断言,以捕获 VM 集成驱动程序中的一个错误,并在全局区域树中添加了一些检查,以捕获重复的区域 ID。
- waddlesplash 修复了
kqueue
实现中的一个错误,该错误导致libevent
的kqueue
后端在启动时挂起。 - waddlesplash 在 32 位 x86 上对内核进行了更改,以更正确地向
strace
报告系统调用返回值(然而,它最终引入了一个导致许多应用间歇性崩溃的错误,直到月底才被发现和修复)。 - waddlesplash 修复了
runtime_loader
中的一些崩溃,这些崩溃可能在并非所有动态加载库的依赖项都存在时发生。他还修复了ramfs
和内核 VFS 之间的一些引用计数和缓存管理错误。(这两个问题是由不稳定的 Firefox 实验性端口发现的。) - waddlesplash 将在 x86 上引入的一些特定于体系结构的函数重命名为更通用的名称,因为它们现在也在其他体系结构上声明和使用。
- waddlesplash 清理了
libnetwork
中的一些 BeOS 兼容性代码,并进行了调整,使其在大多数体系结构上甚至不进行编译。 - waddlesplash 实现了 POSIX 中定义的
mknod
/mknodat
的一个可移植情况(其中与mkfifo
等效的情况)。 - mmlr 对
libroot_debug
中的受保护堆进行了一些修复和清理,使其可在更多场景中使用(可能一次在整个系统上使用)。
文档
- waddlesplash 调整了
B_INFINITE_TIMEOUT
的定义,以更清楚地表明它是INT64_MAX
(并清理了与此相关的一些代码)。 - humdinger 在 HIG 中添加了关于“最近使用的文件”的部分。
- waddlesplash 将“发布里程碑”开发文档页面重命名为“发布食谱”,这是它在 Trac 上时的名称(并且更准确地反映了其中的内容)。然后,他更新了其一些部分以提高清晰度。
构建系统
- X512 提交了一个补丁,将每个构建目标放在单独的行上,主要是为了使这些文件的重新基和解决合并冲突更容易。
- PulkoMandy、waddlesplash 和 kallisti5 将 Haiku 及其依赖项升级为使用 OpenSSL 3、Python 3.10 和各种其他较新版本的标准包进行构建。
- PulkoMandy 在
<sched.h>
中添加了一个缺失的<features.h>
包含,以允许应用使用其额外功能而无需定义任何额外的预处理器宏。 - waddlesplash 更新了“WebPositive 书签”文件,修复了其重定向中的一些错误。
- korli 将
linprog
库头文件添加到haiku_devel
包中。jmairboeck 修复了各种兼容性头文件中的一些拼写错误,waddlesplash 修复了其中一个的 C89 兼容性问题。 - jscipione 将夜间图像的大小更新为 650MB,以便有更多可用的空闲空间。
- waddlesplash 在树和构建系统周围进行了各种更改,以使 Clang 构建再次更接近工作状态(并在同时清理了一些代码)。
ARM & PowerPC
- zeldakatze 修复了 OpenFirmware 引导加载程序中的文本控制台。
- archeYR 修复了 ARM 内核架构代码,以使用正确的指令进行 CPU 空闲。
- oanderso 修复了 ARM64 引导加载程序中的一些缓存和 MMU 维护错误,允许在 Apple M1 上的虚拟化下进入内核,然后修复了内核定时器代码以在虚拟化环境中工作,并开始在 MMU 代码中进行更改并实现缺失的功能。
总结
八月是一个非常忙碌的月份!再次感谢所有为 Haiku 做出贡献的人,特别是那些使我的合同成为可能的捐赠者。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。