Add a Python-based tutorials website generator and deploy workflow - #9347
Draft
alexreinking wants to merge 1 commit into
Draft
Add a Python-based tutorials website generator and deploy workflow#9347alexreinking wants to merge 1 commit into
alexreinking wants to merge 1 commit into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9347 +/- ##
==========================================
- Coverage 70.11% 70.04% -0.08%
==========================================
Files 259 259
Lines 79135 79135
Branches 19286 19286
==========================================
- Hits 55487 55429 -58
- Misses 17880 17883 +3
- Partials 5768 5823 +55 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
alexreinking
force-pushed
the
alexreinking/new-tutorial-site
branch
from
August 17, 2026 00:03
743b5cc to
36b64b7
Compare
alexreinking
changed the base branch from
main
to
alexreinking/tutorial-improvements
August 17, 2026 04:57
alexreinking
force-pushed
the
alexreinking/new-tutorial-site
branch
2 times, most recently
from
August 17, 2026 05:08
c32e0d3 to
61ba765
Compare
Replaces the old two-repo, gdb-only shell pipeline (tutorial/figures/generate_output_snippets.sh + halide.github.com/tutorials/gen_tutorials.sh) with a single in-tree Python tool under tutorial/website/. It drives either GDB or LLDB in batch mode to capture the output of interesting statements (Func::realize(), print_loop_nest(), etc.) directly from the built lesson binaries, highlights the code with Pygments, and renders a dependency-free static site with collapsible <details> output blocks and inlined figures. Wired in as an opt-in CMake feature (off by default, depends on WITH_TUTORIALS) with its own install component (Halide_Tutorial) and directory knob (Halide_INSTALL_TUTORIALDIR). Requires no changes to the lesson sources themselves. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
alexreinking
changed the base branch from
alexreinking/tutorial-improvements
to
alexreinking/python-tutorial-parity
August 17, 2026 05:14
alexreinking
force-pushed
the
alexreinking/new-tutorial-site
branch
from
August 17, 2026 05:14
61ba765 to
c7f5d84
Compare
alexreinking
marked this pull request as draft
August 17, 2026 05:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tutorial/figures/generate_output_snippets.sh+halide.github.com/tutorials/gen_tutorials.sh) with a single in-tree Python tool undertutorial/website/, wired in as an opt-in CMake feature (WITH_TUTORIAL_WEBSITE, off by default, requiresWITH_TUTORIALS) with its own install component (Halide_Tutorial) and directory knob (Halide_INSTALL_TUTORIALDIR).Func::realize(),print_loop_nest(), etc.) directly from the built lesson binaries, highlights the code with Pygments, and renders a dependency-free static site (no JS, no Bootstrap) with collapsible<details>output blocks, inlined figures, and a nav sidebar that groups multi-part lessons (10, 15, 16, 21) under one header..cpp/.shsources themselves beyond giving the multi-part lessons distinct, descriptive titles (they previously said just "part 1"/"part 2", or in lesson 21's case, were identical) and adding gdb/lldb-friendly compile flags gated behind the new feature..github/workflows/deploy-docs.yml: builds the Doxygen API docs (WITH_DOCS) and the new tutorials website on release and manual dispatch, then deploys both tohalide/halide.github.comusing the same GitHub App as the existing LLVM-updater workflows. Manual runs default to a dry run (build + diff only, artifact upload instead of a push) and can target a personal fork via an input to rehearse a real push safely.Fixes #8146
Test plan
-DWITH_TUTORIAL_WEBSITE=ON; ran the generator via LLDB and confirmed real captured output (e.g.HL_DEBUG_CODEGENtrace for lesson 3,print_loop_nest/tracing output for lessons 4/5/8/9/18/19).lesson_15_generators_usage.sh) all render correctly.cmake --install --component Halide_Tutoriallands files undershare/tutorial/.ruff check/ruff formatand this repo'scheck_cmake_style.py/check_cmake_file_lists.pyall pass; fullpre-commit run --all-files-equivalent hooks pass on every commit.deploy-docs.ymlitself hasn't been run in CI yet -- recommend triggering it once viaworkflow_dispatchwith the defaultdry_run: true(safe, no push) to sanity-check the artifact before relying on it for a real release.🤖 Generated with Claude Code