Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

build: enable a smaller Intl (i18n / ICU) build #7719

Closed
wants to merge 34 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
468fb54
doc: http.request() improved code example
guisouza Sep 12, 2014
378d972
doc: console example improvement
guisouza Sep 12, 2014
03e9352
win: manifest node.exe for Windows 8.1
orangemocha Aug 15, 2014
c615545
crypto: clarify RandomBytes() error msg
Sep 17, 2014
cb4ed3c
crypto: never store pointer to conn in SSL_CTX
indutny Sep 17, 2014
9c992bd
test: add test for cluster.worker.destroy()
Sep 2, 2014
30bd7b6
node: support v8 microtask queue
vkurchatkin Sep 4, 2014
d66adf0
doc: corrected typo in vm docs
ateich Sep 19, 2014
4c9b30d
buffer: improve Buffer constructor
kennyluck Sep 19, 2014
64d6de9
http: write() after end() emits an error.
Sep 23, 2014
6e08bb9
crypto: export externals to internal structs
indutny Sep 12, 2014
c5f5d4c
deps: update uv to v1.0.0-rc1
indutny Sep 19, 2014
7fd35e6
uv: apply floating patch 2f54947b
indutny Sep 23, 2014
7c3c51b
buffer: fix map and set parent to undefined
trevnorris Sep 23, 2014
4dbb84f
tls_wrap: ensure that TLSCallbacks are gc-able
indutny Sep 23, 2014
2f7234d
tests: add test for buffer.slice.
Sep 24, 2014
f773fb4
test: disable dgram-bind-shared-ports on win32
tjfontaine Sep 24, 2014
efa47e5
benchmark: add test for module loader
robertkowalski Sep 13, 2014
b26dd4e
net: Make server.connections un-enumerable
pfmooney Sep 17, 2014
9fad895
deps: upgrade npm to 2.0.0
tjfontaine Sep 24, 2014
fd896d5
2014.09.24, Version 0.11.14 (Unstable)
tjfontaine Sep 24, 2014
8e4fc88
Now working on 0.11.15
tjfontaine Sep 25, 2014
51b6b68
doc: fix brackets for optional parameters
trevnorris Sep 24, 2014
f3473d7
readline: fix performance issue when large line
Sep 14, 2014
9d95774
child_process: improve spawn() argument handling
cjihrig Sep 20, 2014
2122a77
crypto: lower RSS usage for TLSCallbacks
indutny Sep 24, 2014
de312cf
timer_wrap: remove HandleScopes, check return size
trevnorris Sep 29, 2014
979d0ca
http: cleanup setHeader()
trevnorris Sep 29, 2014
f4df805
readme: grammer fix
jamesanthonyferguson Sep 25, 2014
734fb49
src: fix VC++ warning C4244
zerhacken Sep 18, 2014
f2a78de
doc: fix optional parameter parsing
trevnorris Sep 29, 2014
57ed3da
buffer: fix and cleanup fill()
trevnorris Sep 30, 2014
1781c8b
http: Improve _addHeaderLines method
JacksonTian Sep 24, 2014
967b022
build: i18n: improve Intl build, add "--with-intl"
srl295 Sep 5, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ ipch/
/test/addons/doc-*/
email.md
deps/v8-*
deps/icu
./node_modules
.svn/

Expand Down
169 changes: 169 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,172 @@
2014.09.24, Version 0.11.14 (Unstable)

* uv: Upgrade to v1.0.0-rc1

* http_parser: Upgrade to v2.3.0

* npm: Upgrade to v2.0.0

* openssl: Upgrade to v1.0.1i

* v8: Upgrade to 3.26.33

* Add fast path for simple URL parsing (Gabriel Wicke)

* Added support for options parameter in console.dir() (Xavi Magrinyà)

* Cluster: fix shared handles on Windows (Alexis Campailla)

* buffer: Fix incorrect Buffer.compare behavior (Feross Aboukhadijeh)

* buffer: construct new buffer from buffer toJSON() output (cjihrig)

* buffer: improve Buffer constructor (Kang-Hao Kenny)

* build: linking CoreFoundation framework for OSX (Thorsten Lorenz)

* child_process: accept uid/gid everywhere (Fedor Indutny)

* child_process: add path to spawn ENOENT Error (Ryan Cole)

* child_process: copy spawnSync() cwd option to proper buffer (cjihrig)

* child_process: do not access stderr when stdio set to 'ignore' (cjihrig)

* child_process: don't throw on EAGAIN (Charles)

* child_process: don't throw on EMFILE/ENFILE (Ben Noordhuis)

* child_process: use full path for cmd.exe on Win32 (Ed Morley)

* cluster: allow multiple calls to setupMaster() (Ryan Graham)

* cluster: centralize removal from workers list. (Julien Gilli)

* cluster: enable error/message events using .worker (cjihrig)

* cluster: include settings object in 'setup' event (Ryan Graham)

* cluster: restore v0.10.x setupMaster() behaviour (Ryan Graham)

* cluster: support options in Worker constructor (cjihrig)

* cluster: test events emit on cluster.worker (Sam Roberts)

* console: console.dir() accepts options object (Xavi Magrinyà)

* crypto: add `honorCipherOrder` argument (Fedor Indutny)

* crypto: allow padding in RSA methods (Fedor Indutny)

* crypto: clarify RandomBytes() error msg (Mickael van der Beek)

* crypto: never store pointer to conn in SSL_CTX (Fedor Indutny)

* crypto: unsigned value can't be negative (Brian White)

* dgram: remove new keyword from errnoException (Jackson Tian)

* dns: always set variable family in lookup() (cjihrig)

* dns: include host name in error message if available (Maciej Małecki)

* dns: introduce lookupService function (Saúl Ibarra Corretgé)

* dns: send lookup c-ares errors to callback (Chris Dickinson)

* dns: throw if hostname is not string or falsey (cjihrig)

* events: Output the event that is leaking (Arnout Kazemier)

* fs: close file if fstat() fails in readFile() (cjihrig)

* fs: fs.readFile should not throw uncaughtException (Jackson Tian)

* http: add 308 status_code, see RFC7238 (Yazhong Liu)

* http: don't default OPTIONS to chunked encoding (Nick Muerdter)

* http: fix bailout for writeHead (Alex Kocharin)

* http: remove unused code block (Fedor Indutny)

* http: write() after end() emits an error. (Julien Gilli)

* lib, src: add vm.runInDebugContext() (Ben Noordhuis)

* lib: noisy deprecation of child_process customFds (Ryan Graham)

* module: don't require fs several times (Robert Kowalski)

* net,dgram: workers can listen on exclusive ports (cjihrig)

* net,stream: add isPaused, don't read() when paused (Chris Dickinson)

* net: Ensure consistent binding to IPV6 if address is absent (Raymond Feng)

* net: add remoteFamily for socket (Jackson Tian)

* net: don't emit listening if handle is closed (Eli Skeggs)

* net: don't prefer IPv4 addresses during resolution (cjihrig)

* net: don't throw on net.Server.close() (cjihrig)

* net: reset `errorEmitted` on reconnect (Ed Umansky)

* node: set names for prototype methods (Trevor Norris)

* node: support v8 microtask queue (Vladimir Kurchatkin)

* path: fix slice OOB in trim (Lucio M. Tato)

* path: isAbsolute() should always return boolean (Herman Lee)

* process: throw TypeError if kill pid not a number (Sam Roberts)

* querystring: custom encode and decode (fengmk2)

* querystring: do not add sep for empty array (cjihrig)

* querystring: remove prepended ? from query field (Ezequiel Rabinovich)

* readline: fix close event of readline.Interface() (Yazhong Liu)

* readline: fixes scoping bug (Dan Kaplun)

* readline: implements keypress buffering (Dan Kaplun)

* repl: fix multi-line input (Fedor Indutny)

* repl: fix overwrite for this._prompt (Yazhong Liu)

* repl: proper `setPrompt()` and `multiline` support (Fedor Indutny)

* stream: don't try to finish if buffer is not empty (Vladimir Kurchatkin)

* stream: only end reading on null, not undefined (Jonathan Reem)

* streams: set default hwm properly for Duplex (Andrew Oppenlander)

* string_bytes: ucs2 support big endian (Andrew Low)

* tls, crypto: add DHE support (Shigeki Ohtsu)

* tls: `checkServerIdentity` option (Trevor Livingston)

* tls: add DHE-RSA-AES128-SHA256 to the def ciphers (Shigeki Ohtsu)

* tls: better error reporting at cert validation (Fedor Indutny)

* tls: support multiple keys/certs (Fedor Indutny)

* tls: throw an error, not string (Jackson Tian)

* udp: make it possible to receive empty udp packets (Andrius Bentkus)

* url: treat \ the same as / (isaacs)


2014.05.01, Version 0.11.13 (Unstable), 99c9930ad626e2796af23def7cac19b65c608d18

* v8: upgrade to 3.24.35.22
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ CPPLINT_EXCLUDE += src/queue.h
CPPLINT_EXCLUDE += src/tree.h
CPPLINT_EXCLUDE += src/v8abbr.h

CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard src/*.cc src/*.h src/*.c))
CPPLINT_FILES = $(filter-out $(CPPLINT_EXCLUDE), $(wildcard src/*.cc src/*.h src/*.c tools/icu/*.h tools/icu/*.cc))

cpplint:
@$(PYTHON) tools/cpplint.py $(CPPLINT_FILES)
Expand Down
46 changes: 33 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,6 @@ make
make install
```

With libicu i18n support:

```sh
svn checkout --force --revision 214189 \
http://src.chromium.org/svn/trunk/deps/third_party/icu46 \
deps/v8/third_party/icu46
./configure --with-icu-path=deps/v8/third_party/icu46/icu.gyp
make
make install
```

If your python binary is in a non-standard location or has a
non-standard name, run the following instead:

Expand All @@ -47,11 +36,13 @@ Prerequisites (Windows only):

Windows:

vcbuild nosign
```sh
vcbuild nosign
```

You can download pre-built binaries for various operating systems from
[http://nodejs.org/download/](http://nodejs.org/download/). The Windows
and OS X installers will prompt you for the location to install to.
and OS X installers will prompt you for the location in which to install.
The tarballs are self-contained; you can extract them to a local directory
with:

Expand Down Expand Up @@ -92,6 +83,35 @@ make doc
man doc/node.1
```

### To build `Intl` (ECMA-402) support:

*Note:* more docs, including how to reduce disk footprint, are on
[the wiki](https://github.com/joyent/node/wiki/Intl).

#### Use existing installed ICU (Unix/Macintosh only):

```sh
pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu
```

#### Build ICU from source:

First: Unpack latest ICU
[icu4c-**##.#**-src.tgz](http://icu-project.org/download) (or `.zip`)
as `deps/icu` (You'll have: `deps/icu/source/...`)

Unix/Macintosh:

```sh
./configure --with-intl=full-icu
```

Windows:

```sh
vcbuild full-icu
```

Resources for Newcomers
---
- [The Wiki](https://github.com/joyent/node/wiki)
Expand Down
72 changes: 72 additions & 0 deletions benchmark/misc/module-loader.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.


var fs = require('fs');
var path = require('path');
var common = require('../common.js');
var packageJson = '{"main": "index.js"}';

var tmpDirectory = path.join(__dirname, '..', 'tmp');
var benchmarkDirectory = path.join(tmpDirectory, 'nodejs-benchmark-module');

var bench = common.createBenchmark(main, {
thousands: [50]
});

function main(conf) {
rmrf(tmpDirectory);
try { fs.mkdirSync(tmpDirectory); } catch (e) {}
try { fs.mkdirSync(benchmarkDirectory); } catch (e) {}

var n = +conf.thousands * 1e3;
for (var i = 0; i <= n; i++) {
fs.mkdirSync(benchmarkDirectory + i);
fs.writeFileSync(benchmarkDirectory + i + '/package.json', '{"main": "index.js"}');
fs.writeFileSync(benchmarkDirectory + i + '/index.js', 'module.exports = "";');
}

measure(n);
}

function measure(n) {
bench.start();
for (var i = 0; i <= n; i++) {
require(benchmarkDirectory + i);
}
bench.end(n / 1e3);
}

function rmrf(location) {
if (fs.existsSync(location)) {
var things = fs.readdirSync(location);
things.forEach(function(thing) {
var cur = path.join(location, thing),
isDirectory = fs.statSync(cur).isDirectory();
if (isDirectory) {
rmrf(cur);
return;
}
fs.unlinkSync(cur);
});
fs.rmdirSync(location);
}
}
Loading