<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>https://hg.nginx.org/njs/</link>
    <language>en-us</language>

    <title>njs Changelog</title>
    <description>njs Changelog</description>
    <item>
    <title>[default] QuickJS: fixed r.subrequest() to a location with JS handler.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/131276dd1294</guid>
    <link>https://hg.nginx.org/njs/rev/131276dd1294</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>131276dd1294</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td>default</td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td>tip</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>QuickJS: fixed r.subrequest() to a location with JS handler.<br/>
<br/>
Previously, when a subrequest location had a JS handler, an object of a<br/>
subrequest JS context was provided as an argument to a parent contexts.<br/>
This may cause all sorts of problems due to incorrect reference<br/>
counting.<br/>
<br/>
After this change in bellard/quickjs@42eb2795 the bug became apparent.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>nginx/ngx_http_js_module.c<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 13 Oct 2025 17:37:11 -0700</pubDate>
</item>
<item>
    <title>Version bump.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/c15635f617e0</guid>
    <link>https://hg.nginx.org/njs/rev/c15635f617e0</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>c15635f617e0</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Version bump.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>src/njs.h<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 08 Oct 2025 18:42:16 -0700</pubDate>
</item>
<item>
    <title>Version 0.9.3.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/c2300eb88dcf</guid>
    <link>https://hg.nginx.org/njs/rev/c2300eb88dcf</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>c2300eb88dcf</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Version 0.9.3.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>CHANGES<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 06 Oct 2025 09:13:36 -0700</pubDate>
</item>
<item>
    <title>Fixed heap-use-after-free in js_set handler.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/463485fdafa1</guid>
    <link>https://hg.nginx.org/njs/rev/463485fdafa1</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>463485fdafa1</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Fixed heap-use-after-free in js_set handler.<br/>
<br/>
The issue was introduced in commit 04f6dfb (0.9.2) by moving VM<br/>
destruction from the pool cleanup handler to the http cleanup handler.<br/>
<br/>
Moving VM destruction to the http cleanup handler broke js_set variable<br/>
usage during the log phase, because these variables are called after the<br/>
VM has been destroyed.<br/>
<br/>
The fix is to move VM destruction back to the pool cleanup handler, but<br/>
use a temporary pool while njs.on('exit', ...) is executing.<br/>
<br/>
This fixes #969 and #971 issues on Github.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>nginx/ngx_http_js_module.c<br />nginx/t/js_exit.t<br />nginx/t/js_shared_dict_exit.t<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 29 Sep 2025 18:30:15 -0700</pubDate>
</item>
<item>
    <title>Module: fixed heap-use-after-free while module loading.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/e08b3ffa9536</guid>
    <link>https://hg.nginx.org/njs/rev/e08b3ffa9536</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>e08b3ffa9536</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Module: fixed heap-use-after-free while module loading.<br/>
<br/>
Making a copy of file argument because the engine may outlive<br/>
current ngx_cycle.<br/>
<br/>
The bug became visible since 283282f (0.8.8).</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>nginx/ngx_js.c<br />nginx/t/js_import2.t<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Oct 2025 20:07:14 -0700</pubDate>
</item>
<item>
    <title>Modules: fixed memory leak when module loading failed.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/75221283a3e2</guid>
    <link>https://hg.nginx.org/njs/rev/75221283a3e2</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>75221283a3e2</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Modules: fixed memory leak when module loading failed.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>nginx/ngx_js.c<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Oct 2025 20:23:08 -0700</pubDate>
</item>
<item>
    <title>Fixed potential heap-use-after-free in njs_vm_compile_module().</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/a708e9f87973</guid>
    <link>https://hg.nginx.org/njs/rev/a708e9f87973</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>a708e9f87973</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Fixed potential heap-use-after-free in njs_vm_compile_module().<br/>
<br/>
Passing a local copy of name argument to njs_parser_init().</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>src/njs_vm.c<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 01 Oct 2025 20:10:43 -0700</pubDate>
</item>
<item>
    <title>Version bump.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/80c6090a64d4</guid>
    <link>https://hg.nginx.org/njs/rev/80c6090a64d4</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>80c6090a64d4</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Version bump.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>src/njs.h<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 29 Sep 2025 22:43:11 -0700</pubDate>
</item>
<item>
    <title>Readme: updated hero graphic.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/9d75fbbbfc6d</guid>
    <link>https://hg.nginx.org/njs/rev/9d75fbbbfc6d</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>9d75fbbbfc6d</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#77;&#105;&#99;&#104;&#97;&#101;&#108;&#32;&#86;&#101;&#114;&#110;&#105;&#107;&#32;&#60;&#109;&#46;&#118;&#101;&#114;&#110;&#105;&#107;&#64;&#102;&#53;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Readme: updated hero graphic.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>NGINX-js-1660x332.png<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#77;&#105;&#99;&#104;&#97;&#101;&#108;&#32;&#86;&#101;&#114;&#110;&#105;&#107;&#32;&#60;&#109;&#46;&#118;&#101;&#114;&#110;&#105;&#107;&#64;&#102;&#53;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Thu, 02 Oct 2025 14:41:16 -0700</pubDate>
</item>
<item>
    <title>Version 0.9.2.</title>
    <guid isPermaLink="true">https://hg.nginx.org/njs/rev/97f4bc93613a</guid>
    <link>https://hg.nginx.org/njs/rev/97f4bc93613a</link>
    <description>
    <![CDATA[
        <table>
            <tr>
                <th style="text-align:left;">changeset</th>
                <td>97f4bc93613a</td>
            </tr>
            <tr>
                <th style="text-align:left;">branch</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">bookmark</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;">tag</th>
                <td></td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">user</th>
                <td>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">description</th>
                <td>Version 0.9.2.</td>
            </tr>
            <tr>
                <th style="text-align:left;vertical-align:top;">files</th>
                <td>CHANGES<br /></td>
            </tr>
        </table>
    ]]>
    </description>
    <author>&#68;&#109;&#105;&#116;&#114;&#121;&#32;&#86;&#111;&#108;&#121;&#110;&#116;&#115;&#101;&#118;&#32;&#60;&#120;&#101;&#105;&#111;&#101;&#120;&#64;&#110;&#103;&#105;&#110;&#120;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 22 Sep 2025 10:12:15 -0700</pubDate>
</item>

  </channel>
</rss>