diff xml/en/docs/njs/changes.xml @ 2246:32ba43abf9cd

Renamed njs API, njs Changes.
author Yaroslav Zhuravlev <yar@nginx.com>
date Mon, 24 Sep 2018 19:24:04 +0300
parents xml/en/docs/njs/njs_changes.xml@5268c13196f2
children a314f4aeb199
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/en/docs/njs/changes.xml	Mon Sep 24 19:24:04 2018 +0300
@@ -0,0 +1,1209 @@
+<?xml version="1.0"?>
+
+<!--
+  Copyright (C) Nginx, Inc.
+  -->
+
+<!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
+
+<article name="Changes"
+        link="/en/docs/njs/changes.html"
+        lang="en"
+        rev="8"
+        toc="no">
+
+<section id="njs0.2.4" name="Changes with 0.2.4">
+
+<para>
+Release Date:
+18 September 2018
+</para>
+
+<para>
+nginx modules:
+<list type="bullet">
+
+<listitem>
+<para>
+Change:
+stream module handlers refactored.
+</para>
+
+<para>
+New methods and properties:
+<link doc="njs_api.xml" id="s_on">s.on()</link>,
+<link doc="njs_api.xml" id="s_off">s.off()</link>,
+<link doc="njs_api.xml" id="s_allow">s.allow()</link>,
+<link doc="njs_api.xml" id="s_done">s.done()</link>,
+<link doc="njs_api.xml" id="s_decline">s.decline()</link>,
+<link doc="njs_api.xml" id="s_deny">s.deny()</link>.
+</para>
+
+<para>
+Removed properties of the
+<link doc="njs_api.xml" id="stream">Stream</link> object:
+<literal>s.OK</literal>,
+<literal>s.ABORT</literal>,
+<literal>s.AGAIN</literal>,
+<literal>s.DECLINED</literal>,
+<literal>s.ERROR</literal>
+(replaced with
+<link doc="njs_api.xml" id="s_allow">s.allow()</link>,
+<link doc="njs_api.xml" id="s_done">s.done()</link>,
+<link doc="njs_api.xml" id="s_deny">s.deny()</link>).
+</para>
+
+<para>
+<literal>s.buffer</literal>
+(for reading replaced with data argument of
+the corresponding callback, for writing use
+<link doc="njs_api.xml" id="s_send">s.send()</link>).
+</para>
+
+<para>
+<literal>s.fromUpstream</literal>
+(replaced with a callback for a corresponding event).
+</para>
+
+<para>
+<literal>s.eof</literal>
+(replaced with <literal></literal>
+<link doc="njs_api.xml" id="s_on_callback_last">flags.last</link>).
+</para>
+
+</listitem>
+
+</list>
+</para>
+
+<para>
+Core:
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+added <literal>Function.prototype.length</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+introduced sandboxing mode.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+added exception strings where appropriate.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+improved wording for primitive type conversion exception.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+throwing <literal>TypeError</literal>
+for attempts to change frozen properties.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>Object.defineProperty()</literal> for existing properties.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+respecting the enumerable attribute while iterating by for in.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+respecting writable attribute for property handlers.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed exception handling in arguments of a function.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>Object.prototype.toString</literal> for different value types.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>Object()</literal> constructor for object types arguments.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed comparison of objects and strings.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>String.slice()</literal> for undefined arguments.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous additional bugs have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.2.3" name="Changes with 0.2.3">
+
+<para>
+Release Date:
+31 July 2018
+</para>
+
+<para>
+nginx modules:
+<list type="bullet">
+
+<listitem>
+<para>
+Bugfix:
+making a subrequest from a <literal>Reply</literal> object caused
+a segmentation fault.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+getting the parent property of the main
+<link doc="njs_api.xml" id="http">HTTP Request</link>
+object caused a segmentation fault.
+</para>
+</listitem>
+
+</list>
+</para>
+
+<para>
+Core:
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+added the pretty string representation for values.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+correctly printing floating point numbers.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+correctly parsing floating point numbers.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<link doc="njs_api.xml" id="string_bytesfrom">String.bytesFrom()</link> method
+(decoding <literal>hex</literal>,
+<literal>base64</literal>,
+<literal>base64url</literal> into a byte string).
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<link doc="njs_api.xml" id="string_padstart">String.padStart()</link> and
+<link doc="njs_api.xml" id="string_padend">String.padEnd()</link> methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+added support of binary literals.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+added information about illegal token in number parsing.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+allowed uppercased <literal>O</literal> in octal literal values.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+added support for multiple arguments in <literal>console.log()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed applying <literal>call()</literal> to methods of external values.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed addition operator applied to an object.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed exception handling in <literal>njs_vm_value_to_ext_string()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>Number()</literal> with boolean, null and undefined arguments.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed error handling of setting non-numeric <literal>Array.length</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed autocompletion for global objects.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous additional bugs have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.2.2" name="Changes with 0.2.2">
+
+<para>
+Release Date:
+19 June 2018
+</para>
+
+<para>
+nginx modules:
+<list type="bullet">
+
+<listitem>
+<para>
+Change:
+merged HTTP <literal>Response</literal> and <literal>Reply</literal>
+into <link doc="njs_api.xml" id="http">HTTP Request</link>.
+New members of <literal>Request</literal>:
+
+<list type="bullet">
+
+<listitem>
+<para>
+<literal>req.status</literal> (<literal>res.status</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.parent</literal> (<literal>reply.parent</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.requestBody</literal> (<literal>req.body</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.responseBody</literal> (<literal>reply.body</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.headersIn</literal> (<literal>req.headers</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.headersOut</literal> (<literal>res.headers</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.sendHeader()</literal> (<literal>res.sendHeader()</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.send()</literal> (<literal>res.send()</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.finish()</literal> (<literal>res.finish()</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.return()</literal> (<literal>res.return()</literal>)
+</para>
+</listitem>
+
+</list>
+Deprecated members of <literal>Request</literal>:
+
+<list type="bullet">
+
+<listitem>
+<para>
+<literal>req.body</literal> (use <literal>req.requestBody</literal>
+or <literal>req.responseBody</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.headers</literal> (use <literal>req.headersIn</literal>
+or <literal>req.headersOut</literal>)
+</para>
+</listitem>
+
+<listitem>
+<para>
+<literal>req.response</literal>
+</para>
+</listitem>
+
+</list>
+The deprecated properties will be removed in next releases.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+HTTP <link doc="njs_api.xml" id="r_internal_redirect">internalRedirect()</link>
+method.
+</para>
+</listitem>
+
+</list>
+</para>
+
+<para>
+Core:
+<list type="bullet">
+
+<listitem>
+<para>
+Bugfix:
+fixed heap-buffer-overflow in <literal>crypto.createHmac()</literal>.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.2.1" name="Changes with 0.2.1">
+
+<para>
+Release Date:
+31 May 2018
+</para>
+
+<para>
+nginx modules:
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+HTTP request body getter.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+moved njs vm to the <literal>main</literal> configuration.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+improved logging for
+<link doc="../http/ngx_http_js_module.xml" id="js_set"/> and
+<link doc="../http/ngx_http_js_module.xml" id="js_content"/> directives.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+setting status code to 500 by default in the
+<link doc="../http/ngx_http_js_module.xml" id="js_content"/> handler
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+added the debug for the returned status code in
+<link doc="../http/ngx_http_js_module.xml" id="js_content"/> handler
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix: fixed error logging in
+<link doc="../http/ngx_http_js_module.xml" id="js_include"/>.
+</para>
+</listitem>
+
+</list>
+</para>
+
+<para>
+Core:
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+added array length setter.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Improvement:
+public header <literal>cleanup. njscript.h</literal> is renamed to
+<literal>njs.h</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed crypto <literal>update()</literal> method after 
+<literal>digest()</literal> is called.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>crypto.createHmac()</literal> for keys with size &lt;= alg size
+and &gt; 64.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>JSON.stringify()</literal> for arrays with empty cells.
+</para>
+</listitem>
+
+<listitem>
+<para>
+ Bugfix:
+fixed exception type for unsupported types in
+<literal>JSON.stringify()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed handling of undefined arguments of functions.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed handling of missing <literal>arg</literal> of
+<literal>Object.getOwnPropertyDescriptor()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed handling of properties in
+<literal>Object.getOwnPropertyDescriptor()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed the writeable flag of <literal>Array.length</literal> property.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix: fixed return value type of <literal>clearTimeout()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+fixed <literal>njs_vm_external_bind()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous additional bugs have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.2.0" name="Changes with 0.2.0">
+
+<para>
+Release Date:
+3 Apr 2018
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+reporting njs version by CLI.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+textual description for type converting exceptions.
+</para>
+</listitem>
+
+<listitem>
+Feature:
+<literal>setTimeout()</literal> and
+<literal>clearTimeout()</literal> methods.
+</listitem>
+
+<listitem>
+<para>
+Feature:
+Byte string to
+<literal>hex</literal>,
+<literal>base64</literal>,
+<literal>base64url</literal> encodings.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<link url="https://nodejs.org/api/crypto.html#crypto_class_hash">Node.js style</link>
+<literal>Crypto</literal> methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+HTTP and stream
+<literal>warn()</literal> and
+<literal>error()</literal> methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+HTTP <literal>subrequest()</literal> method.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+HTTP <literal>return()</literal> method.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs have been fixed in the core and
+interactive shell.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+<section id="njs0.1.15" name="Changes with 0.1.15">
+
+<para>
+Release Date:
+20 Nov 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+<literal>Error</literal>,
+<literal>EvalError</literal>,
+<literal>InternalError</literal>,
+<literal>RangeError</literal>,
+<literal>ReferenceError</literal>,
+<literal>SyntaxError</literal>,
+<literal>TypeError</literal>,
+<literal>URIError</literal> objects.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+octal literals support.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<link url="https://nodejs.org/api/fs.html#fs_file_system">Node.js style</link>
+<literal>File system</literal> access methods:
+<literal>fs.readFile()</literal>,
+<literal>fs.readFileSync()</literal>,
+<literal>fs.appendFile()</literal>,
+<literal>fs.appendFileSync()</literal>,
+<literal>fs.writeFile()</literal>,
+<literal>fs.writeFileSync()</literal>.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+nginx modules print backtrace on exception.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.14" name="Changes with 0.1.14">
+
+<para>
+Release Date:
+09 Oct 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+JSON object.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+object level completions in interactive shell.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+various configure improvements.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs have been fixed in the core and
+interactive shell.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.13" name="Changes with 0.1.13">
+
+<para>
+Release Date:
+31 Aug 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+<literal>console.log()</literal> and
+<literal>console.help()</literal>
+methods in interactive shell.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+interactive shell prints backtrace on exception.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+interactive shell by default
+if <literal>libedit</literal> is available.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+processing of large files from
+<literal>stdin</literal> in command line mode.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+improved <literal>editline</literal> detection.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.12" name="Changes with 0.1.12">
+
+<para>
+Release Date:
+08 Aug 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+Interactive shell.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+in <literal>Object.isSealed()</literal>.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.11" name="Changes with 0.1.11">
+
+<para>
+Release Date:
+27 Jun 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+<literal>Object.keys()</literal>,
+<literal>Object.prototype.hasOwnProperty()</literal>
+methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<literal>Object.defineProperty()</literal>,
+<literal>Object.defineProperties()</literal>,
+<literal>Object.getOwnPropertyDescriptor()</literal>
+methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<literal>Object.getPrototypeOf()</literal>,
+<literal>Object.prototype.isPrototypeOf()</literal>
+methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<literal>Object.preventExtensions()</literal>,
+<literal>Object.isExtensible()</literal>,
+<literal>Object.freeze()</literal>,
+<literal>Object.isFrozen()</literal>,
+<literal>Object.seal()</literal>,
+<literal>Object.isSealed()</literal>
+methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+scientific notation (<literal>3.35e10</literal>) literals support.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+hexadecimal (<literal>0x1123</literal>) literals support.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+processing of large array indexes.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+in <literal>parseInt()</literal> and
+<literal>Date.parse()</literal>.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.10" name="Changes with 0.1.10">
+
+<para>
+Release Date:
+04 Apr 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Feature:
+nested functions and function closures.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+<literal>Array.of()</literal>,
+<literal>Array.prototype.fill()</literal>,
+<literal>Array.prototype.find()</literal>,
+<literal>Array.prototype.findIndex()</literal>
+methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs and segmentation faults have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.9" name="Changes with 0.1.9">
+
+<para>
+Release Date:
+01 Feb 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Bugfix:
+global variables were not initialized when njs was used
+in nginx.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.8" name="Changes with 0.1.8">
+
+<para>
+Release Date:
+24 Jan 2017
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Change:
+the <literal>strict</literal> mode is enforced,
+variables must be explicitly declared.
+</para>
+</listitem>
+
+
+<listitem>
+<para>
+Feature:
+<literal>for</literal> and
+<literal>for-in</literal> loops support variable declaration.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+global and function scopes have been fixed.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+now <literal>for-in</literal> loop does not discard the last value
+of property variable.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs and segmentation faults have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.7" name="Changes with 0.1.7">
+
+<para>
+Release Date:
+27 Dec 2016
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Change:
+the <link doc="../http/ngx_http_js_module.xml" id="js_include"/> directive
+has been disabled at server and location levels.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+exponentiation operators.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs and segmentation faults have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+
+<section id="njs0.1.6" name="Changes with 0.1.6">
+
+<para>
+Release Date:
+13 Dec 2016
+</para>
+
+<para>
+<list type="bullet">
+
+<listitem>
+<para>
+Change:
+the <link doc="../http/ngx_http_js_module.xml" id="js_set"/> directive
+has been disabled at server and location levels.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Feature:
+ES6 <literal>Math</literal> methods.
+</para>
+</listitem>
+
+<listitem>
+<para>
+Bugfix:
+miscellaneous bugs and segmentation faults have been fixed.
+</para>
+</listitem>
+
+</list>
+</para>
+
+</section>
+
+</article>