git: 641386d44e51 - main - */*: update NGINX JavaScript: 0.8.10 -> 0.9.0 (+)

From: Sergey A. Osokin <osa_at_FreeBSD.org>
Date: Sun, 11 May 2025 00:52:35 UTC
The branch main has been updated by osa:

URL: https://cgit.FreeBSD.org/ports/commit/?id=641386d44e516f2a4bb9f90e48a257fb8500c129

commit 641386d44e516f2a4bb9f90e48a257fb8500c129
Author:     Sergey A. Osokin <osa@FreeBSD.org>
AuthorDate: 2025-05-11 00:49:23 +0000
Commit:     Sergey A. Osokin <osa@FreeBSD.org>
CommitDate: 2025-05-11 00:49:23 +0000

    */*: update NGINX JavaScript: 0.8.10 -> 0.9.0 (+)
    
    The patches applied to the www/unit are based on
    https://github.com/nginx/unit/pull/1611/
    
    Thanks to:      Andrew Clayton <a.clayton@nginx.com>
    
    <ChangeLog>
    
     Core:
    
     *) Feature: refactored working with built-in strings, symbols
        and small integers.
        Performance improvements (arewefastyet/benchmarks/v8-v7 benchmark):
        Richards: +57% (631 → 989)
        Crypto: +7% (1445 → 1551)
        RayTrace: +37% (562 → 772)
        NavierStokes: +20% (2062 → 2465)
        Overall score: +29% (1014 → 1307)
    
    *) Bugfix: fixed regexp undefined value of captured group.
    
    *) Bugfix: fixed GCC 15 build with -Wunterminated-string-initialization.
    
    </ChangeLog>
---
 devel/libnjs/Makefile                    |   2 +-
 devel/libnjs/distinfo                    |   6 +-
 devel/libnjs/pkg-plist                   |   4 +-
 lang/njs/Makefile                        |   2 +-
 lang/njs/distinfo                        |   6 +-
 www/nginx-devel/Makefile                 |   2 +-
 www/nginx-devel/Makefile.extmod          |   2 +-
 www/nginx-devel/distinfo                 |   6 +-
 www/unit/Makefile                        |   1 +
 www/unit/files/patch-auto_njs            |  22 +++++
 www/unit/files/patch-src_nxt__http__js.c | 139 +++++++++++++++++++++++++++++++
 11 files changed, 177 insertions(+), 15 deletions(-)

diff --git a/devel/libnjs/Makefile b/devel/libnjs/Makefile
index 994535c81671..537185d9c1f6 100644
--- a/devel/libnjs/Makefile
+++ b/devel/libnjs/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	libnjs
-DISTVERSION=	0.8.10
+DISTVERSION=	0.9.0
 CATEGORIES=	devel www
 
 MAINTAINER=	osa@FreeBSD.org
diff --git a/devel/libnjs/distinfo b/devel/libnjs/distinfo
index ec3651016160..36531740d26c 100644
--- a/devel/libnjs/distinfo
+++ b/devel/libnjs/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744834488
-SHA256 (nginx-njs-0.8.10_GH0.tar.gz) = 0be4bdd79184cd43f55a0377e59107fddfeef33e54f97c890894f0fe72628d26
-SIZE (nginx-njs-0.8.10_GH0.tar.gz) = 942446
+TIMESTAMP = 1746535107
+SHA256 (nginx-njs-0.9.0_GH0.tar.gz) = 7b0446f0b3e0b63b57883e0464d883f0ac4eab82ec7746599d37563dc6808203
+SIZE (nginx-njs-0.9.0_GH0.tar.gz) = 942562
diff --git a/devel/libnjs/pkg-plist b/devel/libnjs/pkg-plist
index 004da3a4354f..dcb10afe415b 100644
--- a/devel/libnjs/pkg-plist
+++ b/devel/libnjs/pkg-plist
@@ -5,6 +5,8 @@ include/njs_array.h
 include/njs_array_buffer.h
 include/njs_assert.h
 include/njs_async.h
+include/njs_atom.h
+include/njs_atom_defs.h
 include/njs_auto_config.h
 include/njs_boolean.h
 include/njs_buffer.h
@@ -24,7 +26,6 @@ include/njs_generator.h
 include/njs_iterator.h
 include/njs_json.h
 include/njs_lexer.h
-include/njs_lexer_tables.h
 include/njs_lvlhsh.h
 include/njs_main.h
 include/njs_malloc.h
@@ -34,7 +35,6 @@ include/njs_mp.h
 include/njs_murmur_hash.h
 include/njs_number.h
 include/njs_object.h
-include/njs_object_hash.h
 include/njs_object_prop_declare.h
 include/njs_parser.h
 include/njs_promise.h
diff --git a/lang/njs/Makefile b/lang/njs/Makefile
index fe7c619f091c..73631d731cc1 100644
--- a/lang/njs/Makefile
+++ b/lang/njs/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	njs
-DISTVERSION=	0.8.10
+DISTVERSION=	0.9.0
 CATEGORIES=	lang www
 
 MAINTAINER=	osa@FreeBSD.org
diff --git a/lang/njs/distinfo b/lang/njs/distinfo
index 6caa8f3e5e60..fdd1988a13da 100644
--- a/lang/njs/distinfo
+++ b/lang/njs/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744849432
-SHA256 (nginx-njs-0.8.10_GH0.tar.gz) = 0be4bdd79184cd43f55a0377e59107fddfeef33e54f97c890894f0fe72628d26
-SIZE (nginx-njs-0.8.10_GH0.tar.gz) = 942446
+TIMESTAMP = 1746537031
+SHA256 (nginx-njs-0.9.0_GH0.tar.gz) = 7b0446f0b3e0b63b57883e0464d883f0ac4eab82ec7746599d37563dc6808203
+SIZE (nginx-njs-0.9.0_GH0.tar.gz) = 942562
diff --git a/www/nginx-devel/Makefile b/www/nginx-devel/Makefile
index 6227bc7cc9a7..4a156c87a74b 100644
--- a/www/nginx-devel/Makefile
+++ b/www/nginx-devel/Makefile
@@ -1,6 +1,6 @@
 PORTNAME?=	nginx
 PORTVERSION=	1.28.0
-PORTREVISION=	2
+PORTREVISION=	1
 CATEGORIES=	www
 MASTER_SITES=	https://nginx.org/download/ \
 		LOCAL/osa
diff --git a/www/nginx-devel/Makefile.extmod b/www/nginx-devel/Makefile.extmod
index 67b474120360..248598e06b69 100644
--- a/www/nginx-devel/Makefile.extmod
+++ b/www/nginx-devel/Makefile.extmod
@@ -238,7 +238,7 @@ NAXSI_VARS=		DSO_EXTMODS+=naxsi NAXSI_SUBDIR=/naxsi_src
 NAXSI_EXTRA_PATCHES=	${PATCHDIR}/extra-patch-naxsi-libinjection__sqli_c \
 			${PATCHDIR}/extra-patch-naxsi_config
 
-NJS_GH_TUPLE=		nginx:njs:0.8.10:njs
+NJS_GH_TUPLE=		nginx:njs:0.9.0:njs
 NJS_CONFIGURE_ON=	--with-cc-opt="-I ${LOCALBASE}/include/quickjs"
 NJS_LIB_DEPENDS=	libquickjs.so:lang/quickjs \
 			libxml2.so:textproc/libxml2 \
diff --git a/www/nginx-devel/distinfo b/www/nginx-devel/distinfo
index 3439d01dff19..29cbdd4b1f6d 100644
--- a/www/nginx-devel/distinfo
+++ b/www/nginx-devel/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1746026197
+TIMESTAMP = 1746537167
 SHA256 (nginx-1.28.0.tar.gz) = c6b5c6b086c0df9d3ca3ff5e084c1d0ef909e6038279c71c1c3e985f576ff76a
 SIZE (nginx-1.28.0.tar.gz) = 1280111
 SHA256 (nginx_mogilefs_module-1.0.4.tar.gz) = 7ac230d30907f013dff8d435a118619ea6168aa3714dba62c6962d350c6295ae
@@ -105,8 +105,8 @@ SHA256 (wargio-naxsi-1.7_GH0.tar.gz) = adee817da71913f64a9fb0fca142d9520bb0e5014
 SIZE (wargio-naxsi-1.7_GH0.tar.gz) = 1132392
 SHA256 (libinjection-libinjection-b9fcaaf_GH0.tar.gz) = 7812e1316b61a7a7d3a65a57a07c6d5235ac40fe35e6edda983f31a44661a38e
 SIZE (libinjection-libinjection-b9fcaaf_GH0.tar.gz) = 2218207
-SHA256 (nginx-njs-0.8.10_GH0.tar.gz) = 0be4bdd79184cd43f55a0377e59107fddfeef33e54f97c890894f0fe72628d26
-SIZE (nginx-njs-0.8.10_GH0.tar.gz) = 942446
+SHA256 (nginx-njs-0.9.0_GH0.tar.gz) = 7b0446f0b3e0b63b57883e0464d883f0ac4eab82ec7746599d37563dc6808203
+SIZE (nginx-njs-0.9.0_GH0.tar.gz) = 942562
 SHA256 (osokin-nginx-otel-3a655df_GH0.tar.gz) = 71ee1561303c289d4562148f8719b60796c36abe16de1b3c10d10b8e6f03a952
 SIZE (osokin-nginx-otel-3a655df_GH0.tar.gz) = 27169
 SHA256 (konstruxi-ngx_postgres-8aa7359_GH0.tar.gz) = c69ad4495de7c7883ebc23e1e6c4cc83a4ac6a7fddd4d5c12e49d33b65f7c50b
diff --git a/www/unit/Makefile b/www/unit/Makefile
index 4544f45f4acd..c331b0fb8614 100644
--- a/www/unit/Makefile
+++ b/www/unit/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	unit
 PORTVERSION=	${UNIT_VERSION}
+PORTREVISION=	1
 CATEGORIES=	www
 MASTER_SITES?=	https://unit.nginx.org/download/
 DISTFILES?=	${PORTNAME}-${PORTVERSION}.tar.gz
diff --git a/www/unit/files/patch-auto_njs b/www/unit/files/patch-auto_njs
new file mode 100644
index 000000000000..a4cbc6ec8d3c
--- /dev/null
+++ b/www/unit/files/patch-auto_njs
@@ -0,0 +1,22 @@
+--- auto/njs.orig	2025-02-27 22:02:21 UTC
++++ auto/njs
+@@ -25,8 +25,8 @@ nxt_feature_test="#include <njs.h>
+ nxt_feature_libs="$NXT_NJS_LIBS $NXT_NJS_AUX_LIBS"
+ nxt_feature_test="#include <njs.h>
+
+-                  #if NJS_VERSION_NUMBER < 0x000803
+-                  # error njs < 0.8.3 is not supported.
++                  #if NJS_VERSION_NUMBER < 0x000900
++                  # error njs < 0.9.0 is not supported.
+                   #endif
+
+                   int main(void) {
+@@ -44,7 +44,7 @@ if [ $nxt_found = no ]; then
+
+ if [ $nxt_found = no ]; then
+     $echo
+-    $echo $0: error: no njs library \>= 0.8.3 found.
++    $echo $0: error: no njs library \>= 0.9.0 found.
+     $echo
+     exit 1;
+ fi
diff --git a/www/unit/files/patch-src_nxt__http__js.c b/www/unit/files/patch-src_nxt__http__js.c
new file mode 100644
index 000000000000..41a2a39a1c56
--- /dev/null
+++ b/www/unit/files/patch-src_nxt__http__js.c
@@ -0,0 +1,139 @@
+--- src/nxt_http_js.c.orig	2025-02-27 22:02:21 UTC
++++ src/nxt_http_js.c
+@@ -9,27 +9,31 @@ static njs_int_t nxt_http_js_ext_uri(njs_vm_t *vm, njs
+
+
+ static njs_int_t nxt_http_js_ext_uri(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval);
+ static njs_int_t nxt_http_js_ext_host(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
+-static njs_int_t nxt_http_js_ext_remote_addr(njs_vm_t *vm,
+-    njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval,
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
+     njs_value_t *retval);
++static njs_int_t nxt_http_js_ext_remote_addr(njs_vm_t *vm,
++    njs_object_prop_t *prop, uint32_t atom_id, njs_value_t *value,
++    njs_value_t *setval, njs_value_t *retval);
+ static njs_int_t nxt_http_js_ext_get_args(njs_vm_t *vm,
+-    njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval,
+-    njs_value_t *retval);
++    njs_object_prop_t *prop, uint32_t atom_id, njs_value_t *value,
++    njs_value_t *setval, njs_value_t *retval);
+ static njs_int_t nxt_http_js_ext_get_header(njs_vm_t *vm,
+-    njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval,
+-    njs_value_t *retval);
++    njs_object_prop_t *prop, uint32_t atom_id, njs_value_t *value,
++    njs_value_t *setval, njs_value_t *retval);
+ static njs_int_t nxt_http_js_ext_keys_header(njs_vm_t *vm,
+     njs_value_t *value, njs_value_t *keys);
+ static njs_int_t nxt_http_js_ext_get_cookie(njs_vm_t *vm,
+-    njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval,
++    njs_object_prop_t *prop, uint32_t atom_id, njs_value_t *value,
++    njs_value_t *setval,
+     njs_value_t *retval);
+ static njs_int_t nxt_http_js_ext_keys_cookie(njs_vm_t *vm, njs_value_t *value,
+     njs_value_t *keys);
+ static njs_int_t nxt_http_js_ext_get_var(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval);
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval);
+
+
+ static njs_external_t  nxt_http_js_proto[] = {
+@@ -109,7 +113,7 @@ static njs_int_t
+
+
+ static njs_int_t
+-nxt_http_js_ext_uri(njs_vm_t *vm, njs_object_prop_t *prop,
++nxt_http_js_ext_uri(njs_vm_t *vm, njs_object_prop_t *prop, uint32_t atom_id,
+     njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
+ {
+     nxt_http_request_t  *r;
+@@ -126,7 +130,7 @@ static njs_int_t
+
+
+ static njs_int_t
+-nxt_http_js_ext_host(njs_vm_t *vm, njs_object_prop_t *prop,
++nxt_http_js_ext_host(njs_vm_t *vm, njs_object_prop_t *prop, uint32_t atom_id,
+     njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
+ {
+     nxt_http_request_t  *r;
+@@ -144,7 +148,8 @@ nxt_http_js_ext_remote_addr(njs_vm_t *vm, njs_object_p
+
+ static njs_int_t
+ nxt_http_js_ext_remote_addr(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval)
+ {
+     nxt_http_request_t  *r;
+
+@@ -162,7 +167,8 @@ nxt_http_js_ext_get_args(njs_vm_t *vm, njs_object_prop
+
+ static njs_int_t
+ nxt_http_js_ext_get_args(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval)
+ {
+     u_char              *start;
+     njs_int_t           ret;
+@@ -193,7 +199,8 @@ nxt_http_js_ext_get_header(njs_vm_t *vm, njs_object_pr
+
+ static njs_int_t
+ nxt_http_js_ext_get_header(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval)
+ {
+     njs_int_t           rc;
+     njs_str_t           key;
+@@ -206,7 +213,7 @@ nxt_http_js_ext_get_header(njs_vm_t *vm, njs_object_pr
+         return NJS_DECLINED;
+     }
+
+-    rc = njs_vm_prop_name(vm, prop, &key);
++    rc = njs_vm_prop_name(vm, atom_id, &key);
+     if (rc != NJS_OK) {
+         njs_value_undefined_set(retval);
+         return NJS_DECLINED;
+@@ -266,7 +273,8 @@ nxt_http_js_ext_get_cookie(njs_vm_t *vm, njs_object_pr
+
+ static njs_int_t
+ nxt_http_js_ext_get_cookie(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval)
+ {
+     njs_int_t              rc;
+     njs_str_t              key;
+@@ -280,7 +288,7 @@ nxt_http_js_ext_get_cookie(njs_vm_t *vm, njs_object_pr
+         return NJS_DECLINED;
+     }
+
+-    rc = njs_vm_prop_name(vm, prop, &key);
++    rc = njs_vm_prop_name(vm, atom_id, &key);
+     if (rc != NJS_OK) {
+         njs_value_undefined_set(retval);
+         return NJS_DECLINED;
+@@ -355,7 +363,8 @@ nxt_http_js_ext_get_var(njs_vm_t *vm, njs_object_prop_
+
+ static njs_int_t
+ nxt_http_js_ext_get_var(njs_vm_t *vm, njs_object_prop_t *prop,
+-    njs_value_t *value, njs_value_t *setval, njs_value_t *retval)
++    uint32_t atom_id, njs_value_t *value, njs_value_t *setval,
++    njs_value_t *retval)
+ {
+     njs_int_t           rc;
+     njs_str_t           key;
+@@ -369,7 +378,7 @@ nxt_http_js_ext_get_var(njs_vm_t *vm, njs_object_prop_
+         return NJS_DECLINED;
+     }
+
+-    rc = njs_vm_prop_name(vm, prop, &key);
++    rc = njs_vm_prop_name(vm, atom_id, &key);
+     if (rc != NJS_OK) {
+         njs_value_undefined_set(retval);
+         return NJS_DECLINED;