Development

GCC运行环境豁免条款再次狠狠地打了苹果的耳光

| Development | #clang | #FSF | #GPL | #llvm

今年 1 月 27 日发表的 《GCC运行环境豁免条款 (英文版)》 再次狠狠地打了苹果的耳光。

原先的豁免条款如下:

// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.

阅读全文…( 本文约 549 字,阅读大致需要 2 分钟 )

Progress on LLVM clang

| Development | #clang | #FreeBSD | #gcc | #llvm

As some of you already know, FreeBSD, along with some other Open Source projects, is moving away from GCC due to GPLv3. From a technology perspective, this also makes sense since the (likely) candidate, BSD-style licensed, LLVM based clang, a C compiler, is making reasonably good progress.

So, what should we expect from LLVM or clang?

Here is a good comparison between GCC and clang. Despite GCC is popular, considerably more mature, and supports more languages (especially C++, which clang’s support is incomplete at this moment), clang provides cleaner AST (Abstract Syntax Tree), much more modularized (if you take a look at GCC’s history, Richard Stallman intentionally made GCC’s code not reusable in other software), provided much more information for optimizer, is much faster and use much less memory, etc.

For FreeBSD, currently, clang can compile its kernel with only very few tweaks.

阅读全文…( 本文约 315 字,阅读大致需要 2 分钟 )

New strlen(3) committed

| Development | #FreeBSD | #strlen

Finally, I got my strlen(3) [1] committed against -HEAD. This is a long story, to put it short, I had proposed assembly version of some string operations at the point of 2005, but these was never committed due to a hard disk failure, and as Bruce pointed out, having the hand optimized assembly code use a different algorithm is not good in general.

Therefore, I have take some time on it and reimplemented the idea in C, resulting in a portable (say, you can use it on any 32-bit or 64-bit processors, and it can be easily extended to 128-bit) version.

So, is it important for *YOU*?

Generally speaking, it should not. Performance sensitive programs should, by all means, avoid C style string operations. Think a 5x better strlen(3) would boost performance of your application since it uses strlen(3) in critical path? Think again!

However, I found it valuable. There is difference in worldstone, where I saw some minor improvements. Micro-benchmark indicates that this version is at most 2x slower when the string is very short, but 5x faster for strings that is at least word-length long.

[1] Note: the version has been further revised to provide better comment and match style(9).

阅读全文…( 本文约 295 字,阅读大致需要 2 分钟 )

7.1-RELEASE升级流量冲击导致portsnap服务同步受阻

许多老派的 FreeBSD 用户喜欢用源代码方式升级。运行了十多年的基于 cvsup 的同步机制由于有很多镜像支持因此一直没有遇到太大的问题,但是 FreeBSD 6.1 开始引入的 freebsd-update 提供了新的以二进制形式更新系统的方法,最近几年 FreeBSD 内核的许多改进已经使编译自定义的内核不再像以前那样重要了。

阅读全文…( 本文约 193 字,阅读大致需要 1 分钟 )

POSIX.1-2008电子版终于发布

| Development | #POSIX

HTML 和 PDF 两种版本,详见 OpenGroup书店

参与评论

FreeBSD 7.1

我这次不铁口直断了,估计明年见了,如果这周能够RC2的话,最终RELEASE估计要到明年的1月5日左右。

这次FreeBSD 7.1在软件工程角度是相当失败的案例,我想我们应该从里面总结一些教训出来。

首先,我们的目标是什么?

我想,用户对于一个发行版本的期待是:一个经过了大量测试的、阶段性的稳定版本。而开发人员对于发行版本的期待则是尽可能地将可用的功能交付给用户。作为OS,我认为这应该包括自动化的回归测试、性能改进、更新的驱动程序、文档的修订,以及更新的第三方软件等等。

FreeBSD目前的开发模式,是将分别开发的三大模块,即内核与基本系统(src/)、文档(doc/)、第三方软件(ports/)的人在一定的时候聚集在一起,通过代码冻结的方法来使他们从增加新功能转移到集中去修bug,最后发布一个版本。这个模式在过去运转的相当好,以至于我们没有发现其中存在的问题。

这次FreeBSD 7.1暴露出来了这个模式存在的很多问题。例如,由于安全小组发现了很多安全漏洞,而另一方面,安全小组的人手不够,限制了修正这些问题的速度。我本人撰写的一个安全公告等了一个月才在今天最终公之于众,而另一方面,安全小组对于发行版本拥有一票否决的绝对权力,导致6.4和7.1的发布都一再推迟。

而作为非常快节奏的开发的 ports/ 维护者,则对不断的推迟感到相当不满。FreeBSD目前只维护 ports/ 的 -HEAD,也就是说,在正式发行 -RELEASE 之前,ports/ 不能进行大量的、破坏性的修改。例如,我本人维护的 OpenLDAP 现在就必须等待 -RELEASE 之后才可以进行升级。不断地推迟新的发行版本,会导致 ports/ 的开发继续延迟。

阅读全文…( 本文约 1473 字,阅读大致需要 3 分钟 )

FreeBSD 6.x系列走向终结

| Development

很快就要正式发布FreeBSD 6.x系列的最后一个(第五个)版本了。FreeBSD 5-STABLE发表了3个版本(5.3、5.4、5.5),FreeBSD 6-STABLE比它多两个。我对于FreeBSD 6.x系列在6.2之后的发展基本上不太满意,这次这个版本我想也是类似地,修正了一些之前版本的bug,增加了一些新硬件支持,但是显然这些与7.1-RELEASE相比是远远不够的。个人建议现有的6.x用户升级到7.1-RELEASE。

参与评论

MeetBSD 2008 (2)

| Development

今天MeetBSD由Pawel Jakub Dawidek开讲,等,为啥出来的是xterm……?然后OpenOffice Impress从命令行启动了。

ZFS是大家最关心的一个话题。Pawel最近这段时间对ZFS做了相当多的完善工作(主要是写测试用例和改用例发现的bug)。新版本的ZFS v13除了大大改善了可靠性问题之外,还增加了很多有意思的功能。不过这样一来,这patchset的尺寸?(后话:后一天的committer闭门会议,在大家的一致怂恿下ZFSv13终于给commit到了-HEAD)提问非常踊跃,我们最大的白老鼠之一,运营Internet(作为ISC公司的雇员)的Peter Losher就他遇到的一些问题进行了询问,并且得到了满意的答复。

Murray老大在这之后对这次Google SoC进行了总结。FreeBSD这几次SoC的项目成功率都很高,唯一的遗憾是在SoC之后,很多没有最终进入-HEAD。在肯定SoC的成功的同时,如何更好地利用?很多SoC的代码品质并不是很高,如何求得完成目标与高品质代码之间的合理平衡?这些都是我们需要思考的问题。

阅读全文…( 本文约 1139 字,阅读大致需要 3 分钟 )

MeetBSD 2008 (1)

今天起了一个大早,9:00到了位于 1600 Amphitheatre ParkwayGoogle 总部。

手头没有精确的人数统计,不过目测来看,大概有120-150人。看到的第一个见过照片的人是著名的 Cameraman 同学, DragonFly 的 Matthew Dillon 老大!

由于今年是 FreeBSD 计划成立15周年,今年的 MeetBSD ‘08 California 很大程度上是一次 FreeBSD 的活动。

阅读全文…( 本文约 1462 字,阅读大致需要 3 分钟 )

从韩国人发明了汉字到没有Linux就没有Internet

| Development | #FUD | #Linux

写这种 数典忘祖 的东西也得有点底线吧?

我倒是想问作者: Would Linux exist without Internet?

参与评论