変更点
njs 0.8.7 の変更点
リリース日: 2024年10月22日
nginx モジュール
-
バグ修正: 不要な VM 作成を解消しました。以前は、njs は nginx ロケーションの数に比例してメモリを消費していました。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
を使用してください。
-
-
機能追加: 共有ディクショナリの
add()
、set()
、incr()
メソッドにtimeout
引数を追加しました。 -
バグ修正: 重複した
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()
での 1 バイトの読み過ぎを修正しました。 -
バグ修正: 引数のスコープの追跡を修正しました。
-
バグ修正:
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 以降でのビルドを修正しました。
-
バグ修正: オーバーフロー時および
NaN
値を使用したDate
コンストラクタを修正しました。 -
バグ修正:
querystring.parse()
のアンダーフローを修正しました。 -
バグ修正:
String.prototype.match()
の潜在的なバッファオーバーリードを修正しました。 -
バグ修正:
for-in
ループの解析を修正しました。 -
バグ修正: 数字のない 16 進数、8 進数、2 進数のリテラルの解析を修正しました。
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 例外処理を修正しました。 -
バグ修正: グローバル正規表現と Unicode 入力を使用した
Regexp.prototype.exec()
を修正しました。
njs 0.8.1 の変更点
リリース日: 2023年9月12日
nginx モジュール
-
機能追加: http および stream に、一定間隔で実行する JS ハンドラを指定できる
js_periodic
ディレクティブを導入しました。 -
機能追加: 共有ディクショナリ の
items()
メソッドを実装しました。このメソッドは、期限切れになっていないすべてのキーと値のペアを返します。 -
バグ修正: 0.8.0 で導入された
r.internalRedirect()
の誤った例外を修正しました。
コア
-
バグ修正:
Object.getOwnPropertyNames()
のキーの順序が間違っていたのを修正しました。
njs 0.8.0 の変更点
リリース日: 2023年7月6日
nginx モジュール
-
変更: 0.5.0 から非推奨になっていた
r.requestBody
とr.responseBody
をhttp
モジュールから削除しました。 -
変更:
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
-
バグ修正:
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 モジュール
コア
-
新機能: XMLドキュメントを修正するためのXMLNode APIを追加しました。
-
変更: セキュリティ上の問題のため、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 モジュール
-
バグ修正: マスタープロセスでの呼び出しに対する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 モジュール
-
バグ修正:
Fetch
Responseプロトタイプの再初期化を修正しました。HTTPとStreamの両方に少なくとも1つのjs_import
ディレクティブが宣言されている場合、ngx.fetch()
はStreamで不適切なレスポンスを返していました。このバグは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
がeval中に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拒否の処理を修正しました。
-
バグ修正: 重複する環境変数が存在する場合の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
のfetchタイムアウトでのソケットリークを修正しました。
コア
-
新機能:
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()
を追加しました。 -
バグ修正: 大きな非10進数のリテラルを修正しました。
-
バグ修正:
parseInt()
のUnicode引数のトリミングを修正しました。 -
バグ修正:
try-catch
ブロック内のbreak
命令を修正しました。 -
バグ修正: CLIでの
async
関数宣言を修正しました。
njs 0.7.5での変更点
リリース日: 2022年6月21日
nginx モジュール
-
変更: nginxヘッダー構造の変更への対応。
-
バグ修正: 値が存在しない場合の
r.headersOut{}
特殊getterを修正しました。 -
変更: ヘッダーが存在しない場合、
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 の解決中に発生していた型の不一致のバグを修正しました。
-
バグ修正: 大規模な配列引数を使用した
Function.prototype.apply()
を修正しました。 -
バグ修正: 再帰的な
async
関数の呼び出しを修正しました。 -
バグ修正: 関数の再宣言を修正しました。このバグは 0.7.0 で導入されました。
njs 0.7.1 の変更点
リリース日: 2021年12月28日
nginx モジュール
-
変更: 0.4.0 以降非推奨となっていた js_include ディレクティブを削除しました。
-
変更: PCRE/PCRE2 固有のコードをモジュールに移動しました。これにより、njs は nginx と同じ RegExp ライブラリを使用するようになります。
コア
-
バグ修正: 無効なバイト文字列を含む
decodeURI()
とdecodeURIComponent()
を修正しました。このバグは 0.4.3 で導入されました。 -
バグ修正:
await
フレームにおけるヒープ使用後の解放 (heap-use-after-free) を修正しました。このバグは 0.7.0 で導入されました。 -
バグ修正: OpenSSL 3.0 を使用した WebCrypto の
sign()
メソッドとverify()
メソッドを修正しました。 -
バグ修正: RegExp のマッチが失敗した場合の例外のスローを修正しました。このバグは 0.1.15 で導入されました。
-
バグ修正:
async
関数のtry
ブロックでスローされた例外のキャッチを修正しました。このバグは 0.7.0 で導入されました。 -
バグ修正: 同期コンテキストでの
async
関数の実行を修正しました。このバグは 0.7.0 で導入されました。 -
バグ修正: インタラクティブモードがオンの場合の CLI での関数の再宣言を修正しました。このバグは 0.6.2 で導入されました。
-
バグ修正:
DataView
オブジェクトを使用したtypeof
演算子を修正しました。 -
バグ修正:
Buffer.from()
の情報漏洩を解消しました。
njs 0.7.0 の変更点
リリース日: 2021年10月19日
nginx モジュール
コア
-
機能追加:
Async/Await
実装を導入しました。 -
機能追加: WebCrypto API 実装を追加しました。
-
バグ修正: 宣言された関数のクロージャのコピーを修正しました。このバグは 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()
が追加されました。 -
改善: コードジェネレータから再帰を削除しました。
-
バグ修正: バインディング識別子がない場合のレストパラメータの解析を修正しました。
-
バグ修正:
Promise.prototype.finally()
の resolve/reject コールバックを修正しました。 -
バグ修正: 分離されたバッファを含む
%TypedArray%.prototype.join()
を修正しました。 -
バグ修正: インタラクティブシェルでのメモリリークを修正しました。
njs 0.6.1 の変更点
リリース日: 2021年6月29日
-
バグ修正: UTF-8 専用の正規表現を使用した
RegExpBuiltinExec()
を修正しました。このバグは 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()
を修正しました。 -
バグ修正: 拒否された Promise の追跡中に発生していた初期化されていない値の使用を修正しました。
-
バグ修正: 循環参照を持つオブジェクトに対する
njs.dump()
を修正しました。
njs 0.5.3 の変更点
リリース日: 2021年3月30日
nginx モジュール
njs 0.5.2 の変更点
リリース日: 2021年3月9日
nginx モジュール
-
機能追加:
js_body_filter
ディレクティブを導入しました。 -
機能追加: Stream セッション オブジェクトに
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
オブジェクトをサポートしました。 -
機能追加: 既存のプロパティのバッファバージョンを追加しました。
以下のプロパティが追加されました
-
r.requestBuffer
(r.requestBody
)、r.responseBuffer
(r.responseBody
)、r.rawVariables
(r.variables
)、s.rawVariables
(s.variables
)。
stream モジュールに以下のイベントが追加されました
-
upstream
(アップロード)、downstream
(ダウンロード)。
-
-
改善: 既存のプロパティにエイリアスを追加しました。
以下のプロパティが追加されました
-
改善: サブリクエストに対する
r.internalRedirect()
で例外をスローするようにしました。 -
バグ修正:
error_page
リダイレクトを含む promiser.subrequest()
を修正しました。 -
バグ修正:
promise
イベントの処理を修正しました。
コア
-
機能追加: 組み込みモジュール用の
TypeScript
定義を追加しました。Jakub Jirutka 氏に感謝します。 -
機能追加: 未処理の
promise
の拒否を追跡します。 -
機能追加: イテレータの初期サポートを追加しました。Artem S. Povalyukhin 氏に感謝します。
-
改善:
TypeScript
定義をリファクタリングしました。Jakub Jirutka 氏に感謝します。 -
改善:
Buffer.from()
でObject.prototype.valueOf()
の忘れられていたサポートを追加しました。 -
バグ修正:
JSON.parse()
のヒープ使用後の解放 (heap-use-after-free) を修正しました。 -
バグ修正:
JSON.stringify()
のヒープ使用後の解放 (heap-use-after-free) を修正しました。 -
バグ修正: ゲッターを介してサイズ変更可能な配列に対する
JSON.stringify()
を修正しました。 -
バグ修正:
RegExp.prototype[Symbol.replace]
のヒープバッファオーバーフローを修正しました。 -
バグ修正:
Buffer.prototype.write*
関数の戻り値を修正しました。 -
バグ修正:
querystring.stringify()
を修正しました。Artem S. Povalyukhin 氏に感謝します。 -
バグ修正:
Promise.prototype.finally()
のキャッチハンドラを修正しました。 -
バグ修正:
querystring.parse()
を修正しました。
njs 0.4.4 の変更点
リリース日: 2020年9月29日
nginx モジュール
-
バグ修正: ロケーションマージを修正しました。
-
バグ修正: 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()
の実装を追加しました。 -
バグ修正: セミコロンなしのreturn文の解析を修正しました。
-
バグ修正: ビッグエンディアンプラットフォームにおける
njs_number_to_int32()
を修正しました。 -
バグ修正: ビッグエンディアンプラットフォームにおける単体テストを修正しました。
-
バグ修正: 「
=
」文字を含む正規表現リテラルの解析を修正しました。 -
バグ修正: 代入演算における前置/後置インクリメント/デクリメントを修正しました。
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()
を修正しました。 -
バグ修正: 正規表現リテラルのフラグの解析を修正しました。
-
バグ修正: ジェネレーターにおけるグローバルオブジェクトのインデックス生成を修正しました。
-
バグ修正: ゼロ以外のバイトオフセットを使用した
%TypedArray%.prototype.copyWithin()
を修正しました。 -
バグ修正: スパース配列に対する
Array.prototype.splice()
を修正しました。 -
バグ修正: スパース配列に対する
Array.prototype.reverse()
を修正しました。 -
バグ修正: スパース配列に対する
Array.prototype.sort()
を修正しました。
njs 0.4.1 の変更点
リリース日: 2020年5月19日
nginx モジュール
-
機能追加:
r.headersIn{}
で複数値ヘッダーのサポートを追加しました。 -
機能追加:
raw headers
APIを導入しました: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
モジュールにpromises
APIを追加しました。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()
におけるスペース引数の処理を修正しました。 -
バグ修正:
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氏に感謝いたします。 -
機能追加: nullish coalescing演算子を導入しました。
-
バグ修正: 仕様に従って
Object.getPrototypeOf()
を修正しました。 -
バグ修正: 仕様に従って
Object.prototype.valueOf()
を修正しました。 -
バグ修正: 印刷不可能な値と置換関数を含む
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
プロパティを修正しました。 -
バグ修正: ゲッターとセッターの
__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
プロパティを書き込み可能にしました。 -
改良: コンパイル時の再帰深度を制限しました。
-
改良: グローバル関数をグローバルオブジェクトに移動しました。
-
バグ修正: オブジェクトリテラルのプロトタイプ変更を修正しました。
-
バグ修正: 正規表現リテラルの解析中のヒープバッファオーバーフローを修正しました。
-
バグ修正: 数値リテラルの指数解析中の整数オーバーフローを修正しました。
-
バグ修正:
parseFloat()
を修正しました。 -
バグ修正: 仕様に従って
Array.prototype
関数を修正しました。以下の関数を修正しました:every
、includes
、indexOf
、filter
、find
、findIndex
、forEach
、lastIndexOf
、map
、pop
、push
、reduce
、reduceRight
、shift
、some
、unshift
。 -
バグ修正:
Object.freeze()
におけるアクセサー記述子の処理を修正しました。 -
バグ修正: 第1引数が文字列でない場合の
String.prototype.replace()
を修正しました。 -
バグ修正:
Array.prototype.map()
におけるスタックの使用後スコープを修正しました。 -
バグ修正:
Date.prototype.toUTCString()
のフォーマットをES9に合わせました。 -
バグ修正:
Number.prototype.toString(radix)
のバッファオーバーフローを修正しました。 -
バグ修正: バックリファレンスを含む正規表現に対する
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()
を使用したモジュールのインポートを修正しました。このバグは0.3.4で導入されました。 -
バグ修正:
[[SetPrototypeOf]]
を修正しました。
njs 0.3.4 の変更点
リリース日: 2019年8月13日
コア
-
機能追加:
Object
の省略記法メソッドと計算されたプロパティ名をサポートしました。洪志道 (Hong Zhi Dao)氏とArtem S. Povalyukhin氏に感謝いたします。 -
機能追加: ゲッター/セッターリテラルのサポートを追加しました。洪志道 (Hong Zhi Dao)氏とArtem S. Povalyukhin氏に感謝いたします。
-
機能追加:
fs.renameSync()
を追加しました。 -
機能追加:
String.prototype.trimEnd()
とString.prototype.trimStart()
を追加しました。 -
改良: メモリサニタイザーのサポートを追加しました。
-
改良: Unicode大文字小文字テーブルをバージョン12.1に更新しました。
-
改良: 文字列リテラルに対するUTF8検証を追加しました。
-
バグ修正:
fs.readFileSync()
でサイズがゼロのファイルの読み込みを修正しました。 -
バグ修正:
String.prototype.trim()
におけるスペース区切り文字のリストを拡張しました。 -
バグ修正: `String.prototype.padStart()`における初期化されていない値の使用を修正しました。
-
バグ修正: 置換文字列が`$0`および`$&`である場合の`String.prototype.replace()`を修正しました。
-
バグ修正: 正規表現引数を使用したバイト文字列に対する`String.prototype.replace()`を修正しました。
-
バグ修正: 正規表現引数を使用した`String.prototype.replace()`におけるグローバルマッチを修正しました。
-
バグ修正: プリミティブ型に対する`Array.prototype.slice()`を修正しました。
-
バグ修正: モジュールのインポート中にヒープバッファオーバーフローが発生する問題を修正しました。
-
バグ修正: UTF-8文字のエスケープ処理を修正しました。
-
バグ修正: 共有オブジェクトに対する`Object.values()`および`Object.entries()`を修正しました。
-
バグ修正: `String.prototype.match()`における初期化されていないメモリアクセスを修正しました。
-
バグ修正: 正規表現引数を使用したバイト文字列に対する`String.prototype.match()`を修正しました。
-
バグ修正: 引数が未定義の場合の`Array.prototype.lastIndexOf()`を修正しました。
-
バグ修正: 空のサブ文字列を使用した`String.prototype.substring()`を修正しました。
-
バグ修正: `String.prototype.substring()`における無効なメモリアクセスを修正しました。
-
バグ修正: コードポイントが`65535`を超える場合および`NaN`の場合の`String.fromCharCode()`を修正しました。
-
バグ修正: `String.prototype.toLowerCase()`および`String.prototype.toUpperCase()`を修正しました。
-
バグ修正: 引数なしの`Error()`コンストラクタを修正しました。
-
バグ修正: アクセサ記述子を持つ値に対する`in`演算子を修正しました。
-
バグ修正: ブール値以外の記述子プロパティに対する`Object.defineProperty()`を修正しました。
-
バグ修正: UTF8文字列プロパティを持つ`Error.prototype.toString()`を修正しました。
-
バグ修正: `name`および`message`に文字列以外の値を持つ`Error.prototype.toString()`を修正しました。
njs 0.3.3 の変更点
リリース日: 2019年6月25日
nginx モジュール
-
改善:
r.headersOut{}
における特別なレスポンスヘッダの取得。 -
改善:
r.subrequest()
における未知のメソッドの処理。 -
改善:
r.subrequest()
の第2引数としてnullをサポートしました。 -
バグ修正: ストリームボディフィルタにおける空の出力チェーンの処理を修正しました。
コア
-
機能追加: プロパティゲッター/セッターのランタイムサポートを追加しました。洪志道 (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()`に対する"*"量子化子の処理を修正しました。
-
バグ修正: 引数が1つの`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 モジュール
-
機能追加: httpおよびstreamに対するjs_pathディレクティブを追加しました。
-
変更: 以下のオブジェクトで、存在しないプロパティに対して空文字列ではなく`undefined`を返すように変更しました:
r.args{}
、r.headersIn{}
、r.headersOut{}
、r.variables{}
、s.variables{}
. -
変更: リクエストボディが使用できない場合、
r.requestBody
に対して例外をスローする代わりに`undefined`を返すように変更しました。 -
バグ修正: 値がキーバリューペアに存在しない場合に
r.args{}
を反復処理している際のクラッシュを修正しました。
コア
-
機能追加: 初期のES6モジュールサポートを追加しました。デフォルトインポートとデフォルトエクスポートステートメントがサポートされています。洪志道 (Hong Zhi Dao)氏に感謝します。
-
機能追加: `Object.prototype.propertyIsEnumerable()`を追加しました。
-
機能追加: 逆アセンブラ出力にファイル名と関数名を表示します。
-
バグ修正: 対話型シェルでの関数再宣言を修正しました。洪志道 (Hong Zhi Dao)氏に感謝します。
-
バグ修正: 正規表現リテラルの解析を修正しました。
-
バグ修正:
fs.readFileSync()
におけるUTF8文字列の長さのセットを修正しました。 -
バグ修正: ディレクトリコンポーネントのないパスに対する`nxt_file_dirname()`を修正しました。
njs 0.2.8 の変更点
リリース日: 2019年2月26日
nginx モジュール
-
変更: 0.2.2で非推奨となったHTTPリクエストのプロパティを削除しました。
-
機能追加:
r.headersOut{}
における削除操作のサポートを追加しました。 -
機能追加: Nginx変数の設定をサポートしました。
-
バグ修正: 空のボディ値に対する
r.subrequest()
を修正しました。 -
改善:
r.headersOut{}
における特別なレスポンスヘッダの設定。
コア
-
機能追加: ラベルのサポートを追加しました。
-
機能追加: `setImmediate()`メソッドを追加しました。
-
機能追加: オブジェクトリテラルに対する簡略プロパティ名のサポートを追加しました。
-
バグ修正: `Function.prototype.bind()`を修正しました。
-
バグ修正: 改行文字を含む文字列リテラルの解析を修正しました。
-
バグ修正: 変数参照エラーのレポートにおける行番号を修正しました。
-
バグ修正: 長いUTF8文字列の作成を修正しました。
-
バグ修正: Unicode文字列に対する`String.prototype.split()`における特別なレスポンスヘッダの設定を修正しました。
-
バグ修正: `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日
コア
-
機能追加: レストパラメータ構文(デストラクチャリングはサポートされていません)。Alexander Pyshchev氏に感謝します。
-
機能追加: `Object.entries()`メソッドを追加しました。
-
機能追加: `Object.values()`メソッドを追加しました。
-
改善: コードジェネレータをリファクタリングして簡素化しました。
-
バグ修正: 自動セミコロン挿入を修正しました。
-
バグ修正: 複合代入からの代入式を修正しました。
-
バグ修正: バイト文字列とUTF8文字列の比較を修正しました。
-
バグ修正: 配列値を持つ`for-in`における反復変数の型を修正しました。
-
バグ修正: librtがないプラットフォームでのビルドを修正しました。
-
バグ修正: その他のバグを修正しました。
njs 0.2.6 の変更点
リリース日: 2018年11月27日
コア
-
機能追加: 組み込みプロトタイプを可変にしました。
-
機能追加: グローバルオブジェクトを可変にしました。
-
機能追加:
console.time()
およびconsole.timeEnd()
メソッド。 -
機能追加: 変数と関数の再宣言を許可しました。
-
機能追加: `Object.defineProperty()`仕様の適合性を拡張しました。
-
機能追加: stdinから単純な式を処理するためのCLIの静止モードを導入しました。
-
機能追加: スタックオーバーフローを処理するためのバックトレースのコンパクトフォームを導入しました。
-
改善: さまざまな例外の表現を改善しました。
-
バグ修正: クロージャ値の処理を修正しました。
-
バグ修正: さまざまな値の型の等価演算子を修正しました。
-
バグ修正: さまざまなスコープにおける`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モジュールにおけるhttp `status`と`contentType`ゲッターを修正しました。
-
バグ修正: httpモジュールにおけるhttpレスポンスと親ゲッターを修正しました。
コア
-
機能追加: argumentsオブジェクトのサポート。
-
機能追加: 非整数小数のサポート。
-
改善: `Array.prototype.slice()`における非配列値の処理。
-
バグ修正: `Array.prototype.length`セッターを修正しました。
-
バグ修正: 長さ> 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
(読み込みの場合、対応するコールバックのdata引数に置き換えられました。書き込みにはs.send()
を使用してください)。s.fromUpstream
(対応するイベントのコールバックに置き換えられました)。s.eof
(flags.last
に置き換えられました)。
コア
-
機能追加:
Function.prototype.length
を追加しました。 -
機能追加: サンドボックスモードを導入しました。
-
改善: 適切な場所に例外文字列を追加しました。
-
改善: プリミティブ型変換例外の表現を改善しました。
-
バグ修正: 凍結プロパティの変更を試行した場合に
TypeError
をスローするように修正しました。 -
バグ修正: 既存のプロパティに対する
Object.defineProperty()
を修正しました。 -
バグ修正: `for...in`ループによる反復処理において、列挙可能属性を尊重するように修正しました。
-
バグ修正: プロパティハンドラにおいて、書き込み可能属性を尊重するように修正しました。
-
バグ修正: 関数の引数における例外処理を修正しました。
-
バグ修正: さまざまな値の型に対する
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()
メソッドを追加しました。 -
機能追加: バイナリリテラルのサポートを追加しました。
-
改善: 数字の解析における不正なトークンに関する情報を追加しました。
-
改善: 8進リテラル値で大文字の
O
を許可しました。 -
改善:
console.log()
における複数の引数のサポートを追加しました。 -
バグ修正: 外部値のメソッドへの
call()
の適用を修正しました。 -
バグ修正: オブジェクトに適用された加算演算子を修正しました。
-
バグ修正:
njs_vm_value_to_ext_string()
における例外処理を修正しました。 -
バグ修正: ブール値、null、未定義の引数に対する
Number()
を修正しました。 -
バグ修正: 非数値の
Array.length
の設定におけるエラー処理を修正しました。 -
バグ修正: グローバルオブジェクトのオートコンプリートを修正しました。
-
バグ修正: その他のバグを修正しました。
njs 0.2.2 の変更点
リリース日: 2018年6月19日
nginx モジュール
-
変更: HTTPの
Response
とReply
をHTTPリクエストにマージしました。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におけるエラーログ出力を修正しました。
コア
-
機能追加: 配列長のセッターを追加しました。
-
改善: 公開ヘッダー
cleanup.njscript.h
の名前をnjs.h
に変更しました。 -
バグ修正:
digest()
が呼び出された後のcryptoupdate()
メソッドを修正しました。 -
バグ修正: サイズがアルゴリズムサイズ以下で64より大きいキーに対する
crypto.createHmac()
を修正しました。 -
バグ修正: 空のセルを含む配列に対する
JSON.stringify()
を修正しました。 -
バグ修正:
JSON.stringify()
でサポートされていない型に対する例外型を修正しました。 -
バグ修正: 関数の未定義の引数の処理を修正しました。
-
バグ修正:
Object.getOwnPropertyDescriptor()
のarg
がない場合の処理を修正しました。 -
バグ修正:
Object.getOwnPropertyDescriptor()
のプロパティの処理を修正しました。 -
バグ修正:
Array.length
プロパティの書き込み可能フラグを修正しました。 -
バグ修正:
clearTimeout()
の戻り値の型を修正しました。 -
バグ修正:
njs_vm_external_bind()
を修正しました。 -
バグ修正: その他のバグを修正しました。
njs 0.2.0 の変更点
リリース日: 2018年4月3日
-
機能追加: CLIによるnjsバージョンの報告。
-
機能追加: 型変換例外のテキスト説明。
- 機能追加:
setTimeout()
とclearTimeout()
メソッド。 -
機能追加: バイト文字列を
hex
、base64
、base64url
にエンコードします。 -
機能追加: Node.jsスタイルの
Crypto
メソッド。 -
機能追加: HTTPおよびストリームの
warn()
とerror()
メソッド。 -
機能追加: HTTP
subrequest()
メソッド。 -
機能追加: HTTP
return()
メソッド。 -
バグ修正: コアと対話型シェルでいくつかのバグを修正しました。
njs 0.1.15 の変更点
リリース日: 2017年11月20日
-
機能追加:
Error
、EvalError
、InternalError
、RangeError
、ReferenceError
、SyntaxError
、TypeError
、URIError
オブジェクト。 -
機能追加: 8進リテラルのサポート。
-
機能追加: Node.jsスタイルのファイルシステムアクセスメソッド:
fs.readFile()
、fs.readFileSync()
、fs.appendFile()
、fs.appendFileSync()
、fs.writeFile()
、fs.writeFileSync()
。 -
機能追加: 例外発生時にnginxモジュールがバックトレースを出力します。
-
バグ修正: その他のバグを修正しました。
njs 0.1.14 の変更点
リリース日: 2017年10月9日
-
機能追加: JSONオブジェクト。
-
機能追加: 対話型シェルでのオブジェクトレベルの補完。
-
機能追加: さまざまな設定の改善。
-
バグ修正: コアと対話型シェルでいくつかのバグを修正しました。
njs 0.1.13 の変更点
リリース日: 2017年8月31日
-
機能追加: 対話型シェルでの
console.log()
とconsole.help()
メソッド。 -
機能追加: 例外発生時に対話型シェルがバックトレースを出力します。
-
機能追加:
libedit
が利用可能な場合、デフォルトで対話型シェルを使用します。 -
バグ修正: コマンドラインモードでの
stdin
からの大規模ファイルの処理。 -
バグ修正:
editline
の検出を改善しました。
njs 0.1.12 の変更点
リリース日: 2017年8月8日
-
機能追加: 対話型シェル。
-
バグ修正:
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
)リテラルのサポート。 -
機能追加: 16進数(
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日
-
変更: 厳格モードが適用され、変数を明示的に宣言する必要があります。
-
機能追加:
for
ループとfor...in
ループで変数宣言をサポートしました。 -
バグ修正: グローバルスコープと関数スコープを修正しました。
-
バグ修正:
for...in
ループでプロパティ変数の最後の値が破棄されなくなりました。 -
バグ修正: いくつかのバグとセグメンテーションフォルトを修正しました。
njs 0.1.7 の変更点
リリース日: 2016年12月27日
-
変更: サーバーレベルとロケーションレベルでjs_includeディレクティブが無効化されました。
-
機能追加: 指数演算子。
-
バグ修正: いくつかのバグとセグメンテーションフォルトを修正しました。
njs 0.1.6 の変更点
リリース日: 2016年12月13日
-
変更: サーバーレベルとロケーションレベルでjs_setディレクティブが無効化されました。
-
機能追加: ES6
Math
メソッド。 -
バグ修正: いくつかのバグとセグメンテーションフォルトを修正しました。