Archive for March 2007

What I’ve done with my MBP

算来买到 MBP 距今也有 4 个月了,这四个月里我主要做了哪些 hack 工作呢?这里罗列出来,或许你会有兴趣:

  • 因为 OS X 上没有一个文本编辑程序 (ok, let’s forget vim and emacs) 支持自动的编码探测,所以我在 jserv port 的 Mozilla 的编码探测技术charset-detector 基础上稍作修改使之能在 OS X 下工作,并打算修改 open source 的 Text Editor 的代码,使之能够自动探测选择常见的编码。这个工作前一部分已经完成,后一部分打算在这个周末做一做,包括 pack charset-detector 为 Framework 等等。link, binary, source.

  • 因为突然要听 APE (Monkey’s Audio),但 OS X 下把 APE 转换为 MP3/Apple Loss less/AAC 必须先用 MAC (Monkey’s Audio Console) 将 APE decode 为 WAV 格式。但却没有人提供 Universal Binary 的 MAC。所以就自己修改、移植、编译了一份 MAC for Intel。link, binary.

  • 将 Apple 提供的输入法例子 BasicInputMethod 修改为 Intel Macs 下可编译。link, source.

  • 因为想玩《金庸群侠传》,但 OS X 下先前别人编译的 DOSBox UB 版本却一跑“《金庸》” 就崩溃,于是自己编译了一份新的 CVS 版本。link1, binary.

  • 修改 gVim for Mac OS X,提供完整的中文支持和 ATSUI 渲染功能。并改进对部分中文输入法 (QIM) 的支持。这是最近几天做的,也是最复杂的一个。link, patch, binary.

还有几个未完成或者未 announce 的 project :) 上面这些项目我都是在一完成后就在 newsmth.org 的 Apple 版发布,我也时常在那儿停留,参与讨论,如果你有兴趣也不妨来逛逛。

Hacking 真是人生最大的乐趣 ;)

现有的 JavaScript 实现概览

严格来说,JavaScript 其实指的是 Netscape/Mozilla 对 ECMAScript 标准的实现,但考虑到习惯因素,这里就不咬文嚼字了。

目前仍然在开发中的 JavaScript (ECMAScript) 开放源代码的实现包括:

JavaScriptCore

Apple 开发的 JavaScript 引擎,以 Mac OS X Framework 的形式提供,与 WebCore 一同结合而成 WebKit Framework。JavaScript 是基于 KDE 计划的 KJS 库和 PCRE 正则表达式库开发的。

特点:

  • 强大的垃圾回收器
  • 使用 C++ 开发
  • 基于标准 C/C++ 库和 ICU (IBM 的 Unicode 库)
  • Mac OS X 程序调用它比较方便
  • 采用创建语法树并执行的形式,而不是生成 bytecode 再执行
  • 提供 C, Java (JNI), Objective-C, Qt 的 binding
  • 跨平台,可在 win32 下使用

网站:

KDE 提供了 kjsembed 库,也是基于 KJS 的,但依赖 Qt (和 KDE)。

SEE

是 Simple ECMAScript Engine 的缩写,提供了 ECMAScript 的解析器和运行时环境。提供到 JavaScript 1.5 (ECMAScript 第 3 版) 的兼容性。

特点:

  • 不直接提供 DOM,但 API 设计时是考虑到了支持 DOM 绑定的
  • 关注正确性与可移植性

网站:

  • SEE
  • 提供代码的 snapshot, Subversion, 邮件列表和 Bugzilla

文档:

Using SEE

DMDScript

Digital Mars 的 ECMAScript 实现,作者是 D 语言的发明者。

特点:

  • 声称要比其他实现都快
  • 有 D 语言实现也有 C++ 语言实现
  • 混合 License (开源软件可以使用 GPL)
  • 加上了 Microsoft Jscript 扩展

网站:

SpiderMonkey

Mozilla 的 JavaScript 参考实现,支持到 JavaScript 1.7。

特点:

  • 使用者数量众多,对 JavaScript 和语言扩展支持最快
  • 专门为单独 (standalone) 编译考虑,不需要依赖任何其他的 mozilla 软件/库
  • 要保证线程安全则需要 NSPR 库
  • 向 Adobe 贡献的 tamarin 引擎转移的步骤进行很慢

网站: