nginx / unit

NGINX Unit - universal web app server - a lightweight and versatile open source server that simplifies the application stack by natively executing application code across eight different programming language runtimes.
https://unit.nginx.org
Apache License 2.0
5.26k stars 322 forks source link

Release 1.32.0 #1133

Closed andrey-zelenkov closed 4 months ago

ac000 commented 4 months ago

The version bump shouldn't be part of this should it? Which of those commits do you see as being tagged as 1.32.0?

andrey-zelenkov commented 4 months ago

The version bump shouldn't be part of this should it?

This commit can be excluded from the pull request, but it should still be added shortly after the release anyway.

Which of those commits do you see as being tagged as 1.32.0?

https://github.com/nginx/unit/pull/1133/commits/4117874518d1dc109b894d40beec7e46c5235a26

ac000 commented 4 months ago

Currently missing changelog entries from my side...

02d1984c HTTP: Remove short read check in nxt_http_static_buf_completion() # Fixes static file serving under certain conditions
b500c36d Allow to set the permissions of the Unix domain control socket # File permissions, owner & group
0c983530 Node.js: Build/install fix
30b410e4 Avoid a segfault in nxt_conn_io_sendbuf() # Fixes a crash in the router process
andrey-zelenkov commented 4 months ago

Rebased, updated changes.xml to include new entries, dockerfiles updated, CHANGES regenerated and date updated, docs/unit-openapi.yaml changes moved from 12f3db2 to 4bb90e5.

% git range-diff 8a8b28d1...12f3db2d
 -:  -------- >  1:  c3af21e9 Docker: Switch to github
 -:  -------- >  2:  baff936b Packages: Move dist target to git archive
 -:  -------- >  3:  34b3a812 Add nxt_file_chown()
 -:  -------- >  4:  b500c36d Allow to set the permissions of the Unix domain control socket
 -:  -------- >  5:  2bd3b418 Docs: Update man page for new --control-* options
 -:  -------- >  6:  1dca8602 Tools: disambiguate unitc control socket detection
 -:  -------- >  7:  756feafd Node.js: Use console.warn instead of stderr.write
 -:  -------- >  8:  ea239635 Docker: Switch python3.12 to using github
 -:  -------- >  9:  0c983530 Node.js: Build/install fix
 -:  -------- > 10:  30b410e4 Avoid a segfault in nxt_conn_io_sendbuf()
 -:  -------- > 11:  62894ae7 Var: Refactored nxt_var_ref_get()
 -:  -------- > 12:  01fd121c Var: Refactored nxt_http_unknown_var_ref()
 -:  -------- > 13:  63507c49 Var: Make nxt_var_cache_value() more general
 -:  -------- > 14:  46554015 Var: Introduced nxt_var_get()
 -:  -------- > 15:  63ad4deb NJS: Simplified nxt_js_call()
 -:  -------- > 16:  33c6c4d4 NJS: variable access support
 -:  -------- > 17:  183a1e9d Docker: redirect logs to stderr
 -:  -------- > 18:  5570d807 Packages: fixed a path to python 3.12 example app
 -:  -------- > 19:  53648ed5 Tools: Fix typo in tools/README.md
 -:  -------- > 20:  d24ae5a9 Add additional replace rules for node:* modules
 -:  -------- > 21:  bd0abdf0 Docker: Shallow clone the Unit repo
 -:  -------- > 22:  914cd4e3 .mailmap: Map some more personal addresses
 -:  -------- > 23:  d52a9361 Docker: Update versions of Go, Node, PHP, Ruby
 -:  -------- > 24:  2765522b Tests: NJS request variables
 -:  -------- > 25:  cca2c46e Tools: setup-unit: Use trap(1) to handle cleanup
 -:  -------- > 26:  d6ed0003 Tools: setup-unit: De-duplicate code
 -:  -------- > 27:  e9a0c49d Tools: setup-unit: Pass --fail-with-body to curl(1)
 -:  -------- > 28:  565a8ed0 Tools: setup-unit: ctl edit: Print file name on error
 -:  -------- > 29:  bc093ab3 Tools: setup-unit: Fix error message
 -:  -------- > 30:  6aa5ef63 Tools: setup-unit: ctl edit: Append suffix to tmp file name
 -:  -------- > 31:  f71ead5f Updated copyright notice.
 1:  64741ecf ! 32:  5fc71fc8 Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: can be used as a unique request identifier.

      <change type="feature">
      <para>
    ++options to set control socket permissions.
    ++</para>
    ++</change>
    ++
    ++<change type="feature">
    ++<para>
     +Ruby response field arrays.
     +</para>
     +</change>
     +
     +<change type="bugfix">
     +<para>
    ++router could crash while sending large files. Thanks to rustedsword.
    ++</para>
    ++</change>
    ++
    ++<change type="bugfix">
    ++<para>
    ++trying to serve static files over a certain size could lead to error.
    ++</para>
    ++</change>
    ++
    ++<change type="bugfix">
    ++<para>
     +"uidmap" and "gidmap" isolation options validation.
     +</para>
     +</change>
    @@ docs/changes.xml: can be used as a unique request identifier.
      with Next.js.
      </para>
     @@ docs/changes.xml: ServerRequest.httpVersion variable format in Node.js module.
    + </para>
      </change>

    ++<change type="bugfix">
    ++<para>
    ++Node.js module name rules, notable for Nuxt applications.
    ++</para>
    ++</change>

     -</changes>
     -
 2:  d6b3c589 ! 33:  26337373 Generated Dockerfiles for Unit 1.32.0
    @@ Metadata
      ## Commit message ##
         Generated Dockerfiles for Unit 1.32.0

    - ## pkg/docker/Dockerfile.go1.20 ##
    -@@ pkg/docker/Dockerfile.go1.20: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    + ## pkg/docker/Dockerfile.go1.21 ##
    +@@ pkg/docker/Dockerfile.go1.21: LABEL org.opencontainers.image.url="https://unit.nginx.org"
      LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
      LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
      LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    @@ pkg/docker/Dockerfile.go1.20: LABEL org.opencontainers.image.url="https://unit.n

      RUN set -ex \
          && savedAptMark="$(apt-mark showmanual)" \
    -@@ pkg/docker/Dockerfile.go1.20: RUN set -ex \
    +@@ pkg/docker/Dockerfile.go1.21: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \

    - ## pkg/docker/Dockerfile.go1.21 ##
    -@@ pkg/docker/Dockerfile.go1.21: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    + ## pkg/docker/Dockerfile.go1.22 ##
    +@@ pkg/docker/Dockerfile.go1.22: LABEL org.opencontainers.image.url="https://unit.nginx.org"
      LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
      LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
      LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    @@ pkg/docker/Dockerfile.go1.21: LABEL org.opencontainers.image.url="https://unit.n

      RUN set -ex \
          && savedAptMark="$(apt-mark showmanual)" \
    -@@ pkg/docker/Dockerfile.go1.21: RUN set -ex \
    +@@ pkg/docker/Dockerfile.go1.22: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.jsc11: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.minimal: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \

    - ## pkg/docker/Dockerfile.node18 ##
    -@@ pkg/docker/Dockerfile.node18: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    + ## pkg/docker/Dockerfile.node20 ##
    +@@ pkg/docker/Dockerfile.node20: LABEL org.opencontainers.image.url="https://unit.nginx.org"
      LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
      LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
      LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    @@ pkg/docker/Dockerfile.node18: LABEL org.opencontainers.image.url="https://unit.n

      RUN set -ex \
          && savedAptMark="$(apt-mark showmanual)" \
    -@@ pkg/docker/Dockerfile.node18: RUN set -ex \
    +@@ pkg/docker/Dockerfile.node20: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \

    - ## pkg/docker/Dockerfile.node20 ##
    -@@ pkg/docker/Dockerfile.node20: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    + ## pkg/docker/Dockerfile.node21 ##
    +@@ pkg/docker/Dockerfile.node21: LABEL org.opencontainers.image.url="https://unit.nginx.org"
      LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
      LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
      LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    @@ pkg/docker/Dockerfile.node20: LABEL org.opencontainers.image.url="https://unit.n

      RUN set -ex \
          && savedAptMark="$(apt-mark showmanual)" \
    -@@ pkg/docker/Dockerfile.node20: RUN set -ex \
    +@@ pkg/docker/Dockerfile.node21: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.perl5.36: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.perl5.38: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.php8.2: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
    +     && cd unit \
    +     && NCPU="$(getconf _NPROCESSORS_ONLN)" \
    +     && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    +
    + ## pkg/docker/Dockerfile.php8.3 ##
    +@@ pkg/docker/Dockerfile.php8.3: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    + LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
    + LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
    + LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    +-LABEL org.opencontainers.image.version="1.31.1"
    ++LABEL org.opencontainers.image.version="1.32.0"
    + 
    + RUN set -ex \
    +     && savedAptMark="$(apt-mark showmanual)" \
    +@@ pkg/docker/Dockerfile.php8.3: RUN set -ex \
    +     && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
    +     && mkdir -p /usr/src/unit \
    +     && cd /usr/src/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.python3.11: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.python3.12: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.ruby3.2: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
    +     && cd unit \
    +     && NCPU="$(getconf _NPROCESSORS_ONLN)" \
    +     && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    +
    + ## pkg/docker/Dockerfile.ruby3.3 ##
    +@@ pkg/docker/Dockerfile.ruby3.3: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    + LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
    + LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
    + LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    +-LABEL org.opencontainers.image.version="1.31.1"
    ++LABEL org.opencontainers.image.version="1.32.0"
    + 
    + RUN set -ex \
    +     && savedAptMark="$(apt-mark showmanual)" \
    +@@ pkg/docker/Dockerfile.ruby3.3: RUN set -ex \
    +     && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
    +     && mkdir -p /usr/src/unit \
    +     && cd /usr/src/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    @@ pkg/docker/Dockerfile.wasm: RUN set -ex \
          && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
          && mkdir -p /usr/src/unit \
          && cd /usr/src/unit \
    --    && hg clone -u 1.31.1-1 https://hg.nginx.org/unit \
    -+    && hg clone -u 1.32.0-1 https://hg.nginx.org/unit \
    +-    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    ++    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
 3:  41178745 ! 34:  4bb90e5f Added version 1.32.0 CHANGES
    @@ Commit message
      ## CHANGES ##
     @@

    -+Changes with Unit 1.32.0                                         26 Feb 2024
    ++Changes with Unit 1.32.0                                         27 Feb 2024
     +
     +    *) Feature: conditional access logging.
     +
    ++    *) Feature: NJS variables access.
    ++
     +    *) Feature: $request_id variable contains a string that is formed using
     +       random data and can be used as a unique request identifier.
     +
    ++    *) Feature: options to set control socket permissions.
    ++
     +    *) Feature: Ruby response field arrays.
     +
    ++    *) Bugfix: router could crash while sending large files. Thanks to
    ++       rustedsword.
    ++
    ++    *) Bugfix: trying to serve static files over a certain size could lead
    ++       to error.
    ++
     +    *) Bugfix: "uidmap" and "gidmap" isolation options validation.
     +
     +    *) Bugfix: HTTP header field value encoding could be misinterpreted in
    @@ CHANGES
     +
     +    *) Bugfix: ServerRequest.httpVersion variable format in Node.js module.
     +
    ++    *) Bugfix: Node.js module name rules, notable for Nuxt applications.
    ++
     +    *) Bugfix: correct environment variables in Go module for macOS/arm64
     +       systems.
     +
    @@ docs/changes.xml: Initial release of Python 3.12 module for NGINX Unit.
                      unit-wasm"
               ver="1.32.0" rev="1"
     -         date="" time=""
    -+         date="2024-02-26" time="18:00:00 +0300"
    ++         date="2024-02-27" time="18:00:00 +0300"
               packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">

      <change>

      <change>
    @@ docs/changes.xml: NGINX Unit updated to 1.32.0.

      <changes apply="unit" ver="1.32.0" rev="1"
     -         date="" time=""
    -+         date="2024-02-26" time="18:00:00 +0300"
    ++         date="2024-02-27" time="18:00:00 +0300"
               packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">

      <change type="feature">
    +
    + ## docs/unit-openapi.yaml ##
    +@@
    + openapi: 3.0.0
    + info:
    +-  title: "NGINX Unit 1.31.1"
    ++  title: "NGINX Unit 1.32.0"
    +   description: "NGINX Unit is a lightweight and versatile application runtime
    +     that provides the essential components for your web application as a
    +     single open-source server: running application code, serving static assets,
 4:  8a8b28d1 ! 35:  12f3db2d Version bump
    @@ docs/changes.xml
               date="2023-10-17" time="16:00:00 -0700"
               packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">

    - ## docs/unit-openapi.yaml ##
    -@@
    - openapi: 3.0.0
    - info:
    --  title: "NGINX Unit 1.31.1"
    -+  title: "NGINX Unit 1.32.0"
    -   description: "NGINX Unit is a lightweight and versatile application runtime
    -     that provides the essential components for your web application as a
    -     single open-source server: running application code, serving static assets,
    -
      ## version ##
     @@
andrey-zelenkov commented 4 months ago

One more forgotten change:

% git range-diff 12f3db2d...80e48e52
1:  5fc71fc8 ! 1:  62cb2b8c Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: ServerRequest.httpVersion variable format in Node.js module.

     -</changes>
     -
    --
    ++<change type="bugfix">
    ++<para>
    ++Node.js tarball location changed to avoid build/install errors.
    ++</para>
    ++</change>
    + 
     -<changes apply="unit" ver="1.32.0" rev="1"
     -         date="" time=""
     -         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
2:  26337373 = 2:  783c319d Generated Dockerfiles for Unit 1.32.0
3:  4bb90e5f ! 3:  9bc0dcda Added version 1.32.0 CHANGES
    @@ CHANGES
     +
     +    *) Bugfix: Node.js module name rules, notable for Nuxt applications.
     +
    ++    *) Bugfix: Node.js tarball location changed to avoid build/install
    ++       errors.
    ++
     +    *) Bugfix: correct environment variables in Go module for macOS/arm64
     +       systems.
     +
4:  12f3db2d = 4:  80e48e52 Version bump
ac000 commented 4 months ago

On Wed, 21 Feb 2024 06:18:40 -0800 andrey-zelenkov @.***> wrote:

@andrey-zelenkov commented on this pull request.

  • *) Bugfix: trying to serve static files over a certain size could lead
  • to error.

Ok. What do you think about this alternative:

Bugfix: serving static files from a network filesystem could lead to error.

Works for me...

ac000 commented 4 months ago

You can now mention 'WebAssembly WASI 0.2.0 Component Model support'

@tippexs @callahad will probably want to word it...

andrey-zelenkov commented 4 months ago

Rebased and updated (+ regenerated) changes. Also corrected wording:

% git range-diff 80e48e52...dc70957f
 -:  -------- >  1:  697a5850 Python: bytearray body support for ASGI module.
 -:  -------- >  2:  56d3a1a7 Add GitHub Actions
 -:  -------- >  3:  bca44630 .mailmap: Map Dylan's GitHub address
 -:  -------- >  4:  f2e64475 Wasm-wc: Register a new Wasm component model language module type
 -:  -------- >  5:  f0782722 Wasm-wc: Add core configuration data structure
 -:  -------- >  6:  20ada4b5 Wasm-wc: Core of initial Wasm component model language module support
 -:  -------- >  7:  a9345dd4 Add a .rustfmt.toml file
 -:  -------- >  8:  79c81772 Wasm-wc: Run src/lib.rs through rustfmt
 -:  -------- >  9:  ac3a54d6 Wasm-wc: Improve request buffer handling
 -:  -------- > 10:  98f808af Wasm-wc: Upgrade to wasmtime 17
 -:  -------- > 11:  60eb6c43 Wasm-wc: Allow to use the 'reactor' adaptor again
 -:  -------- > 12:  8d030139 Wasm-wc: Add Cargo.lock
 -:  -------- > 13:  07a0c9a3 Wasm-wc: Wire up the language module to the config system
 -:  -------- > 14:  da44dc00 Fix alignment of wasm options text in auto/help
 -:  -------- > 15:  4e6d7e87 Wasm-wc: Wire it up to the build system
 -:  -------- > 16:  7702293d Docker: Bump rust version to 1.76.0
 -:  -------- > 17:  1297f6f0 Docker: Add wasm-wasi-component to the wasm target
 -:  -------- > 18:  4c558697 Docker: Re-generate Dockerfile.wasm
 -:  -------- > 19:  7883acc6 Tests: Ruby hook tests unstable for version older 3.0
 -:  -------- > 20:  99da2f3c Tests: check for the AddressSanitizer flag during discovery
 -:  -------- > 21:  dbd9d25f Tests: skip some of TLS reconfiguration tests under AddressSanitizer
 -:  -------- > 22:  cabea47d Tests: renamed test_python_procman.py since it's not Python-specific
 -:  -------- > 23:  3f805bc6 Packages: added wasm-wasi-component module packaging for deb-based distros
 -:  -------- > 24:  7a640556 Packages: added wasm-wasi-component module packaging for rpm-based distros
 -:  -------- > 25:  7b13c306 Wasm-wc: Add nxt_unit.o as a dependency in the auto script
 -:  -------- > 26:  d54af163 Wasm-wc: Use the cargo build output as the make target dependency
 -:  -------- > 27:  2f3c7c2c Update third-party java components to their recent versions
 1:  62cb2b8c ! 28:  e683ce4d Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: NGINX Unit updated to 1.32.0.
      </change>

     -<change type="bugfix">
    --<para>
    --http.createServer() now accepts "options" argument introduced in Node.js v9.6.0, v8.12.0.
    --</para>
    --</change>
     +
     +</changes>
     +
    @@ docs/changes.xml: NGINX Unit updated to 1.32.0.
     +<changes apply="unit" ver="1.32.0" rev="1"
     +         date="" time=""
     +         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
    - 
    - <change type="feature">
    ++
    ++<change type="feature">
      <para>
    +-http.createServer() now accepts "options" argument introduced in Node.js v9.6.0, v8.12.0.
    ++WebAssembly WASI 0.2.0 Component Model.
    + </para>
    + </change>
    + 
     @@ docs/changes.xml: can be used as a unique request identifier.

      <change type="feature">
      <para>
    +-bytearray in response body for ASGI applications.
     +options to set control socket permissions.
     +</para>
     +</change>
    @@ docs/changes.xml: can be used as a unique request identifier.
     +<change type="feature">
     +<para>
     +Ruby response field arrays.
    + </para>
    + </change>
    + 
    + <change type="feature">
    + <para>
    ++bytearray in response body for ASGI applications.
     +</para>
     +</change>
     +
    @@ docs/changes.xml: can be used as a unique request identifier.
     +
     +<change type="bugfix">
     +<para>
    -+trying to serve static files over a certain size could lead to error.
    ++serving static files from a network filesystem could lead to error.
     +</para>
     +</change>
     +
 2:  783c319d ! 29:  5557634f Generated Dockerfiles for Unit 1.32.0
    @@ pkg/docker/Dockerfile.ruby3.3: RUN set -ex \
          && cd unit \
          && NCPU="$(getconf _NPROCESSORS_ONLN)" \
          && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
    -
    - ## pkg/docker/Dockerfile.wasm ##
    -@@ pkg/docker/Dockerfile.wasm: LABEL org.opencontainers.image.url="https://unit.nginx.org"
    - LABEL org.opencontainers.image.source="https://github.com/nginx/unit"
    - LABEL org.opencontainers.image.documentation="https://unit.nginx.org/installation/#docker-images"
    - LABEL org.opencontainers.image.vendor="NGINX Docker Maintainers <docker-maint@nginx.com>"
    --LABEL org.opencontainers.image.version="1.31.1"
    -+LABEL org.opencontainers.image.version="1.32.0"
    - 
    - RUN set -ex \
    -     && savedAptMark="$(apt-mark showmanual)" \
    -@@ pkg/docker/Dockerfile.wasm: RUN set -ex \
    -     && mkdir -p /usr/lib/unit/modules /usr/lib/unit/debug-modules \
    -     && mkdir -p /usr/src/unit \
    -     && cd /usr/src/unit \
    --    && git clone --depth 1 -b 1.31.1-1 https://github.com/nginx/unit \
    -+    && git clone --depth 1 -b 1.32.0-1 https://github.com/nginx/unit \
    -     && cd unit \
    -     && NCPU="$(getconf _NPROCESSORS_ONLN)" \
    -     && DEB_HOST_MULTIARCH="$(dpkg-architecture -q DEB_HOST_MULTIARCH)" \
 3:  9bc0dcda ! 30:  581d64cd Added version 1.32.0 CHANGES
    @@ CHANGES

     +Changes with Unit 1.32.0                                         27 Feb 2024
     +
    ++    *) Feature: WebAssembly WASI 0.2.0 Component Model.
    ++
     +    *) Feature: conditional access logging.
     +
     +    *) Feature: NJS variables access.
    @@ CHANGES
     +
     +    *) Feature: Ruby response field arrays.
     +
    ++    *) Feature: bytearray in response body for ASGI applications.
    ++
     +    *) Bugfix: router could crash while sending large files. Thanks to
     +       rustedsword.
     +
    -+    *) Bugfix: trying to serve static files over a certain size could lead
    -+       to error.
    ++    *) Bugfix: serving static files from a network filesystem could lead to
    ++       error.
     +
     +    *) Bugfix: "uidmap" and "gidmap" isolation options validation.
     +
 4:  80e48e52 = 31:  dc70957f Version bump
ac000 commented 4 months ago

I wonder if it's worth mentioning these two patches of Alex's in the changelog?

commit 9e986704480de0d6b74dafa5ebcf775eaa88333a
Author: Alejandro Colomar <alx@kernel.org>
Date:   Thu Feb 8 11:15:34 2024 +0100

    Configuration: Fix validation of "processes"

    It's an integer, not a floating number.
commit 46cef09f296d9a3d54b98331d25920fc6322bea8
Author: Alejandro Colomar <alx@kernel.org>
Date:   Wed Jan 31 15:34:57 2024 +0100

    Configuration: Don't corrupt abstract socket names

    The commit that added support for Unix sockets accepts abstract sockets
    using '@' in the config, but we stored it internally using '\0'.

    We want to support abstract sockets transparently to the user, so that
    if the user configures unitd with '@', if we receive a query about the
    current configuration, the user should see the same exact thing that was
    configured.  So, this commit avoids the transformation in the internal
    state file, storing user input pristine, and we only transform the '@'
    in temporary strings.

    This commit fixes another bug, where we try to connect to abstract
    sockets with a trailing '\0' in their name due to calling twice
    nxt_sockaddr_parse() on the same string.  By calling that function only
    once with each copy of the string, we have fixed that bug.

    ...
andrey-zelenkov commented 4 months ago

Configuration: Fix validation of "processes"

I don't think it worth to mention since this is more of a typo. I doubt that anyone seriously tried to use a non-integer number of processes.

Configuration: Don't corrupt abstract socket names

If I understand it correctly then this one actually worth to mention. Will add something like abstract socket names could be corrupted while router respawn or abstract socket names could be corrupted while replicating state to changes.xml. Thank you.

andrey-zelenkov commented 4 months ago

Done:

% git range-diff dc70957f...523b1b0a
1:  e683ce4d ! 1:  1f4b7131 Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: can be used as a unique request identifier.
      <para>
     -bytearray in response body for ASGI applications.
     +options to set control socket permissions.
    -+</para>
    -+</change>
    -+
    -+<change type="feature">
    -+<para>
    -+Ruby response field arrays.
      </para>
      </change>
1:  e683ce4d ! 1:  1f4b7131 Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: can be used as a unique request identifier.
      <para>
     -bytearray in response body for ASGI applications.
     +options to set control socket permissions.
    -+</para>
    -+</change>
    -+
    -+<change type="feature">
    -+<para>
    -+Ruby response field arrays.
      </para>
      </change>

      <change type="feature">
      <para>
    ++Ruby response field arrays.
    ++</para>
    ++</change>
    ++
    ++<change type="feature">
    ++<para>
     +bytearray in response body for ASGI applications.
     +</para>
     +</change>
    @@ docs/changes.xml: can be used as a unique request identifier.
     +
     +<change type="bugfix">
     +<para>
    ++abstract socket names were corrupted while router respawn. Thanks to Alejandro
    ++Colomar.
    ++</para>
    ++</change>
    ++
    ++<change type="bugfix">
    ++<para>
     +HTTP header field value encoding could be misinterpreted in Python module.
     +</para>
     +</change>
2:  5557634f = 2:  bca4a05f Generated Dockerfiles for Unit 1.32.0
3:  581d64cd ! 3:  6fc028dc Added version 1.32.0 CHANGES
    @@ CHANGES
     +
     +    *) Bugfix: "uidmap" and "gidmap" isolation options validation.
     +
    ++    *) Bugfix: abstract socket names were corrupted while router respawn.
    ++       Thanks to Alejandro Colomar.
    ++
     +    *) Bugfix: HTTP header field value encoding could be misinterpreted in
     +       Python module.
     +
4:  dc70957f = 4:  523b1b0a Version bump
ac000 commented 4 months ago

The abstract socket name corruption was... complex...

The simplest I could put it would be "... the abstract UNIX socket name could be corrupted during configuration validation..."

Specifically this kind of config would trigger it

"upstreams": {
    "u": {
        "servers": {
            "unix:@abstract": {}
        }
    }
}

due to calling nxt_sockaddr_unix_parse() twice...

See this thread starting here for the gory details.

andrey-zelenkov commented 4 months ago

Rebased and reworded.

% git range-diff 523b1b0a...f5b84a3d
-:  -------- > 1:  e2cab032 Remove debug from builds and tests
-:  -------- > 2:  faa7e792 Packages: Pass CFLAGS to compile wasm modules on all packaging targets
1:  1f4b7131 ! 3:  f5798841 Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: can be used as a unique request identifier.
     +
     +<change type="bugfix">
     +<para>
    -+abstract socket names were corrupted while router respawn. Thanks to Alejandro
    -+Colomar.
    ++abstract UNIX socket name could be corrupted during configuration validation.
    ++Thanks to Alejandro Colomar.
     +</para>
     +</change>
     +
2:  bca4a05f = 4:  e6241819 Generated Dockerfiles for Unit 1.32.0
3:  6fc028dc ! 5:  cd60e00d Added version 1.32.0 CHANGES
    @@ CHANGES
     +
     +    *) Bugfix: "uidmap" and "gidmap" isolation options validation.
     +
    -+    *) Bugfix: abstract socket names were corrupted while router respawn.
    -+       Thanks to Alejandro Colomar.
    ++    *) Bugfix: abstract UNIX socket name could be corrupted during
    ++       configuration validation. Thanks to Alejandro Colomar.
     +
     +    *) Bugfix: HTTP header field value encoding could be misinterpreted in
     +       Python module.
4:  523b1b0a = 6:  f5b84a3d Version bump
ac000 commented 4 months ago

On Mon, 26 Feb 2024 09:42:08 -0800 andrey-zelenkov @.***> wrote:

@andrey-zelenkov commented on this pull request.

@@ -53,9 +85,17 @@ NGINX Unit updated to 1.32.0.

- + + + + +<changes apply="unit" ver="1.32.0" rev="1"

  • date="2024-02-27" time="18:00:00 +0300"

I just copied from previous changes. Happy to set any UTC here (can suggest i.e. +0000)

Yes, no reason not to just use UTC...

andrey-zelenkov commented 4 months ago

Rebased and improved wording in changes.xml suggested by @callahad:

% git range-diff f5b84a3d...ccbed6c5
-:  -------- > 1:  9d02b906 Add PHP 8.2 and 8.1 to test matrix
-:  -------- > 2:  d5665f49 Update setup-go to v5
1:  f5798841 ! 3:  d0644670 Edited changes.xml for the 1.32.0 release
    @@ docs/changes.xml: NGINX Unit updated to 1.32.0.
     +<change type="feature">
      <para>
     -http.createServer() now accepts "options" argument introduced in Node.js v9.6.0, v8.12.0.
    -+WebAssembly WASI 0.2.0 Component Model.
    ++WebAssembly Components using WASI interfaces defined in wasi:http/proxy@0.2.0.
      </para>
      </change>

    @@ docs/changes.xml: can be used as a unique request identifier.
      <para>
     -bytearray in response body for ASGI applications.
     +options to set control socket permissions.
    - </para>
    - </change>
    - 
    - <change type="feature">
    - <para>
    -+Ruby response field arrays.
     +</para>
     +</change>
     +
     +<change type="feature">
     +<para>
    -+bytearray in response body for ASGI applications.
    ++Ruby arrays in response headers, improving compatibility with Rack v3.0.
    + </para>
    + </change>
    + 
    + <change type="feature">
    + <para>
    ++Python bytearray response bodies for ASGI applications.
     +</para>
     +</change>
     +
    @@ docs/changes.xml: can be used as a unique request identifier.
     +
     +<change type="bugfix">
     +<para>
    -+http.createServer() now accepts "options" argument introduced in Node.js v9.6.0,
    -+v8.12.0.
    ++Node.js http.createServer() accepts and ignores the "options" argument,
    ++improving compatibility with strapi applications, among others.
     +</para>
     +</change>
     +
    @@ docs/changes.xml: ServerRequest.httpVersion variable format in Node.js module.

     +<change type="bugfix">
     +<para>
    -+Node.js module name rules, notable for Nuxt applications.
    ++Node.js module handles standard library imports prefixed with "node:", making it
    ++possible to run newer Nuxt applications, among others.
     +</para>
     +</change>

    @@ docs/changes.xml: ServerRequest.httpVersion variable format in Node.js module.
     -         packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">
     +<change type="bugfix">
     +<para>
    -+correct environment variables in Go module for macOS/arm64 systems.
    ++Go module sets environment variables necessary for building on macOS/arm64
    ++systems.
     +</para>
     +</change>

      </changes>

    +@@ docs/changes.xml: compatibility with Node.js 15.0.0 and above.
    + 
    + <change type="bugfix">
    + <para>
    +-Node.JS unit-http NPM module now has appropriate default paths for
    +-macOS/arm64 systems.
    ++Node.JS unit-http NPM module now has appropriate default paths for macOS/arm64
    ++systems.
    + </para>
    + </change>
    + 
2:  e6241819 = 4:  d2d44ac6 Generated Dockerfiles for Unit 1.32.0
3:  cd60e00d ! 5:  dcf0e276 Added version 1.32.0 CHANGES
    @@ CHANGES

     +Changes with Unit 1.32.0                                         27 Feb 2024
     +
    -+    *) Feature: WebAssembly WASI 0.2.0 Component Model.
    ++    *) Feature: WebAssembly Components using WASI interfaces defined in
    ++       wasi:http/proxy@0.2.0.
     +
     +    *) Feature: conditional access logging.
     +
    @@ CHANGES
     +
     +    *) Feature: options to set control socket permissions.
     +
    -+    *) Feature: Ruby response field arrays.
    ++    *) Feature: Ruby arrays in response headers, improving compatibility
    ++       with Rack v3.0.
     +
    -+    *) Feature: bytearray in response body for ASGI applications.
    ++    *) Feature: Python bytearray response bodies for ASGI applications.
     +
     +    *) Bugfix: router could crash while sending large files. Thanks to
     +       rustedsword.
    @@ CHANGES
     +    *) Bugfix: HTTP header field value encoding could be misinterpreted in
     +       Python module.
     +
    -+    *) Bugfix: http.createServer() now accepts "options" argument introduced
    -+       in Node.js v9.6.0, v8.12.0.
    ++    *) Bugfix: Node.js http.createServer() accepts and ignores the "options"
    ++       argument, improving compatibility with strapi applications, among
    ++       others.
     +
     +    *) Bugfix: ServerRequest.flushHeaders() implemented in Node.js module to
     +       make it compatible with Next.js.
     +
     +    *) Bugfix: ServerRequest.httpVersion variable format in Node.js module.
     +
    -+    *) Bugfix: Node.js module name rules, notable for Nuxt applications.
    ++    *) Bugfix: Node.js module handles standard library imports prefixed with
    ++       "node:", making it possible to run newer Nuxt applications, among
    ++       others.
     +
     +    *) Bugfix: Node.js tarball location changed to avoid build/install
     +       errors.
     +
    -+    *) Bugfix: correct environment variables in Go module for macOS/arm64
    -+       systems.
    ++    *) Bugfix: Go module sets environment variables necessary for building
    ++       on macOS/arm64 systems.
     +
     +
      Changes with Unit 1.31.1                                         19 Oct 2023
    @@ docs/changes.xml: Initial release of Python 3.12 module for NGINX Unit.
                      unit-wasm"
               ver="1.32.0" rev="1"
     -         date="" time=""
    -+         date="2024-02-27" time="18:00:00 +0300"
    ++         date="2024-02-27" time="18:00:00 +0000"
               packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">

      <change>
    @@ docs/changes.xml: NGINX Unit updated to 1.32.0.

      <changes apply="unit" ver="1.32.0" rev="1"
     -         date="" time=""
    -+         date="2024-02-27" time="18:00:00 +0300"
    ++         date="2024-02-27" time="18:00:00 +0000"
               packager="Nginx Packaging &lt;nginx-packaging@f5.com&gt;">

      <change type="feature">
4:  f5b84a3d = 6:  ccbed6c5 Version bump
callahad commented 4 months ago

I'm happy enough with where things are. Thanks!

Juan48302 commented 3 months ago

Currently missing changelog entries from my side...

02d1984c HTTP: Remove short read check in nxt_http_static_buf_completion() # Fixes static file serving under certain conditions
b500c36d Allow to set the permissions of the Unix domain control socket # File permissions, owner & group
0c983530 Node.js: Build/install fix
30b410e4 Avoid a segfault in nxt_conn_io_sendbuf() # Fixes a crash in the router process
Juan48302 commented 3 months ago

Currently missing changelog entries from my side...

02d1984c HTTP: Remove short read check in nxt_http_static_buf_completion() # Fixes static file serving under certain conditions
b500c36d Allow to set the permissions of the Unix domain control socket # File permissions, owner & group
0c983530 Node.js: Build/install fix
30b410e4 Avoid a segfault in nxt_conn_io_sendbuf() # Fixes a crash in the router process
tippexs commented 3 months ago

Good morning @Juan48302 . Thanks for reaching out but we are not adding all fixes / refactoring to the CHANGES document.

b500c36d is mentioned in the CHANGES as *) Feature: options to set control socket permissions. The other Bugfixes where small fixes so we decided not to mention them in the CHANGES.

ac000 commented 3 months ago

@tippexs Those comments look like spam... that's a comment of mine that is being quoted...

callahad commented 3 months ago

Reported