chore: prepare for 3.0.0rc4 (#5736)

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
diff --git a/docs/changelog.md b/docs/changelog.md
index 148a706..32d974c 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -42,6 +42,18 @@
   trampoline objects, and `std::enable_shared_from_this`.
   [#5542](https://github.com/pybind/pybind11/pull/5542)
 
+  - Added support for `std::shared_ptr<const T>` in `py::init()` when using
+    `py::smart_holder`, complementing existing support for
+    `std::unique_ptr<const T>`.
+    [#5731](https://github.com/pybind/pybind11/pull/5731)
+
+  - Support const-only smart pointers.
+    [#5718](https://github.com/pybind/pybind11/pull/5718)
+
+  - Eliminate cross-DSO RTTI reliance from `trampoline_self_life_support` functionality, `smart_holder` deleter detection, and other
+    `smart_holder` bookkeeping. Resolves platform-specific issues on macOS related to cross-DSO `dynamic_cast` and `typeid` mismatches.
+    [#5728](https://github.com/pybind/pybind11/pull/5728) (replaces [#5700](https://github.com/pybind/pybind11/pull/5700))
+
 - Changed `PYBIND11_MODULE` macro implementation to perform multi-phase
   module initialization (PEP 489) behind the scenes.
   [#5574](https://github.com/pybind/pybind11/pull/5574) and avoid destruction
@@ -64,6 +76,9 @@
   - Modify internals pointer-to-pointer implementation to not use `thread_local` (better iOS support).
     [#5709](https://github.com/pybind/pybind11/pull/5709)
 
+  - Support implementations without subinterpreter support.
+    [#5732](https://github.com/pybind/pybind11/pull/5732)
+
 - Changed `PYBIND11_EMBEDDED_MODULE` macro implementation to perform
   multi-phase module initialization (PEP 489) behind the scenes and to
   support `py::mod_gil_not_used()`,
@@ -85,6 +100,9 @@
   - Fix signature for functions with a `native_enum` in the signature.
     [#5619](https://github.com/pybind/pybind11/pull/5619)
 
+- Support `py::numpy_scalar<>` / `py::make_scalar()` for NumPy types.
+  [#5726](https://github.com/pybind/pybind11/pull/5726)
+
 - A `py::release_gil_before_calling_cpp_dtor` option (for `py::class_`)
   was added to resolve the long-standing issue \#1446.
   [#5522](https://github.com/pybind/pybind11/pull/5522)
@@ -124,7 +142,7 @@
   update example for `pybind11::custom_type_setup` in documentation.
   [#5669](https://github.com/pybind/pybind11/pull/5669)
 
-* Added `py::scoped_critical_section` to support free-threaded mode.
+- Added `py::scoped_critical_section` to support free-threaded mode.
   [#5684](https://github.com/pybind/pybind11/pull/5684) \|
   [#5706](https://github.com/pybind/pybind11/pull/5706)
 
@@ -216,12 +234,6 @@
   [#5381](https://github.com/pybind/pybind11/pull/5381)
 - Disable false-positive GCC 12 Bound Check warning.
   [#5355](https://github.com/pybind/pybind11/pull/5355)
-- fix: using `__cpp_nontype_template_args` instead of
-  `__cpp_nontype_template_parameter_class`.
-  [#5330](https://github.com/pybind/pybind11/pull/5330)
-- Properly translate C++ exception to Python exception when creating
-  Python buffer from wrapped object.
-  [#5324](https://github.com/pybind/pybind11/pull/5324)
 - Update the dict when restoring pickles, instead of assigning a
   replacement dict.
   [#5658](https://github.com/pybind/pybind11/pull/5658)
@@ -232,8 +244,6 @@
 - Change the behavior of the default constructor of `py::slice` to be
   equivalent to `::` in Python.
   [#5620](https://github.com/pybind/pybind11/pull/5620)
-- Expose required symbol when using clang.
-  [#5700](https://github.com/pybind/pybind11/pull/5700)
 
 Bug fixes and features (CMake):
 
@@ -254,10 +264,9 @@
 - Add support for running pybind11's tests via presets in CMake 3.25+.
   [#5655](https://github.com/pybind/pybind11/pull/5655) and support `--fresh`.
   [#5668](https://github.com/pybind/pybind11/pull/5668)
-- Restructure venv support to support `--fresh`, make in build folder.
-  [#5668](https://github.com/pybind/pybind11/pull/5668)
-
-* Presets now generate `compile_commands.json`.
+- Experimental CMake support for Android.
+  [#5733](https://github.com/pybind/pybind11/pull/5733)
+- Presets now generate `compile_commands.json`.
   [#5685](https://github.com/pybind/pybind11/pull/5685)
 
 Bug fixes (free-threading):
@@ -282,7 +291,7 @@
   that it can easily be reused.
   [#5614](https://github.com/pybind/pybind11/pull/5614)
 
-* Use CPython macros to construct `PYBIND11_VERSION_HEX`.
+- Use CPython macros to construct `PYBIND11_VERSION_HEX`.
   [#5683](https://github.com/pybind/pybind11/pull/5683)
 
 Documentation:
@@ -293,10 +302,6 @@
 - A new "Double locking, deadlocking, GIL" document was added.
   [#5394](https://github.com/pybind/pybind11/pull/5394)
 
-- Adds an answer (FAQ) for "What is a highly conclusive and simple way
-  to find memory leaks?".
-  [#5340](https://github.com/pybind/pybind11/pull/5340)
-
 - Add documenting for free-threading and subinterpreters.
   [#5659](https://github.com/pybind/pybind11/pull/5659)
 
@@ -309,20 +314,20 @@
   compiling using `clang` on Linux with the `-funsigned-char` flag.
   [#5545](https://github.com/pybind/pybind11/pull/5545)
 
-- Test PyPy3.11 in CI.
-  [#5534](https://github.com/pybind/pybind11/pull/5534)
-
 - CI testing now includes
   `-Wwrite-strings -Wunreachable-code -Wpointer-arith -Wredundant-decls`
   in some jobs.
   [#5523](https://github.com/pybind/pybind11/pull/5523)
 
-* Add nightly wheels to scientific-python's nightly wheelhouse.
+- Add nightly wheels to scientific-python's nightly wheelhouse.
   [#5675](https://github.com/pybind/pybind11/pull/5675)
 
-* Expect free-threaded warning when loading a non-free-threaded module.
+- Expect free-threaded warning when loading a non-free-threaded module.
   [#5680](https://github.com/pybind/pybind11/pull/5680)
 
+- Run pytest under Python devmode.
+  [#5715](https://github.com/pybind/pybind11/pull/5715)
+
 New and removed platforms:
 
 - Support Python 3.14 (beta 1+).
@@ -337,15 +342,18 @@
 
 - Support for PyPy 3.11 added.
   [#5508](https://github.com/pybind/pybind11/pull/5508)
+  And test in ci.
+  [#5534](https://github.com/pybind/pybind11/pull/5534)
 
 - Support for PyPy 3.8 and 3.9 was dropped.
   [#5578](https://github.com/pybind/pybind11/pull/5578)
 
 - Support for Python 3.7 was removed. (Official end-of-life:
-  2023-06-27). [#5191](https://github.com/pybind/pybind11/pull/5191)
+  2023-06-27).
+  [#5191](https://github.com/pybind/pybind11/pull/5191)
 
 - Support for CMake older than 3.15 removed. CMake 3.15-4.0 supported.
-  [#5304](https://github.com/pybind/pybind11/pull/5304) and fix regression [#5688](https://github.com/pybind/pybind11/pull/5688).
+  [#5304](https://github.com/pybind/pybind11/pull/5304) and fix regression [#5691](https://github.com/pybind/pybind11/pull/5691).
 
 - Use scikit-build-core for the build backend for the PyPI `pybind11`.
   The CMake generation has been moved to the sdist-\>wheel step.
@@ -362,7 +370,6 @@
 - Support Windows C++20 and Linux C++23 in tests.
   [#5707](https://github.com/pybind/pybind11/pull/5707)
 
-
 ## Version 2.13.6 (September 13, 2024)
 
 New Features:
diff --git a/include/pybind11/detail/common.h b/include/pybind11/detail/common.h
index b534819..ae8b2ae 100644
--- a/include/pybind11/detail/common.h
+++ b/include/pybind11/detail/common.h
@@ -25,9 +25,9 @@
 //   Use 0xA0 (LEVEL=0xA, SERIAL=0) for development versions.
 // - For stable releases, set the serial to 0.
 #define PYBIND11_VERSION_RELEASE_LEVEL PY_RELEASE_LEVEL_GAMMA
-#define PYBIND11_VERSION_RELEASE_SERIAL 3
+#define PYBIND11_VERSION_RELEASE_SERIAL 4
 // String version of (micro, release level, release serial), e.g.: 0a0, 0b1, 0rc1, 0
-#define PYBIND11_VERSION_PATCH 0rc3
+#define PYBIND11_VERSION_PATCH 0rc4
 /* -- end version constants -- */
 
 #if !defined(Py_PACK_FULL_VERSION)