## nginx/ngx-rust — v0.4.1…v0.5.0-beta

_211+ commits._

### Features
- **feat: Queue<T> implementation based on the ngx_queue_t** (95424ad)
- **feat: implement accessor type for existing NGINX rbtrees** (3660563)
- **feat(sys): add ngx_array_t::as_slice method** (84c845a)
- **feat(sys): add ngx_str_t::strip_prefix/suffix methods** (7349dc4)
- **feat!: add nginx-src crate with vendored nginx sources** (a129a2e)
- **feat!: disable ngx/vendored by default** (769cf02)
- **feat: add optional feature "serde"** (718d9ca)
- **feat(sys): impl Hash for ngx_str_t** (6e156b7)
- **feat: minimal async runtime on top of the NGINX event loop** (17b18d9)
- **feat: add a method to obtain global log pointer** (02eba6d)
- **feat(examples): shared memory usage example** (e017d3d)
- **feat(sys): implement as_bytes() on variable values** (6cc7a0b)
- **feat: Map implementation based on the ngx_rbtree_t** (8241ebc)
- **feat: ngx::sync::RwLock implementation** (c6fe06d)
- **feat: owned byte string type with Allocator support** (f8098b6)
- **feat: wrapper for ngx_slab_pool_t** (2809696)
- **feat: implement Allocator for Pool** (053b93b)
- **feat: add and reexport allocator-api2** (0df1261)
- **feat!: bump supported Rust version to 1.81.0** (6ff537e)
- **feat: enforce minimal required alignment for pool allocations** (fe1929b)
- **feat(sys): generate bindings for Stream modules** (1e868ef)
- **feat(sys): reimplement ngx_time/ngx_timeofday** (1abedbf)
- **feat(sys): reimplement ngx_random** (008dc7d)
- **feat(sys): reimplement ngx_errno and ngx_socket_errno** (2b30630)
- **feat: some useful trait impls and conversions for NgxStr** (27c495b)
- **feat!: replace `Request.get_inner` with `AsRef`/`AsMut`** (aed46ba)
- **feat: add `ngx_container_of!` macro** (edc5874)
- **feat(sys): reimplement `ngx_event_t` macros and inline methods** (3b1d0ee)
- **feat(sys): reimplement `ngx_queue_t` macros** (9378ce3)
- **feat: library for nginx auto/configure integration** (d441d6c)
- **feat(sys): accept `NGINX_SOURCE_DIR` along with `NGX_OBJS`** (1b85887)
- **feat: format logs to fixed buffer to remove the last allocation** (77e1b5b)
- **feat: implement ngx_log_error! macro** (908f681)
- **feat: expose DEP_NGINX_ vars to the high-level bindings** (d368a28)
- **feat(sys): export detected nginx build configuration** (e3bb1b4)
- **feat!: set supported Rust version to 1.79.0** (7b5a6fb)
- **feat: add getters for srv_conf and main_conf** (e47f42d)
- **feat: allow creating `ngx_str_t` from a byte slice** (e91556a)
- **feat: support unaligned allocations from the pool** (14cbfcc)

### Fixes
- **fix: eliminate debug log code generation without debug feature in nginx** (ac60b78)
- **fix(sys): replace panicking ngx_str_t::to_str with fallible variant** (5890854)
- **fix: use NgxStr in NgxListIterator to prevent UTF-8 panics** (21d2f5b)
- **fix(async): potential UB in the scheduler implementation** (c3a5941)
- **fix(auto): add staticlib dependency to dynamic module targets** (a92ca72)
- **fix(auto): rename RUST_TARGET to NGX_RUST_TARGET** (d4b0a0d)
- **fix: use CFLAGS from Makefile** (2d01596)
- **fix: move Box reexport to ngx::allocator** (713074f)
- **fix: correct return type for nginx configuration handlers** (edca9e2)
- **fix(sys): formatting of escaped bytes when width is specified** (99f6629)
- **fix: unsoundness in NgxStr conversions** (57dcadf)
- **fix(sys): detect nginx build configuration changes** (8b6e925)
- **fix: name conflict in example build scripts** (e59d8b8)
- **fix: empty string handling in NgxStr::from_ngx_str** (b09e48e)
- **fix: compatibility with older nginx versions** (448abc0)
- **fix(examples): assorted fixes in the async example** (7bfeabf)
- **fix: inconsistent casing of FROM and AS in Dockerfile** (bea775d)
- **fix(sys): work around missing UNC path support in MSVC** (5e7dd9e)
- **fix(log): support nginx built without variadic macros** (aefeb69)
- **fix: avoid implicit import of `std::prelude`** (18fe0e1)
- **fix: generate bindings compatible with MSRV** (a575249)
- **fix(log): remove a few allocations** (979736c)
- **fix: replace `std` to `core` and add config out** (c3c31ec)
- **fix: replace other `String` usage by bavshin-f5's impl** (61a8cde)
- **fix: refactor `NgxListIterator` to remove `String` usage** (5b007db)
- **fix: non_upper_case_globals check after previous commit** (f3b36f3)
- **fix: remove unnecessary `#[no_mangle]` attributes** (f4e8486)
- **fix: set compiler flags for MacOS in the build script** (5a214de)
- **fix(sys): remove library type declaration** (ad4d80a)
- **fix: exclude "async" example from static builds** (5e3d654)
- **fix: minimize deps for building examples with nginx buildsystem** (6c987d7)
- **fix: type leaks from macros** (a5ec6bf)
- **fix: mark Request.get_module_loc_conf result as static.** (3dd7ea5)
- **fix: drop unnecessary casts from usize to size_t** (8b6aa4b)
- **fix(sys): crash when getting `&str` from empty `ngx_str_t`** (8fac2d5)
- **fix(examples): Resize vector holding ip address to correct size** (3aedd7c)

### Backend
- **release: ngx 0.5.0-beta** (3ca3aff)
- **nginx-sys: define ngx_list_init** (d2fe67e)
- **Request: get_module_*_conf are unsafe for the noted reason.** (c6b8b2e)
- **Docs changes: these functions are not unsafe.** (4208494)
- **doc(sys): document `NGINX_SOURCE_DIR` and `NGINX_BUILD_DIR`** (9d0cee9)

### Tests
- **test: stop using paths from the nginx binary** (bf42182)
- **test: add async example test** (5bc247f)
- **test: integration tests for example modules** (58f34cd)
- **test: fix nginx-sys doctests** (c1acc79)

### Docs
- **docs: document crate features for "ngx"** (ed9528d)
- **docs: actualize build instructions and format readme** (1c8a27a)
- **docs: update project status** (c35d4ed)
- **docs: add nginx-acme module** (cec40f1)
- **docs(sys): move crate documentation to README** (85570e2)
- **docs: fix rustdoc warnings and some incorrect references** (05f3c2b)

### Chore
- **ci: test nginx 1.22** (66013fb)
- **chore: update dependency list and args in docker build** (19439fa)
- **chore: update dependencies** (c6a8406)
- **chore: filter files in the ngx package** (f54877f)
- **chore(deps): bump actions/cache from 4.2.3 to 4.2.4** (b796695)
- **chore: update dependencies** (1d76b83)
- **chore: update bindgen to 0.72** (f9e0c35)
- **ci: install llvm tools in sanitizers workflow** (cc7836a)
- **chore(deps): bump EmbarkStudios/cargo-deny-action from 2.0.11 to 2.0.12** (69d0376)
- **chore: replace references to master branch with main** (fd8d0c0)
- **chore: set metadata for docs.rs builds** (533519a)
- **refactor: move collection types to crate::collections** (2c0960b)
- **ci: nginx windows build speedup** (06af446)
- **ci: disable fail-fast for Rust/Test (Linux) jobs** (98cf6fb)
- **chore: address compiler warnings** (0e6009a)
- **ci: switch to the official fossas/fossa-action** (02c0ed7)
- **ci: pin actions to full commit SHA** (a5d0c38)
- **ci: test windows builds** (848e979)
- **refactor(sys): split ngx_str_t implementations into new file** (d75bf73)
- **refactor(sys): make byte string formatter reusable** (e5b10be)
- **ci: test example modules with AddressSanitizer** (c94b78c)
- **ci: add mainline and switch to stable-1.28.** (43c720a)
- **chore: update dependencies** (943433d)
- **chore: use nginx 1.28.0/OpenSSL 3.5.0/pcre2 10.45 for vendored builds** (fa2e36f)
- **chore: address compiler warnings on nightly** (e10b5d3)
- **chore: hide formatting changes from blame view** (617c349)
- **chore: reformat with max-width = 100** (d866b64)
- **chore: fix `clippy::double-ended-iterator-last`** (a1ffd81)
- **refactor!: safer interface for module configuration access** (b6e80fc)
- **chore: update dependencies** (9c7dbac)
- **chore: update ureq to 3.x** (58f108f)
- **chore: use nginx 1.26.3/OpenSSL 3.2.4 for vendored builds** (1c7bc58)
- **refactor!: replace `ngx_null_command!` with `ngx_command_t::empty()`** (7b96bc9)
- **refactor!: replace `ngx_null_string!` with `ngx_str_t::empty()`** (c719f9c)
- **refactor!: remove macros for initializing empty `ngx_*_variable_t`** (70b688e)
- **refactor: rename `NGX_OBJS` to `NGINX_BUILD_DIR`** (ec1a942)
- **refactor!: rename NGX_RS_*_OFFSET constants to original names** (a542225)
- **refactor!: reduce boilerplate code for ngx_module_t declarations** (dd3e3d9)
- **chore: update dependabot configuration** (7266aa8)
- **chore: update repository links to `nginx/ngx-rust`** (467a7ff)
- **chore: update dependencies** (72d65c0)
- **refactor: deduplicate log macro bodies** (6407b1f)
- **chore: add Cargo features** (89cf0e0)
- **chore: fix new clippy warnings** (28d5f2c)
- **ci: check build with MSRV** (4e833b2)
- **chore: inherit package metadata from workspace** (19c7a23)
- **chore: set edition for rustfmt** (92408b8)
- **ci: check documentation** (d5cda1b)
- **ci: move clippy check into test-linux** (dd148ca)
- **ci: run tests and clippy for all workspace crates** (4da3e3d)
- **chore: clippy warnings** (a350f92)
- **chore: apply `group_imports = "StdExternalCrate"`[1]** (969c870)
- **chore: replace `std::os::raw` imports with `std::ffi`** (a8231c3)
- **chore: update dependencies** (b35efdb)
- **ci: replace unmaintained actions-rs/* with dtolnay/rust-toolchain** (d5dcf24)
- **ci: disable fossa for pull requests** (8803618)
- **ci: replace cargo-audit with cargo-deny** (91b6472)
- **ci: update all actions to the latest versions** (4944022)
- **chore: cargo fmt and clippy warnings** (c969b57)
- **chore: update remaining instances of NGX_VERSION** (ab23c13)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/nginx/ngx-rust?utm_source=github-action)._