Skip to content

WP8: docs built in CI, changelog, upgrade guide, version 0.4.0 - #230

Merged
jacobdenobel merged 6 commits into
masterfrom
wp8-docs-release
Nov 2, 2026
Merged

jacobdenobel merged 6 commits into
masterfrom
wp8-docs-release

Conversation

@jacobdenobel

@jacobdenobel jacobdenobel commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

WP8 of TASKS.md, the docs and version part: the documentation is built in CI and deployed to GitHub Pages, plus the changelog, the upgrade guide and version 0.4.0. The release itself follows the merge (see the last section).

Docs built in CI

  • .github/workflows/docs.yml builds the documentation for every pull request and every push. It runs doc/generate_docs.py (doxygen, then sphinx), using the package installed from the checkout, Python 3.13 (sphinx 9.2 needs it) and graphviz for the inheritance diagrams.
  • Pushes to master deploy the result to GitHub Pages with actions/upload-pages-artifact and actions/deploy-pages. Pull requests only build, so the deploy job is skipped here.
  • generate_docs.py builds into doc/build/html and no longer copies the site into docs/.
  • Removed:
    • docs/: 1,262 generated files, 33 MB. The live site still says 0.3.14. It also served stale doxygen HTML pages from older versions, because the copy never deleted anything.
    • The sources that generate_docs.py generates: doc/python/source/api/*.rst (148) and doc/python/source/cpp/*.rst (43). They are now ignored.
  • The tool versions are pinned in doc/requirements.txt.
  • MyST replaces m2r2 (unmaintained) for Markdown. The READMEs are included with .. include:: ... :parser: myst_parser.sphinx_, and the changelog and upgrade guide are Markdown pages.
  • conf.py mentioned a local patch of sphinx-automodapi for comma-separated :skip: lists. The only such list (suite.rst) now uses one :skip: per name.
  • sphinx.ext.imgmath is removed: it needs LaTeX, and the docs contain no math.

Before merging, please switch the Pages source: Settings → Pages → Build and deployment → Source: "GitHub Actions" (it is "Deploy from a branch", master /docs). The current site stays up until the first deployment. The merge's push then deploys the new site; if it ran before the switch, re-run it with "Run workflow" on master.

Content

  • CHANGELOG.md: the 0.4.0 notes, made from the release-notes draft in TASKS.md and ordered by topic for users. It is also a page of the docs.
  • Upgrade guide (doc/python/source/upgrading.md, Python and C++): what code written for 0.3 has to change, made from the two lists in WP8.
  • README:
    • installation and wheels, building from source, the data files;
    • links to the changelog and the upgrade guide;
    • the banner comes from an absolute URL, so PyPI shows it, and its alt text says "IOHexperimenter" (it said IOHinspector).
  • ioh/README.md: Python 3.10 instead of 3.6, and the data files.
  • include/README.md: the compilers CI tests, the data files, and example links that pointed to a nonexistent include/example/.
  • CONTRIBUTING: building the docs, the changelog, and a short "Releasing" section.
  • pyproject.toml: Repository and Changelog links for PyPI.
  • Version 0.4.0.
  • format.hpp no longer includes <fmt/compile.h>; nothing uses FMT_COMPILE.
  • TASKS.md is removed, because the plan is done. A short version goes into the release notes: the work packages, the measurements, and what is left for later (the docstrings of overloaded methods, which make sphinx report 340 errors, also in the old docs; the constraints design discussed on 1 Nov). The full plan stays in the history: TASKS.md at e85ee414. The comments that referred to its tasks now name the pull requests.

Checked

  • Docs check:

    • The full build succeeds, with 545 warnings: the existing docstring ones (left for later) and a dozen from breathe (declarations it can't parse, such as thread_local).
    • I downloaded the built site: 214 pages (21 MB). The C++ API is rendered, the inheritance diagrams are drawn, and there are no broken local links.
    • The first CI builds found two problems, both fixed in later commits:
      • generate_docs.py failed with doxygen 1.9.8, which refers to members documented in a group with <member> rather than <memberdef>.
      • The ioh::data (new) and ioh::eaf pages weren't in any table of contents.
  • Full wheel matrix on this branch (§2), run 41331445772:

    • All 29 wheels and the sdist pass. The tags match the changelog (macOS 10.15/11.0, manylinux_2_27 x86_64 / 2_26 aarch64).
    • The sdist contains no TASKS.md, and the metadata says 0.4.0 with the new links.
    • The macOS arm64 abi3 wheel also passes the golden and thread tests locally on Python 3.14.
  • Final CI timing (T2.3):

    Run Now Before the overhaul
    ci.yml 20 runner min, 4.6 min wall WP1: 50 runner min, 7.4 min
    Pull-request wheels 59 runner min, 6.8 min wall WP2: 94 runner min, 10.0 min
    Full wheels 105 runner min, 18.1 min wall WP1 follow-up: no intermediate releases; pull requests skip the macOS wheels #218: 227 runner min, 41 min
    Local clean build of the extension (-j4) 11.3 s 40.6 s

After the merge

  1. The wheels workflow on master by manual dispatch, then a check of its wheels and sdist.
  2. The GitHub release v0.4.0, published only with your go-ahead at that moment. Its notes are CHANGELOG.md's 0.4.0 section, the wheel tags and the short version of TASKS.md. Publishing triggers the PyPI upload.
  3. A check of the wheels on PyPI.
  4. In IOHprofiler/ioh-objective-server: the pin moves to v0.4.0, and its CI's SSH-to-https rewrite is dropped.

🤖 Generated with Claude Code

jacobdenobel and others added 6 commits November 1, 2026 18:07
* .github/workflows/docs.yml builds the documentation (doxygen and sphinx, as
  doc/generate_docs.py does) for every pull request and push, and deploys the
  master branch's to GitHub Pages. The generated site (docs/) and the
  generated doc sources (doc/python/source/api, cpp/*.rst) leave the
  repository; the tools are pinned in doc/requirements.txt.
* MyST replaces the unmaintained m2r2 for the Markdown pages; the one
  comma-separated :skip: list (which needed a patched sphinx-automodapi)
  became one :skip: per name; imgmath (LaTeX) is dropped.
* CHANGELOG.md and an upgrade guide (doc/python/source/upgrading.md) for
  0.4.0, both in the docs; the README, the Python and C++ quickstarts and
  CONTRIBUTING describe installation, building from source, the data files,
  the docs build and releasing. PyPI gets Repository and Changelog links.
* Version 0.4.0. format.hpp no longer includes <fmt/compile.h> (unused).
* TASKS.md: the WP8 record, and two items for later: the indented docstrings
  of overloaded methods, and constraints in the standard form (as discussed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
doxygen 1.9.8 (CI's) writes the members documented in a group as references
(<member>) in the namespace's sections instead of <memberdef>, so the script
raised KeyError: 'memberdef'. It now lists both, also for several sections of
one kind, and skips sections without members.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ioh::data (new in 0.4.0) and ioh::eaf had pages that no table of contents
reached. generate_docs.py meant to skip fmt's namespace, but tested a
substring of "fmt.rst"; it now skips fmt and std.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The docs workflow's comment no longer claims that the github-pages environment
accepts only master: it has no branch policy, and the job's condition is what
restricts deploying to master.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The work plan is done. Its short version goes into the 0.4.0 release notes,
and the full plan stays in the history (e85ee41). The comments that pointed
to its tasks now name the pull requests that made the changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A clean build takes about a quarter of 0.3.22's time (11.3 s instead of
40.6 s on an Apple M5 with 4 jobs), not half: the unity build alone halved
it. The built-in problems are unchanged apart from the fixes listed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jacobdenobel
jacobdenobel merged commit 1e44e06 into master Nov 2, 2026
38 checks passed
@jacobdenobel
jacobdenobel deleted the wp8-docs-release branch November 2, 2026 09:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant