docs: update changelog and add script to help generate it (#2733)
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 6a12b95..0ceb258 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -6,10 +6,35 @@
Starting with version 1.8.0, pybind11 releases use a `semantic versioning
<http://semver.org>`_ policy.
+
v2.6.2 (TBA, not yet released)
------------------------------
-* Details to follow here
+
+* Fixed segfault in multithreaded environments when using ``scoped_ostream_redirect``.
+ `#2675 <https://github.com/pybind/pybind11/pull/2675>`_
+
+* CMake: mixing local and installed pybind11's would prioritize the installed one over the local one (regression in 2.6.0).
+ `#2716 <https://github.com/pybind/pybind11/pull/2716>`_
+
+* Fix bug where the constructor of `object` subclasses would not throw on being passed a Python object of the wrong type.
+ `#2701 <https://github.com/pybind/pybind11/pull/2701>`_
+
+* Fixed assertion error related to unhandled (later overwritten) exception in CPython 3.8 and 3.9 debug builds.
+ `#2685 <https://github.com/pybind/pybind11/pull/2685>`_
+
+* Fix ``py::gil_scoped_acquire`` assert with CPython 3.9 debug build.
+ `#2683 <https://github.com/pybind/pybind11/pull/2683>`_
+
+* Fixes segfaults in multithreaded environments when using ``scoped_ostream_redirect``.
+ `#2675 <https://github.com/pybind/pybind11/pull/2675>`_
+
+* Fix issue with FindPython2/FindPython3 not working with ``pybind11::embed``.
+ `#2662 <https://github.com/pybind/pybind11/pull/2662>`_
+
+* Allow thread termination to be avoided during shutdown for CPython 3.7+ via ``.disarm``.
+ `#2657 <https://github.com/pybind/pybind11/pull/2657>`_
+
v2.6.1 (Nov 11, 2020)
diff --git a/tools/make_changelog.py b/tools/make_changelog.py
new file mode 100755
index 0000000..2c8c47c
--- /dev/null
+++ b/tools/make_changelog.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import re
+
+import ghapi.core
+
+
+ENTRY = re.compile(
+ r"""
+ Suggested \s changelog \s entry:
+ .*
+ ```rst
+ \s*
+ (.*?)
+ \s*
+ ```
+""",
+ re.DOTALL | re.VERBOSE,
+)
+
+
+api = ghapi.core.GhApi(owner="pybind", repo="pybind11")
+
+issues = api.issues.list_for_repo(labels="needs changelog", state="closed")
+missing = []
+
+for issue in issues:
+ changelog = ENTRY.findall(issue.body)
+ if changelog:
+ (msg,) = changelog
+ if not msg.startswith("* "):
+ msg = "* " + msg
+ if not msg.endswith("."):
+ msg += "."
+
+ print(msg)
+ print(f" `#{issue.number} <{issue.html_url}>`_\n")
+
+ else:
+ missing.append(issue)
+
+if missing:
+ print()
+ print("-" * 30)
+ print()
+
+ for issue in missing:
+ print(f"Missing: {issue.title}")
+ print(f" {issue.html_url}")