本报告涉及了 2013 年 7 月至 9 月期间与 FreeBSD 相关的项目。这是计划中的 2013 年四个报告中的第三个。
在 FreeBSD 世界中,我们度过了又一个非常活跃的三个月,其中包括两次开发者峰会(BSDCam 和 EuroBSDcon),这些将会在单独的状态报告中进行详细介绍。FreeBSD 在安全性方面继续加大力度,改进了随机数生成的性能和可靠性,并在基本系统中的程序中进行了更多的隔离。对于开发者来说,正在开发一款新的现代化调试器。此外,FreeBSD 还在通过 Port 支持 Objective-C 和 Ada 语言方面进行显著的现代化,使 FreeBSD 成为开发这两种语言的第一流平台,此外,基本系统中已经具备的 C++11 和 C11 支持也得到了加强。服务器用户将会看到 iSCSI 堆栈和可扩展性的改进,允许在普通硬件上每秒进行超过一百万次 I/O 操作,而桌面用户则会看到对新 GPU 的 X 支持和可能的 X 替代方案的改进。
感谢所有报告员的出色工作!本报告包含了 30 条记录,希望你阅读愉快。
提交报告的截止日期是 2014 年 1 月 14 日,涵盖的时间段为 2013 年 10 月至 12 月。
联系人: FreeBSD 核心团队 <core@FreeBSD.org>
在 2013 年第三季度,核心团队集中精力正式推出了 pkg.freebsd.org,这是项目的官方 pkg(8) 仓库,合作伙伴包括 Ports 团队、安全团队和集群管理团队。同时,计划逐步淘汰旧版 pkg_add(1) 的使用,使 pkg(8) 成为 FreeBSD 默认的二进制包管理解决方案,并在 10.0-RELEASE 版本中推出。Thomas Abthorpe 被任命为核心团队与 Ports 团队之间的联络员,以提高合作效率。
David Chisnall 加入了发布季度状态报告的团队,并编写了一份关于 BSDCan 2013 开发者峰会结果的特别报告。David 还主导了组织在英国剑桥举行的季节外开发者峰会,最终该会议在 8 月底举行。关于剑桥会议讨论的内容,详细报告的准备工作仍在进行中。
今年 7 月,Gavin Atkinson 对仓库访问文件进行了大规模清理,结果是发放了 5 个新的源代码提交权限,并将大部分 12 个月以上未使用的源代码提交权限移交到安全存档中。
联系人: FreeBSD Ports 团队 <portmgr@FreeBSD.org>
Ports 包含约 24,400 个 Port,而 PR(问题报告)数量超过 1,900。在第三季度,我们增加了四名新的提交者,并为六个提交权限进行了备份保存。
大量的工作集中在调整和改进基础设施,以进行现代化更新,为 pkg(8) 替换旧的 pkg_add(1) 基础设施做准备,同时也为 FreeBSD 10.0 做准备,采用 Clang 作为默认编译器,libc++ 作为默认 C++ 标准库,以及将 iconv(1) 集成到 libc 中。
已实现了自动化质量保证程序,特别是 pkg-fallout。所有 Port 开发者都被鼓励订阅相关的邮件列表(请参见链接),并为 pkg(8) 和 Clang 准备工作贡献力量。
进行了多次测试,确保尽可能多的包可以在 9.2 版本发布时可用。
大多数 Port PR 已分配,现在需要集中精力进行测试、提交和关闭。
联系人: FreeBSD 邮件管理团队 <postmaster@FreeBSD.org>
在 2013 年第三季度,FreeBSD 邮件管理团队实施了以下可能对公众感兴趣的事项:
创建了 freebsd-fortran 邮件列表,由 Anton Shterenlikht 提出。
创建了 freebsd-pkg-fallout 邮件列表,由 Baptiste Daroussin 提出。
创建了 freebsd-users-jp 邮件列表,由 佐藤広生 提出。
退休了 freebsd-mozilla 邮件列表,由 Florian Smeets 提出。
与 FreeBSD 集群管理员合作,为进出邮件服务器启用了 TLS 支持。
开始讨论和探索当前及可能的未来邮件和垃圾邮件过滤方案。
启动了退休 aic7xxx 邮件列表的流程,预计将于 2013 年 10 月 12 日完成。
联系人: FreeBSD 版本工程团队 <re@FreeBSD.org>
FreeBSD 版本工程团队已完成 9.2-RELEASE 版本的发布过程。发布周期因最后时刻新增 9.2-RC4 而有所变化。9.2-RELEASE 于 9 月 30 日发布,推迟了四周。
FreeBSD 10.0-RELEASE 的发布周期已开始,强烈鼓励进行测试。测试版本的安装镜像和虚拟机镜像已上传到 FreeBSD 项目的 FTP 服务器。
测试 10.0-CURRENT 并报告问题。
联系人: Ulrich Spoerlein <uqs@FreeBSD.org>
由于我们自己(旧且不稳定的)Coverity Prevent 实例已经消失,我们现在已完全过渡到由 Coverity 运营的 Scan 项目(请参见链接),开源项目可以使用该项目来发现其源代码中可能存在的缺陷。
我们还继续通过 Clang/LLVM 附带的静态分析器运行我们的代码库。虽然它不能追踪代码随时间的变化状态,但它的优点是任何人都可以使用,而无需特殊设置。请参见链接部分的主页,了解有关 Clang 静态分析器项目的更多信息,并访问 FreeBSD Clang 静态分析器扫描页面(请参见链接)查看这些可能的缺陷(无需注册)。
我们正在寻找一个共同管理员来管理这两个项目,以增加服务的生存机会和容错能力。名利等着你!
可能为新发现的缺陷开启邮件报告功能,发送给 FreeBSD 开发者的内部列表。
寻找共同管理员。
修复 Coverity 和 Clang 报告的缺陷。
联系人: John-Mark Gurney <jmg@FreeBSD.org>
对 OpenCrypto(内核的加密框架)中 AES-NI 实现进行了改进,显著提高了 AES-XTS 和 AES-CBC 解密性能。使用 AES-XTS 的 geli(8) 在 gnop(8) 上的性能比旧代码提高了大约三倍。
这些改进对 OpenCrypto 框架和 crypto(4) 的用户可用。
联系人: Jilles Tjoelker <jilles@FreeBSD.org>
如果线程或信号处理程序调用 fork() 和 exec(),文件描述符可能会不必要地传递给子进程,这可能导致阻塞(如果管道未关闭)、文件描述符超出限制,以及安全问题(如果子进程权限较低)。一种解决方案是使用多种新的 API,原子性地设置 "close-on-exec" 标志,同时分配文件描述符。如果存在新功能,某些现有软件将使用这些新功能,甚至可能在没有这些功能的情况下拒绝编译。
通过 mkostemp()、dup3() 以及对 fopen() 和 freopen() 模式的更改,现已实现了 Austin Group 问题 #411 中提议的所有内容。对于所有 POSIX 指定的分配文件描述符的函数,现在可以请求以原子方式将新描述符设置为 close-on-exec。
此外,libc 和 libutil 内部使用的许多文件描述符现在也设置了 close-on-exec 位。
联系人: Aleksandr Rybalko <ray@FreeBSD.org>
Newcons 项目的目标是替换基于 syscons(4) 的旧虚拟终端。主要目标是:支持 Unicode 字符,并摆脱对固定 VGA 和 VESA 图形模式及内置 BIOS 服务的依赖。
该项目最初由 Ed Schouten 发起,并且在 2013 年已具备以下功能(仅列举部分):
支持拉丁文、俄文及其他简单字符集的 Unicode 字体。
支持 Unicode 输出。
支持图形模式。
支持文本模式。
支持 sysmouse(4),不支持复制/粘贴。
近期,这些功能得到了扩展,包括:
历史记录功能,即能够滚动查看终端历史。已移除旧的独立历史缓冲区。
历史记录通过圆形缓冲区实现,无溢出风险,滚动表现为“无限制”。
VT_PROCESS 模式,一种锁定终端并防止终端切换的方式。例如,X.Org 使用此功能防止用户切换到非 X 终端。
drm2/fb_helper,KMS 驱动。这将 Newcons 绑定到内核中由 DRM 启用的视频驱动创建的帧缓冲区(例如 i915kms 和 radeonkms)。
VT 驱动的动态附加,vt_allocate() 允许在稍后阶段附加控制台视频驱动程序,此时帧缓冲区所有者可以管理初始化过程。这适用于 KMS 和没有早期图形支持的设备。
KMS 支持的启动模式:
无 VT 图形驱动启动,然后加载 KMS。
先使用 VGA 启动,然后加载 KMS。
预加载 KMS,然后 KMS 驱动将附加到输出。
预加载 KMS,先使用 VGA 启动,然后 KMS 驱动将替代 VGA 输出。
该项目由 FreeBSD 基金会赞助。特别感谢 Ed Schouten,他启动了 Newcons 项目并完成了大部分工作。
实现一个通用帧缓冲接口,提供通过 /dev/fb* 直接访问帧缓冲区,并由 Newcons 自动管理虚拟终端。
支持鼠标操作,使用 sysmouse(4) 实现复制/粘贴。
改进锁定机制。
修复错误。
将其集成到 FreeBSD 主干。
将其集成到 FreeBSD 10.0 中。
实现将键盘输入的非 ASCII 字符映射到 Unicode。
调整现有的屏幕保护程序。
最后但同样重要的是,欢迎进行测试!
联系人: Alexander Motin <mav@FreeBSD.org>
去年,高性能存储供应商峰会报告指出,FreeBSD 块存储子系统存在性能瓶颈,限制了峰值性能大约为 300-500K IOPS。尽管对大多数系统来说,这仍然足够,但详细调查表明,存在多个需要进行彻底改进的地方。今年早些时候实现的未映射 I/O 支持已经提高了大约 30% 的 I/O 性能,并将更多关注转向 GEOM 和 CAM 子系统的可扩展性。解决这些问题是该项目的目标。
现有的 GEOM 设计假设大多数 I/O 处理仅由两个内核线程(g_up() 和 g_down())完成。这在某些情况下简化了锁定,但限制了 SMP 可扩展性,并产生了额外的调度开销。该项目为 GEOM 引入了直接 I/O 调度的概念,适用于已知是安全且高效的情况。这意味着通过标记一些 GEOM 消费者和提供者,声明在某些情况下可以使用直接函数调用,而不是正常的请求排队。这允许避免在 GEOM 内部进行任何上下文切换,从而同时处理来自多个调用线程的多个 I/O 请求。
让 GEOM 通过多个并发调用传递到底层层次暴露了 CAM 中的重大锁拥塞。在现有的 CAM 设计中,所有连接到同一 ATA/SCSI 控制器的设备共享一个锁,而这个锁可能由于多个控制器硬件访问和/或代码逻辑而变得非常忙碌。实验表明,仅仅应用上述 GEOM 直接调度更改会导致系统 CPU 时间的 60% 或更多用于多个调用者试图获取这些锁,从而消耗掉 GEOM 直接调度的任何好处。
为了克服这一可扩展性限制,实施了新的精细粒度 CAM 锁定设计。它意味着将每个 SIM 锁拆分为多个更小的锁:每个 LUN 锁、每个总线锁、队列锁等。经过这些更改后,剩余的每个 SIM 锁仅保护控制器驱动程序的内部内容,从而将锁拥塞减少到可接受的水平,并保持与现有驱动程序的兼容性。
GEOM 和 CAM 的这些更改使得峰值 I/O 速率翻倍,达到了现代硬件上 1,000,000 IOPS。
这些更改已经由多人进行测试,并将在 FreeBSD 主干中提交,之后将在 FreeBSD 10.0 发布周期结束后合并到 stable/10。
该项目由 iXsystems, Inc. 赞助。
更多评审,更多稳定性和性能测试。
联系人: Edward Tomasz Napierała <trasz@FreeBSD.org>
由于 10.0-RELEASE 即将发布,本地 iSCSI 堆栈的优先级有所调整,从性能优化转向确保新堆栈的可靠性、功能完整性,并能够与各种实现正确互操作。大量时间投入到了测试和调试,主要是在启动器端,以确保它与其他目标(如 Solaris COMSTAR)正确工作,并在连接问题等边缘条件下表现正常。尽管如此,仍然实现了一些基本的优化,如支持即时数据。文档也有所改进,并将在 FreeBSD 手册中新增一节,介绍新堆栈的使用方法。
新堆栈已提交至主干,并将作为 10.0-RELEASE 的一部分发布。针对早期用户报告的问题,仍在进行修复工作。
该项目由 FreeBSD 基金会赞助。
修复新报告的问题。
提高性能。
联系人: Mark Murray <markm@freebsd.org> 联系人: Arthur Mesh <arthurmesh@gmail.com> 联系人: Dag-Erling Smørgrav <des@freebsd.org>
随机数需要比直觉上认为的更复杂的思考和准备。对于模拟,通常需要重复但足够混乱的数字序列,以实现所需的实验重复能力,许多程序员都熟悉这些。对于加密,至关重要的是攻击者不能预测或猜测输出序列,从而为密码或“密钥材料”等安全关键的秘密材料提供来源。
FreeBSD 的随机数生成器,通过伪文件 /dev/random
提供不可预测的数字,旨在用于加密,因此它是一个加密安全伪随机数生成器(CSPRNG)。其安全性由输出生成器的精心设计(基于块加密)和输入熵积累队列提供。后者使用哈希来积累从内核各处收集的随机信息,以为生成器提供高度不可预测的输入。执行此操作的算法 Yarrow,由 Schneier 等人设计,可通过网络搜索找到。
FreeBSD 的 CSPRNG 还允许某些被认为是“高质量”的随机源直接为 random(4) 设备提供输入,而无需经过 Yarrow。随着近期有关政府监控和参与选择这些“高质量”源的揭露,人们认为这些源不再可信,因此也必须通过 Yarrow 进行处理。
这个问题在 8 月的剑桥开发者峰会和 9 月的 EuroBSDcon 2013 上进行了不同层次的讨论。
此项工作现已完成,random(4) CSPRNG 现在已经被提升到更为偏执、现代化的标准,针对其熵源采取不信任的策略。还进行了基础设施工作,以便系统管理员更方便地选择熵源。
未来的工作将继续进行,实施由 Ferguson 和 Schneier 提出的 Fortuna 算法,作为 Yarrow 的升级或替代方案。最初将提供选择,未来将根据需要决定 CSPRNG 处理算法的走向。
实现 FIPS 800-90b 支持。
对熵源进行全面深入的审查。
联系人: Ilya Bakulin <ilya@bakulin.de>
SDIO 是作为现有 SD 卡标准的扩展设计的接口,用于通过标准 SD 控制器将不同外设连接到主机。目前市场上销售的外设包括 WLAN/BT 模块、摄像头、指纹识别器和条形码扫描仪。该驱动程序作为现有 MMC 总线的扩展实现,增加了许多新的 SDIO 特定总线方法。一个用于 Marvell SDIO WLAN/BT(Avastar 88W8787)模块的驱动原型也正在开发中,参考了现有的 Linux 驱动程序。
SDIO 卡检测和初始化已经完成,大多数需要的总线方法已经实现并测试过。正在进行的工作是设计一个良好的锁定模型。WiFi 驱动程序能够加载固件到卡中并初始化它。
SDIO 堆栈:设计锁定模型,定义如何处理中断(在 SDIO 控制器级别、MMC 堆栈级别和子驱动程序级别)。
Marvell SDIO WiFi:连接到 FreeBSD 网络堆栈,编写代码实现所需的功能(如发送和接收数据、网络扫描等)。
实现分离路径。由于开发所用的 DreamPlug 不具备外部支持 SDIO 的插槽,因此无法进行测试。
联系人: Bryan Venteicher <bryanv@freebsd.org>
VirtIO 网络驱动程序 vtnet(4) 被 FreeBSD 系统用于在 bhyve(4) 和 Linux 的 KVM 等虚拟机监控程序中运行。最近,它增加了对多个队列的支持,并进行了显著的清理,并支持一些附加功能。
联系人: Bryan Venteicher <bryanv@freebsd.org>
一个基于 OpenBSD vmx(4) 以太网驱动程序的 VMware 虚拟机 Port 已提交。该驱动程序可以代替 VMware Tools vmxnet3 驱动程序,后者目前不支持 10.0-RELEASE(或任何高于 9.0-RELEASE 的版本)。
性能改进,支持多队列。
合并到 stable/9。
http://svnweb.freebsd.org/changeset/base/254056
联系人: Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
Allwinner A20 SoC 的初步支持已提交至主干。Cubieboard2 上的 A20 SoC 与 Cubieboard1 上的 A10 在引脚上是兼容的,FreeBSD 支持以下外设:
USB EHCI
GPIO
使 EMAC 以太网驱动程序工作。需要网络驱动程序专家的更多帮助。
添加更多驱动程序。
联系人: Colin Percival <cperciva@freebsd.org>
FreeBSD 镜像可用于 EC2,支持 8.3-RELEASE、8.4-RELEASE、9.0-RELEASE、9.1-RELEASE 和 9.2-RELEASE。在 9.2-RELEASE 中,FreeBSD 在 EC2 中运行时使用未经修补的源代码树,但需要 XENHVM 内核配置。
从 FreeBSD 10.0-ALPHA3 开始,GENERIC 内核配置现在包含所有必要的 XENHVM 配置,使 FreeBSD 能够在 EC2 中原生运行。因此,FreeBSD 10.0 将是第一个纯粹从 ISO 安装的 FreeBSD/EC2 版本。这也意味着从 10.0 开始,可以使用 freebsd-update(8) 进行所有基本系统更新——在早期版本中,需要手动重新编译 XENHVM 内核。
由于 FreeBSD 使用 HVM 虚拟化,在“旧” EC2 实例类型(m1、m2、c1、t1)上运行时,FreeBSD 需要伪装成 Windows,这不幸地导致需要支付更高的“Windows”EC2 实例价格。在“新”EC2 实例(cc1、cc2、cg1、cr1、hi1、hs1 和 m3)上,FreeBSD 可以作为“unix”映像运行,享受更低的费用。
在 FreeBSD 10.0-ALPHAs/BETAs/RCs 发布后进行测试。最近提交了大量新的 Xen 代码,可能在发布之前需要修复一些 bug。
继续敦促亚马逊提供更多 FreeBSD 可以在其上运行而无需支付“Windows 税”的实例类型。
提供某种机制通过 EC2 用户数据配置实例。这可能涉及使用 cloud-init,或者可能是新的系统。
http://svnweb.freebsd.org/changeset/base/255643
联系人: Andreas Tobler <andreast@freebsd.org> 联系人: Nathan Whitehorn <nwhitehorn@freebsd.org>
从 FreeBSD 10.0-ALPHA4 开始,projects/pseries 分支已合并到 FreeBSD 主干。这使得 FreeBSD/powerpc64 可以在 IBM POWER 逻辑分区上运行,并支持某些类别的旧款 IBM 类型的 PowerPC 硬件。
在真实硬件上进行测试。大多数测试和开发是在 QEMU 上使用仿真 LPAR 目标进行的。请将任何测试报告发送到 freebsd-ppc 邮件列表。
联系人: Marius Strobl <marius@FreeBSD.org>
FreeBSD/sparc64 Port 正在进行多个工作。
在解决了所有剩余问题并从 9.2-RELEASE 开始,针对该架构的发布将会在 FreeBSD 项目集群上进行交叉构建。正如大家可能已经注意到的,这意味着从现在起,sparc64 安装集和镜像(包括 ALPHA、BETA 和 RC 构建)将与 FreeBSD 支持的其他平台的镜像一起提供。从 2013 年 8 月开始,自动交叉构建的 FreeBSD/sparc64 每月快照将通过官方项目镜像分发。希望这很快能通过 freebsd-update(8) 支持扩展到 sparc64。
Port X.Org 已修复,以便在启用选项 WITH_NEW_XORG
时可以在 sparc64 上构建。然而,仍需要评估最近提交的 Mesa 9.1.6 更新是否引入了任何问题。
链接
http://static.usenix.org/events/osdi02/tech/full_papers/navarro/navarro.pdf
http://wiki.freebsd.org/ARMSuperpages
http://blogs.arm.com/software-enablement/1079-transparent-superpages-for-freebsd-on-arm
http://svnweb.freebsd.org/changeset/base/254918
联系人: Zbigniew Bodek <zbb@semihalf.com> 联系人: Grzegorz Bernacki <gjb@semihalf.com> 联系人: Rafał Jaworowski <raj@semihalf.com>
ARM 架构越来越普及,超越了移动和嵌入式领域。在最近几个月出现的几个有趣的行业趋势中,“ARM 服务器”概念越来越引人注目。像 Dell 和 HP 这样的顶级公司已经开始开发这类系统。
FreeBSD 在这些新领域成功的关键是处理平台的复杂功能,例如添加对超级页面的支持。
该项目的目标是使 FreeBSD/arm 能够利用超级页面,从而有效使用 TLB 转换(通过扩大 TLB 覆盖范围),提高许多应用程序的性能和可扩展性。该功能将支持基于 ARMv7 的处理器,但同时会保留与 ARMv6 的兼容性。
自上次状态报告以来,已完成以下步骤:
调整了 pmap(9) 模块以充分利用超级页面。
找到并修复了超级页面管理中的小问题。
实现了 pmap_advise() 例程。
执行了广泛的测试和基准测试:
Giga Updates Per Second (GUPS) 基准测试:内存访问延迟降低了 34%,更新比率提高了 34%。
LMbench:内存延迟降低了 38%。
自托管构建:使用 GCC 时构建时间缩短了 20%。
最终集成到 FreeBSD 主干。
该项目由 FreeBSD 基金会和 Semihalf 共同赞助。
调整 pmap 以解决由于 VM 中连续活动队列扫描导致的降级问题。
支持 64KB 页面大小。
将 pv_flags 移动到页表项描述符中。
联系人: Pawel Jakub Dawidek <pjd@FreeBSD.org>
Capsicum 是 FreeBSD 的沙箱子系统,为程序员提供了一个能力模块,允许将权限细粒度地分配给较低权限的进程。Casper 是一个友好的守护进程,提供服务给沙箱进程,允许基于策略的访问到特权服务,如 DNS 解析。
Capsicum 及相关项目(如 Casper、libnv 等)的工作进展顺利。cap_rights_t 的重构已提交到 FreeBSD 主干,并将包含在 10.0 中。这使我们可以在文件描述符上拥有比以前 64 个权限限制更多的权限,之前的限制几乎已经达到。这一变化不向后兼容,因此将其包含在 10.0 中非常重要。
libnv,作为 Casper 服务与消费者之间的通信工具,但希望能更广泛使用,已经完成,并附带了一套很好的回归测试。
使用 Capsicum 框架进行沙箱化的应用程序数量正在增加。目前已经有大约 10 个在基本系统中,更多的尚未提交。
该项目由 FreeBSD 基金会赞助。
完成 Casper 及其服务的文档。
为 Casper 服务实现回归测试。
完成 libnv 的文档。
开始使 libc 更适合沙箱使用,即修改当前在首次使用时打开文件的函数,如 strerror(3)、strsignal(3)、localtime(3)、login_get*()、getservent(3)、getprotent(3) 和 getrpcent(3),这些操作可能太晚,如果我们已经在能力模式沙箱中。
重新考虑 system.filesystem Casper 服务,以便更容易地将多个操作文件的命令行工具进行隔离。
https://wiki.freebsd.org/lldb
联系人: Ed Maste <emaste@freebsd.org>
LLDB 是 LLVM 系列中的调试器项目。它支持 Mac OS X、Linux 和 FreeBSD 平台。
自上次状态更新以来,LLDB 移植已做出多项改进。单元测试失败已被排查,并在 LLDB 的错误跟踪器中输入了缺陷。结合 lldb 构建机器人,这使得能够迅速识别其他正在进行的开发所引入的新失败。还添加了核心文件支持。
一个 LLDB 快照已被导入到 FreeBSD 基本系统,并且从 SVN 修订版 255722 起可用。默认情况下尚未构建,但可以通过在 src.conf(5) 中添加 WITH_LLB=
启用。
该项目由美国国防高级研究计划局/美国空军研究实验室在 SRI 国际和剑桥大学的合作下赞助。
支持多线程进程的实时调试。
修复 amd64 断点。
添加对远程调试(gdbserver,debugserver)的支持。
添加对内核调试的支持。
验证 i386 和 arm 架构。
实现 MIPS 目标支持。
验证交叉调试。
调查并修复测试套件失败。
http://www.dragonlace.net/
联系人: John Marino <marino@FreeBSD.org>
几年前,基于 Ada 的 Port 几乎完全从 Ports 中消失了。这并不奇怪,因为 FSF GNAT,唯一的开源 Ada 编译器,无法在一切 BSD 系统上正确构建。之前构建的引导编译器无法在现代 FreeBSD 上运行,当然也不能在 amd64 上运行。第一步,见链接详细说明,是修复 GCC,以便不仅在 FreeBSD 上修复 GNAT,还修复 DragonFly、NetBSD 和 OpenBSD。此过程中为 i386 和 amd64 平台生成了新的引导程序。FreeBSD 上的 Ada 编译器现在通过了 100% 的 ACATS 和 GCC 测试套件。
随着第一个新的 Ada 编译器 Port 的引入,基于 GCC 4.6 的 lang/gnat-aux,GNAT 编程工作室(一个多语言集成开发环境)、XML/Ada 和 GtkAda 是首批复兴的 Ada Port 之一。
使用最新的编译器,基于 GCC 4.7 的 lang/gcc-aux,创建了一个完整的 Ada 框架,并采用了新的 USES= 框架。目前约有 20 个 Port 已成为此框架的一部分,包括 Florist、ASIS、GPRbuild、QtAda、AdaControl、AdaBrowse、PolyOrb 和 AWS(Ada Web 服务器)。
GNAT AUX 编译器仍然用于作为 GNATDroid Port 的基础,GNATDroid 是 FreeBSD 到 Android 的 Ada+C 跨平台编译器。不过,这些很快将整合到 Ada 框架中。
目前来看,FreeBSD(与 DragonFly 通过 DPorts 共享)已取代 Debian 成为公认的最佳 Ada 开发平台。FreeBSD 版本的软件更新较为及时,且 Ports 中有一些 Debian 上没有的 Port,如 LibSparkCrypto、Matreshka 库和 Ahven 单元测试工具。
后续的工作可能包括将 GCC AUX 转换为 GCC 4.8 以获得更好的 Ada 2012 支持,导入 Spark 2014 到 Port 当其发布,并继续向框架中添加新的 Ada Port。
联系人: FreeBSD Python 团队 <python@FreeBSD.org>
我们目前正在清理 lang/python*
Port,以提高它们与原始上游构建行为的兼容性,并减少对 FreeBSD 特定构建补丁的需求。第一步已在九月完成,通过减少注入到不同 Python 解释器版本中的标志。
我们已经完成了支持不同 Python Port 安装包的任务。新的元 Port 结构替代了原始的 Python Port 行为,并将在未来几个月中增强,以支持同时安装不同 Python 版本的包。
Python Ports 得到了增强,增加了自动打包列表创建和替换宏,这改善了与多个 Python 版本的兼容性,并减少了打包列表的大小。
PyPy 在过去几个月中得到了大幅增强。对 Port 的重大更新解决了集成问题,并添加了新的 pypy-devel Port,用于快照和预览。自 PyPy 3 版本发布以来,现已提供新的 pypy3-devel Port,不仅提供对 Python 2.x 特定脚本的兼容性,还支持使用 3.x 语言规范的脚本。
IronPython 已进入 FreeBSD Ports,提供基于 .NET 和 Mono 的 Python 语言实现。
制定一个高层次且轻量的 Python Port 政策。
追求统一 Distribute(devel/py-distribute)和 Setuptools(devel/py-setuptools*)。
添加对更精细依赖项的支持(例如 >=1.0 或 <2.0)。
考虑如何加入 pip(Python 包索引)支持。
更多任务可在团队的 wiki 页面上找到(见链接)。
http://www.freebsd.org/gnome/
联系人: FreeBSD GNOME 团队 <gnome@FreeBSD.org>
Glib 2.36 和 Gtk 3.8 已经被导入到 Ports 中。GNOME 团队目前正在致力于提高 GNOME 3.6 的质量。随 GNOME 3 提供的 multimedia/cheese 版本现在可以使用 devd(8) 通过 multimedia/webcamd 找到摄像头。对 www/webkit-gtk3 Port 进行了一些构建改进,但它仍然比较脆弱。
MATE,一个从现在不再维护的 GNOME 2 代码库分支出来的桌面环境,已经接近完成。
GNOME 2 将在不久的将来被移除。具体的移除方式和时间尚不清楚。
测试更新。如果怀疑某个 Port 与更新版本的 devel/glib20 不兼容,请联系维护者。
更新 FreeBSD GNOME 网站,添加有关 Ports 中最近变化的内容,为 GNOME 3 和 Mate 准备新项目等。
继续在 GNOME 3.6 上工作,提升稳定性并修复缺失的功能。
将 MATE 导入 Ports 中。
联系人: David Chisnall <theraven@FreeBSD.org>
GNUstep 是开源实现的 Objective-C API,基于 OpenStep 规范,这是 Apple 以 Cocoa 品牌化的。由于 FreeBSD 和 OS X 的 libc 之间的相似性,FreeBSD 成为一个吸引人的平台,适合移植 OS X 应用程序,并通过添加 GNUstep 来实现。
FreeBSD 中的 GNUstep Port 现在已经更新到最新版本,并且默认使用 GNUstep 的 Objective-C 运行时和 Clang 3.3 构建,支持非脆弱的 ABI。这意味着支持 Objective-C 的所有现代特性,包括自动引用计数(ARC)和最近的语法改进。
devel/gnustep 元 Port 将安装所有核心 GNUstep 库,准备进行开发。x11/gnustep-app 元 Port 将安装 Ports 中所有基于 GNUstep 的应用程序和库。这些应用程序和库中的许多已经很老,并且未经过最新版 GNUstep 的良好测试,因此目前可以认为它们是实验性的。我们目前正在更新它们,包括将一些弃用的上游位置迁移到 GNUstep 应用程序项目(GAP),该项目已经接管了多个旧版 GNUstep 程序的维护。
联系人: FreeBSD X11 团队 <x11@FreeBSD.org>
Mesa 9.1(libGL 和 dri)已在 Port 中更新。这包括 libEGL 和 libgles2 的实验性 Port,它们是 Wayland 和 Weston 实验性 Port 的依赖项。
radeonkms 驱动程序已于 8 月底提交到 FreeBSD 主分支,并将包含在 10.0-RELEASE 中。自初次提交以来,已进行了多个修复,现在看起来相当稳定。然而,缺少的一个主要特性是对挂起/恢复的支持:测试计算机在恢复时几乎总是会导致 GPU 锁死。
感谢 Mesa 更新以及 x11-drivers/xf86-video-ati 更新至 Ports 中的 7.2.0,现在所有组件已就绪,允许用户使用最新的 AMD 显卡(最多支持 HD7000,可能包括某些 HD8000)。
该驱动程序现在将只接收错误修复,重点将转向更新 DRM 通用代码和 i915 驱动程序。
i915kms 和 radeonkms 视频驱动程序共享的通用 DRM 代码现在已经相当陈旧。工作已经开始,将其更新并与 Linux 3.8 版本同步。此代码在 GitHub 上可用。
预期的好处包括:
帧缓冲区代码的修复,这将有助于未来部署 Newcons。
对次要设备(即控制节点与渲染节点)进行初步支持。
对 setmaster 和 dropmaster 的支持,可运行多个 X 会话。
来自 DragonFly 的 François Tigeot 也在对他们的 DRM 代码进行更新,X11 团队计划共享这项工作。
一个实验性的 devd(8) 后端已添加到 Port x11-servers/xorg-server。这允许 X.Org 使用 devd(8) 动态检测和配置输入设备(例如,键盘和鼠标)。
我们当前的 wiki 文章用于描述项目并报告状态。然而,它们缺乏一些一致性和链接。我们已开始考虑重新组织它们,以:
改善 Port 和内核工作之间的协调。
使信息更加易于访问。
目前在 wiki 上尚未可见。
持续跟踪 Mesa 9.2 或更高版本和 xorg-server 1.14。目前这两者都被阻塞,但跟踪上游的进展是很有价值的。
测试并报告 AMD GPU 的成功与失败。
Wayland 构建已经开始。正在对 Weston 进行工作,查看是否存在运行时问题。Weston 是 Wayland 的参考合成器。
改进 x11-servers/xorg-server 的 devd(8) 后端,以便可以完全移除选项 HAL 。
http://www.freebsd.org/doc/en/books/fdp-primer/book.html
联系人: Warren Block <wblock@FreeBSD.org>
FreeBSD 文档项目初学者指南(Primer)没有与文档本身的变化同步更新。一些章节已经过时,其他部分则冗长且令人困惑,且对文档中新变化的描述缺失。7 月,Warren 对整个 FDP 初学者指南进行了相当深入的编辑,简化了内容并提高了清晰度。章节和部分已被移到更合乎逻辑的顺序,并且信息已更新,以更好地指导当前的状态。标记示例已被添加并修订。风格指南也已扩展和更新。现在该指南更加一致且易于使用。像往常一样,仍有改进的空间,欢迎添加或纠正内容。
编写一个关于使用 mdoc(7) 编写手册页的入门章节,将是一个很好的补充。
http://svnweb.freebsd.org/changeset/doc/42226
联系人: René Ladan <rene@FreeBSD.org>
实体项目分支已成功合并到主文档分支中,合并版本为 doc 仓库的第 42226 号修订版(见链接)。该分支的目的是移除 authors.ent 和 developers.ent 中重复的作者定义。迁移内容至前者后,后者文件已被删除。尽管大多数更改对最终用户不可见,但《提交者指南》已做出相应更改,以适应增加新提交者相关的变化。翻译者也已被告知此更新。上一报告中提到的最大难题——处理 <email>
元素,已在 Gábor Kévesdén 的帮助下得到解决。
联系人: Ambarisha Bhatlapenumarthi <ambarisha@freebsd.org> 联系人: 李鑫 <delphij@freebsd.org>
这是个谷歌编程之夏2013 项目,旨在用一个智能下载管理器服务替代基于 fetch(1) 的方法来获取第三方应用程序( Port )的分发文件(如源 tarball)(更多信息请参见链接)。
项目 wiki 中强调的所有模块已完成(见链接)。具体来说:
一个接收并提供下载请求的服务。它从不同的镜像站点采样下载速度,并利用这些信息选择下一个请求的最佳镜像。如果它发现从另一个镜像站点完成下载会比继续使用当前镜像站点更快,它可以将任务迁移到其他镜像。
客户端(dmget)还新增了一个状态转储功能,可以转储关于当前活动下载、镜像站点的下载速度等信息。
实现(特别是作业迁移和状态转储)尚未经过充分测试。需要对代码进行测试,并编写更多单元和回归测试。
http://www.freebsdfoundation.org/
联系人: Deb Goodkin <deb@FreeBSDFoundation.org>
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持和推广 FreeBSD 项目及其全球社区。我们大部分的资金用于支持 FreeBSD 开发项目、会议和开发者峰会,购买设备以发展和改进 FreeBSD 基础设施,并为项目提供法律支持。
我们听取了捐赠者的建议,他们希望我们全年进行更多的募捐活动。本季度我们已完成 2013 年计划的三次募捐活动中的第二次。我们在本季度开始时筹集了 $365,291。到本季度末,我们已筹集了 $410,000。这些早期的捐款对我们今年的募捐活动产生了重要影响。
以下是本季度的一些亮点:
上个季度完成的项目:
ARM 超页
文档项目基础设施增强
正在进行中的项目:
本地 iSCSI 内核堆栈
新的控制台驱动 Newcons
上个季度开始的项目:
Capsicum 集成
网络堆栈第二层现代化
作为 EuroBSDCon 的白金赞助商,六名基金会代表参加了会议和开发者峰会,赞助了 7 名开发者参加会议,并赞助了开发者峰会。
赞助了剑桥开发者峰会,并赞助了 2 名开发者参加该活动。
参加了 7 月 27 日的印第安纳波利斯 LinuxFest、8 月 10 日的费城 FOSSCON、9 月 14 日的俄亥俄州 LinuxFest 以及 9 月 16-17 日的新奥尔良 LinuxCon,以推广 FreeBSD。
与 FreeBSD 核心团队会面,讨论他们的目标以及我们可以提供帮助的领域。
与文档团队会面,讨论帮助他们更新网站以及我们可以为他们提供的其他帮助领域。
在 EuroBSDCon 上表彰了 Dag-Erling Smørgrav 对 FreeBSD 的贡献。
成为 vBSDCon(在华盛顿特区举办的新会议)的赞助商。
聘用了 Glen Barber 作为全职员工,负责系统管理工作并协助发布工程。
聘用了 Cinthy Tanko 作为兼职行政助理,帮助处理基金会日常事务。
购买了硬件,计划放置在我们位于 NYI 的数据中心,以支持构建和分发 FreeBSD 10 版本前的新式软件包。
为核心团队提供了远程会议服务,支持他们每月的会议。