diff --git a/ChangeLog b/ChangeLog index fe2adce59ace..5bfc242ff75e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,31 @@ -2012.06.19, Version 0.7.12 (unstable) +2012.06.25, Version 0.8.0 (stable) + +* V8: upgrade to v3.11.10.10 + +* npm: Upgrade to 1.1.32 + +* Deprecate iowatcher (Ben Noordhuis) + +* windows: update icon (Bert Belder) + +* http: Hush 'MUST NOT have a body' warnings to debug() (isaacs) + +* Move blog.nodejs.org content into repository (isaacs) + +* Fix #3503: stdin: resume() on pipe(dest) (isaacs) + +* crypto: fix error reporting in SetKey() (Fedor Indutny) + +* Add --no-deprecation and --trace-deprecation command-line flags (isaacs) + +* fs: fix fs.watchFile() (Ben Noordhuis) + +* fs: Fix fs.readfile() on pipes (isaacs) + +* Rename GYP variable node_use_system_openssl to be consistent (Ryan Dahl) + + +2012.06.19, Version 0.7.12 (unstable), a72120190a8ffdbcd3d6ad2a2e6ceecd2087111e * npm: Upgrade to 1.1.30 - Improved 'npm init' diff --git a/Makefile b/Makefile index 17ab607e144e..adaed6f1e70e 100644 --- a/Makefile +++ b/Makefile @@ -136,7 +136,7 @@ blogclean: rm -rf out/blog blog: doc/blog out/Release/node tools/blog - out/Release/node tools/blog/generate.js doc/blog/ out/blog/ doc/blog.html + out/Release/node tools/blog/generate.js doc/blog/ out/blog/ doc/blog.html doc/rss.xml $(apidoc_dirs): mkdir -p $@ diff --git a/deps/npm/html/api/bin.html b/deps/npm/html/api/bin.html index bb120a5b7ac5..03f32bb284e1 100644 --- a/deps/npm/html/api/bin.html +++ b/deps/npm/html/api/bin.html @@ -19,7 +19,7 @@

DESCRIPTION

This function should not be used programmatically. Instead, just refer to the npm.bin member.

- + - + diff --git a/doc/api/_toc.markdown b/doc/api/_toc.markdown index 0e90fe6c7658..d8da1740e2e1 100644 --- a/doc/api/_toc.markdown +++ b/doc/api/_toc.markdown @@ -23,6 +23,7 @@ * [HTTPS](https.html) * [URL](url.html) * [Query Strings](querystring.html) +* [Punycode](punycode.html) * [Readline](readline.html) * [REPL](repl.html) * [VM](vm.html) diff --git a/doc/api/all.markdown b/doc/api/all.markdown index c62526713e49..044c0aee974d 100644 --- a/doc/api/all.markdown +++ b/doc/api/all.markdown @@ -23,6 +23,7 @@ @include https @include url @include querystring +@include punycode @include readline @include repl @include vm diff --git a/doc/api/cluster.markdown b/doc/api/cluster.markdown index 1332bd4eed48..059037bc74fc 100644 --- a/doc/api/cluster.markdown +++ b/doc/api/cluster.markdown @@ -233,7 +233,7 @@ Example: args : ["--use", "https"], silent : true }); - cluster.autoFork(); + cluster.fork(); ## cluster.fork([env]) @@ -436,7 +436,11 @@ in the master process using the message system: } // Start workers and listen for messages containing notifyRequest - cluster.autoFork(); + var numCPUs = require('os').cpus().length; + for (var i = 0; i < numCPUs; i++) { + cluster.fork(); + } + Object.keys(cluster.workers).forEach(function(id) { cluster.workers[id].on('message', messageHandler); }); diff --git a/doc/blog.html b/doc/blog.html index 314d0266a8af..547f609aa560 100644 --- a/doc/blog.html +++ b/doc/blog.html @@ -48,6 +48,11 @@ <%= title || "Node.js Blog" %> + @@ -98,7 +103,7 @@

<%- title %>

<%- post.content %>

Please post feedback and comments on - the Node.JS + the Node.JS user mailing list.

<% @@ -192,21 +197,20 @@

@nodejs -

Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

+

Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

- diff --git a/doc/blog/release/node-v0.8.0.md b/doc/blog/release/node-v0.8.0.md new file mode 100644 index 000000000000..460b3335d0fb --- /dev/null +++ b/doc/blog/release/node-v0.8.0.md @@ -0,0 +1,381 @@ +title: Node v0.8.0 +date: Mon Jun 25 2012 09:00:00 GMT-0700 (PDT) +version: 0.8.0 +category: release +author: Isaac Z. Schlueter +slug: node-v0-8-0 +status: publish + +I am thrilled to announce the arrival of a new stable version of +Node.js. + +Compared with the v0.6 releases of Node, this release brings significant +improvements in many key performance metrics, as well as +cleanup in several core APIs, and the addition of new debugging +features. + +## tl;dr + +With version 0.8.0: + +1. Node got a lot faster. +2. Node got more stable. +3. You can do stuff with file descriptors again. +4. The [cluster module](http://nodejs.org/api/cluster.html) is much more + awesome. +5. The [domain module](http://nodejs.org/api/domain.html) was added. +6. The repl is better. +7. The build system changed from waf to gyp. +8. [Some other stuff changed, + too.](https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8) +9. Scroll to the bottom for the links to install it. + +## Performance + +This version brings a few key enhancements in V8 and libuv that result +in significantly improved throughput. + +All of these benchmarks were run on my OS X laptop, but the results are +typical of what we're seeing on SmartOS, Linux, and Windows. + +``` +# io.js + +# 0.6.19, writes +Wrote 1024 byte buffers: 19.428793471925395 mB/s +Wrote 4096 byte buffers: 59.737156511350065 mB/s +Wrote 16384 byte buffers: 83.97010664203543 mB/s +Wrote 65536 byte buffers: 97.4184120798831 mB/s + +# 0.8.0, writes +Wrote 1024 byte buffers: 61.236987140232706 mB/s +Wrote 4096 byte buffers: 109.05125408942203 mB/s +Wrote 16384 byte buffers: 182.18254691200585 mB/s +Wrote 65536 byte buffers: 181.91740949608877 mB/s + +# v0.6.19, reads +Read 1024 byte buffers: 29.96883241428914 mB/s +Read 4096 byte buffers: 62.34413965087282 mB/s +Read 16384 byte buffers: 165.7550140891762 mB/s +Read 65536 byte buffers: 266.73779674579885 mB/s + +# v0.8.0, reads +Read 1024 byte buffers: 57.63688760806916 mB/s +Read 4096 byte buffers: 136.7801942278758 mB/s +Read 16384 byte buffers: 244.8579823702253 mB/s +Read 65536 byte buffers: 302.2974607013301 mB/s +``` + +The difference is not small. If you are writing network programs with +node, and pushing a lot of traffic, you will notice this improvement. + +The speed of reading files got quite a bit faster as well: + +``` +# v0.6.19 +read the file 110948 times (higher is better) +90141.32 ns per read (lower is better) +11093.69 reads per sec (higher is better) + +# v0.8.0 +read the file 158193 times (higher is better) +63217.16 ns per read (lower is better) +15818.48 reads per sec (higher is better) +``` + +And of course, the ubiquitous 'hello, world' http server benchmark got +significantly faster, especially for large message sizes: + +``` +$ TYPE=bytes LENGTH=123 bash benchmark/http.sh 2>&1 | grep Req +# 0.6.19 +Requests per second: 3317.24 [#/sec] (mean) +# 0.8.0 +Requests per second: 3795.34 [#/sec] (mean) + + +$ TYPE=bytes LENGTH=1024 bash benchmark/http.sh 2>&1 | grep Req +# v0.6.19 +Requests per second: 3258.42 [#/sec] (mean) +# 0.8.0 +Requests per second: 3585.62 [#/sec] (mean) + + +$ TYPE=bytes LENGTH=123456 bash benchmark/http.sh 2>&1 | grep Req +# v0.6.19 +Requests per second: 218.51 [#/sec] (mean) +# 0.8.0 +Requests per second: 749.17 [#/sec] (mean) +``` + +The difference with Unicode responses is even more pronounced: + +``` +$ TYPE=unicode LENGTH=1024 bash benchmark/http.sh 2>&1 | grep Req +# v0.6.19 +Requests per second: 3228.23 [#/sec] (mean) +# v0.8.0 +Requests per second: 3317.60 [#/sec] (mean) + +$ TYPE=unicode LENGTH=12345 bash benchmark/http.sh 2>&1 | grep Req +# v0.6.19 +Requests per second: 1703.96 [#/sec] (mean) +# v0.8.0 +Requests per second: 2431.61 [#/sec] (mean) + +$ TYPE=unicode LENGTH=55555 bash benchmark/http.sh 2>&1 | grep Req +#v0.6.19 +Requests per second: 161.65 [#/sec] (mean) +#v0.8.0 +Requests per second: 980.38 [#/sec] (mean) + +$ TYPE=unicode LENGTH=99999 bash benchmark/http.sh 2>&1 | grep Req +# v0.6.19 +^C # lost patience after a few hours +# v0.8.0 +Requests per second: 252.69 [#/sec] (mean) +``` + +The more bytes you're pushing, and the more work you're doing, the more +win you'll see with node 0.8 over 0.6. + +The vast majority of the performance boost is due to improvements in V8. +They've been very responsive to the needs of the Node.js project. A lot +of Node's success is due to being built on such a stellar VM. + + +## Build System + +Since its inception Node has used the WAF build system which is a Python +based system similar to SCons. The Chrome project recently changed to +the GYP meta-build system from SCons. GYP generates Makefiles, Visual +Studio project files, or XCode files depending on the target. V8, being +part of the Chrome project, now defines its build in GYP. By using GYP, +Node is able to: + +- integrate with the optimal build system on all platforms, +- easily able to integrate V8's build process into its own, and +- define its compilation declaratively for better manageability + +GYP was used already in Node v0.6 to build on Windows, but now it +defines the build on all platforms. Node is still in the process of +migrating external addon modules to GYP, and node-gyp is included with +npm. In future releases, node-waf will be officially deprecated. If +you are currently using a wscript in your addon, please migrate to gyp +as soon as possible. + + +## Stabler + +The transition from libev and libeio to libuv in 0.6 was somewhat +destabilizing for many node internals. The gambit paid off: libuv is +the obvious choice in cross-platform asynchronous IO libraries, and +Node.js is impressively performant on both Windows and Unix. But it +made the transition from 0.4 to 0.6 was very rocky for a lot of users. +Libuv wasn't as mature as node, and it showed in those early releases. + +At this point, with very few exceptions, if your v0.6 program doesn't +run on v0.8, it should be easy and obvious to make whatever changes are +necessary. Libuv has come a very long way, and Node 0.8 is a simpler +and more efficient machine as a result. + +See the [migration +wiki](https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8) +for details on the specific APIs that changed. + +## The Return of File Descriptors + +In Node 0.4, there was a `listenFD` method that servers could use to +listen on a specific file descriptor that was already bound to a socket +or port. In 0.6, that functionality went away, largely because it was +very Unix-specific, and couldn't be easily made to work with the new +cross-platform libuv base. + +Since the most common use case for listenFD was as a method for having +servers in multiple node processes share the same underlying handle, the +`cluster` module was added in its place. However, this still left a lot +of use cases unaddressed, and was a reason why some people could not use +node 0.6 for their programs. + +In 0.8, we've replaced this functionality, as `server.listen({ fd: +number })`. + +The other feature in node 0.4 that got dropped in 0.6 was the ability to +pass arbitrary file descriptors as a child process's stdio, using the +`customFds` array. In Node 0.6, `customFds` could be used to inherit +the parent's stdio handles, but not to pass arbitrary handles or file +descriptors to the child's stdio. Also, there was never a way to pass +more than the standard `in, out, err` trio, so programs that expected +FD 4 to be opened in some specific way were out of luck. + +In 0.8, we've added the `stdio` array on the `child_process.spawn` +options. Pass as many file descriptors, handles, etc. as you like, and +the child process will see them as already-opened FDs. + +## More Powerful Cluster + +The cluster module in 0.8 is so much improved over 0.6, it's basically a +complete rewrite. The API is mostly backwards compatible, but not +entirely. (See the [migration +wiki](https://github.com/joyent/node/wiki/API-changes-between-v0.6-and-v0.8) +for details.) + +Barring these very minor API changes, if you were using cluster in 0.6, +then your program will still work, but it'll be faster and more +well-behaved now. And if you aren't taking advantage of the new +features in 0.8's cluster, you're really missing out. + +There's too much even to do it justice here. Go read [the API +docs](http://nodejs.org/api/cluster.html). + +## Domains + +The original idea for Domains was a way to join multiple different IO +actions, so that you can have some context when an error occurs. + +Since Ryan discussed the feature with node users at NodeConf Summer Camp +last year, the domains feature has gone through many revisions. The +problem is fairly well understood, but most attempts to solve it +resulted in serious performance regressions, or uncovered difficult edge +cases. + +What we ended up with in 0.8 is a very stripped-down version of this +idea. It's entirely opt-in, with minimal performance impact when it's +used (and none when it isn't). There are a lot of examples in [the API +documentation](http://nodejs.org/api/domain.html), so check them out, +and start handling your crashes smarter. + +The domain module is still experimental. We are looking forward to your +feedback, so please use it and let us know what you think. + +## Repl, Readline, TTY + +The Repl, Readline, and TTY modules have all had a major facelift. The +interfaces between these three modules are cleaned up and refactored, +removing a lot of common pain points and making it easier to use for +debugging your programs. + +It may seem minor at times, but a good repl dramatically increases the +quality of the overall experience. My personal favorites are: + +1. Typing `fs` or `net` or `path` will automatically load the module. +2. Typing `npm install ...` will give you a helpful message. +3. It doesn't do that stupid thing where long lines wrap and then the + backspace makes it get all confused and crazy. Instead of that, it + does the right thing. + +## Looking Forward + +Like other even-numbered version families before it, v0.8 will maintain +API and ABI stability throughout its lifetime. + +The v0.6 release family will continue to see releases for critical +bugfixes and security issues through the end of 2012. However, it will +not be the main focus of the core team's attention. + +The v0.9 releases will start in the next couple weeks. The main focus +of v0.9 will be: + +* The HTTP implementation - It has seen a lot of real-world use now, but + the http module is in dire need of a cleanup and refactor. Special + attention will be paid to making the interfaces more consistent, + improve performance, and increase correctness in more edge cases. +* The Streams API - The concept of the Stream API is very core to node. + However, it is also (like HTTP) a feature that grew up organically, + and is now in need of a cleanup. It is currently too hard to get + right, especially regarding error handling. +* Libuv Streams - The handle interfaces in libuv are going to be + refactored for added consistency throughout the codebase and across + platforms. + +Looking past that, there are a few areas where Node.js still has room +for improvement in terms of internal consistency, idiomatic JavaScript +usage, and performance. None of these are fully-fleshed out ideas yet, +but these are some of the items on our radar: + +* We ought to move to TypedArrays in favor of Buffers. Buffers will + continue to work, but since TypedArray is a JavaScript native, it + makes sense to move towards that as the preferred API. +* SSL performance leaves much to be desired at the moment. Node's + interface with OpenSSL is somewhat naive and leaves a lot of potential + optimization on the table. +* The VM module needs massive improvement. It lacks features required + to emulate a web browser JavaScript context, which means that it is + inadequate. +* The Crypto module still uses some very dated APIs. In 0.8, it can + accept Buffers for many things (finally!) but it still does not + present a Node-like streaming interface. + +At this point, the scope of Node's feature set is pretty much locked +down. We may move things around internally for these cleanup tasks, but +as you can see, there are no major new features planned. We've drawn +our boundaries, and now it's time to continue focusing on improving +stability and performance of the core, so that more innovation can +happen in **your** programs. + +And now, for those of you who may be wondering what was added since +v0.7.12, your regularly scheduled release announcement: + +## 2012.06.25, Version 0.8.0 (stable) + +* V8: upgrade to v3.11.10.10 + +* npm: Upgrade to 1.1.32 + +* Deprecate iowatcher (Ben Noordhuis) + +* windows: update icon (Bert Belder) + +* http: Hush 'MUST NOT have a body' warnings to debug() (isaacs) + +* Move blog.nodejs.org content into repository (isaacs) + +* Fix #3503: stdin: resume() on pipe(dest) (isaacs) + +* crypto: fix error reporting in SetKey() (Fedor Indutny) + +* Add --no-deprecation and --trace-deprecation command-line flags (isaacs) + +* fs: fix fs.watchFile() (Ben Noordhuis) + +* fs: Fix fs.readfile() on pipes (isaacs) + +* Rename GYP variable node_use_system_openssl to be consistent (Ryan Dahl) + + +Source Code: http://nodejs.org/dist/v0.8.0/node-v0.8.0.tar.gz + +Macintosh Installer (Universal): http://nodejs.org/dist/v0.8.0/node-v0.8.0.pkg + +Windows Installer: http://nodejs.org/dist/v0.8.0/node-v0.8.0-x86.msi + +Windows x64 Installer: http://nodejs.org/dist/v0.8.0/x64/node-v0.8.0-x64.msi + +Windows x64 Files: http://nodejs.org/dist/v0.8.0/x64/ + +Other release files: http://nodejs.org/dist/v0.8.0/ + +Website: http://nodejs.org/docs/v0.8.0/ + +Documentation: http://nodejs.org/docs/v0.8.0/api/ + +Shasums: + +``` +b92208b291ad420025c65661a7df51fc618e21ca license.rtf +0786bcda79bd651b9981682527a1bbabe0250700 node-v0.8.0-x86.msi +8f160a742a01fdfc1b1423b3fc742d184f1ab70c node-v0.8.0-x86.wixpdb +6035d6d59304add21e462cd7eb89491570b4970d node-v0.8.0.pkg +5171fb46fbfee5ac7129c4b17207a3f35a1f57e8 node-v0.8.0.tar.gz +742100a4ee4cd4d190031a30d9b22b2b69b6872e node.exe +52d20d285e9aec53043af0843f5ecc4153210693 node.exp +6d67a64274d844548cc6099c76181a50feafc233 node.lib +aa2af08d5ab869e6c8b67f01ed67129c1cad8bce node.pdb +b92208b291ad420025c65661a7df51fc618e21ca x64/license.rtf +c4d4164d4f78ea68e0e2a85b96f9b355f3b1df8b x64/node-v0.8.0-x64.msi +df8bb178ee4cb9562d93fe80bbe59b2acf1b9e6b x64/node-v0.8.0-x64.wixpdb +fc07b475d943f7681e1904d6d7d666b41874a6fa x64/node.exe +895002806dfb6d5bb141ef0f43cad3b540a4ff6c x64/node.exp +686c60d5ae5dad7fcffcdc88049c63b2cd23cffc x64/node.lib +75549cffab0c11107348a66ab0d94d4897bd6a27 x64/node.pdb +``` diff --git a/doc/changelog-foot.html b/doc/changelog-foot.html index cc27eafb5ef7..1bb70dfd2037 100644 --- a/doc/changelog-foot.html +++ b/doc/changelog-foot.html @@ -15,22 +15,21 @@
  • -

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    +

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    - diff --git a/doc/community/index.html b/doc/community/index.html index c6605c074089..b5cbc73223b1 100644 --- a/doc/community/index.html +++ b/doc/community/index.html @@ -42,10 +42,10 @@

    @nodejs

    - +

    Node's most valuable feature is the friendly and colorful community of developers. There are many places where this group congregates on the internet. This page attempts to highlight the best forums.

    - +

    Documentation

    @@ -54,7 +54,7 @@

    Documentation

    Node Manual offers stylized API docs, as well as tutorials and live code samples

    Node Bits provides sample Node.js projects

    docs.nodejitsu.com answers many of the common problems people come across.

    -

    How To Node has a growing number of useful tutorials.

    +

    How To Node has a growing number of useful tutorials.

    Stack Overflow node.js tag collects new information every day.

    @@ -77,7 +77,7 @@

    GitHub

    - +

    Mailing Lists

    @@ -169,7 +169,7 @@

    IRC

    channel for those who miss a day.

    - +

    @@ -188,19 +188,17 @@

    IRC

  • @nodejs
  • -

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    +

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    - diff --git a/doc/index.html b/doc/index.html index b5b12fe2b274..932ba8fe5c3b 100644 --- a/doc/index.html +++ b/doc/index.html @@ -31,7 +31,7 @@ Download Docs -

    __VERSION__

    +

    __VERSION__

    Fork me on GitHub @@ -214,7 +214,7 @@

    Explore Node.js

    -

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    +

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    @@ -223,15 +223,13 @@

    Explore Node.js

    - diff --git a/doc/logos/index.html b/doc/logos/index.html index 02b933052dcd..62e308229aa0 100644 --- a/doc/logos/index.html +++ b/doc/logos/index.html @@ -40,7 +40,7 @@

    @nodejs

    - +

    Logo Downloads

    @@ -82,19 +82,17 @@

    Desktop Background

  • -

    Copyright Joyent, Inc., Node.js is a trademark of Joyent, Inc., View License

    +

    Copyright Joyent, Inc., Node.js is a trademark of Joyent, Inc., View License

    - diff --git a/doc/rss.xml b/doc/rss.xml new file mode 100644 index 000000000000..a96aa78f7297 --- /dev/null +++ b/doc/rss.xml @@ -0,0 +1,45 @@ + + + + + Node.js Blog + + http://blog.nodejs.org/ + The Blog about Node.js + <%= new Date().toUTCString() %> + en + weekly + 1 + http://nodejs.org/ + + http://nodejs.org/images/logo-light.png + Node.js + http://blog.nodejs.org/ + + <% + posts.forEach(function(post) { + %> + + <%= post.title %> + http://blog.nodejs.org<%= post.permalink %> + <%= post.date.toUTCString() %> + <%= post.author %> + ]]> + + http://blog.nodejs.org<%= post.permalink %> + ]]> + ]]> + + <% + }); + %> + + diff --git a/doc/template.html b/doc/template.html index 93edf4934c3d..d6aa074a9a4b 100644 --- a/doc/template.html +++ b/doc/template.html @@ -66,21 +66,20 @@

    Table of Contents

  • -

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    +

    Copyright Joyent, Inc, Node.js is a trademark of Joyent, Inc. View license.

    - diff --git a/src/node_version.h b/src/node_version.h index 6d558a950be3..79ae25356d4a 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -24,7 +24,7 @@ #define NODE_MAJOR_VERSION 0 #define NODE_MINOR_VERSION 8 -#define NODE_PATCH_VERSION 0 +#define NODE_PATCH_VERSION 1 #define NODE_VERSION_IS_RELEASE 0 #ifndef NODE_STRINGIFY diff --git a/src/res/node.ico b/src/res/node.ico index ef3e4660d694..dad74d3cc0c1 100644 Binary files a/src/res/node.ico and b/src/res/node.ico differ diff --git a/tools/blog/generate.js b/tools/blog/generate.js index b7e8629f43f3..a9c69b56ad18 100644 --- a/tools/blog/generate.js +++ b/tools/blog/generate.js @@ -10,6 +10,7 @@ var semver = require('semver'); var input = path.resolve(process.argv[2]); var output = path.resolve(process.argv[3]); var template = path.resolve(process.argv[4]); +var rssTemplate = path.resolve(process.argv[5]); var config = { postsPerPage: 4 @@ -20,7 +21,13 @@ console.error("argv=%j", process.argv) fs.readFile(template, 'utf8', function(er, contents) { if (er) throw er; template = ejs.compile(contents, template); - readInput(); + template.filename = 'index.html'; + fs.readFile(rssTemplate, 'utf8', function(er, contents) { + if (er) throw er; + rssTemplate = ejs.compile(contents, rssTemplate); + rssTemplate.filename = 'index.xml'; + readInput(); + }); }); function readInput() { @@ -101,14 +108,15 @@ function buildPermalink(key, post) { return data; } -function writeFile(uri, data) { +function writeFile(uri, data, templ) { + if (!templ) templ = template; data.uri = path.join(data.uri); uri = path.join(uri); - var contents = template(data); + var contents = templ(data); var outdir = path.join(output, uri); mkdirp(outdir, function(er) { if (er) throw er; - var file = path.resolve(outdir, 'index.html'); + var file = path.resolve(outdir, templ.filename); fs.writeFile(file, contents, 'utf8', function(er) { if (er) throw er; console.log('wrote: ', data.pageid, path.relative(process.cwd(), file)); @@ -248,8 +256,10 @@ function writePaginated(title, posts, p, total, id) { }; if (p === 0) { writeFile(uri, d); + writeFile('/feed' + uri, d, rssTemplate); } writeFile(uri + p, d); + writeFile('/feed' + uri + p, d, rssTemplate); } function buildOutput(data) { diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs index 26f8827b4993..443739dc24af 100755 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/product.wxs @@ -23,7 +23,7 @@ - +