CNode

node v0.8 Roadmap详解

Ffool发布于15 年前最后回复14 年前12 回复10671 浏览0 收藏

Ryan的邮件可知,node v0.8分支已经开始开发,预计将于一月初发布。v0.8分支将带来如下的新特性: 1. 将src/platform-.cc中所有平台相关的函数迁移至libuv中。 2. 移除WAF(目前node在nix下使用的编译工具) ,以后所有平台下都将使用GYP来编译。GYP是由Chromium项目引入的编译工具。 3. 目前V8通过Isolate,可以实现在同一进程的多个线程中执行独立的Javascript代码。node将对这一特性提供直接支持,即允许用户在新线程中执行Javascript代码。详情将在后文叙述。 4. 提供一种叫做Domains的机制,将与不同网络连接相关的I/O操作分离开来。当一个domain出现了异常时,domain内所有关联的I/O handle都会被清理掉。比如来了一个HTTP请求,然后这个请求发生了异常,所有和这个请求相关的I/O都会被清除。 5. node目前使用了一个内存池来分配数据流使用的buffer内存,但是这个内存分配器在很多时候效率并不高,对此将进行改进。 6. 将提供更好用的编译C++ extension的工具,以便于为所有平台开发extension。 Isolate 这几条中,最令人关注的是第3点。node在未来将提供多线程支持吗?某种程度上可以说是。 node将要提供的Isolate接口,和child_process的spawn非常相似,即在完全分离的环境里执行代码,但在Javascript层面上并不共享内存和代码。 但不同的是,每个Isolate都处在独立的线程中,而child_process则是处在独立的进程中。前者在C层面上是可以共享内存的,通过编写C++模块来提供接口,我们就可以实现在不同Isolate间共享同样的资源。用node进行方便的并行操作也将成为可能。 为了实现这个特性,node首先需要让自己更适合多线程环境,所有的全局变量都将被移除,大量的debugging也避免不了。对于编译的C++模块,它们也需要判断自已要为哪个Isolate服务,而且,一个模块到底需要被加载几次,也变得难以判断起来。 同时,当一个Isolate结束时,整个进程并不会结束,node还需要结束掉和这个Isolate相关的I/O,这一点主要通过domains来实现(见上面第四条)。 所以,期待2012吧。

查看回复

回复 (12)

A
anonymous#1·15 年前
A
anonymous#2·15 年前

希望能把cygwin support做的好一点。

J
JacksonTian#3·15 年前

Node已经可以直接在windows下原生运行了。不需要cygwin了。如果你喜欢linux命令,就到linux下去玩node吧。

J
JacksonTian#4·15 年前

期待2012 - -

F
fisherman#5·15 年前

俺已经在项目中使用Isolate了~~

J
JacksonTian#6·14 年前

Isolate已经被移除了。

Z
zxc122333#7·14 年前

跪求楼主把“Javascript里有个C”系列写完。。。。。

J
jsonshen#8·14 年前

如牛逼

P
pittmak#9·14 年前

希望node可以一直进步,更多人来参与社区建设,虽然我不指望靠node来养家糊口,但我真心喜欢node!

K
kaven276#11·14 年前

并行支持再发展,就得学 oracle 那样对数据修改都上锁,提交或回滚后才能再次访问。

这些在线程间共享的数据,不就成了一种支持并发访问的内存数据库了吗。

参与回复
登录后即可参与回复。登录