变更记录
njs 0.9.6 版本变更
发布日期:2026 年 3 月 3 日
nginx 模块
-
漏洞修复:修复了 共享字典 状态文件中 expire 字段的截断问题。毫秒级时间戳被静默截断为 10 位数字,导致重启后已恢复的条目被错误地视为已过期。
-
漏洞修复:抑制了针对驱逐型 共享字典 区域的 slab log_nomem 日志。当启用了驱逐(evict)功能时,内存分配失败属于预期行为,并通过驱逐旧条目来处理。
-
漏洞修复:修复了 qjs 引擎中 ngx.fetch() 异常的堆栈跟踪信息。
核心
-
特性:增加了对可选链(optional chaining)的支持。
-
特性:增加了空值合并赋值运算符(
??=)。 -
特性:增加了逻辑赋值运算符(
||=和&&=)。 -
改进:将
SyntaxError的报告方式与其他 JS 引擎对齐。此前,文件名是错误消息的一部分。现在它被作为“stack”属性报告。 -
改进:改进了
Error.stack跟踪。堆栈跟踪现在在错误构造函数中附加。Error.stack的性能提升了约 100 倍。 -
漏洞修复:修复了作用域值哈希中字符串偏移映射的损坏问题。该问题在访问索引 >= 32 的多字节 UTF-8 字符串常量(例如通过
.replace()或括号表示法)时,会导致 SEGV/SIGBUS 崩溃。该问题是在 e7caa46d (0.9.5) 中引入的。 -
漏洞修复:修复了由
Symbol()引起的 atom 哈希中的堆缓冲区溢出。 -
漏洞修复:修复了 WebCrypto importKey() 在 JWK 密钥类型不匹配时导致的崩溃。
-
漏洞修复:修复了管道 stdin 的交互模式检测。
-
漏洞修复:修复了 MacOS 上的构建问题。
-
漏洞修复:修复了 PTR 宏与较新 BFD 库的兼容性。
-
漏洞修复:auto/cc:使用可移植的
command -v代替which。感谢 Zurab Kvachadze。
njs 0.9.5 版本变更
发布日期:2026 年 1 月 13 日
nginx 模块
-
漏洞修复:修复了 qjs 引擎中 js_body_filter 处理多个数据块的问题。
-
漏洞修复:修复了 js_body_filter 在 if 块中
buffer_type的继承问题。此前,当js_body_filter在 if 块中使用时,data 参数接收到的是Buffer类型,而非预期的String类型。 -
漏洞修复:修复了数据不在内存中时 js_body_filter 的问题。此前,当上游数据从 nginx 缓存中分发时,
js_body_filter无法正确处理。 -
漏洞修复:改进了 r.subrequest() 的错误处理。修复了当发起
r.subrequest()的 njs 处理程序被 lua 处理程序作为子请求调用时,写事件丢失的问题。
核心
-
漏洞修复:修复了
XMLAttr对象。当父级XMLNode被修改时,指向xmlAttr的指针可能会失效。 -
漏洞修复:修复了
XMLNode的更新逻辑。 -
漏洞修复:修复了涉及分离缓冲区的
ArrayBuffer问题。 -
漏洞修复:增加了缺失的已分离数组检查。
-
漏洞修复:修复了 fs.mkdir() 及其相关函数。
-
漏洞修复:修复了发生错误时 fs.mkdir() 及其相关函数的路径恢复问题。
-
漏洞修复:修复了 promise 代码中缺失的分配检查。
njs 0.9.4 版本变更
发布日期:2025 年 10 月 28 日
nginx 模块
-
特性:为 ngx.fetch() API 增加了 HTTP 正向代理支持。
核心
-
漏洞修复:修复了 QuickJS 中指向带有 JS 处理程序的 location 的 r.subrequest() 问题。该 Bug 在 bellard/quickjs@42eb2795 提交后显现。
njs 0.9.3 版本变更
发布日期:2025 年 10 月 7 日
nginx 模块
-
漏洞修复:修复了模块加载期间的堆使用后释放(heap-use-after-free)问题。
-
漏洞修复:修复了日志阶段使用的
js_set处理程序中的堆使用后释放问题。该问题是在 04f6dfb (0.9.2) 中引入的。
njs 0.9.2 版本变更
发布日期:2025 年 9 月 23 日
nginx 模块
-
特性:为
ngx.fetch()API 增加了 HTTP keepalive 支持。 -
漏洞修复:修复了在 ngx_http_ssl_module 和 ngx_stream_ssl_module 模块不可用时的构建问题。
核心
-
变更:将 njs 虚拟机的默认堆栈大小增加到 160k。
-
特性:为 qjs 引擎增加了
njs.on('exit')API。 -
改进:优化了 qjs 中流式处理时的内存消耗。
-
漏洞修复:修复了使用 clang 19 构建 qjs 引擎的问题。
-
漏洞修复:修复了使用 GCC 15 和 O3 优化级别进行构建的问题。
njs 0.9.1 版本变更
发布日期:2025 年 7 月 10 日
nginx 模块
-
特性:为 共享字典 增加了状态文件。
-
漏洞修复:修复了 Fetch API 中提供请求体时对 Content-Length 头的处理。
-
漏洞修复:修复了 qjs 引擎在 bellard/quickjs@458c34d2 之后的问题。
-
漏洞修复:修复了处理
If-Match和If-Unmodified-Since头时的 NULL 指针解引用问题。
核心
-
特性:增加了 WebCrypto 的 ECDH 支持。
-
改进:减少了对象哈希占用的内存。新的哈希算法每个元素减少了 42% 的内存占用。
-
改进:减少了数字和字符串拼接的内存消耗。
-
改进:减少了
String.prototype.concat()处理标量值时的内存消耗。 -
漏洞修复:修复了
njs_property_query()中的段错误。该问题是在 b28e50b1 (0.9.0) 中引入的。 -
漏洞修复:修复了 Function 构造函数模板注入。
-
漏洞修复:修复了 O3 优化级别下的 GCC 编译。
-
漏洞修复:修复了 MIPS
-mabi=n32下constant is too large的 'long' 类型警告。 -
漏洞修复:修复了 GCC 4.1 的编译问题。
-
漏洞修复:修复了
%TypedArray%.from()在缓冲区被映射器分离时的问题。 -
漏洞修复:修复了
%TypedArray%.prototype.slice()处理重叠缓冲区的问题。 -
漏洞修复:修复了对类型数组中分离缓冲区的处理。
-
漏洞修复:修复了带有闭包的异步函数的帧保存问题。
-
漏洞修复:修复了带有转义 '[' 字符的 RegExp 模式编译问题。
njs 0.9.0 版本变更
发布日期:2025 年 5 月 6 日
核心
-
特性:重构了对内置字符串、符号和小整数的处理。性能提升(arewefastyet/benchmarks/v8-v7 基准测试)
-
Richards: +57% (631 → 989)
-
Crypto: +7% (1445 → 1551)
-
RayTrace: +37% (562 → 772)
-
NavierStokes: +20% (2062 → 2465)
-
总体得分: +29% (1014 → 1307)
-
-
漏洞修复:修复了
RegExp.prototype[Symbol.split]()中捕获组 undefined 值的处理。 -
漏洞修复:修复了
GCC 15下使用-Wunterminated-string-initialization导致的构建错误。
njs 0.8.10 版本变更
发布日期:2025 年 4 月 8 日
nginx 模块
-
特性:支持从临时文件读取
r.requestText或r.requestBuffer。此前,如果客户端请求体大小超过client_body_buffer_size,访问这些属性会抛出异常。 -
改进:改进了未处理 promise 拒绝的报告方式。
-
漏洞修复:修复了变量和头处理中的名称损坏问题。
-
漏洞修复:修复了 QuickJS 引擎中对带有空 init 参数的共享字典的
incr()方法。 -
漏洞修复:在 Fetch API 中接受包含下划线字符的响应头。
核心
-
变更:修复了
serializeToString()。此前,serializeToString()实际上是exclusiveC14n(),它返回字符串而不是 Buffer。根据已发布的文档,它应该是c14n()。 -
特性:为 QuickJS 引擎增加了
TextEncoder和TextDecoder。 -
特性:为 QuickJS 引擎增加了
querystring模块。 -
特性:增加了对
QuickJS-NG库的支持。 -
漏洞修复:修复了 QuickJS 中带有单个参数的
Buffer.concat()。 -
漏洞修复:为模板字面量中的
await增加了缺失的语法错误检查。 -
漏洞修复:修复了 QuickJS 引擎异常中非 NULL 终止字符串的格式化问题。
-
漏洞修复:修复了与 QuickJS 和
QuickJS-NG近期变更的兼容性。
njs 0.8.9 版本变更
发布日期:2025 年 1 月 14 日
nginx 模块
-
漏洞修复:移除了每个服务器额外的 VM 创建。此前,当
js_import在 http 或 stream 块中声明时,每个 server 块都会创建一个额外的 VM 实例副本。这不仅是不必要的,还会导致拥有许多 server 块的配置消耗大量内存。该问题在 0.8.6 中引入,并在 0.8.7 中仅针对 location 块进行了部分修复。
核心
njs 0.8.8 版本变更
发布日期:2024 年 12 月 10 日
nginx 模块
-
改进:重构了 js_preload_object。
-
漏洞修复:修复了限速输出。
-
漏洞修复:优化了 js_fetch_trusted_certificate 指令的 SSL 上下文使用。
核心
-
特性:为 QuickJS 引擎实现了 process 对象。
-
特性:实现了 process.kill() 方法。
-
漏洞修复:修复了与 libxml2 2.13 及更高版本相关的 XML 测试问题。
-
漏洞修复:修复了 Promise 继承时的解析问题。
-
漏洞修复:修复了克隆 VM 中的绝对作用域。
njs 0.8.7 版本变更
发布日期:2024 年 10 月 22 日
nginx 模块
-
漏洞修复:消除了不必要的 VM 创建。此前,njs 消耗的内存与 nginx location 的数量成正比。该问题在 0.8.6 中引入。
-
改进:为 js_body_filter 增加了严格的语法验证。
-
改进:改进了模块加载失败时的错误信息。
核心
-
特性:实现了
fs.readlinkSync()。 -
改进:实现了惰性堆栈符号化。
-
漏洞修复:修复了
Buffer.prototype.indexOf()中的堆缓冲区溢出。该问题在 0.8.6 中引入。 -
漏洞修复:修复了在提供 `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模块。 -
漏洞修复:修复了函数中空标签语句的处理。
-
漏洞修复:修复了在无参数调用时的
Function构造函数处理。 -
漏洞修复:修复了
Buffer.prototype.writeInt8()及其相关函数。 -
漏洞修复:修复了
Buffer.prototype.writeFloat()及其相关函数。 -
漏洞修复:修复了
Buffer.prototype.lastIndexOf()。 -
漏洞修复:修复了
Buffer.prototype.write()。 -
漏洞修复:修复了错误创建中的未初始化变量警告。
-
漏洞修复:修复了 UTF-8 解码中
ctx.codepoint的初始化。 -
漏洞修复:修复了
Array.prototype.pop()中length的初始化。 -
漏洞修复:修复了
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。
-
-
漏洞修复:修复了对重复
js_set变量的检查。 -
漏洞修复:修复了端口为非标准端口时的请求
Host头。 -
漏洞修复:修复了
ngx.fetch()和r.subrequest()中对零长度请求体的处理。 -
漏洞修复:修复了
Headers.get()中的堆缓冲区溢出。 -
漏洞修复:修复了
r.subrequest()的错误处理。
核心
-
特性:为
QuickJS引擎增加了zlib模块。 -
漏洞修复:修复了
zlib.inflate()。 -
漏洞修复:修复了带有零长度参数的
String.prototype.replaceAll()。 -
漏洞修复:修复了
Array.prototype.toSpliced(),Array.prototype.toReversed(),Array.prototype.toSorted()在异常后的retval处理。 -
漏洞修复:修复了带有
$',$`以及包含 Unicode 字符字符串的RegExp.prototype[@@replace]()。 -
漏洞修复:修复了
decodeURI()和decodeURIComponent()中一个字节的过读问题。 -
漏洞修复:修复了参数作用域的追踪。
-
漏洞修复:修复了
Date.parse()中的整数溢出。
njs 0.8.4 版本变更
发布日期:2024 年 4 月 16 日
nginx 模块
-
特性:可以设置外发头的
Server头。 -
改进:对
r.subrequest()中的 URI 和 args 参数进行验证。 -
改进:检查重复的 js_set 变量。
-
漏洞修复:修复了带
Buffer参数且无超时的共享字典r.send()方法。
核心
-
特性:在 CLI 中增加了
QuickJS引擎支持。 -
漏洞修复:修复了带有非填充
base64字符串的atob()。
njs 0.8.3 版本变更
发布日期:2024 年 2 月 7 日
nginx 模块
-
漏洞修复:修复了
Headers.set()。 -
漏洞修复:修复了带
Buffer值的 js_set。 -
漏洞修复:修复了未指定超时时的共享字典
clear()方法。 -
漏洞修复:修复了当启用 js_periodic 时的 stub_status 统计信息。
核心
-
漏洞修复:修复了与 libxml2 2.12 及更高版本的构建问题。
-
漏洞修复:修复了
Date构造函数的溢出和NaN值问题。 -
漏洞修复:修复了
querystring.parse()中的下溢问题。 -
漏洞修复:修复了
String.prototype.match()中的潜在缓冲区过读。 -
漏洞修复:修复了
for-in循环的解析。 -
漏洞修复:修复了十六进制、八进制和二进制字面量无数字时的解析。
njs 0.8.2 版本变更
发布日期:2023 年 10 月 24 日
nginx 模块
-
特性:引入了 console 对象。引入了以下方法:
error(),info(),log(),time(),timeEnd(),warn()。 -
漏洞修复:修复了 Fetch API 中处理大 Content-Length 的
HEAD响应。 -
漏洞修复:修复了共享字典的
items()方法。 -
漏洞修复:修复了共享字典的
delete()方法。
核心
-
特性:扩展了
fs模块。增加了fs.existsSync()。 -
漏洞修复:修复了
xml模块。修复了xml.parse()方法中损坏的 XML 异常处理。 -
漏洞修复:修复了全局 regexp 和 Unicode 输入下的
Regexp.prototype.exec()。
njs 0.8.1 版本变更
发布日期:2023 年 9 月 12 日
nginx 模块
-
漏洞修复:修复了 0.8.0 中引入的
r.internalRedirect()中的错误异常。
核心
-
漏洞修复:修复了
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。 -
特性:引入了
js_shared_dict_zone指令,用于 http 和 stream,允许声明工作进程间共享的字典。 -
特性:引入了全局
nginx.shared方法和属性,用于操作共享字典。 -
改进:增加了禁用 njs 模块的编译时选项。例如,禁用 libxslt 相关代码。
NJS_LIBXSLT=NO ./configure .. --add-module=/path/to/njs/module
-
漏洞修复:修复了
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。 -
漏洞修复:修复了
сrypto.getRandomValues()的retval。 -
漏洞修复:修复了带有函数表达式的计算属性名的评估。
-
漏洞修复:修复了数组中声明的函数表达式的隐式名称。
-
漏洞修复:修复了
for-in循环的解析。 -
漏洞修复:修复了带有 ISO-8601 格式和 UTC 时间偏移的
Date.parse()。
njs 0.7.12 版本变更
发布日期:2023 年 4 月 10 日
nginx 模块
-
漏洞修复:修复了 Fetch API 中的
Headers()构造函数。
核心
-
特性:在 crypto 模块中增加了
Hash.copy()方法。 -
特性:增加了 zlib 模块。
-
改进:增加了对
export {name as default}语句的支持。 -
漏洞修复:根据规范修复了
Number构造函数。
njs 0.7.11 版本变更
发布日期:2023 年 3 月 9 日
nginx 模块
核心
-
特性:增加了 XMLNode API 以修改 XML 文档。
-
变更:由于安全原因,在解析 XML 文档时移除了
XML_PARSE_DTDVALID。该问题在 0.7.10 中引入。启用XML_PARSE_DTDVALID时,libxml2 会解析并执行 XML 文档中存在的外部实体。 -
漏洞修复:修复了参数中
await的检测。 -
漏洞修复:修复了当 “
name” 属性非原始值时Error()实例的转储。 -
漏洞修复:修复了带有
getter属性的数组实例的转储。 -
漏洞修复:修复了带有
NJS_WHITEOUT属性的njs_object_property()。 -
漏洞修复:修复了以 “
name” 作为 getter 的func实例转储。 -
漏洞修复:修复了向错误对象附加堆栈的问题。
-
漏洞修复:修复了替换字符串中包含 “
$'”, “$`” 的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()。 -
漏洞修复:修复了
for(expr1;条件语法错误处理。 -
漏洞修复:修复了带有外部对象的
Object.values()和Object.entries()。 -
漏洞修复:修复了
RegExp.prototype[@@replace]()。
njs 0.7.9 版本变更
发布日期:2022 年 11 月 17 日
nginx 模块
-
漏洞修复:修复了
FetchResponse 原型重新初始化。当 HTTP 和 Stream 中至少声明了一个js_import指令时,ngx.fetch()在 Stream 中返回了不适当的响应。该 Bug 在 0.7.7 中引入。
核心
-
漏洞修复:修复了当
re.exec()返回非平面数组时的String.prototype.replace(re)。 -
漏洞修复:修复了当
start对象更改this时的Array.prototype.fill()。 -
漏洞修复:修复了
fs.mkdir()和fs.rmdir()方法的描述。 -
漏洞修复:修复了当
s元素更改this时的%TypedArray%.prototype.set(s)。 -
漏洞修复:修复了在评估期间
d调整this大小时的Array.prototype.splice(s,d)。 -
漏洞修复:修复了具有左手侧和右手侧表达式的
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对象。 -
漏洞修复:修复了 Unicode 字符串的
String.prototype.trimEnd()。 -
漏洞修复:修复了快速数组的
Object.freeze()。 -
漏洞修复:修复了快速数组的
Object.defineProperty()。 -
漏洞修复:修复了作为对象属性名的
async标记。 -
漏洞修复:修复了键修改基础绑定时的属性设置指令。
-
漏洞修复:修复了复杂赋值。
-
漏洞修复:修复了未处理 promise 拒绝的处理。
-
漏洞修复:修复了存在重复 environ 变量时的 process.env。
-
漏洞修复:修复了模块中的重复声明检测。
-
漏洞修复:根据规范修复了绑定函数调用。
-
漏洞修复:修复了
if语句的 break 标签。 -
漏洞修复:修复了标记的空语句。
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 上下文中配置。 -
Stream: js_import, js_path, js_set, 和 js_var 允许在
server上下文中使用。
-
-
特性:增加了
r.internal属性。 -
漏洞修复:修复了 Fetch API 中的响应体读取问题。
-
漏洞修复:修复了 stream 中的 js_fetch_timeout。
-
漏洞修复:修复了
0获取超时导致的 socket 泄漏。
核心
-
特性:扩展了
fs模块。增加了fs.openSync(),fs.promises.open(),fs.fstatSync(),fs.readSync(),fs.writeSync()。实现了
FileHandle的以下属性:fd,read(),stat(),write(),close()。 -
漏洞修复:修复了无参数时的
parseInt(),parseFloat(),Symbol.for()。
njs 0.7.6 版本变更
发布日期:2022 年 7 月 19 日
nginx 模块
-
特性:改进了
r.args{}对象。增加了对具有相同键的多个参数的支持。增加了键的大小写敏感性。键和值现在进行了百分比解码。 -
漏洞修复:修复了特殊头的
r.headersOut{}设置器。
核心
-
特性:增加了
Symbol.for()和Symbol.keyfor()。 -
漏洞修复:修复了大非十进制字面量。
-
漏洞修复:修复了
parseInt()中的 Unicode 参数修剪。 -
漏洞修复:修复了
try-catch块中的break指令。 -
漏洞修复:修复了 CLI 中的
async函数声明。
njs 0.7.5 版本变更
发布日期:2022 年 6 月 21 日
nginx 模块
-
变更:适配 nginx 头结构的变更。
-
漏洞修复:修复了值不存在时
r.headersOut{}特殊获取器的问题。 -
变更:当 Content-Type 头不存在时返回 undefined 而非空字符串。
核心
-
漏洞修复:修复了从 await 函数抛出异常的捕获。
-
漏洞修复:修复了函数值初始化。
-
漏洞修复:修复了 await 失败时的解释器。
-
漏洞修复:修复了遍历期间源数组更改时的类型数组构造函数。
-
漏洞修复:修复了字节字符串的
String.prototype.replace()。 -
漏洞修复:修复了产生字节字符串的模板字面量。
-
漏洞修复:修复了稀疏数组的数组迭代器。
-
漏洞修复:修复了将平面数组转换为慢数组时的内存释放。
-
漏洞修复:在
promise原生函数中正确处理NJS_DECLINE。 -
漏洞修复:修复了
Promise.all()及其相关函数中类数组对象的使用。
njs 0.7.4 版本变更
发布日期:2022 年 5 月 24 日
nginx 模块
-
特性:增加了用于配置 Fetch API 的扩展指令。为 http 和 stream 添加了以下指令:
-
变更:
r.internalRedirect()现在接受转义的 URI。
核心
-
特性:增加了
njs.version_number属性。 -
特性:增加了 WebCrypto API 与 BoringSSL 的兼容性。
-
漏洞修复:修复了比较器中数组大小更改时的
Array.prototype.sort()。 -
漏洞修复:修复了慢
this参数的Array.prototype.slice()。 -
漏洞修复:修复了类数组对象的
Promise构造函数聚合方法。 -
漏洞修复:修复了以 Unicode 字符串为
this的String.prototype.lastIndexOf()。 -
漏洞修复:修复了提供
reviver函数时的JSON.parse()。 -
漏洞修复:修复了提供递归描述符时的
Object.defineProperty()。 -
漏洞修复:修复了类型数组的
Array.prototype.fill()。 -
漏洞修复:根据规范使函数表达式绑定不可变。
-
漏洞修复:修复了
Object.defineProperty()中特殊属性的重定义。
njs 0.7.3 版本变更
发布日期:2022 年 4 月 12 日
核心
-
特性:增加了模块解析回调支持。此特性允许宿主环境控制如何加载导入的模块。
-
漏洞修复:修复了遍历导入的用户模块时的回溯。
-
漏洞修复:修复了
this为慢数组时的Array.prototype.concat()。 -
漏洞修复:修复了从 await 帧进行帧分配。
-
漏洞修复:修复了大数组字面量的分配。
-
漏洞修复:修复了
toString转换失败时的解释器。
njs 0.7.2 版本变更
发布日期:2022 年 1 月 25 日
核心
-
漏洞修复:修复了迭代期间数组更改时的
Array.prototype.join()。 -
漏洞修复:修复了迭代期间数组更改时的
Array.prototype.slice()。 -
漏洞修复:修复了迭代期间数组更改时的
Array.prototype.concat()。 -
漏洞修复:修复了迭代期间数组更改时的
Array.prototype.reverse()。 -
漏洞修复:修复了带子数组的
Buffer.concat()。感谢 Sylvain Etienne。 -
漏洞修复:修复了 promise 解析期间的类型混淆 Bug。
-
漏洞修复:修复了带大数组参数的
Function.prototype.apply()。 -
漏洞修复:修复了递归
async函数调用。 -
漏洞修复:修复了函数重声明。该 Bug 在 0.7.0 中引入。
njs 0.7.1 版本变更
发布日期:2021 年 12 月 28 日
nginx 模块
-
变更:移除了自 0.4.0 起弃用的 js_include 指令。
-
变更:将 PCRE/PCRE2 相关代码移动到模块中。这确保了 njs 使用与 nginx 相同的 RegExp 库。
核心
-
漏洞修复:修复了带无效字节字符串的
decodeURI()和decodeURIComponent()。该 Bug 在 0.4.3 中引入。 -
漏洞修复:修复了
await帧中的堆使用后释放问题。该 Bug 在 0.7.0 中引入。 -
漏洞修复:修复了 OpenSSL 3.0 的 WebCrypto
sign()和verify()方法。 -
漏洞修复:修复了 RegExp 匹配失败时抛出异常的问题。该 Bug 在 0.1.15 中引入。
-
漏洞修复:修复了
async函数try块中抛出异常的捕获。该 Bug 在 0.7.0 中引入。 -
漏洞修复:修复了同步上下文中
async函数的执行。该 Bug 在 0.7.0 中引入。 -
漏洞修复:修复了交互模式开启时 CLI 中的函数重声明。该 Bug 在 0.6.2 中引入。
-
漏洞修复:修复了
DataView对象的typeof运算符。 -
漏洞修复:消除了
Buffer.from()中的信息泄漏。
njs 0.7.0 版本变更
发布日期:2021 年 10 月 19 日
nginx 模块
核心
-
特性:引入了
Async/Await实现。 -
特性:增加了 WebCrypto API 实现。
-
漏洞修复:修复了已声明函数的闭包复制问题。该 Bug 在 0.6.0 中引入。
-
漏洞修复:修复了处理事件中未处理的
promise拒绝。 -
漏洞修复:修复了 Fetch API 中的 Response.headers 获取器。
njs 0.6.2 版本变更
发布日期:2021 年 8 月 31 日
nginx 模块
-
漏洞修复:修复了当
js_filter在两个方向上注册时的 CPU 高占用问题。
核心
-
特性:引入了
AggregateError实现。 -
特性:增加了其余的
Promise构造函数方法。添加了以下方法:Promise.all(),Promise.allSettled(),Promise.any(),Promise.race()。 -
改进:从代码生成器中移除了递归。
-
漏洞修复:修复了无绑定标识符的 rest 参数解析。
-
漏洞修复:修复了
Promise.prototype.finally()的解析/拒绝回调。 -
漏洞修复:修复了带分离缓冲区的
%TypedArray%.prototype.join()。 -
漏洞修复:修复了交互式 shell 中的内存泄漏。
njs 0.6.1 版本变更
发布日期:2021 年 6 月 29 日
-
漏洞修复:修复了仅 UTF-8 正则表达式的
RegExpBuiltinExec()。该 Bug 在 0.4.2 中引入。 -
漏洞修复:修复了带非赋值表达式的 export default 声明解析。感谢 Artem S. Povalyukhin。
njs 0.6.0 版本变更
发布日期:2021 年 6 月 15 日
核心
-
特性:增加了
let和const声明支持。 -
特性:增加了
RegExp.prototype[Symbol.split]。 -
特性:增加了 RegExp 的 sticky 标志支持。
-
漏洞修复:修复了
String.prototype.lastIndexOf()中的堆缓冲区溢出。 -
漏洞修复:根据规范修复了
RegExp.prototype.test()。 -
漏洞修复:根据规范修复了
String.prototype.split()。 -
漏洞修复:修复了追踪拒绝的 promises 时的未初始化值使用。
-
漏洞修复:修复了带有循环引用的对象的
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) 回调支持。 -
漏洞修复:修复了不可扩展对象的属性描述符复用。感谢 Artem S. Povalyukhin。
-
漏洞修复:根据规范修复了
Object.freeze()及其相关函数。感谢 Artem S. Povalyukhin。 -
漏洞修复:修复了 CLI 模式下的
Function()。 -
漏洞修复:修复了类型数组值的
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指令。 -
漏洞修复:修复了 stream 模块中主体过滤器对缓冲数据的处理。
核心
-
漏洞修复:修复了
Function构造函数中的安全模式绕过。 -
漏洞修复:修复了带无效日期值的
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(upload),downstream(download)。
-
-
改进:为现有属性添加了别名。
增加了以下属性
-
改进:在
r.internalRedirect()中为子请求抛出异常。 -
漏洞修复:修复了带有
error_page重定向的 promiser.subrequest()。 -
漏洞修复:修复了
promise事件处理。
核心
-
特性:增加了内置模块的
TypeScript定义。感谢 Jakub Jirutka。 -
特性:跟踪未处理的
promise拒绝。 -
特性:增加了初始迭代器支持。感谢 Artem S. Povalyukhin。
-
改进:重构了
TypeScript定义。感谢 Jakub Jirutka。 -
改进:为
Buffer.from()增加了遗忘的Object.prototype.valueOf()支持。 -
漏洞修复:修复了
JSON.parse()中的堆使用后释放问题。 -
漏洞修复:修复了
JSON.stringify()中的堆使用后释放问题。 -
漏洞修复:修复了通过 getters 可调整大小的数组的
JSON.stringify()。 -
漏洞修复:修复了
RegExp.prototype[Symbol.replace]的堆缓冲区溢出。 -
漏洞修复:修复了
Buffer.prototype.write*函数的返回值。 -
漏洞修复:修复了
querystring.stringify()。感谢 Artem S. Povalyukhin。 -
漏洞修复:修复了
Promise.prototype.finally()的 catch 处理程序。 -
漏洞修复:修复了
querystring.parse()。
njs 0.4.4 版本变更
发布日期:2020 年 9 月 29 日
nginx 模块
-
漏洞修复:修复了 location 合并。
-
漏洞修复:修复了 HTTP/2 的
r.httpVersion。
核心
-
特性:增加了对数字分隔符(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实例而非字节字符串。 -
变更:当未提供编码时,
fs.readFile()及其相关函数现在返回Buffer实例而非字节字符串。 -
漏洞修复:修复了设置函数
prototype属性处理程序时的问题。 -
漏洞修复:修复了设置函数
constructor属性处理程序时的问题。 -
漏洞修复:修复了字节字符串的
String.prototype.indexOf()。 -
漏洞修复:修复了带有全局标志和字节字符串的
RegExpBuiltinExec()。 -
漏洞修复:修复了替换值为函数时的
RegExp.prototype[Symbol.replace]。 -
漏洞修复:修复了带有非零
TypedArray偏移量的TextDecoder.prototype.decode()。
njs 0.4.3 版本变更
发布日期:2020 年 8 月 11 日
核心
-
特性:增加了
Query String模块。 -
特性:改进了
fs.mkdir()以支持递归目录创建。感谢 Artem S. Povalyukhin。 -
特性:改进了
fs.rmdir()以支持递归目录删除。感谢 Artem S. Povalyukhin。 -
特性:引入了符合 WHATWG 编码规范的 UTF-8 解码器。
-
特性:增加了
TextDecoder()和TextEncoder()实现。 -
漏洞修复:修复了无分号返回语句的解析。
-
漏洞修复:修复了大端序平台的
njs_number_to_int32()。 -
漏洞修复:修复了大端序平台上的单元测试。
-
漏洞修复:修复了带有 “
=” 字符的 regexp 字面量解析。 -
漏洞修复:修复了赋值操作中的前/后递增/递减。
njs 0.4.2 版本变更
发布日期:2020 年 7 月 7 日
核心
-
特性:增加了
RegExp.prototype[Symbol.replace]。 -
特性:引入了行级回溯。
-
特性:增加了
%TypedArray%.prototype.sort()。 -
改进:解析器重构。
-
漏洞修复:修复了 HTTP 头的 TypedScript API 描述。
-
漏洞修复:修复了
NjsByteString类型的 TypedScript API 描述。 -
漏洞修复:根据规范修复了
String.prototype.repeat()。 -
漏洞修复:根据规范修复了
String.prototype.replace()。 -
漏洞修复:修复了 regexp 字面量标志的解析。
-
漏洞修复:修复了生成器中全局对象的索引生成。
-
漏洞修复:修复了带有非零字节偏移量的
%TypedArray%.prototype.copyWithin()。 -
漏洞修复:修复了稀疏数组的
Array.prototype.splice()。 -
漏洞修复:修复了稀疏数组的
Array.prototype.reverse()。 -
漏洞修复:修复了稀疏数组的
Array.prototype.sort()。
njs 0.4.1 版本变更
发布日期:2020 年 5 月 19 日
nginx 模块
-
特性:增加了
r.headersIn{}中多值头的支持。 -
特性:引入了
raw headersAPI:r.rawHeadersIn[]和r.rawHeadersOut[]。 -
特性:增加了 TypeScript API 描述。
核心
-
漏洞修复:修复了稀疏数组的
Array.prototype.slice()。
njs 0.4.0 版本变更
发布日期:2020 年 4 月 23 日
nginx 模块
-
特性:增加了
r.headersOut{}中多值头的支持。 -
改进:改进了对特殊头的
r.headersOut{}的迭代。 -
改进:改进了对重复头的
r.headersOut{}的迭代。 -
变更:如果响应体不可用,
r.responseBody属性处理程序现在返回undefined,而不是抛出异常。
核心
-
特性:在 CLI 中增加了脚本参数支持。
-
特性:将外部值转换为原生 js 对象。
-
漏洞修复:修复了
__proto__属性处理程序中的 NULL 指针解引用。 -
漏洞修复:修复了脚本末尾无换行符的处理。
-
漏洞修复:修复了带有空模式和非空标志的
RegExp()构造函数。 -
漏洞修复:修复了函数返回非字符串时的
String.prototype.replace()。 -
漏洞修复:修复了
fs中伪文件的读取。
njs 0.3.9 版本变更
发布日期:2020 年 3 月 3 日
nginx 模块
-
特性:为
r.subrequest()增加了分离模式。分离子请求的响应将被忽略。与普通子请求不同,分离的子请求可以在变量处理程序内部创建。
核心
-
特性:为
fs模块增加了promisesAPI。感谢 Artem S. Povalyukhin。 -
特性:扩展了
fs模块。增加了access(),symlink(),unlink(),realpath()及其相关函数。感谢 Artem S. Povalyukhin。 -
改进:引入了内存高效的普通数组。
-
改进:词法分析器重构。
-
漏洞修复:修复了回溯中原生函数的匹配。
-
漏洞修复:修复了
fs模块中的回调调用。感谢 Artem S. Povalyukhin。 -
漏洞修复:修复了
Object.getOwnPropertySymbols()。 -
漏洞修复:修复了
njs_json_append_string()中的堆缓冲区溢出。 -
漏洞修复:根据规范修复了
encodeURI()和decodeURI()。 -
漏洞修复:修复了
Number.prototype.toPrecision()。 -
漏洞修复:修复了
JSON.stringify()中 space 参数的处理。 -
漏洞修复:修复了带有
Number()和String()对象的JSON.stringify()。 -
漏洞修复:根据规范修复了
JSON.stringify()中的 Unicode 转义。 -
漏洞修复:修复了非原生模块导入。感谢 洪志道 (Hong Zhi Dao)。
-
漏洞修复:修复了容器中带有
Date()实例的njs.dump()。
njs 0.3.8 版本变更
发布日期:2020 年 1 月 21 日
nginx 模块
-
特性:为
r.subrequest()增加了Promise支持。如果未提供回调,r.subrequest()返回一个普通的Promise对象,解析为子请求响应对象。 -
变更:如果父对象不可用,
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()增加了外部支持。 -
特性:增加了
Object.is()。感谢 Artem S. Povalyukhin。 -
特性:增加了
Object.setPrototypeOf()。感谢 Artem S. Povalyukhin。 -
特性:引入了空值合并运算符。
-
漏洞修复:根据规范修复了
Object.getPrototypeOf()。 -
漏洞修复:根据规范修复了
Object.prototype.valueOf()。 -
漏洞修复:修复了带有不可打印值和 replacer 函数的
JSON.stringify()。 -
漏洞修复:根据规范修复了
in运算符。 -
漏洞修复:根据规范修复了
Object.defineProperties()。 -
漏洞修复:根据规范修复了
Object.create()。感谢 Artem S. Povalyukhin。 -
漏洞修复:修复了启用快数学时
Number.prototype.toString(radix)的问题。 -
漏洞修复:修复了
RegExp()实例属性。 -
漏洞修复:修复了导入段错误。感谢 洪志道 (Hong Zhi Dao)。
njs 0.3.7 版本变更
发布日期:2019 年 11 月 19 日
nginx 模块
-
改进:重构了外部对象的迭代。
核心
-
特性:增加了
Object.assign()。 -
特性:增加了
Array.prototype.copyWithin()。 -
特性:为
console.time()增加了标签支持。 -
变更:从 CLI 中移除了
console.help()。 -
改进:将构造函数和顶级对象移动到全局对象。
-
改进:配置脚本的参数验证。
-
改进:重构了 JSON 方法。
-
漏洞修复:修复了
njs_array_reverse_iterator()函数中的堆缓冲区溢出。以下函数受到影响:Array.prototype.lastIndexOf(),Array.prototype.reduceRight()。 -
漏洞修复:修复了
NativeErrors的[[Prototype]]插槽。 -
漏洞修复:修复了
NativeError.prototype.message属性。 -
漏洞修复:在
Array.prototype函数中增加了this值到对象的转换。 -
漏洞修复:修复了
Array.prototype.find()和Array.prototype.findIndex()函数的迭代器。 -
漏洞修复:修复了带
undefined参数的Array.prototype.includes()和Array.prototype.join()。 -
漏洞修复:修复了
Hash和Hmac对象的constructor属性。 -
漏洞修复:修复了 getters 和 setters 的
__proto__属性。 -
漏洞修复:修复了
Date对象字符串格式化。 -
漏洞修复:修复了
Math.min()和Math.max()中NaN和-0参数的处理。 -
漏洞修复:根据规范修复了
Math.round()。 -
漏洞修复:根据规范重新实现了
bound函数。
njs 0.3.6 版本变更
发布日期:2019 年 10 月 22 日
nginx 模块
-
改进:从
r.headersIn{}获取特殊头。
核心
-
特性:增加了新的
Function()支持。 -
特性:增加了
Number.prototype.toFixed()。 -
特性:增加了
Number.prototype.toPrecision()。 -
特性:增加了
Number.prototype.toExponential()。 -
改进:使函数实例的
prototype属性可写。 -
改进:编译时限制递归深度。
-
改进:将全局函数移动到全局对象。
-
漏洞修复:修复了对象字面量的原型变异。
-
漏洞修复:修复了解析 regexp 字面量时的堆缓冲区溢出。
-
漏洞修复:修复了解析数字字面量指数时的整数溢出。
-
漏洞修复:修复了
parseFloat()。 -
漏洞修复:根据规范修复了
Array.prototype函数。修复了以下函数:every,includes,indexOf,filter,find,findIndex,forEach,lastIndexOf,map,pop,push,reduce,reduceRight,shift,some,unshift。 -
漏洞修复:修复了
Object.freeze()中访问器描述符的处理。 -
漏洞修复:修复了第一个参数非字符串时的
String.prototype.replace()。 -
漏洞修复:修复了
Array.prototype.map()中的 stack-use-after-scope。 -
漏洞修复:
Date.prototype.toUTCString()格式与 ES9 对齐。 -
漏洞修复:修复了
Number.prototype.toString(radix)中的缓冲区溢出。 -
漏洞修复:修复了带有反向引用的 regexps 的
Regexp.prototype.test()。 -
漏洞修复:修复了带有不存在值的对象的
Array.prototype.map()。 -
漏洞修复:修复了稀疏对象的
Array.prototype.pop()和shift()。 -
漏洞修复:根据规范修复了
Date.UTC()。 -
漏洞修复:根据规范修复了
Date()构造函数。 -
漏洞修复:修复了
Date.prototype的类型。感谢 Artem S. Povalyukhin。 -
漏洞修复:修复了
Date.prototype.setTime()。感谢 Artem S. Povalyukhin。 -
漏洞修复:修复了内置函数预期的默认参数数量。
-
漏洞修复:修复了函数实例的
caller和arguments属性。感谢 Artem S. Povalyukhin。
njs 0.3.5 版本变更
发布日期:2019 年 8 月 15 日
核心
-
漏洞修复:修复了使用
require()的模块导入。该 Bug 在 0.3.4 中引入。 -
漏洞修复:修复了
[[SetPrototypeOf]]。
njs 0.3.4 版本变更
发布日期:2019 年 8 月 13 日
核心
-
特性:增加了
Object简写方法和计算属性名。感谢 洪志道 (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 验证。
-
修复:修复了
fs.readFileSync()读取零大小文件的问题。 -
修复:扩展了
String.prototype.trim()中的空格分隔符列表。 -
修复:修复了
String.prototype.padStart()中使用未初始化值的问题。 -
修复:修复了
String.prototype.replace()对$0和$&替换字符串的处理。 -
修复:修复了
String.prototype.replace()在字节字符串中使用正则表达式参数的问题。 -
修复:修复了
String.prototype.replace()在使用正则表达式参数时的全局匹配问题。 -
修复:修复了
Array.prototype.slice()处理原始类型的问题。 -
修复:修复了导入模块时的堆缓冲区溢出问题。
-
修复:修复了 UTF-8 字符转义问题。
-
修复:修复了
Object.values()和Object.entries()对共享对象的处理。 -
修复:修复了
String.prototype.match()中访问未初始化内存的问题。 -
修复:修复了
String.prototype.match()在字节字符串中使用正则表达式参数的问题。 -
修复:修复了
Array.prototype.lastIndexOf()在参数为 undefined 时的处理。 -
修复:修复了
String.prototype.substring()处理空子字符串的问题。 -
修复:修复了
String.prototype.substring()中的无效内存访问问题。 -
修复:修复了
String.fromCharCode()处理大于65535的码点及NaN的问题。 -
修复:修复了
String.prototype.toLowerCase()和String.prototype.toUpperCase()。 -
修复:修复了无参数的
Error()构造函数。 -
修复:修复了具有访问器描述符的值的
in运算符。 -
修复:修复了
Object.defineProperty()对非布尔描述符属性的处理。 -
修复:修复了
Error.prototype.toString()处理 UTF8 字符串属性的问题。 -
修复:修复了
Error.prototype.toString()在name和message为非字符串值时的处理。
njs 0.3.3 版本变更
发布日期:2019 年 6 月 25 日
nginx 模块
-
改进:在
r.headersOut{}中获取特殊响应头。 -
改进:在
r.subrequest()中处理未知方法。 -
改进:添加了对
r.subrequest()第二个参数为 null 的支持。 -
修复:修复了流主体过滤器中处理空输出链的问题。
核心
-
特性:添加了属性 getter/setter 的运行时支持。感谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。
-
特性:添加了
process全局对象。 -
特性:大多数内置属性和方法现在可写。
-
特性:添加了
Array.prototype.fill()的通用实现。 -
修复:修复了
String.prototype.concat()中的整数溢出问题。 -
修复:修复了对象属性设置问题。
-
修复:修复了
Array.prototype.toString()。 -
修复:修复了
Date.prototype.toJSON()。 -
修复:修复了覆盖内置原型“constructor”属性的问题。
-
修复:修复了字符串中无效代理对的处理。
-
修复:修复了 JSON 字符串中无效代理对的处理。
-
修复:修复了
toUpperCase()和toLowerCase()中的堆缓冲区溢出问题。 -
修复:修复了
RegExp()构造函数中单独右方括号的转义问题。 -
修复:修复了 RegExp 模式字符串内零字节字符的处理。
-
修复:修复了 ASCII 字符串的
String.prototype.toBytes()。 -
修复:修复了
JSON.parse()中 JSON 数字的真值计算。 -
修复:修复了
njs_string_replace_join()中使用未初始化值的问题。 -
修复:修复了
parseInt('-0')。感谢 Artem S. Povalyukhin。
njs 0.3.2 版本变更
发布日期:2019 年 5 月 21 日
核心
-
特性:添加了对模板字面量的支持。感谢 洪志道 (Hong Zhi Dao) 和 Artem S. Povalyukhin。
-
特性:通过命令行参数执行命令。
-
特性:添加了对 RegExp
groups对象 (ES9) 的支持。 -
特性:添加了对块级作用域函数定义的支持。
-
特性:添加了使用 GNU Readline 库进行构建的支持。
-
特性:使
length、name和大多数内置方法可配置。 -
特性:使所有构造函数属性可配置。
-
修复:修复了仅 Unicode 正则表达式的
Regexp.prototype.exec()。 -
修复:修复了空字符串值的
njs_vm_value_dump()。 -
修复:修复了正则表达式值参数的 RegExp 构造函数。
-
修复:修复了对象迭代过程中的原型链遍历。
-
修复:修复了
Array.prototype.concat()中的溢出问题。 -
修复:修复了带转义字符的 UTF-8 字符串的长度计算。
-
修复:修复了作为 UTF-16 转义序列呈现的代理对的解析。
-
修复:修复了
String.prototype.match()对“*”量词的处理。 -
修复:修复了单参数的
Date()构造函数。 -
修复:修复了数组扩展问题。
-
修复:修复了
String.prototype.replace()中的堆缓冲区溢出问题。 -
漏洞修复:修复了
String.prototype.lastIndexOf()中的堆缓冲区溢出。 -
修复:修复了带转义反斜杠和方括号内反斜杠的正则字面量解析。
-
修复:修复了带有单独右方括号的正则字面量。
-
修复:修复了
Object.defineProperties()中的未初始化内存访问。 -
修复:修复了
String.prototype.replace()对“*”量词的处理。 -
修复:修复了针对 UTF8 无效字节字符串的
Array.prototype.slice()。 -
修复:修复了针对 UTF8 无效字节字符串的
String.prototype.split()。 -
修复:修复了空块语句的处理。
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__访问器描述符可变。 -
特性:CLI 添加了 shebang 支持。
-
特性:CLI 添加了模块模式执行支持。在模块模式下,全局变量
this不可用。 -
修复:修复了 editline 检测。
-
修复:修复了
Function.prototype.bind()。感谢 洪志道 (Hong Zhi Dao)。 -
修复:修复了函数参数重复检查。感谢 洪志道 (Hong Zhi Dao)。
-
修复:修复了函数声明与变量同名的问题。感谢 洪志道 (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{}。 -
变更:当请求体不可用时,访问
r.requestBody返回 undefined 而非抛出异常。 -
修复:修复了在键值对中缺少值时遍历
r.args{}导致的崩溃。
核心
-
特性:添加了初步的 ES6 模块支持。支持 default import 和 default export 语句。感谢 洪志道 (Hong Zhi Dao)。
-
特性:添加了
Object.prototype.propertyIsEnumerable()。 -
特性:在反汇编器输出中报告文件名和函数名。
-
修复:修复了交互式 shell 中的函数重复声明。感谢 洪志道 (Hong Zhi Dao)。
-
修复:修复了正则表达式字面量解析。
-
修复:修复了
fs.readFileSync()中 UTF8 字符串长度的设置。 -
修复:修复了无目录组件路径下的
nxt_file_dirname()。
njs 0.2.8 版本变更
发布日期:2019 年 2 月 26 日
nginx 模块
-
变更:删除了 0.2.2 中已弃用的 HTTP 请求属性。
-
特性:添加了对
r.headersOut{}中 delete 操作的支持。 -
特性:添加了对设置 nginx 变量的支持。
-
修复:修复了空主体值的
r.subrequest()。 -
改进:在
r.headersOut{}中设置特殊响应头。
核心
-
特性:添加了标签(label)支持。
-
特性:添加了
setImmediate()方法。 -
特性:为对象字面量添加了简写属性名的支持。
-
修复:修复了
Function.prototype.bind()。 -
修复:修复了包含换行符的字符串字面量的解析。
-
修复:修复了报告变量引用错误时的行号。
-
修复:修复了长 UTF8 字符串的创建。
-
修复:修复了
String.prototype.split()中 Unicode 字符串设置特殊响应头的问题。 -
修复:修复了
String.prototype.split()中的堆缓冲区溢出问题。 -
修复:修复了
Array.prototype.fill()。感谢 Artem S. Povalyukhin。 -
改进:重构了与函数调用相关的代码。感谢 洪志道 (Hong Zhi Dao)。
-
改进:重构了与变量相关的代码。感谢 洪志道 (Hong Zhi Dao)。
-
改进:重构了解析器。感谢 洪志道 (Hong Zhi Dao)。
-
改进:在异常中报告文件名。
njs 0.2.7 版本变更
发布日期:2018 年 12 月 25 日
核心
-
特性:剩余参数(rest parameters)语法(不支持解构)。感谢 Alexander Pyshchev。
-
特性:添加了
Object.entries()方法。 -
特性:添加了
Object.values()方法。 -
改进:重构并简化了代码生成器。
-
修复:修复了自动分号插入。
-
修复:修复了复合赋值的赋值表达式。
-
修复:修复了字节字符串与 UTF8 字符串的比较。
-
修复:修复了
for-in循环中数组值的迭代变量类型。 -
修复:修复了在没有 librt 的平台上构建的问题。
-
修复:修复了杂项错误。
njs 0.2.6 版本变更
发布日期:2018 年 11 月 27 日
核心
-
特性:使内置原型可变。
-
特性:使全局对象可变。
-
特性:
console.time()和console.timeEnd()方法。 -
特性:允许变量和函数被重新声明。
-
特性:扩展了
Object.defineProperty()的规范符合性。 -
特性:引入了 CLI 的静默模式,以处理来自标准输入的简单表达式。
-
特性:引入了紧凑形式的回溯(backtraces)以处理栈溢出。
-
改进:改进了各类异常的措辞。
-
修复:修复了闭包值的处理。
-
修复:修复了各种值类型的相等运算符。
-
修复:修复了各种作用域中
this关键字的处理。 -
修复:修复了
Object.keys()中非对象值的处理。 -
修复:修复了
if语句内throw语句的解析。 -
修复:修复了
throw语句后换行的解析。 -
修复:修复了
if语句中无换行语句的解析。 -
修复:修复了
njs_array_expand()中的uint32_t大小溢出。 -
修复:修复了
object_value类型的typeof运算符。 -
修复:修复了杂项错误。
njs 0.2.5 版本变更
发布日期:2018 年 10 月 30 日
nginx 模块
-
修复:修复了流模块中挂起事件的计数。
-
修复:修复了流模块中的
s.off()。 -
修复:修复了流模块中
js_filter数据块的处理。 -
修复:修复了 http 模块中的
status和contentTypegetter。 -
修复:修复了 http 模块中的响应和父级 getter。
核心
-
特性:支持 arguments 对象。
-
特性:支持非整数分数。
-
改进:处理
Array.prototype.slice()中的非数组值。 -
修复:修复了
Array.prototype.lengthsetter。 -
修复:修复了长度 > 2**31 的
njs_array_alloc()。 -
修复:处理 32 位架构上
njs_array_alloc()的整数溢出。 -
修复:修复了代码大小不匹配的错误消息。
-
修复:修复了循环中的 delete 运算符。
-
修复:修复了复杂对象(继承自
Array和string值)的Object.getOwnPropertyDescriptor()。 -
修复:修复了非对象属性的
Object.prototype.hasOwnProperty()。 -
修复:修复了杂项错误。
njs 0.2.4 版本变更
发布日期:2018 年 9 月 18 日
nginx 模块
-
变更:重构了流模块处理程序。
新方法和属性:
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(读取由相应回调的数据参数取代,写入请使用s.send())。s.fromUpstream(由相应事件的回调取代)。s.eof(由flags.last取代)。
核心
-
特性:添加了
Function.prototype.length。 -
特性:引入了沙箱模式。
-
改进:适当时添加了异常字符串。
-
改进:改进了原始类型转换异常的措辞。
-
修复:对于尝试更改冻结属性的操作抛出
TypeError。 -
修复:修复了现有属性的
Object.defineProperty()。 -
修复:for-in 迭代时遵守 enumerable 属性。
-
修复:遵守属性处理程序的 writable 属性。
-
修复:修复了函数参数中的异常处理。
-
修复:修复了针对不同值类型的
Object.prototype.toString。 -
修复:修复了针对对象类型参数的
Object()构造函数。 -
修复:修复了对象和字符串的比较。
-
修复:修复了未定义参数的
String.slice()。 -
修复:修复了杂项错误。
njs 0.2.3 版本变更
发布日期:2018 年 7 月 31 日
nginx 模块
-
修复:从
Reply对象进行子请求导致分段故障。 -
修复:获取主 HTTP 请求 对象的父属性导致分段故障。
核心
-
特性:为值添加了漂亮的字符串表示。
-
特性:正确打印浮点数。
-
特性:正确解析浮点数。
-
特性:
String.bytesFrom()方法(将hex、base64、base64url解码为字节字符串)。 -
特性:
String.padStart()和String.padEnd()方法。 -
特性:添加了对二进制字面量的支持。
-
改进:在数字解析中添加了关于非法标记的信息。
-
改进:在八进制字面值中允许大写
O。 -
改进:在
console.log()中添加了对多参数的支持。 -
修复:修复了对外部值方法应用
call()的问题。 -
修复:修复了应用于对象的加法运算符。
-
修复:修复了
njs_vm_value_to_ext_string()中的异常处理。 -
修复:修复了带有布尔值、null 和 undefined 参数的
Number()。 -
修复:修复了设置非数字
Array.length的错误处理。 -
修复:修复了全局对象的自动补全。
-
修复:修复了杂项错误。
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 vm 移至
main配置。 -
改进:改进了 js_set 和 js_content 指令的日志记录。
-
改进:在 js_content 处理程序中默认设置状态码为 500
-
改进:在 js_content 处理程序中添加了返回状态码的调试信息
-
修复:修复了 js_include 中的错误日志记录。
核心
-
特性:添加了数组长度 setter。
-
改进:公共头文件
cleanup. njscript.h重命名为njs.h。 -
修复:修复了调用
digest()后 cryptoupdate()方法的问题。 -
修复:修复了键大小 <= alg 大小且 > 64 的
crypto.createHmac()。 -
修复:修复了空单元格数组的
JSON.stringify()。 -
修复:修复了
JSON.stringify()中不支持类型的异常类型。 -
修复:修复了函数未定义参数的处理。
-
修复:修复了
Object.getOwnPropertyDescriptor()中缺失arg的处理。 -
修复:修复了
Object.getOwnPropertyDescriptor()中属性的处理。 -
修复:修复了
Array.length属性的 writeable 标志。 -
修复:修复了
clearTimeout()的返回值类型。 -
修复:修复了
njs_vm_external_bind()。 -
修复:修复了杂项错误。
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 中的杂项错误已修复。
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 模块在异常时打印回溯。
-
修复:修复了杂项错误。
njs 0.1.14 版本变更
发布日期:2017 年 10 月 9 日
-
特性:JSON 对象。
-
特性:交互式 shell 中的对象级补全。
-
特性:各种配置改进。
-
修复:核心和交互式 shell 中的杂项错误已修复。
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()方法。 -
修复:各种错误和分段故障已修复。
njs 0.1.9 版本变更
发布日期:2017 年 2 月 1 日
-
修复:在 nginx 中使用 njs 时全局变量未初始化。
njs 0.1.8 版本变更
发布日期:2017 年 1 月 24 日
-
变更:强制执行
strict模式,变量必须显式声明。 -
特性:
for和for-in循环支持变量声明。 -
修复:修复了全局和函数作用域。
-
修复:现在
for-in循环不会丢弃属性变量的最后一个值。 -
修复:各种错误和分段故障已修复。
njs 0.1.7 版本变更
发布日期:2016 年 12 月 27 日
-
变更:js_include 指令在 server 和 location 级别已被禁用。
-
特性:幂运算符。
-
修复:各种错误和分段故障已修复。
njs 0.1.6 版本变更
发布日期:2016 年 12 月 13 日
-
变更:js_set 指令在 server 和 location 级别已被禁用。
-
特性:ES6
Math方法。 -
修复:各种错误和分段故障已修复。