Hello,

I'm glad to announce a new release of NGINX JavaScript module (njs).

Notable new features:
- shared dictionaries:
Shared dictionary keeps the key-value pairs shared between worker
processes. This allows to cache data in memory and share it between
workers.

: example.conf:
:   # Creates a 1Mb dictionary with string values,
:   # removes key-value pairs after 60 seconds of inactivity:
:   js_shared_dict_zone zone=foo:1M timeout=60s;
:
:   # Creates a 512Kb dictionary with string values,
:   # forcibly removes oldest key-value pairs when the zone is overflowed:
:   js_shared_dict_zone zone=bar:512K timeout=30s evict;
:
:   # Creates a 32Kb permanent dictionary with numeric values:
:   js_shared_dict_zone zone=num:32k type=number;
:
: example.js:
:    function get(r) {
:        r.return(200, ngx.shared.foo.get(r.args.key));
:    }
:
:    function set(r) {
:        r.return(200, ngx.shared.foo.set(r.args.key, r.args.value));
:    }
:
:    function delete(r) {
:        r.return(200, ngx.shared.bar.delete(r.args.key));
:    }
:
:    function increment(r) {
:        r.return(200, ngx.shared.num.incr(r.args.key, 2));
:    }

Learn more about njs:

- Overview and introduction:
     https://nginx.org/en/docs/njs/
- NGINX JavaScript in Your Web Server Configuration:
     https://youtu.be/Jc_L6UffFOs
- Extending NGINX with Custom Code:
     https://youtu.be/0CVhq4AUU7M
- Using node modules with njs:
     https://nginx.org/en/docs/njs/node_modules.html
- Writing njs code using TypeScript definition files:
     https://nginx.org/en/docs/njs/typescript.html

Feel free to try it and give us feedback on:

- Github:
     https://github.com/nginx/njs/issues
- Mailing list:
     https://mailman.nginx.org/mailman/listinfo/nginx-devel

Additional examples and howtos can be found here:

- Github:
     https://github.com/nginx/njs-examples

Changes with njs 0.8.0                                        6 Jul 2023

    nginx modules:

    *) Change: removed special treatment of forbidden headers in Fetch API
       introduced in 0.7.10.

    *) Change: removed deprecated since 0.5.0 r.requestBody and
       r.responseBody in HTTP module.

    *) Change: throwing an exception in r.internalRedirect() while
       filtering in HTTP module.

    *) Feature: introduced global nginx properties.
        ngx.build - an optional nginx build name, corresponds to
        --build=name argument of configure script, by default is "".
        ngx.conf_file_path - the file path to current nginx configuration
            file.
        ngx.error_log_path - the file path to current error log file.
        ngx.prefix - the directory that keeps server files.
        ngx.version - the nginx version as a string, for example: "1.25.0".
        ngx.version_number - the nginx version as a number, for example:
            1025000.
        ngx.worker_id - corresponds to an nginx internal worker id.
           The value is between 0 and worker_processes - 1.

    *) Feature: introduced js_shared_dict_zone directive.
The directive allows to declare a dictionary that is shared among the
        working processes.

    *) Improvement: added compile-time options to disable njs modules.
        For example to disable libxslt related code:
        NJS_LIBXSLT=NO ./configure  .. --add-module=/path/to/njs/module

    *) Bugfix: fixed r.status setter when filtering in HTTP module.

    *) Bugfix: fixed setting of Location header in HTTP module.

    Core:

    *) Change: native methods are provided with retval argument.
       This change breaks compatibility with C extension for njs
       requiring to modify the code.

    *) Change: non-compliant deprecated String methods were removed.
        The following methods were removed: String.bytesFrom(),
        String.prototype.fromBytes(), String.prototype.fromUTF8(),
        String.prototype.toBytes(), String.prototype.toUTF8(),
        String.prototype.toString(encoding).

    *) Change: removed support for building with GNU readline.

    *) Feature: added Array.from(), Array.prototype.toSorted(),
        Array.prototype.toSpliced(), Array.prototype.toReversed().

    *) Feature: added %TypedArray%.prototype.toSorted(),
        %TypedArray%.prototype.toSpliced(),
        %TypedArray%.prototype.toReversed().

    *) Feature: added CryptoKey properties in WebCrypto.
        The following properties for CryptoKey were added:
        algorithm, extractable, type, usages.

    *) Bugfix: fixed retval of crypto.getRandomValues().

    *) Bugfix: fixed evaluation of computed property names with function
       expressions.

    *) Bugfix: fixed implicit name for a function expression declared in
       arrays.

    *) Bugfix: fixed parsing of for-in loops.

    *) Bugfix: fixed Date.parse() with ISO-8601 format and UTC time
       offset.
_______________________________________________
nginx mailing list
nginx@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to