* uv: Upgrade to v0.11.5 * c-ares: upgrade to 1.10.0 * v8: upgrade to v3.19.13 * punycode: update to v1.2.3 (Mathias Bynens) * debugger: break on uncaught exception (Miroslav Bajtos) * child_process: emit 'disconnect' asynchronously (Ben Noordhuis) * dtrace: enable uv's probes if enabled (Timothy J Fontaine) * dtrace: unify dtrace and systemtap interfaces (Timothy J Fontaine) * buffer: New API for backing data store (Trevor Norris) * buffer: return `this` in fill() for chainability (Brian White) * build: fix include order for building on windows (Timothy J Fontaine) * build: add android support (Linus Mårtensson) * readline: strip ctrl chars for prompt width calc (Krzysztof Chrapka) * tls: introduce TLSSocket based on tls_wrap binding (Fedor Indutny) * tls: add localAddress and localPort properties (Ben Noordhuis) * crypto: free excessive memory in NodeBIO (Fedor Indutny) * process: remove maxTickDepth (Trevor Norris) * timers: use uv_now instead of Date.now (Timothy J Fontaine) * util: Add debuglog, deprecate console lookalikes (isaacs) * module: use path.sep instead of a custom solution (Robert Kowalski) * http: don't escape request path, reject bad chars (Ben Noordhuis) * net: emit dns 'lookup' event before connect (Ben Noordhuis) * dns: add getServers and setServers (Timothy J Fontaine)
Most TryCatch blocks have SetVerbose flag on, this tells V8 to report uncaught exceptions to debugger. FatalException handler is called from V8 Message listener instead from the place where TryCatch was used. Otherwise uncaught exceptions are logged twice. See comment in `deps/v8/include/v8.h` for explanation of SetVerbose flag: > By default, exceptions that are caught by an external exception > handler are not reported. Call SetVerbose with true on an > external exception handler to have exceptions caught by the > handler reported as if they were not caught. The flag is used by `Isolate::ShouldReportException()`, which is called by `Isolate::DoThrow()` to decide whether an exception is considered uncaught.
Conflicts: ChangeLog deps/uv/ChangeLog deps/uv/src/unix/stream.c deps/uv/src/version.c deps/v8/build/common.gypi deps/v8/src/frames.h deps/v8/src/runtime.cc deps/v8/test/mjsunit/debug-set-variable-value.js lib/http.js src/node_version.h
One said "if available", the other "if possible". Now they both say "if possible."
gcc 4.2 on OS X gets confused about the call to node::Buffer::Data(). Fully qualify the function name to help it along. Fixes the following build error: ../../deps/v8/include/v8.h: In function ‘char* node::Buffer::Data(v8::Handle<v8::Value>)’: ../../deps/v8/include/v8.h:900: error: ‘class v8::Data’ is not a function, ../../src/node_buffer.h:38: error: conflict with ‘char* node::Buffer::Data(v8::Handle<v8::Object>)’ ../../src/node_buffer.cc:94: error: in call to ‘Data’
Buffer(<String>) used to pass the string to js where it would then be passed back to cpp for processing. Now only the buffer object instantiation is done in js and the string is processed in cpp. Also added a Buffer api that also accepts the encoding.
Old fill would take the char code of the first character and wrap around the int to fit in the 127 range. Now fill will duplicate whatever string is given through the entirety of the buffer. Note: There is one bug around ending on a partial fill of any character outside the ASCII range.
While the new Buffer implementation is much faster we still have the necessity of using Buffer pools. This is undesirable because it may still lead to unwanted memory retention, but for the time being this is the best solution. Because of this re-introduction, and since there is no more SlowBuffer type, the SlowBuffer method has been re-purposed to return a non-pooled Buffer instance. This will be helpful for developers to store data for indeterminate lengths of time without introducing a memory leak. Another change to Buffer pools was that they are only allocated if the requested chunk is < poolSize / 2. This was done because allocations are much quicker now, and it's a better use of the pool.
Memory allocations are now done through smalloc. The Buffer cc class has been removed completely, but for backwards compatibility have left the namespace as Buffer. The .parent attribute is only set if the Buffer is a slice of an allocation. Which is then set to the alloc object (not a Buffer). The .offset attribute is now a ReadOnly set to 0, for backwards compatibility. I'd like to remove it in the future (pre v1.0). A few alterations have been made to how arguments are either coerced or thrown. All primitives will now be coerced to their respective values, and (most) all out of range index requests will throw. The indexes that are coerced were left for backwards compatibility. For example: Buffer slice operates more like Array slice, and coerces instead of throwing out of range indexes. This may change in the future. The reason for wanting to throw for out of range indexes is because giving js access to raw memory has high potential risk. To mitigate that it's easier to make sure the developer is always quickly alerted to the fact that their code is attempting to access beyond memory bounds. Because SlowBuffer will be deprecated, and simply returns a new Buffer instance, all tests on SlowBuffer have been removed. Heapdumps will now show usage under "smalloc" instead of "Buffer". ParseArrayIndex was added to node_internals to support proper uint argument checking/coercion for external array data indexes. SlabAllocator had to be updated since handle_ no longer exists.
If the user knows the allocation is no longer needed then the memory can be manually released. Currently this will not ClearWeak the Persistent, so the callback will still run. If the user passed a ClearWeak callback, and then disposed the object, the buffer callback argument will == NULL.
smalloc is a simple utility for quickly allocating external memory onto js objects. This will be used to centralize how memory is managed in node, and will become the backer for Buffers. So in the future crypto's SlabBuffer, stream's SlabAllocator will be removed. Note on the js API: because no arguments are optional the order of arguments have been placed to match their cc counterparts as closely as possible.
The console module has always been called 'stdio' in the table-of-contents, but nowhere else, since its name is 'console'. This makes it difficult to find. This is a back-port of commit 226a20d from the master branch.
* npm: Upgrade to 1.2.32 * readline: make `ctrl + L` clear the screen (Yuan Chuan) * v8: add setVariableValue debugger command (Ben Noordhuis) * net: Do not destroy socket mid-write (isaacs) * v8: fix build for mips32r2 architecture (Andrei Sedoi) * configure: fix cross-compilation host_arch_cc() (Andrei Sedoi)
Resolves minor discrepancies between android and standard POSIX systems. In addition, some configure parameters were added, and a helper-script for android configuration. Ideally, this script should be merged into the standard configure script. To build for android, source the android-configure script with an NDK path: source ./android-configure ~/android-ndk-r8d This will create an android standalone toolchain and export the necessary environment parameters. After that, build as normal: make -j8 After the build, you should now have android-compatible NodeJS binaries.