更改
njs 0.8.10 的更改
发布日期:2025 年 4 月 8 日
nginx 模块
-
新增功能:从临时文件读取
r.requestText
或r.requestBuffer
。之前,如果客户端请求正文的大小超过client_body_buffer_size
,访问r.requestText
或r.requestBuffer
时会抛出异常。 -
改进:改进了对未处理的 Promise 拒绝的报告。
-
Bug 修复:修复了变量和头部处理中的名称损坏问题。
-
Bug 修复:在 Fetch API 中接受包含下划线字符的响应头部。
核心
-
变更:修复了
serializeToString()
。之前,serializeToString()
是exclusiveC14n()
,返回的是字符串而不是 Buffer。根据发布的文档,它应该是c14n()
。 -
新增功能:为 QuickJS 引擎添加了
TextEncoder
和TextDecoder
。 -
新增功能:为 QuickJS 引擎添加了
querystring
模块。 -
新增功能:添加了对
QuickJS-NG
库的支持。 -
Bug 修复:修复了在 QuickJS 中,带单个参数的
Buffer.concat()
。 -
Bug 修复:补全了在模板字面量中对
await
缺失的语法错误处理。 -
Bug 修复:修复了在 QuickJS 引擎中,异常中非 NULL 终止字符串的格式化问题。
-
Bug 修复:修复了与 QuickJS 和
QuickJS-NG
近期变更的兼容性问题。
njs 0.8.9 的更改
发布日期:2025 年 1 月 14 日
nginx 模块
-
Bug 修复:移除了每个服务器额外的 VM 创建。之前,当在 http 或 stream 块中声明
js_import
时,会为每个 server 块创建一个 VM 实例的额外副本。这是不必要的,并且在包含许多 server 块的配置中消耗大量内存。此问题是在 0.8.6 中引入的,并且仅在 0.8.7 中针对 location 块进行了部分修复。
核心
njs 0.8.8 的更改
发布日期:2024 年 12 月 10 日
nginx 模块
-
改进:js_preload_object 进行了重构。
-
Bug 修复:修复了限制速率输出。
-
Bug 修复:优化了针对 js_fetch_trusted_certificate 指令的 SSL 上下文的使用。
核心
-
新增功能:为 QuickJS 引擎实现了 process 对象。
-
新增功能:实现了 process.kill() 方法。
-
Bug 修复:修复了在 libxml2 2.13 及更高版本中的 XML 测试问题。
-
Bug 修复:修复了继承 Promise 时 Promise 解析问题。
-
Bug 修复:修复了克隆 VM 中的绝对作用域问题。
njs 0.8.7 的更改
发布日期:2024 年 10 月 22 日
nginx 模块
-
Bug 修复:消除了不必要的 VM 创建。之前,njs 占用的内存与 nginx location 的数量成正比。此问题是在 0.8.6 中引入的。
-
改进:为 js_body_filter 添加了严格的语法验证。
-
改进:改进了模块加载失败时的错误消息。
核心
-
新增功能:实现了
fs.readlinkSync()
。 -
改进:实现了延迟栈符号化。
-
Bug 修复:修复了
Buffer.prototype.indexOf()
中的堆缓冲区溢出问题。此问题是在 0.8.6 中引入的。 -
Bug 修复:修复了提供 `from` 参数时
Buffer.prototype.lastIndexOf()
的问题。
njs 0.8.6 的更改
发布日期:2024 年 10 月 2 日
nginx 模块
-
新增功能:引入了 QuickJS 引擎。
-
新增功能:为 http 和 stream 中的
js_set
指令添加了可选的nocache
标志。感谢 Thomas P。 -
新增功能:在 HTTP 模块中暴露了 捕获组变量。感谢 Thomas P。
核心
-
新增功能:为 QuickJS 引擎添加了
Buffer
模块。 -
Bug 修复:修复了函数中空标签语句的处理问题。
-
Bug 修复:修复了调用
Function
构造函数时不带参数的处理问题。 -
Bug 修复:修复了
Buffer.prototype.writeInt8()
及相关方法。 -
Bug 修复:修复了
Buffer.prototype.writeFloat()
及相关方法。 -
Bug 修复:修复了
Buffer.prototype.lastIndexOf()
。 -
Bug 修复:修复了
Buffer.prototype.write()
。 -
Bug 修复:修复了错误创建时可能的未初始化警告。
-
Bug 修复:修复了 UTF-8 解码中
ctx.codepoint
的初始化问题。 -
Bug 修复:修复了
Array.prototype.pop()
中length
的初始化问题。 -
Bug 修复:修复了
fs.readdir()
和fs.realpath()
中encode
参数的处理问题。
njs 0.8.5 的更改
发布日期:2024 年 6 月 25 日
nginx 模块
-
变更:UTF-8 编码中无效字节会被转换为替换字符,用于:
-
r.variables.var
、r.requestText
、r.responseText
、s.variables.var
, -
具有
upload
或download
事件类型的s.on()
回调的data
参数, -
js_body_filter
指令的data
参数。
处理二进制数据时,请使用:
-
r.rawVariables.var
、r.requestBuffer
、r.responseBuffer
、s.rawVariables.var
, -
针对
s.on()
的upstream
或downstream
事件类型, -
针对
js_body_filter
的buffer_type
=buffer
。
-
-
Bug 修复:修复了检查重复的
js_set
变量的问题。 -
Bug 修复:修复了当端口非标准时请求
Host
头部的问题。 -
Bug 修复:修复了
ngx.fetch()
和r.subrequest()
中零长度请求正文的处理问题。 -
Bug 修复:修复了
Headers.get()
中的堆缓冲区溢出问题。 -
Bug 修复:修复了
r.subrequest()
的错误处理问题。
核心
-
新增功能:为
QuickJS
引擎添加了zlib
模块。 -
Bug 修复:修复了
zlib.inflate()
。 -
Bug 修复:修复了带零长度参数的
String.prototype.replaceAll()
。 -
Bug 修复:修复了在
Array.prototype.toSpliced()
、Array.prototype.toReversed()
、Array.prototype.toSorted()
中异常后retval
的处理问题。 -
Bug 修复:修复了
RegExp.prototype[@@replace]()
在替换内容包含$'
、$`
以及字符串包含 Unicode 字符时的问题。 -
Bug 修复:修复了
decodeURI()
和decodeURIComponent()
中一个字节的越读问题。 -
Bug 修复:修复了参数作用域的跟踪问题。
-
Bug 修复:修复了
Date.parse()
中的整数溢出问题。
njs 0.8.4 的更改
发布日期:2024 年 4 月 16 日
nginx 模块
-
新增功能:可以设置传出头部的
Server
头部。 -
改进:验证
r.subrequest()
中的 URI 和 args 参数。 -
改进:检查重复的 js_set 变量。
-
Bug 修复:修复了共享字典的
r.send()
方法在不带超时参数且带Buffer
参数的情况下。
核心
-
新增功能:在 CLI 中添加了
QuickJS
引擎支持。 -
Bug 修复:修复了使用未填充的
base64
字符串时atob()
的问题。
njs 0.8.3 的更改
发布日期:2024 年 2 月 7 日
nginx 模块
-
Bug 修复:修复了
Headers.set()
。 -
Bug 修复:修复了使用
Buffer
值时的 js_set 问题。 -
Bug 修复:修复了未指定超时参数时共享字典的
clear()
方法。 -
Bug 修复:修复了启用 js_periodic 时 stub_status 统计信息的问题。
核心
-
Bug 修复:修复了使用 libxml2 2.12 及更高版本构建时的问题。
-
Bug 修复:修复了
Date
构造函数处理溢出和NaN
值的问题。 -
Bug 修复:修复了
querystring.parse()
中的下溢问题。 -
Bug 修复:修复了
String.prototype.match()
中潜在的缓冲区越读问题。 -
Bug 修复:修复了
for-in
循环的解析问题。 -
Bug 修复:修复了不带数字的十六进制、八进制和二进制字面量的解析问题。
njs 0.8.2 的更改
发布日期:2023 年 10 月 24 日
nginx 模块
-
新增功能:引入了 console 对象。引入了以下方法:
error()
、info()
、log()
、time()
、timeEnd()
、warn()
。 -
Bug 修复:修复了在 Fetch API 中使用大 Content-Length 处理
HEAD
响应的问题。 -
Bug 修复:修复了共享字典的
items()
方法。 -
Bug 修复:修复了共享字典的
delete()
方法。
核心
-
新增功能:扩展了
fs
模块。添加了fs.existsSync()
。 -
Bug 修复:修复了
xml
模块。修复了xml.parse()
方法中损坏的 XML 异常处理问题。 -
Bug 修复:修复了全局正则表达式和 Unicode 输入时
Regexp.prototype.exec()
的问题。
njs 0.8.1 的更改
发布日期:2023 年 9 月 12 日
nginx 模块
-
新增功能:引入了适用于 http 和 stream 的
js_periodic
指令,允许指定一个 JS 处理程序以固定间隔运行。 -
Bug 修复:修复了在 0.8.0 中引入的、
r.internalRedirect()
中的错误异常问题。
核心
-
Bug 修复:修复了
Object.getOwnPropertyNames()
中键的顺序不正确问题。
njs 0.8.0 的更改
发布日期:2023 年 7 月 6 日
nginx 模块
-
变更:移除了自 0.5.0 起已弃用的、在
http
模块中的r.requestBody
和r.responseBody
。 -
变更:在
http
模块中进行过滤时,在r.internalRedirect()
中抛出异常。 -
新增功能:引入了更多全局
nginx
属性:ngx.build
、ngx.conf_file_path
、ngx.error_log_path
、ngx.prefix
、ngx.version
、ngx.version_number
和ngx.worker_id
。 -
新增功能:引入了适用于 http 和 stream 的
js_shared_dict_zone
指令,允许声明在工作进程之间共享的字典。 -
新增功能:引入了用于处理共享字典的全局
nginx.shared
方法和属性。 -
改进:添加了编译时选项以禁用 njs 模块。例如,禁用与 libxslt 相关的代码
NJS_LIBXSLT=NO ./configure .. --add-module=/path/to/njs/module
-
Bug 修复:修复了在
http
模块中设置 Location 头部的问题。
核心
-
变更:原生方法现在提供
retval
参数。此变更会破坏与 njs C 扩展的兼容性,需要修改代码。 -
变更:移除了不符合规范且已弃用的 String 方法。移除了以下方法:
String.bytesFrom()
、String.prototype.fromBytes()
、String.prototype.fromUTF8()
、String.prototype.toBytes()
、String.prototype.toUTF8()
、String.prototype.toString(
。encoding
) -
变更:移除了对使用 GNU readline 构建的支持。
-
新增功能:添加了符合 ES13 标准的
Array
方法:Array.from()
、Array.prototype.toSorted()
、Array.prototype.toSpliced()
、Array.prototype.toReversed()
。 -
新增功能:添加了符合 ES13 标准的
TypedArray
方法:%TypedArray%.prototype.toSorted()
、%TypedArray%.prototype.toSpliced()
、%TypedArray%.prototype.toReversed()
。 -
新增功能:在 WebCrypto API 中添加了
CryptoKey
属性。添加了以下属性:algorithm
、extractable
、type
、usages
。 -
Bug 修复:修复了
сrypto.getRandomValues()
的retval
问题。 -
Bug 修复:修复了包含函数表达式的计算属性名称的求值问题。
-
Bug 修复:修复了在数组中声明的函数表达式的隐式名称问题。
-
Bug 修复:修复了
for-in
循环的解析问题。 -
Bug 修复:修复了使用 ISO-8601 格式和 UTC 时区偏移时的
Date.parse()
问题。
njs 0.7.12 的更改
发布日期:2023 年 4 月 10 日
nginx 模块
-
Bug 修复:修复了 Fetch API 中的
Headers()
构造函数。
核心
-
新增功能:在 crypto 模块中添加了
Hash.copy()
方法。 -
新增功能:添加了 zlib 模块。
-
改进:添加了对
export {name as default}
语句的支持。 -
Bug 修复:修复了符合规范的
Number
构造函数。
njs 0.7.11 的更改
发布日期:2023 年 3 月 9 日
nginx 模块
核心
-
新增功能:添加了 XMLNode API 以修改 XML 文档。
-
变更:由于安全隐患,在解析 XML 文档时移除了
XML_PARSE_DTDVALID
。此问题是在 0.7.10 中引入的。启用XML_PARSE_DTDVALID
时,libxml2 会解析并执行 XML 文档中存在的外部实体。 -
Bug 修复:修复了参数中
await
的检测问题。 -
Bug 修复:修复了当 “
name
” 属性不是原始类型时Error()
实例的转储问题。 -
Bug 修复:修复了包含
getter
属性的数组实例的转储问题。 -
Bug 修复:修复了使用
NJS_WHITEOUT
属性时的njs_object_property()
问题。 -
Bug 修复:修复了当 “
name
” 作为 getter 时func
实例的转储问题。 -
Bug 修复:修复了将栈附加到错误对象的问题。
-
Bug 修复:修复了当替换内容包含 “
$'
”、“$`
” 时String.prototype.replace()
的问题。
njs 0.7.10 的更改
发布日期:2023 年 2 月 7 日
nginx 模块
核心
-
新增功能:在 CLI 中添加了信号支持。
-
新增功能:添加了用于处理 XML 文档的
xml
模块。 -
新增功能:扩展了 WebCrypto 中对对称和非对称密钥的支持。最值得注意的是,为
importKey()
添加了JWK
格式支持。 -
新增功能:扩展了 WebCrypto API 中对对称和非对称密钥的支持。最值得注意的是,为
importKey()
添加了JWK
格式支持。还实现了generateKey()
和exportKey()
。 -
新增功能:添加了
String.prototype.replaceAll()
。 -
Bug 修复:修复了
for(expr1;
条件语句的语法错误处理问题。 -
Bug 修复:修复了对外部对象使用
Object.values()
和Object.entries()
的问题。 -
Bug 修复:修复了
RegExp.prototype[@@replace]()
。
njs 0.7.9 的更改
发布日期:2022 年 11 月 17 日
nginx 模块
-
Bug 修复:修复了
Fetch
Response 原型重新初始化的问题。当在 HTTP 和 Stream 中都声明了至少一个js_import
指令时,ngx.fetch()
在 Stream 中返回了不恰当的响应。此 bug 是在 0.7.7 中引入的。
核心
-
Bug 修复:修复了如果
re.exec()
返回非扁平数组时String.prototype.replace(re)
的问题。 -
Bug 修复:修复了当
start
对象改变this
时Array.prototype.fill()
的问题。 -
Bug 修复:修复了
fs.mkdir()
和fs.rmdir()
方法的描述问题。 -
Bug 修复:修复了当
s
元素改变this
时%TypedArray%.prototype.set(s)
的问题。 -
Bug 修复:修复了当
d
在求值期间改变this
大小时Array.prototype.splice(s,d)
的问题。 -
Bug 修复:修复了包含左侧和右侧表达式的
for-in
循环的问题。
njs 0.7.8 的更改
发布日期:2022 年 10 月 25 日
nginx 模块
-
新增功能:添加了 js_preload_object 指令。
-
新增功能:添加了
ngx.conf_prefix
属性。 -
新增功能:在 stream 模块中添加了
s.sendUpstream()
和s.sendDownstream()
。 -
新增功能:在 Fetch API 中添加了对
HEAD
方法的支持。
核心
-
新增功能:为函数对象添加了
name
实例属性。 -
新增功能:添加了
njs.memoryStats
对象。 -
Bug 修复:修复了使用 unicode 字符串时
String.prototype.trimEnd()
的问题。 -
Bug 修复:修复了对快速数组使用
Object.freeze()
的问题。 -
Bug 修复:修复了对快速数组使用
Object.defineProperty()
的问题。 -
Bug 修复:修复了将
async
token 作为对象属性名称的问题。 -
Bug 修复:修复了当键修改基本绑定时属性设置指令的问题。
-
Bug 修复:修复了复杂赋值。
-
Bug 修复:修复了未处理的 promise 拒绝的处理问题。
-
Bug 修复:修复了存在重复环境变量时 process.env 的问题。
-
Bug 修复:修复了模块中重复声明的检测问题。
-
Bug 修复:修复了符合规范的绑定函数调用。
-
Bug 修复:修复了
if
语句的 break label 问题。 -
Bug 修复:修复了标签空语句的问题。
njs 0.7.7 的更改
发布日期:2022 年 8 月 30 日
nginx 模块
-
新增功能:扩展了可以指定 js 指令的 nginx 配置上下文数量。
-
HTTP:js_import、js_path、js_set 和 js_var 指令允许在
server
和location
上下文中使用。js_content、js_body_filter 和 js_header_filter 允许在 if 上下文中使用。
-
-
新增功能:添加了
r.internal
属性。 -
Bug 修复:修复了在 Fetch API 中读取响应正文的问题。
-
Bug 修复:修复了 stream 中 js_fetch_timeout 的问题。
-
Bug 修复:修复了 fetch 超时设置为
0
时的 socket 泄露问题。
核心
-
新增功能:扩展了
fs
模块。添加了fs.openSync()
、fs.promises.open()
、fs.fstatSync()
、fs.readSync()
、fs.writeSync()
。实现了
FileHandle
的以下属性:fd
、read()
、stat()
、write()
、close()
。 -
Bug 修复:修复了不带参数的
parseInt()
、parseFloat()
、Symbol.for()
的问题。
njs 0.7.6 的更改
发布日期:2022 年 7 月 19 日
nginx 模块
-
新增功能:改进了
r.args{}
对象。添加了对具有相同键的多个参数的支持。添加了对键的大小写敏感性。现在键和值会被百分比解码。 -
Bug 修复:修复了特殊头部的
r.headersOut{}
setter。
核心
-
新增功能:添加了
Symbol.for()
和Symbol.keyfor()
。 -
Bug 修复:修复了大型非十进制字面量的问题。
-
Bug 修复:修复了
parseInt()
中 Unicode 参数的修剪问题。 -
Bug 修复:修复了
try-catch
块中的break
指令问题。 -
Bug 修复:修复了 CLI 中
async
函数声明的问题。
njs 0.7.5 的更改
发布日期:2022 年 6 月 21 日
nginx 模块
-
变更:适应 nginx 头部结构的变化。
-
Bug 修复:修复了值不存在时
r.headersOut{}
特殊 getter 的问题。 -
变更:当
Content-Type
头部不存在时,返回 undefined 值而不是空字符串。
核心
-
Bug 修复:修复了捕获 awaited 函数抛出的异常问题。
-
Bug 修复:修复了函数值的初始化问题。
-
Bug 修复:修复了 await 失败时解释器的问题。
-
Bug 修复:修复了遍历时源数组改变时 typed-array 构造函数的问题。
-
Bug 修复:修复了使用字节字符串时
String.prototype.replace()
的问题。 -
Bug 修复:修复了模板字面量生成字节字符串的问题。
-
Bug 修复:修复了稀疏数组的数组迭代器问题。
-
Bug 修复:修复了将扁平数组转换为慢速数组时的内存释放问题。
-
Bug 修复:正确处理
promise
原生函数中的NJS_DECLINE
。 -
Bug 修复:修复了在
Promise.all()
及相关方法中使用类数组对象的问题。
njs 0.7.4 的更改
发布日期:2022 年 5 月 24 日
nginx 模块
-
新增功能:添加了配置 Fetch API 的扩展指令。为 http 和 stream 添加了以下指令:
-
变更:
r.internalRedirect()
现在接受转义的 URI。
核心
-
新增功能:添加了
njs.version_number
属性。 -
新增功能:添加了与 BoringSSL 在 WebCrypto API 方面的兼容性。
-
Bug 修复:修复了在比较器中改变数组大小时
Array.prototype.sort()
的问题。 -
Bug 修复:修复了使用 slow
this
参数时Array.prototype.slice()
的问题。 -
Bug 修复:修复了对类数组对象使用
Promise
构造函数的聚合方法的问题。 -
Bug 修复:修复了以 Unicode 字符串作为
this
时String.prototype.lastIndexOf()
的问题。 -
Bug 修复:修复了提供
reviver
函数时JSON.parse()
的问题。 -
Bug 修复:修复了提供递归描述符时
Object.defineProperty()
的问题。 -
Bug 修复:修复了 typed-arrays 的
Array.prototype.fill()
问题。 -
Bug 修复:根据规范使函数表达式绑定不可变。
-
Bug 修复:修复了在
Object.defineProperty()
中特殊属性的重新定义问题。
njs 0.7.3 的更改
发布日期:2022 年 4 月 12 日
核心
-
新增功能:添加了模块解析回调支持。此功能允许宿主环境控制导入模块的加载方式。
-
Bug 修复:修复了遍历导入的用户模块时的回溯问题。
-
Bug 修复:修复了当
this
是慢速数组时Array.prototype.concat()
的问题。 -
Bug 修复:修复了从 awaited frame 分配帧的问题。
-
Bug 修复:修复了大型数组字面量的分配问题。
-
Bug 修复:修复了
toString
转换失败时解释器的问题。
njs 0.7.2 的更改
发布日期:2022 年 1 月 25 日
核心
-
Bug 修复:修复了遍历时数组改变时
Array.prototype.join()
的问题。 -
Bug 修复:修复了遍历时数组改变时
Array.prototype.slice()
的问题。 -
Bug 修复:修复了遍历时数组改变时
Array.prototype.concat()
的问题。 -
Bug 修复:修复了遍历时数组改变时
Array.prototype.reverse()
的问题。 -
Bug 修复:修复了使用子数组时的
Buffer.concat()
问题。感谢 Sylvain Etienne。 -
Bug 修复:修复了解析 promise 时的类型混淆 bug。
-
Bug 修复:修复了使用大型数组参数时
Function.prototype.apply()
的问题。 -
Bug 修复:修复了递归
async
函数调用问题。 -
Bug 修复:修复了函数重复声明问题。此 bug 是在 0.7.0 中引入的。
njs 0.7.1 的更改
发布日期:2021 年 12 月 28 日
nginx 模块
-
变更:移除了自 0.4.0 起已弃用的 js_include 指令。
-
变更:PCRE/PCRE2 相关代码已移至模块中。这确保了 njs 使用与 nginx 相同的 RegExp 库。
核心
-
Bug 修复:修复了使用无效字节字符串时
decodeURI()
和decodeURIComponent()
的问题。此 bug 是在 0.4.3 中引入的。 -
Bug 修复:修复了
await
frame 中的堆 use-after-free 问题。此 bug 是在 0.7.0 中引入的。 -
Bug 修复:修复了使用 OpenSSL 3.0 时 WebCrypto
sign()
和verify()
方法的问题。 -
Bug 修复:修复了 RegExp 匹配失败时异常抛出问题。此 bug 是在 0.1.15 中引入的。
-
Bug 修复:修复了捕获
async
函数的try
块中抛出的异常问题。此 bug 是在 0.7.0 中引入的。 -
Bug 修复:修复了在同步上下文中执行
async
函数的问题。此 bug 是在 0.7.0 中引入的。 -
Bug 修复:修复了在 CLI 交互模式开启时函数重复声明问题。此 bug 是在 0.6.2 中引入的。
-
Bug 修复:修复了对
DataView
对象使用typeof
运算符的问题。 -
Bug 修复:消除了
Buffer.from()
中的信息泄露问题。
njs 0.7.0 的更改
发布日期:2021 年 10 月 19 日
nginx 模块
核心
-
新增功能:引入了
Async/Await
实现。 -
新增功能:添加了 WebCrypto API 实现。
-
Bug 修复:修复了已声明函数的闭包复制问题。此 bug 是在 0.6.0 中引入的。
-
Bug 修复:修复了处理事件中未处理的
promise
拒绝问题。 -
Bug 修复:修复了 Fetch API 中 Response.headers getter 的问题。
njs 0.6.2 的更改
发布日期:2021 年 8 月 31 日
nginx 模块
-
Bug 修复:修复了当
js_filter
在两个方向都注册时 CPU 占用过高的问题。
核心
-
新增功能:引入了
AggregateError
实现。 -
新增功能:添加了剩余的
Promise
构造函数方法。添加了以下方法:Promise.all()
、Promise.allSettled()
、Promise.any()
、Promise.race()
。 -
改进:从代码生成器中移除了递归。
-
Bug 修复:修复了没有绑定标识符时 rest 参数的解析问题。
-
Bug 修复:修复了
Promise.prototype.finally()
的 resolve/reject 回调问题。 -
Bug 修复:修复了使用分离 buffer 时
%TypedArray%.prototype.join()
的问题。 -
Bug 修复:修复了交互式 shell 中的内存泄露问题。
njs 0.6.1 的更改
发布日期:2021 年 6 月 29 日
-
Bug 修复:修复了仅包含 UTF-8 正则表达式时
RegExpBuiltinExec()
的问题。此 bug 是在 0.4.2 中引入的。 -
Bug 修复:修复了包含非赋值表达式的 export default 声明的解析问题。感谢 Artem S. Povalyukhin。
njs 0.6.0 的更改
发布日期:2021 年 6 月 15 日
核心
-
新增功能:添加了
let
和const
声明支持。 -
新增功能:添加了
RegExp.prototype[Symbol.split]
。 -
新增功能:添加了 RegExp 的 sticky flag 支持。
-
Bug 修复:修复了
String.prototype.lastIndexOf()
中的堆缓冲区溢出问题。 -
Bug 修复:修复了符合规范的
RegExp.prototype.test()
。 -
Bug 修复:修复了符合规范的
String.prototype.split()
。 -
Bug 修复:修复了跟踪被拒绝 promise 时使用未初始化值的问题。
-
Bug 修复:修复了对具有循环引用的对象使用
njs.dump()
的问题。
njs 0.5.3 的更改
发布日期:2021 年 3 月 30 日
nginx 模块
njs 0.5.2 的更改
发布日期:2021 年 3 月 9 日
nginx 模块
-
新增功能:添加了
js_body_filter
指令。 -
新增功能:为 Stream Session 对象引入了
s.status
属性。
核心
-
新增功能:添加了
njs.on
(exit
) 回调支持。 -
Bug 修复:修复了不可扩展对象的属性描述符重用问题。感谢 Artem S. Povalyukhin。
-
Bug 修复:修复了符合规范的
Object.freeze()
及相关方法。感谢 Artem S. Povalyukhin。 -
Bug 修复:修复了 CLI 模式下的
Function()
问题。 -
Bug 修复:修复了 typed array 值的
for-in
迭代问题。感谢 Artem S. Povalyukhin。
njs 0.5.1 的更改
发布日期:2021 年 2 月 16 日
nginx 模块
-
新增功能:引入了实现 Fetch API 的
ngx.fetch()
方法。实现了
Response
对象的以下属性和方法:arrayBuffer()
、bodyUsed
、json()
、headers
、ok
、redirect
、status
、statusText
、text()
、type
、url
。显著限制:只支持
http://
协议,不处理重定向。与 洪志道 (Hong Zhi Dao) 合作。
-
特性:添加了
js_header_filter
指令。 -
Bug修复:修复了 stream 模块中 body filter 处理缓冲数据的问题。
核心
-
Bug修复:修复了
Function
构造函数中的安全模式绕过问题。 -
Bug修复:修复了
Date.prototype.toISOString()
处理无效日期值的问题。
与 njs 0.5.0 的变化
发布日期:2020年12月1日
nginx 模块
-
特性:引入了全局
ngx
对象。添加了以下方法
添加了以下属性
-
ngx.INFO
,ngx.WARN
,ngx.ERR
。
-
-
特性:添加了在期望字符串的位置支持
Buffer
对象。 -
特性:添加了现有属性的 Buffer 版本。
添加了以下属性
-
r.requestBuffer
(r.requestBody
),r.responseBuffer
(r.responseBody
),r.rawVariables
(r.variables
),s.rawVariables
(s.variables
)。
在 stream 模块中添加了以下事件
-
upstream
(上行),downstream
(下行)。
-
-
改进:为现有属性添加了别名。
添加了以下属性
-
改进:在子请求中,
r.internalRedirect()
方法会抛出异常。 -
Bug修复:修复了
error_page
重定向下 promiser.subrequest()
的问题。 -
Bug修复:修复了
promise
事件处理问题。
核心
-
特性:为内置模块添加了
TypeScript
定义。鸣谢 Jakub Jirutka。 -
特性:跟踪未处理的
promise
拒绝。 -
特性:添加了初步的 iterator 支持。鸣谢 Artem S. Povalyukhin。
-
改进:
TypeScript
定义已重构。鸣谢 Jakub Jirutka。 -
改进:添加了遗漏的在
Buffer.from()
中对Object.prototype.valueOf()
的支持。 -
Bug修复:修复了
JSON.parse()
中的堆内存释放后使用问题。 -
Bug修复:修复了
JSON.stringify()
中的堆内存释放后使用问题。 -
Bug修复:修复了通过 getter 可调整大小的数组在
JSON.stringify()
中的问题。 -
Bug修复:修复了
RegExp.prototype[Symbol.replace]
的堆缓冲区溢出问题。 -
Bug修复:修复了
Buffer.prototype.write*
函数的返回值问题。 -
Bug修复:修复了
querystring.stringify()
。鸣谢 Artem S. Povalyukhin。 -
Bug修复:修复了
Promise.prototype.finally()
的 catch 处理器问题。 -
Bug修复:修复了
querystring.parse()
。
与 njs 0.4.4 的变化
发布日期:2020年9月29日
nginx 模块
-
Bug修复:修复了 location 合并问题。
-
Bug修复:修复了 HTTP/2 的
r.httpVersion
问题。
核心
-
特性:添加了对 numeric separators (ES12) 的支持。
-
特性:添加了
%TypedArray%.prototype
的剩余方法。添加了以下方法:every()
,filter()
,find()
,findIndex()
,forEach()
,includes()
,indexOf()
,lastIndexOf()
,map()
,reduce()
,reduceRight()
,reverse()
,some()
。 -
特性:添加了
%TypedArray%
的剩余方法。添加了以下方法:from()
,of()
。 -
特性:添加了
DataView
对象。 -
特性:添加了
Buffer
对象的实现。 -
特性:添加了在
TextDecoder.prototype.decode()
中对ArrayBuffer
的支持。 -
特性:添加了在
crypto
方法中对Buffer
对象的支持。 -
特性:添加了在
fs
方法中对Buffer
对象的支持。 -
变更:当未提供编码时,
Hash.prototype.digest()
和Hmac.prototype.digest()
现在返回一个Buffer
实例,而不是一个 byte string。 -
变更:当未提供编码时,
fs.readFile()
等方法现在返回一个Buffer
实例,而不是一个 byte string。 -
Bug修复:修复了设置函数
prototype
属性时的处理程序问题。 -
Bug修复:修复了设置函数
constructor
属性时的处理程序问题。 -
Bug修复:修复了 byte strings 的
String.prototype.indexOf()
问题。 -
Bug修复:修复了
RegExpBuiltinExec()
处理 global flag 和 byte strings 的问题。 -
Bug修复:修复了当替换值为函数时
RegExp.prototype[Symbol.replace]
的问题。 -
Bug修复:修复了
TextDecoder.prototype.decode()
处理非零TypedArray
偏移量的问题。
与 njs 0.4.3 的变化
发布日期:2020年8月11日
核心
-
特性:添加了
Query String
模块。 -
特性:改进了
fs.mkdir()
以支持递归创建目录。鸣谢 Artem S. Povalyukhin。 -
特性:改进了
fs.rmdir()
以支持递归删除目录。鸣谢 Artem S. Povalyukhin。 -
特性:根据 WHATWG 编码规范引入了 UTF-8 解码器。
-
特性:添加了
TextDecoder()
和TextEncoder()
的实现。 -
Bug修复:修复了解析没有分号的 return 语句的问题。
-
Bug修复:修复了 big-endian 平台上的
njs_number_to_int32()
问题。 -
Bug修复:修复了 big-endian 平台上的单元测试问题。
-
Bug修复:修复了包含“
=
”字符的正则表达式字面量解析问题。 -
Bug修复:修复了赋值操作中的前置/后置增量/减量问题。
与 njs 0.4.2 的变化
发布日期:2020年7月7日
核心
-
特性:添加了
RegExp.prototype[Symbol.replace]
。 -
特性:引入了行级别回溯。
-
特性:添加了
%TypedArray%.prototype.sort()
。 -
改进:解析器重构。
-
Bug修复:修复了 HTTP headers 的 TypedScript API 描述问题。
-
Bug修复:修复了
NjsByteString
类型的 TypedScript API 描述问题。 -
Bug修复:根据规范修复了
String.prototype.repeat()
。 -
Bug修复:根据规范修复了
String.prototype.replace()
。 -
Bug修复:修复了正则表达式字面量 flags 的解析问题。
-
Bug修复:修复了生成器中全局对象的索引生成问题。
-
Bug修复:修复了
%TypedArray%.prototype.copyWithin()
处理非零 byte 偏移量的问题。 -
Bug修复:修复了 sparse arrays 的
Array.prototype.splice()
问题。 -
Bug修复:修复了 sparse arrays 的
Array.prototype.reverse()
问题。 -
Bug修复:修复了 sparse arrays 的
Array.prototype.sort()
问题。
与 njs 0.4.1 的变化
发布日期:2020年5月19日
nginx 模块
-
特性:添加了对
r.headersIn{}
中多值 header 的支持。 -
特性:引入了
raw headers
API:r.rawHeadersIn[]
和r.rawHeadersOut[]
。 -
特性:添加了 TypeScript API 描述。
核心
-
Bug修复:修复了 sparse arrays 的
Array.prototype.slice()
问题。
与 njs 0.4.0 的变化
发布日期:2020年4月23日
nginx 模块
-
特性:添加了对
r.headersOut{}
中多值 header 的支持。 -
改进:改进了
r.headersOut{}
对 special headers 的迭代处理。 -
改进:改进了
r.headersOut{}
处理重复项时的迭代处理。 -
变更:如果 response body 不可用,
r.responseBody
属性处理程序现在返回undefined
,而不是抛出异常。
核心
-
特性:添加了 CLI 中的脚本参数支持。
-
特性:将 external 值转换为原生 js 对象。
-
Bug修复:修复了
__proto__
属性处理程序中的空指针解引用问题。 -
Bug修复:修复了脚本末尾没有换行符的处理问题。
-
Bug修复:修复了
RegExp()
构造函数处理空模式和非空 flags 的问题。 -
Bug修复:修复了当函数返回非字符串值时
String.prototype.replace()
的问题。 -
Bug修复:修复了在
fs
中读取 pseudofiles 的问题。
与 njs 0.3.9 的变化
发布日期:2020年3月3日
nginx 模块
-
特性:为
r.subrequest()
添加了 detached 模式。对 detached 子请求的响应会被忽略。与普通子请求不同,可以在变量处理程序内创建 detached 子请求。
核心
-
特性:为
fs
模块添加了promises
API。鸣谢 Artem S. Povalyukhin。 -
特性:扩展了
fs
模块。添加了access()
,symlink()
,unlink()
,realpath()
等方法。鸣谢 Artem S. Povalyukhin。 -
改进:引入了内存效率高的普通数组。
-
改进:lexer 重构。
-
Bug修复:修复了 backtraces 中匹配原生函数的问题。
-
Bug修复:修复了
fs
模块中的回调函数调用问题。鸣谢 Artem S. Povalyukhin。 -
Bug修复:修复了
Object.getOwnPropertySymbols()
。 -
Bug修复:修复了
njs_json_append_string()
中的堆缓冲区溢出问题。 -
Bug修复:根据规范修复了
encodeURI()
和decodeURI()
。 -
Bug修复:修复了
Number.prototype.toPrecision()
。 -
Bug修复:修复了
JSON.stringify()
处理 space 参数的问题。 -
Bug修复:修复了
JSON.stringify()
处理Number()
和String()
对象的问题。 -
Bug修复:根据规范修复了
JSON.stringify()
中的 Unicode 转义问题。 -
Bug修复:修复了 non-native module 导入问题。鸣谢 洪志道 (Hong Zhi Dao)。
-
Bug修复:修复了
njs.dump()
处理容器中Date()
实例的问题。
与 njs 0.3.8 的变化
发布日期:2020年1月21日
nginx 模块
-
特性:为
r.subrequest()
添加了Promise
支持。如果没有提供回调,r.subrequest()
返回一个普通的Promise
对象,该对象解析为子请求响应对象。 -
变更:如果 parent 对象不可用,
r.parent
属性处理程序现在返回undefined
,而不是抛出异常。
核心
-
特性:添加了
Promise
支持。根据规范实现,但不包含:Promise.all()
,Promise.allSettled()
,Promise.race()
。 -
特性:添加了初步的 Typed-arrays 支持。鸣谢 Tiago Natel de Moura。
-
特性:添加了
ArrayBuffer
支持。鸣谢 Tiago Natel de Moura。 -
特性:添加了初步的
Symbol
支持。鸣谢 Artem S. Povalyukhin。 -
特性:为
JSON.stringify()
添加了 externals 支持。 -
特性:添加了
Object.is()
。鸣谢 Artem S. Povalyukhin。 -
特性:添加了
Object.setPrototypeOf()
。鸣谢 Artem S. Povalyukhin。 -
特性:引入了 nullish coalescing 运算符。
-
Bug修复:根据规范修复了
Object.getPrototypeOf()
。 -
Bug修复:根据规范修复了
Object.prototype.valueOf()
。 -
Bug修复:修复了
JSON.stringify()
处理不可打印值和 replacer 函数的问题。 -
Bug修复:根据规范修复了
in
运算符。 -
Bug修复:根据规范修复了
Object.defineProperties()
。 -
Bug修复:根据规范修复了
Object.create()
。鸣谢 Artem S. Povalyukhin。 -
Bug修复:修复了启用 fast-math 时
Number.prototype.toString(radix)
的问题。 -
Bug修复:修复了
RegExp()
实例属性的问题。 -
Bug修复:修复了 import segfault 问题。鸣谢 洪志道 (Hong Zhi Dao)。
与 njs 0.3.7 的变化
发布日期:2019年11月19日
nginx 模块
-
改进:重构了 external 对象迭代。
核心
-
特性:添加了
Object.assign()
。 -
特性:添加了
Array.prototype.copyWithin()
。 -
特性:为
console.time()
添加了对 labels 的支持。 -
变更:从 CLI 中移除了
console.help()
。 -
改进:将构造函数和顶层对象移至全局对象。
-
改进:configure 脚本的参数验证。
-
改进:重构了 JSON 方法。
-
Bug修复:修复了
njs_array_reverse_iterator()
函数中的堆缓冲区溢出问题。受影响的函数如下:Array.prototype.lastIndexOf()
,Array.prototype.reduceRight()
。 -
Bug修复:修复了
NativeErrors
的[[Prototype]]
槽问题。 -
Bug修复:修复了
NativeError.prototype.message
属性问题。 -
Bug修复:在
Array.prototype functions
中添加了将this
值转换为对象的处理。 -
Bug修复:修复了
Array.prototype.find()
和Array.prototype.findIndex()
函数的 iterator 问题。 -
Bug修复:修复了
Array.prototype.includes()
和Array.prototype.join()
处理undefined
参数的问题。 -
Bug修复:修复了
Hash
和Hmac
对象的constructor
属性问题。 -
Bug修复:修复了 getters 和 setters 的
__proto__
属性问题。 -
Bug修复:修复了
Date
对象字符串格式化问题。 -
Bug修复:修复了
Math.min()
和Math.max()
处理NaN
和-0
参数的问题。 -
Bug修复:根据规范修复了
Math.round()
。 -
Bug修复:根据规范重新实现了
bound
函数。
与 njs 0.3.6 的变化
发布日期:2019年10月22日
nginx 模块
-
改进:从
r.headersIn{}
中获取 special headers。
核心
-
特性:添加了对新
Function()
的支持。 -
特性:添加了
Number.prototype.toFixed()
。 -
特性:添加了
Number.prototype.toPrecision()
。 -
特性:添加了
Number.prototype.toExponential()
。 -
改进:使函数实例的
prototype
属性可写。 -
改进:限制编译时的递归深度。
-
改进:将全局函数移至全局对象。
-
Bug修复:修复了对象字面量的原型突变问题。
-
Bug修复:修复了解析正则表达式字面量时的堆缓冲区溢出问题。
-
Bug修复:修复了解析数字字面量指数时的整数溢出问题。
-
Bug修复:修复了
parseFloat()
。 -
Bug修复:根据规范修复了
Array.prototype
函数。修复了以下函数:every
,includes
,indexOf
,filter
,find
,findIndex
,forEach
,lastIndexOf
,map
,pop
,push
,reduce
,reduceRight
,shift
,some
,unshift
。 -
Bug修复:修复了
Object.freeze()
中处理 accessor descriptors 的问题。 -
Bug修复:修复了当第一个参数不是字符串时
String.prototype.replace()
的问题。 -
Bug修复:修复了
Array.prototype.map()
中的 stack-use-after-scope 问题。 -
Bug修复:
Date.prototype.toUTCString()
格式与 ES9 对齐。 -
Bug修复:修复了
Number.prototype.toString(radix)
中的缓冲区溢出问题。 -
Bug修复:修复了处理带有 backreferences 的正则表达式时
Regexp.prototype.test()
的问题。 -
Bug修复:修复了
Array.prototype.map()
处理带有不存在值的对象的问题。 -
Bug修复:修复了 sparse objects 的
Array.prototype.pop()
和shift()
问题。 -
Bug修复:根据规范修复了
Date.UTC()
。 -
Bug修复:根据规范修复了
Date()
构造函数。 -
Bug修复:修复了
Date.prototype
的类型问题。鸣谢 Artem S. Povalyukhin。 -
Bug修复:修复了
Date.prototype.setTime()
。鸣谢 Artem S. Povalyukhin。 -
Bug修复:修复了内置函数期望的默认参数数量问题。
-
Bug修复:修复了函数实例的
caller
和arguments
属性问题。鸣谢 Artem S. Povalyukhin。
与 njs 0.3.5 的变化
发布日期:2019年8月15日
核心
-
Bug修复:修复了使用
require()
导入模块的问题。该 Bug 是在 0.3.4 版本中引入的。 -
Bug修复:修复了
[[SetPrototypeOf]]
。
与 njs 0.3.4 的变化
发布日期:2019年8月13日
核心
-
特性:添加了
Object
简写方法和 computed property names。鸣谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。 -
特性:添加了对 getter/setter 字面量的支持。鸣谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。
-
特性:添加了
fs.renameSync()
。 -
特性:添加了
String.prototype.trimEnd()
和String.prototype.trimStart()
。 -
改进:添加了对 memory-sanitizer 的支持。
-
改进:Unicode 大小写转换表更新到 12.1 版本。
-
改进:为字符串字面量添加了 UTF8 验证。
-
Bug修复:修复了在
fs.readFileSync()
中读取零大小文件的问题。 -
Bug修复:扩展了
String.prototype.trim()
中的 space separators 列表。 -
Bug修复:修复了
String.prototype.padStart()
中使用未初始化值的问题。 -
Bug修复:修复了
String.prototype.replace()
处理$0
和&
替换字符串的问题。 -
Bug修复:修复了
String.prototype.replace()
处理带有 regex 参数的 byte strings 的问题。 -
Bug修复:修复了
String.prototype.replace()
使用 regexp 参数时的 global match 问题。 -
Bug修复:修复了 primitive types 的
Array.prototype.slice()
问题。 -
Bug修复:修复了导入模块时的堆缓冲区溢出问题。
-
Bug修复:修复了 UTF-8 字符转义问题。
-
Bug修复:修复了 shared objects 的
Object.values()
和Object.entries()
问题。 -
Bug修复:修复了
String.prototype.match()
中的未初始化内存访问问题。 -
Bug修复:修复了
String.prototype.match()
处理带有 regex 参数的 byte strings 的问题。 -
Bug修复:修复了
Array.prototype.lastIndexOf()
处理 undefined 参数的问题。 -
Bug修复:修复了
String.prototype.substring()
处理空 substring 的问题。 -
Bug修复:修复了
String.prototype.substring()
中的无效内存访问问题。 -
Bug修复:修复了
String.fromCharCode()
处理大于65535
和NaN
的 code points 的问题。 -
Bug修复:修复了
String.prototype.toLowerCase()
和String.prototype.toUpperCase()
。 -
Bug修复:修复了
Error()
构造函数没有参数的问题。 -
Bug修复:修复了
in
运算符处理带有 accessor descriptors 的值的问题。 -
Bug修复:修复了
Object.defineProperty()
处理 non-boolean descriptor props 的问题。 -
Bug修复:修复了
Error.prototype.toString()
处理带有 UTF8 字符串属性的问题。 -
Bug修复:修复了
Error.prototype.toString()
处理name
和message
的非字符串值的问题。
与 njs 0.3.3 的变化
发布日期:2019年6月25日
nginx 模块
-
改进:在
r.headersOut{}
中获取 special response headers。 -
改进:
r.subrequest()
处理未知方法的问题。 -
改进:为
r.subrequest()
添加了支持将 null 作为第二个参数。 -
Bug修复:修复了 stream body filter 处理空 output chain 的问题。
核心
-
特性:添加了对属性 getter/setter 的运行时支持。鸣谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。
-
特性:添加了
process
全局对象。 -
特性:大部分内置属性和方法可写。
-
特性:添加了
Array.prototype.fill()
的通用实现。 -
Bug修复:修复了
String.prototype.concat()
中的整数溢出问题。 -
Bug修复:修复了设置对象属性的问题。
-
Bug修复:修复了
Array.prototype.toString()
。 -
Bug修复:修复了
Date.prototype.toJSON()
。 -
Bug修复:修复了覆盖内置原型中“constructor”属性的问题。
-
Bug修复:修复了处理字符串中无效代理对的问题。
-
Bug修复:修复了处理 JSON 字符串中无效代理对的问题。
-
Bug修复:修复了
toUpperCase()
和toLowerCase()
中的堆缓冲区溢出问题。 -
Bug修复:修复了
RegExp()
构造函数中转义单个右方括号的问题。 -
Bug修复:修复了处理 RegExp pattern strings 中的零字节字符问题。
-
Bug修复:修复了
String.prototype.toBytes()
处理 ASCII 字符串的问题。 -
Bug修复:修复了
JSON.parse()
中 JSON 数字的真值问题。 -
Bug修复:修复了
njs_string_replace_join()
中的未初始化值使用问题。 -
Bug修复:修复了
parseInt('-0')
。鸣谢 Artem S. Povalyukhin。
与 njs 0.3.2 的变化
发布日期:2019年5月21日
核心
-
特性:添加了对 template literals 的支持。鸣谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。
-
特性:从命令行参数执行命令。
-
特性:添加了对 RegExp
groups
对象 (ES9) 的支持。 -
特性:添加了对 block scoped function definitions 的支持。
-
特性:添加了支持使用 GNU Readline 库构建。
-
特性:使
length
,name
, 以及大部分内置方法可配置。 -
特性:使所有构造函数属性可配置。
-
Bug修复:修复了
Regexp.prototype.exec()
处理仅 Unicode 的正则表达式的问题。 -
Bug修复:修复了
njs_vm_value_dump()
处理空字符串值的问题。 -
Bug修复:修复了 RegExp 构造函数处理 regexp 值参数的问题。
-
Bug修复:修复了迭代对象时遍历 prototypes 链的问题。
-
Bug修复:修复了
Array.prototype.concat()
中的溢出问题。 -
Bug修复:修复了计算包含转义字符的 UTF-8 字符串长度的问题。
-
Bug修复:修复了解析作为 UTF-16 转义序列存在的代理对问题。
-
Bug修复:修复了
String.prototype.match()
处理“*
”量词的问题。 -
Bug修复:修复了
Date()
构造函数带一个参数的问题。 -
Bug修复:修复了数组扩展问题。
-
Bug修复:修复了
String.prototype.replace()
中的堆缓冲区溢出问题。 -
Bug 修复:修复了
String.prototype.lastIndexOf()
中的堆缓冲区溢出问题。 -
Bug修复:修复了解析包含转义反斜杠和方括号中反斜杠的正则表达式字面量问题。
-
Bug修复:修复了包含单个右括号的正则表达式字面量问题。
-
Bug修复:修复了
Object.defineProperties()
中的未初始化内存访问问题。 -
Bug修复:修复了
String.prototype.replace()
处理“*
”量词的问题。 -
Bug修复:修复了
Array.prototype.slice()
处理无效 UTF8 byte strings 的问题。 -
Bug修复:修复了
String.prototype.split()
处理无效 UTF8 byte strings 的问题。 -
Bug修复:修复了处理空块语句的问题。
与 njs 0.3.1 的变化
发布日期:2019年4月16日
核心
-
特性:添加了对箭头函数的支持。鸣谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。
-
特性:添加了
Object.getOwnPropertyNames()
。鸣谢 Artem S. Povalyukhin。 -
特性:添加了
Object.getOwnPropertyDescriptors()
。鸣谢 Artem S. Povalyukhin。 -
特性:使
Object
实例的__proto__
accessor descriptor 可变。 -
特性:添加了 CLI 中的 shebang 支持。
-
特性:添加了 CLI 中的 module mode 执行模式支持。在 module mode 下,global 或 this 不可用。
-
Bug修复:修复了 editline 检测问题。
-
Bug修复:修复了
Function.prototype.bind()
。鸣谢 洪志道 (Hong Zhi Dao)。 -
Bug修复:修复了检查函数参数重复的问题。鸣谢 洪志道 (Hong Zhi Dao)。
-
Bug修复:修复了函数声明与变量同名的问题。鸣谢 洪志道 (Hong Zhi Dao)。
-
改进:与解析对象、变量和函数相关的代码已重构。鸣谢 洪志道 (Hong Zhi Dao)。
-
改进:改进了
console.log()
中的大值输出。 -
改进:以兼容方式(不转义,无引号)改进了
console.log()
中的字符串输出。 -
改进:使用 ES6 版本的
ToInt32()
,ToUint32()
,ToLength()
。
与 njs 0.3.0 的变化
发布日期:2019年3月26日
nginx 模块
-
变更:在以下对象中,对不存在的属性返回 undefined 值而非空字符串:
r.args{}
,r.headersIn{}
,r.headersOut{}
,r.variables{}
,s.variables{}
。 -
变更:当 request body 不可用时,对
r.requestBody
返回 undefined 值而非抛出异常。 -
Bug修复:修复了迭代
r.args{}
时,key-value 对中缺少值导致的崩溃问题。
核心
-
特性:添加了初步的 ES6 模块支持。支持 Default import 和 default export 语句。鸣谢 洪志道 (Hong Zhi Dao)。
-
特性:添加了
Object.prototype.propertyIsEnumerable()
。 -
特性:在 disassembler 输出中报告文件名和函数名。
-
Bug修复:修复了 interactive shell 中的函数重声明问题。鸣谢 洪志道 (Hong Zhi Dao)。
-
Bug修复:修复了正则表达式字面量解析问题。
-
Bug修复:修复了在
fs.readFileSync()
中设置 UTF8 字符串长度的问题。 -
Bug修复:修复了
nxt_file_dirname()
处理不带目录组件的路径的问题。
与 njs 0.2.8 的变化
发布日期:2019年2月26日
nginx 模块
-
变更:0.2.2 版本中已弃用的 HTTP 请求属性已移除。
-
特性:添加了对
r.headersOut{}
中 delete 操作的支持。 -
特性:添加了对设置 nginx 变量的支持。
-
Bug修复:修复了
r.subrequest()
处理空 body 值的问题。 -
改进:在
r.headersOut{}
中设置 special response headers。
核心
-
特性:添加了对 labels 的支持。
-
特性:添加了
setImmediate()
方法。 -
特性:添加了对 Object literals 的 shorthand property names 支持。
-
Bug修复:修复了
Function.prototype.bind()
。 -
Bug修复:修复了解析包含换行符的字符串字面量问题。
-
Bug修复:修复了报告变量引用错误时的行号问题。
-
Bug修复:修复了创建长 UTF8 字符串的问题。
-
Bug修复:修复了
String.prototype.split()
处理 Unicode 字符串的问题。(注:原文可能有误,根据上下文推测修复了处理 Unicode 字符串的问题) -
Bug修复:修复了
String.prototype.split()
中的堆缓冲区溢出问题。 -
Bug修复:修复了
Array.prototype.fill()
。鸣谢 Artem S. Povalyukhin。 -
改进:与函数调用相关的代码已重构。鸣谢 洪志道 (Hong Zhi Dao)。
-
改进:与变量相关的代码已重构。鸣谢 洪志道 (Hong Zhi Dao)。
-
改进:解析器已重构。鸣谢 洪志道 (Hong Zhi Dao)。
-
改进:在异常中报告文件名。
与 njs 0.2.7 的变化
发布日期:2018年12月25日
核心
-
特性:rest parameters 语法(不支持 destructuring)。鸣谢 Alexander Pyshchev。
-
特性:添加了
Object.entries()
方法。 -
特性:添加了
Object.values()
方法。 -
改进:代码生成器已重构和简化。
-
Bug修复:修复了自动插入分号的问题。
-
Bug修复:修复了来自复合赋值的赋值表达式问题。
-
Bug修复:修复了 Byte 和 UTF8 字符串的比较问题。
-
Bug修复:修复了
for-in
处理数组值时迭代变量的类型问题。 -
Bug修复:修复了在没有 librt 库的平台上的构建问题。
-
Bug修复:修复了其他各种 Bug。
与 njs 0.2.6 的变化
发布日期:2018年11月27日
核心
-
特性:使内置原型可变。
-
特性:使全局对象可变。
-
特性:
console.time()
和console.timeEnd()
方法。 -
特性:允许变量和函数被重声明。
-
特性:扩展
Object.defineProperty()
的规范兼容性。 -
特性:为 CLI 引入了 quiet 模式,用于处理来自 stdin 的简单表达式。
-
特性:引入了紧凑形式的 backtraces,用于处理堆栈溢出。
-
改进:改进了各种异常的措辞。
-
Bug修复:修复了 closure 值处理问题。
-
Bug修复:修复了 equality 运算符处理各种值类型的问题。
-
Bug修复:修复了
this
关键字在各种作用域中的处理问题。 -
Bug修复:修复了
Object.keys()
处理非对象值的问题。 -
Bug修复:修复了解析
if
语句中 throw 语句的问题。 -
Bug修复:修复了解析 throw 语句后换行符的问题。
-
Bug修复:修复了解析没有换行符的 if 语句中的语句问题。
-
错误修复:修复了在
njs_array_expand()
中固定大小的uint32_t
溢出问题。 -
错误修复:修复了针对
object_value
类型的typeof
运算符。 -
Bug修复:修复了其他各种 Bug。
njs 0.2.5 版本的新变化
发布日期:2018 年 10 月 30 日
nginx 模块
-
错误修复:修复了 stream 模块中待处理事件的计数问题。
-
错误修复:修复了 stream 模块中的
s.off()
。 -
错误修复:修复了 stream 模块中
js_filter
对数据块的处理问题。 -
错误修复:修复了 http 模块中的 http
status
和contentType
获取器。 -
错误修复:修复了 http 模块中的 http 响应和 parent 获取器。
核心
-
新特性:支持 arguments 对象。
-
新特性:支持非整数小数。
-
改进:处理
Array.prototype.slice()
中的非数组值。 -
错误修复:修复了
Array.prototype.length
设置器 -
错误修复:修复了长度大于 2**31 时
njs_array_alloc()
的问题。 -
错误修复:修复了 32 位架构上
njs_array_alloc()
中的整型溢出处理问题。 -
错误修复:修复了代码大小不匹配的错误消息。
-
错误修复:修复了循环中的 delete 运算符。
-
错误修复:修复了针对复杂对象(继承自
Array
和string
值)的Object.getOwnPropertyDescriptor()
。 -
错误修复:修复了针对非对象属性的
Object.prototype.hasOwnProperty()
。 -
Bug修复:修复了其他各种 Bug。
njs 0.2.4 版本的新变化
发布日期:2018 年 9 月 18 日
nginx 模块
-
变化:stream 模块处理程序已重构。
新增方法和属性:
s.on()
,s.off()
,s.allow()
,s.done()
,s.decline()
,s.deny()
。移除的 Stream 对象属性:
s.OK
,s.ABORT
,s.AGAIN
,s.DECLINED
,s.ERROR
(已被s.allow()
,s.done()
,s.deny()
取代)。s.buffer
(读取时已被相应回调的 data 参数取代,写入时请使用s.send()
)。s.fromUpstream
(已被相应事件的回调取代)。s.eof
(已被flags.last
取代)。
核心
-
新特性:添加了
Function.prototype.length
。 -
新特性:引入了沙箱模式。
-
改进:在适当位置添加了异常字符串。
-
改进:改进了基本类型转换异常的措辞。
-
错误修复:尝试修改冻结属性时抛出
TypeError
。 -
错误修复:修复了针对现有属性的
Object.defineProperty()
。 -
错误修复:在使用 for in 迭代时遵守 enumerable 属性。
-
错误修复:针对属性处理程序遵守 writable 属性。
-
错误修复:修复了函数参数中的异常处理。
-
错误修复:修复了针对不同值类型的
Object.prototype.toString
。 -
错误修复:修复了针对对象类型参数的
Object()
构造函数。 -
错误修复:修复了对象和字符串的比较。
-
错误修复:修复了针对 undefined 参数的
String.slice()
。 -
Bug修复:修复了其他各种 Bug。
njs 0.2.3 版本的新变化
发布日期:2018 年 7 月 31 日
nginx 模块
-
错误修复:从
Reply
对象创建子请求导致了段错误。 -
错误修复:获取主 HTTP Request 对象的 parent 属性导致了段错误。
核心
-
新特性:添加了值的漂亮字符串表示。
-
新特性:正确打印浮点数。
-
新特性:正确解析浮点数。
-
新特性:
String.bytesFrom()
方法(将hex
,base64
,base64url
解码为字节字符串)。 -
新特性:
String.padStart()
和String.padEnd()
方法。 -
新特性:添加了对二进制字面量的支持。
-
改进:在数字解析中添加了关于非法 token 的信息。
-
改进:在八进制字面量值中允许大写
O
。 -
改进:在
console.log()
中添加了对多个参数的支持。 -
错误修复:修复了将
call()
应用于外部值的方法。 -
错误修复:修复了应用于对象的加法运算符。
-
错误修复:修复了
njs_vm_value_to_ext_string()
中的异常处理。 -
错误修复:修复了带有 boolean, null 和 undefined 参数的
Number()
。 -
错误修复:修复了设置非数字
Array.length
的错误处理。 -
错误修复:修复了全局对象的自动补全。
-
Bug修复:修复了其他各种 Bug。
njs 0.2.2 版本的新变化
发布日期:2018 年 6 月 19 日
nginx 模块
-
变化:将 HTTP
Response
和Reply
合并到 HTTP Request 中。Request
的新增成员:-
req.status
(原为res.status
) -
req.parent
(原为reply.parent
) -
req.requestBody
(原为req.body
) -
req.responseBody
(原为reply.body
) -
req.headersIn
(原为req.headers
) -
req.headersOut
(原为res.headers
) -
req.sendHeader()
(原为res.sendHeader()
) -
req.send()
(原为res.send()
) -
req.finish()
(原为res.finish()
) -
req.return()
(原为res.return()
)
Request
中已弃用的成员:-
req.body
(请使用req.requestBody
或req.responseBody
) -
req.headers
(请使用req.headersIn
或req.headersOut
) -
req.response
Response
中已弃用的成员:-
res.contentLength
(请使用req.headersOut
['Content-Length']
) -
res.contentType
(请使用req.headersOut
['Content-Type']
)
这些已弃用的属性将在后续版本中移除。
-
-
新特性:HTTP internalRedirect() 方法。
核心
-
错误修复:修复了
crypto.createHmac()
中的堆缓冲区溢出问题。
njs 0.2.1 版本的新变化
发布日期:2018 年 5 月 31 日
nginx 模块
-
新特性:HTTP 请求体获取器。
-
改进:将 njs 虚拟机移至
main
配置。 -
改进:改进了针对 js_set 和 js_content 指令的日志记录。
-
改进:在 js_content 处理程序中默认将状态码设置为 500。
-
改进:在 js_content 处理程序中为返回的状态码添加了调试信息。
-
错误修复:修复了 js_include 中的错误日志记录。
核心
-
新特性:添加了数组长度设置器。
-
改进:公共头文件
cleanup. njscript.h
已重命名为njs.h
。 -
错误修复:修复了在调用
digest()
后 crypto 的update()
方法。 -
错误修复:修复了针对大小小于等于算法大小且大于 64 的 key 的
crypto.createHmac()
。 -
错误修复:修复了针对包含空单元格的数组的
JSON.stringify()
。 -
错误修复:修复了
JSON.stringify()
中不支持类型的异常类型。 -
错误修复:修复了对函数 undefined 参数的处理。
-
错误修复:修复了对
Object.getOwnPropertyDescriptor()
缺少arg
的处理。 -
错误修复:修复了
Object.getOwnPropertyDescriptor()
中对属性的处理。 -
错误修复:修复了
Array.length
属性的可写标志。 -
错误修复:修复了
clearTimeout()
的返回值类型。 -
错误修复:修复了
njs_vm_external_bind()
。 -
Bug修复:修复了其他各种 Bug。
njs 0.2.0 版本的新变化
发布日期:2018 年 4 月 3 日
-
新特性:通过 CLI 报告 njs 版本。
-
新特性:提供类型转换异常的文本描述。
- 新特性:
setTimeout()
和clearTimeout()
方法。 -
新特性:字节字符串转
hex
,base64
,base64url
编码。 -
新特性:Node.js 风格的
Crypto
方法。 -
新特性:HTTP 和 stream 的
warn()
和error()
方法。 -
新特性:HTTP
subrequest()
方法。 -
新特性:HTTP
return()
方法。 -
错误修复:核心和交互式 shell 中修复了杂项 bug。
njs 0.1.15 版本的新变化
发布日期:2017 年 11 月 20 日
-
新特性:
Error
,EvalError
,InternalError
,RangeError
,ReferenceError
,SyntaxError
,TypeError
,URIError
对象。 -
新特性:支持八进制字面量。
-
新特性:Node.js 风格的
File system
访问方法:fs.readFile()
,fs.readFileSync()
,fs.appendFile()
,fs.appendFileSync()
,fs.writeFile()
,fs.writeFileSync()
。 -
新特性:nginx 模块在发生异常时打印堆栈回溯。
-
Bug修复:修复了其他各种 Bug。
njs 0.1.14 版本的新变化
发布日期:2017 年 10 月 9 日
-
新特性:JSON 对象。
-
新特性:交互式 shell 中的对象级别补全。
-
新特性:各种配置改进。
-
错误修复:核心和交互式 shell 中修复了杂项 bug。
njs 0.1.13 版本的新变化
发布日期:2017 年 8 月 31 日
-
新特性:交互式 shell 中的
console.log()
和console.help()
方法。 -
新特性:交互式 shell 在发生异常时打印堆栈回溯。
-
新特性:如果
libedit
可用,默认启用交互式 shell。 -
错误修复:修复了命令行模式下从
stdin
处理大文件的问题。 -
错误修复:改进了
editline
检测。
njs 0.1.12 版本的新变化
发布日期:2017 年 8 月 8 日
-
新特性:交互式 shell。
-
错误修复:
Object.isSealed()
中的问题。
njs 0.1.11 版本的新变化
发布日期:2017 年 6 月 27 日
-
新特性:
Object.keys()
,Object.prototype.hasOwnProperty()
方法。 -
新特性:
Object.defineProperty()
,Object.defineProperties()
,Object.getOwnPropertyDescriptor()
方法。 -
新特性:
Object.getPrototypeOf()
,Object.prototype.isPrototypeOf()
方法。 -
新特性:
Object.preventExtensions()
,Object.isExtensible()
,Object.freeze()
,Object.isFrozen()
,Object.seal()
,Object.isSealed()
方法。 -
新特性:支持科学计数法 (
3.35e10
) 字面量。 -
新特性:支持十六进制 (
0x1123
) 字面量。 -
错误修复:修复了对大数组索引的处理。
-
错误修复:
parseInt()
和Date.parse()
中的问题。
njs 0.1.10 版本的新变化
发布日期:2017 年 4 月 4 日
-
新特性:嵌套函数和函数闭包。
-
新特性:
Array.of()
,Array.prototype.fill()
,Array.prototype.find()
,Array.prototype.findIndex()
方法。 -
错误修复:修复了杂项 bug 和段错误。
njs 0.1.9 版本的新变化
发布日期:2017 年 2 月 1 日
-
错误修复:在 nginx 中使用 njs 时,全局变量未初始化。
njs 0.1.8 版本的新变化
发布日期:2017 年 1 月 24 日
-
变化:强制执行
strict
模式,变量必须显式声明。 -
新特性:
for
和for-in
循环支持变量声明。 -
错误修复:修复了全局和函数作用域。
-
错误修复:现在
for-in
循环不会丢弃属性变量的最后一个值。 -
错误修复:修复了杂项 bug 和段错误。
njs 0.1.7 版本的新变化
发布日期:2016 年 12 月 27 日
-
变化:js_include 指令在 server 和 location 级别已被禁用。
-
新特性:幂运算符。
-
错误修复:修复了杂项 bug 和段错误。
njs 0.1.6 版本的新变化
发布日期:2016 年 12 月 13 日
-
变化:js_set 指令在 server 和 location 级别已被禁用。
-
新特性:ES6
Math
方法。 -
错误修复:修复了杂项 bug 和段错误。