avoid core dump when building emacs 22 on cygwin

一度成功地在cygwin上编译了emacs的cvs版,可是后来出了问题,症状有两个:

  1. make bootstrap时编译byte-opt.el出现core dump;
  2. 在使用一段时间后emacs无法响应,而CPU利用率达到100%;在终端里使用emacs则没有这个问题。

不久前cvs上的emacs版本从22.0.50升级到22.0.90,似乎离Emacs 22正式发布的日子不远了,所以在所有需要使用emacs的机器上都编译了一个最新版的,在Linux上,第一次尝试了–with-gtk这个configure的选项,发现启动时流畅很多,也快了些。而在cygwin上这样编译出的emacs根本不能用(居然还可以完全通过编译?),所以仍然使用了缺省的configure选项。

避免编译byte-opt.el出现core dump的方法是把LANG环境变量设置为en_US,在我的机器上缺省为zh_CN。建议把LANG的缺省值直接设置为en_US,这样在使用一些对中文支持不太好的程序时不会出现乱码。

问题1就这样解决了,不知道是不是误打误撞,以前在使用IPC::Run的时候也遇到过LANG环境变量导致失败的情况。这次虽然用同样的方式解决了问题,但仍然不知其所以然。

问题2到目前为止还没有再次出现过,难怪有些人在论坛里提问却总是得不到解决——不能重现的问题没人能够解决,除了倒霉者自己。

Embrace new programming model

从超线程到双核再到多核,个人电脑正处在一个由量变到质变的过程。Quad Core Desktops and Diminishing Returns评测了一些软件在不同CPU上的性能,并对这种CPU的发展模式提出了质疑。

然而,更应该得到质疑的是当前的主流编程模式。多线程、多进程等各种并行程序设计模式必将在不久的将来代替现在的单进程单线程的模式,而如何降低编写各种并行程序的门槛,便成了迫在眉睫的任务。也许,Erlang Style Concurrency是一个很好的例子。

“Erlang Style Concurrency”里面谈了一点“创新”,正好前两天看了篇美文:The Most Important Software Innovations,可以对比着欣赏。