This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm-tirx.git
The following commit(s) were added to refs/heads/main by this push:
new 93e041c1 [DOCS] Add TIRx developer manual (#12)
93e041c1 is described below
commit 93e041c1496d54c3f4d304f39ea7fa220d692d96
Author: Tianqi Chen <[email protected]>
AuthorDate: Wed Oct 21 12:37:54 2026 -0400
[DOCS] Add TIRx developer manual (#12)
Add guides for building TIRx and its documentation, reproducing CI
checks, building wheels, and managing releases.
Link the manual from the documentation navigation, update repository
links and documentation dependencies, and support configured Docker
image aliases in the documented CI workflow.
---
docker/bash.sh | 15 +---
docs/README.md | 8 ++-
docs/conf.py | 4 +-
docs/dev/ci_cd.rst | 126 ++++++++++++++++++++++++++++++++
docs/dev/doc_build.rst | 62 ++++++++++++++++
docs/dev/release_process.rst | 168 +++++++++++++++++++++++++++++++++++++++++++
docs/dev/source_build.rst | 143 ++++++++++++++++++++++++++++++++++++
docs/index.rst | 9 +++
pyproject.toml | 2 +-
9 files changed, 519 insertions(+), 18 deletions(-)
diff --git a/docker/bash.sh b/docker/bash.sh
index ccd79a63..bcf6e382 100755
--- a/docker/bash.sh
+++ b/docker/bash.sh
@@ -157,7 +157,7 @@ DOCKER_IMAGE_NAME
The name of the docker container to be run. This can be an
explicit name of a docker image (e.g. "tlcpack/ci-gpu:v0.76") or
- can be a shortcut as defined in the TVM Jenkinsfile
+ can be a shortcut from ci/jenkins/docker-images.ini
(e.g. "ci_gpu").
COMMAND
@@ -423,19 +423,10 @@ function lookup_image_spec() {
DOCKER_MOUNT=( )
DOCKER_DEVICES=( )
-# If the user gave a shortcut defined in the Jenkinsfile, use it.
+# Resolve configured shortcuts locally; explicit image names pass through.
EXPANDED_SHORTCUT=$(lookup_image_spec "${DOCKER_IMAGE_NAME}")
if [ -n "${EXPANDED_SHORTCUT}" ]; then
- if [ "${CI+x}" == "x" ]; then
- DOCKER_IMAGE_NAME="${EXPANDED_SHORTCUT}"
- else
- python3 "${REPO_DIR}/ci/jenkins/scripts/determine_docker_images.py" \
- --base-dir "${REPO_DIR}/.docker-image-names" "$DOCKER_IMAGE_NAME"
2> /dev/null
- DOCKER_IMAGE_NAME=$(cat
"${REPO_DIR}/.docker-image-names/$DOCKER_IMAGE_NAME")
- if [[ "$DOCKER_IMAGE_NAME" == *"tlcpackstaging"* ]]; then
- echo "WARNING: resolved docker image to fallback tag in
tlcpackstaging" >&2
- fi
- fi
+ DOCKER_IMAGE_NAME="${EXPANDED_SHORTCUT}"
fi
diff --git a/docs/README.md b/docs/README.md
index 7e41e481..1ec32a11 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -17,12 +17,14 @@
# TIRx Documentation
-After building TIRx, install the documentation dependencies and build from the
+See [Build from Source](dev/source_build.rst) for the Miniforge/mamba and uv
+environment. After building TIRx, install the documentation dependencies and
build from the
repository root:
```bash
uv pip install --group docs
-uv run --no-sync python -m sphinx -b html -W docs docs/_build/html
+uv run python -m sphinx -b html -W docs docs/_build/html
```
-Open `docs/_build/html/index.html` to browse the reference.
+Open `docs/_build/html/index.html` to browse the Developer Manual and API
reference.
+See [Build This Doc Site](dev/doc_build.rst) for local serving and clean
rebuilds.
diff --git a/docs/conf.py b/docs/conf.py
index 8d0ed5fe..ab7e7e74 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -61,8 +61,8 @@ _triton.__path__ = []
sys.modules.setdefault("triton", _triton)
html_theme_options = {
- "repository_url": "https://github.com/apache/tvm",
- "repository_branch": "tirx-standalone-root",
+ "repository_url": "https://github.com/apache/tvm-tirx",
+ "repository_branch": "main",
"path_to_docs": "docs",
"use_repository_button": True,
"show_toc_level": 2,
diff --git a/docs/dev/ci_cd.rst b/docs/dev/ci_cd.rst
new file mode 100644
index 00000000..f18a90e9
--- /dev/null
+++ b/docs/dev/ci_cd.rst
@@ -0,0 +1,126 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+.. http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+Reproduce CI/CD
+===============
+
+This guide explains how to reproduce CI checks and tests locally,
+and how wheel builds and releases work. Workflows are defined under
+`.github/workflows/
<https://github.com/apache/tvm-tirx/tree/main/.github/workflows>`__
+and `ci/jenkins/ <https://github.com/apache/tvm-tirx/tree/main/ci/jenkins>`__.
+To build the project from source, see :doc:`source_build`.
+
+Linters
+-------
+
+Pre-commit
+~~~~~~~~~~
+
+The project uses `pre-commit <https://pre-commit.com/>`__ to run linters and
+formatters. All hooks are defined in `.pre-commit-config.yaml
+<https://github.com/apache/tvm-tirx/blob/main/.pre-commit-config.yaml>`__.
+Install and register the hooks so they run automatically before each commit:
+
+.. code-block:: bash
+
+ uv tool install pre-commit
+ pre-commit install
+
+You can also run hooks manually:
+
+.. code-block:: bash
+
+ # Run all hooks on every file
+ pre-commit run --all-files
+
+ # Run only on staged files
+ pre-commit run
+
+ # Run a single hook in isolation
+ pre-commit run ruff-check --all-files
+ pre-commit run clang-format --all-files
+
+The main tools are:
+
+- **Python** -- ``ruff`` checks and formats Python code.
+- **C/C++** -- ``clang-format`` formats native code.
+- **YAML** -- ``yamllint`` checks syntax and style.
+- **TOML** -- ``taplo`` formats configuration files.
+- **Repository checks** -- ASF headers, allowed file types, whitespace, and
+ generated CUDA launch files.
+
+Hooks may fix files in place. Review the changes, stage them, and run again.
+Use ``pre-commit clean`` if a stale hook environment causes problems.
+
+C++ Tests
+---------
+
+Configure, build, and run locally:
+
+.. code-block:: bash
+
+ cmake . -B build_test -G Ninja -DTVM_TIRX_BUILD_TESTS=ON
-DCMAKE_BUILD_TYPE=Debug
+ cmake --build build_test --config Debug --target tirx_cpptest
+ ctest -V -C Debug --test-dir build_test --output-on-failure
+
+CMake uses an installed GoogleTest package or fetches it when needed.
+On Windows, run from a Visual Studio Developer Command Prompt.
+
+Python Tests
+------------
+
+Reproduce locally with:
+
+.. code-block:: bash
+
+ # Install the editable package and test dependencies
+ uv pip install --reinstall --verbose --group test -e .
+
+ # Run the CPU tests
+ uv run pytest -vvs tests/python -m "not gpu"
+
+Use ``-m gpu`` for device tests with the matching backend, SDK, and hardware.
+Pass a test file or directory to focus on the component you changed.
+
+Build Python Wheels
+-------------------
+
+CI builds wheels using `cibuildwheel <https://cibuildwheel.pypa.io/>`__ on
+Linux (x86_64, aarch64), Windows (AMD64), and macOS (arm64). Wheel
configuration
+lives in ``[tool.cibuildwheel]`` in ``pyproject.toml``. Configure the
platform's
+LLVM toolchain as in the `wheel build action
+<https://github.com/apache/tvm-tirx/blob/main/.github/actions/build-wheel-for-publish/action.yml>`__;
+Linux builds also require Docker and the LLVM prefix mounted into the build
image.
+
+To build wheels locally:
+
+.. code-block:: bash
+
+ uv tool install cibuildwheel
+ cibuildwheel --output-dir dist
+
+TIRx uses TVM-FFI for bindings, making it agnostic to Python versions.
+The project sets ``wheel.py-api = "py3"``, so its
+``py3-none-<platform>`` wheel works across supported Python 3 versions
+without rebuilding TIRx for each minor version. The package requires Python
+3.10 or newer (classifiers list 3.10--3.13), with compatible TVM-FFI and other
+dependencies. OS, CPU architecture, and native runtime requirements still
apply.
+
+.. seealso::
+
+ - :doc:`source_build`: Static LLVM linkage for distributing wheels.
+ - :doc:`release_process`: Publishing wheels and creating release artifacts.
diff --git a/docs/dev/doc_build.rst b/docs/dev/doc_build.rst
new file mode 100644
index 00000000..dab72306
--- /dev/null
+++ b/docs/dev/doc_build.rst
@@ -0,0 +1,62 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+.. http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+Build This Doc Site
+===================
+
+This guide walks through building the TIRx documentation locally.
+Building the docs requires the Python package to be installed first; see
+:doc:`source_build` for instructions.
+
+.. admonition:: Prerequisite
+ :class: hint
+
+ - Use the activated mamba environment from :doc:`source_build`.
+ - Run commands from the repository root.
+ - Install the documentation tools with ``uv pip install --group docs``.
+
+Interactive Build (Auto-Reload)
+-------------------------------
+
+Rebuild and serve the documentation locally with live reload:
+
+.. code-block:: bash
+
+ uv run sphinx-autobuild docs docs/_build/html --ignore
docs/reference/python/generated
+
+Open ``http://127.0.0.1:8000`` after the initial build completes.
+
+One-Off Build
+-------------
+
+Generate the HTML documentation once, with warnings treated as errors:
+
+.. code-block:: bash
+
+ uv run python -m sphinx -b html -W docs docs/_build/html
+
+Open ``docs/_build/html/index.html`` to browse the result.
+
+Cleanup
+-------
+
+Remove generated artifacts when they are no longer needed:
+
+.. code-block:: bash
+
+ rm -rf docs/_build/
+ rm -rf docs/reference/python/generated
diff --git a/docs/dev/release_process.rst b/docs/dev/release_process.rst
new file mode 100644
index 00000000..a48a7507
--- /dev/null
+++ b/docs/dev/release_process.rst
@@ -0,0 +1,168 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+.. http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+Release Process
+===============
+
+This guide describes the Apache TVM TIRx release workflow for creating a
release
+candidate, staging artifacts on ASF SVN, finalizing the release tag, and
+publishing release artifacts.
+
+.. admonition:: Prerequisite
+ :class: hint
+
+ The release manager sets the following variables before running these steps:
+
+ .. code-block:: bash
+
+ export TIRX_VERSION="v0.1.0-rc0"
+ export TIRX_RELEASE_VERSION="v0.1.0"
+ export ASF_USERNAME="your-apache-username"
+
+ - Tools: ``git``, ``svn``, ``gpg``, ``gtar``, and ``shasum``.
+ - An ASF account and a signing key published in the project's ``KEYS`` file.
+
+.. important::
+
+ These examples use GNU tar as ``gtar`` on macOS. Use ``tar`` on Linux.
+
+Pre-release checklist (Step 0)
+------------------------------
+
+Before running the steps below, prepare the candidate tag and release thread.
+Keep the package version consistent in ``pyproject.toml``
(``project.version``),
+``CMakeLists.txt`` (``TVM_TIRX_VERSION``), and ``python/tvm_tirx/libinfo.py``
+(``__version__``). Tags do not update these fields automatically.
+
+**Step 0.1.** Tag the candidate ``$TIRX_VERSION`` on
+`GitHub <https://github.com/apache/tvm-tirx/releases/new>`__ at the reviewed
commit.
+Use the intended package version, such as ``0.1.0``, in all three files.
+
+**Step 0.2.** Open a `release tracking issue
+<https://github.com/apache/tvm-tirx/issues/new>`__. Call the release vote once
+the artifacts below are staged and verified.
+
+Step 1. Create Release Candidate
+--------------------------------
+
+This builds and signs the source release artifacts under
+``tvm-tirx-$TIRX_VERSION/``. Use a fresh release workspace:
+
+.. code-block:: bash
+
+ _make_tarball() {
+ local _ver="$1"
+ local _workdir="tvm-tirx-$_ver-release-files"
+ local _release_dir="tvm-tirx-$_ver"
+ local _source_dir="apache-tvm-tirx-$TIRX_RELEASE_VERSION"
+ local _tarball="apache-tvm-tirx-src-$TIRX_RELEASE_VERSION.tar.gz"
+
+ mkdir -p "$_workdir" "$_release_dir"
+ (
+ cd "$_workdir"
+ git clone --recursive --branch "$_ver"
https://github.com/apache/tvm-tirx.git "$_source_dir"
+ gtar --exclude-vcs -czf "$_tarball" "$_source_dir"
+ gpg --armor --output "$_tarball.asc" --detach-sig "$_tarball"
+ shasum -a 512 "$_tarball" > "$_tarball.sha512"
+ gpg --verify "$_tarball.asc" "$_tarball"
+ shasum -a 512 -c "$_tarball.sha512"
+ )
+ mv "$_workdir/$_tarball" "$_workdir/$_tarball.asc"
"$_workdir/$_tarball.sha512" "$_release_dir/"
+ }
+
+ _upload_to_apache_dev_svn() {
+ local _ver="$1"
+ local _release_dir="tvm-tirx-$_ver"
+ svn checkout --depth=files https://dist.apache.org/repos/dist/dev/tvm
svn-tvm-dev
+ cp -R "$_release_dir" svn-tvm-dev/
+ (
+ cd svn-tvm-dev
+ svn add "$_release_dir"
+ svn commit --username "$ASF_USERNAME" -m "Add TIRx $_ver"
+ )
+ }
+
+ _make_tarball "$TIRX_VERSION"
+ _upload_to_apache_dev_svn "$TIRX_VERSION"
+
+Download the staged archive, verify its signature and checksum, and build and
test
+the extracted sources using :doc:`source_build` and :doc:`ci_cd`. Check that
+licenses and recursive submodule sources are included. The artifact uses its
+final filename from the start so its checksum and signature survive promotion.
+
+Call the vote on ``[email protected]`` with the candidate tag, commit,
artifact
+URL, signing-key information, and release notes. Follow the `ASF voting rules
+<https://www.apache.org/legal/release-policy.html#release-approval>`__ and
record
+the result in the release thread.
+
+Step 2. Conclude Release
+------------------------
+
+After the vote passes, conclude the vote, publish wheels, finalize the release
+tag, and bump the development version.
+
+**Step 2.1.** Announce the voting results by opening a ``[RESULT][VOTE]``
issue on
+the `issue tracker <https://github.com/apache/tvm-tirx/issues/new>`__.
+Issue notifications are mirrored to ``[email protected]``;
+post the result to ``[email protected]`` as well.
+
+**Step 2.2.** Publish PyPI wheels with the `publication workflow
+<https://github.com/apache/tvm-tirx/actions/workflows/publish_wheel.yml>`__.
+See :doc:`ci_cd` for how wheels are built with cibuildwheel.
+
+**Step 2.3.** Tag the approved candidate commit as the final version:
+
+.. code-block:: bash
+
+ git clone -o upstream https://github.com/apache/tvm-tirx.git
tvm-tirx-release
+ (
+ cd tvm-tirx-release
+ git fetch upstream --tags
+ git tag -a "$TIRX_RELEASE_VERSION" "${TIRX_VERSION}^{commit}" -m "Release
$TIRX_RELEASE_VERSION"
+ git push upstream "$TIRX_RELEASE_VERSION"
+ )
+
+Keep the candidate tag for traceability. Then create a version-bump branch and
+set all three version fields from Step 0 to the next development version
+(for example, ``0.1.1.dev0`` after ``0.1.0``):
+
+.. code-block:: bash
+
+ cd tvm-tirx-release
+ git switch -c bump-version upstream/main
+ "${EDITOR:-vi}" pyproject.toml CMakeLists.txt python/tvm_tirx/libinfo.py
+ git add pyproject.toml CMakeLists.txt python/tvm_tirx/libinfo.py
+ git commit -m "Bump development version after $TIRX_RELEASE_VERSION"
+ git push -u upstream bump-version
+
+Open a pull request for the version bump.
+
+Step 3. Upload Release Artifacts
+--------------------------------
+
+After the release is final, copy the approved RC artifacts into
``dist/release``
+under the final version directory, preserving the files unchanged:
+
+.. code-block:: bash
+
+ svn copy \
+ "https://dist.apache.org/repos/dist/dev/tvm/tvm-tirx-$TIRX_VERSION" \
+
"https://dist.apache.org/repos/dist/release/tvm/tvm-tirx-$TIRX_RELEASE_VERSION"
\
+ --username "$ASF_USERNAME" -m "Release TIRx $TIRX_RELEASE_VERSION"
+
+Verify the public downloads, update the download page and release notes, and
+announce the release to the community.
diff --git a/docs/dev/source_build.rst b/docs/dev/source_build.rst
new file mode 100644
index 00000000..c548de2b
--- /dev/null
+++ b/docs/dev/source_build.rst
@@ -0,0 +1,143 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+.. http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+Build from Source
+=================
+
+This guide provides instructions on how to build the TIRx package from source.
+
+.. admonition:: Prerequisite
+ :class: tip
+
+ - Python: 3.10 or newer.
+ - Compiler: a C++20-capable GCC, Clang, or MSVC toolchain.
+ - Build tools: Git, CMake 3.26+, Ninja, and uv.
+ - LLVM: development libraries and ``llvm-config`` from LLVM 15 or newer.
+
+ On most platforms, you can get LLVM and the build dependencies through
+ `Miniforge <https://github.com/conda-forge/miniforge>`__:
+
+ .. code-block:: bash
+
+ mamba create -n tirx-dev -c conda-forge python=3.12 llvmdev
"cmake>=3.26" ninja git uv
+ mamba activate tirx-dev
+ llvm-config --version
+
+ Use this mamba environment for all commands. Keep ``uv run`` in the same
+ environment without resynchronizing the packages installed by ``uv pip``:
+
+ .. code-block:: bash
+
+ export UV_PROJECT_ENVIRONMENT="$CONDA_PREFIX"
+ export UV_NO_SYNC=1
+
+Build the Python Package
+------------------------
+
+Download the source via:
+
+.. code-block:: bash
+
+ git clone --recursive https://github.com/apache/tvm-tirx
+ cd tvm-tirx
+
+.. note::
+
+ Always clone with ``--recursive`` to pull submodules. If you already cloned
+ without it, run:
+
+ .. code-block:: bash
+
+ git submodule update --init --recursive
+
+Build the Python package with scikit-build-core, which drives CMake to compile
+the C++ libraries:
+
+.. code-block:: bash
+
+ uv pip install --force-reinstall --verbose -e .
+
+The ``--force-reinstall`` flag forces a rebuild, and ``-e`` (editable) means
+Python-only changes are reflected immediately without rebuilding.
+
+**CMake flags** can be exported through ``CMAKE_ARGS`` before running the
+install command. For example, to switch off the CUDA runtime (which is
+automatically switched on when available):
+
+.. code-block:: bash
+
+ export CMAKE_ARGS="-DTVM_TIRX_USE_CUDA=OFF"
+
+Available CMake options (see `CMakeLists.txt
+<https://github.com/apache/tvm-tirx/blob/main/CMakeLists.txt>`__) include:
+
+- ``TVM_TIRX_USE_LLVM`` -- Enable LLVM, or select an ``llvm-config`` command
(default: ``ON``).
+- ``TVM_TIRX_USE_CUDA`` -- Enable the CUDA runtime (default: ``AUTO``).
+- ``TVM_TIRX_USE_METAL`` -- Enable the Metal runtime on macOS (default:
``OFF``).
+- ``TVM_TIRX_USE_Z3`` -- Enable the Z3 solver (default: ``AUTO``).
+- ``TVM_TIRX_BUILD_TESTS`` -- Build C++ tests (default: ``OFF``).
+
+Verify the installation:
+
+.. code-block:: bash
+
+ uv run python -c "import tvm_tirx; print(tvm_tirx.__version__)"
+ uv run tvm-tirx-config -h
+
+.. tip::
+
+ Use ``tvm-tirx-config`` to query include and link flags for external C++
projects:
+
+ .. code-block:: bash
+
+ tvm-tirx-config --includedir
+ tvm-tirx-config --libfiles
+
+ On Linux/macOS, query linker flags for the compiler or runtime libraries:
+
+ .. code-block:: bash
+
+ tvm-tirx-config --libs compiler # Compiler and its dependencies
+ tvm-tirx-config --libs runtime # Core runtime
+ tvm-tirx-config --libs runtime cuda # Core and CUDA runtimes (CUDA
build)
+ tvm-tirx-config --ldflags # Library search paths
+
+Build Wheels with Static LLVM
+-----------------------------
+
+When shipping wheels, link LLVM statically so users do not need the same shared
+LLVM library installed. Install its development dependencies and export the
+static-link setting before building the wheel:
+
+.. code-block:: bash
+
+ mamba install -c conda-forge zlib zstd-static libxml2-devel
+ export CMAKE_ARGS="-DTVM_TIRX_USE_LLVM='llvm-config --link-static'
-DZLIB_USE_STATIC_LIBS=ON"
+
+See :doc:`ci_cd` for wheel builds and the publication toolchain configuration.
+
+Troubleshooting
+---------------
+
+- **Rebuilding after C++ changes**: re-run ``uv pip install --force-reinstall
-e .``.
+ Editable installs automatically reflect only Python changes.
+- **Submodules missing**: run ``git submodule update --init --recursive`` from
+ the repository root.
+
+.. seealso::
+
+ - :doc:`ci_cd`: Reproduce linters, unit tests, and wheel builds locally.
diff --git a/docs/index.rst b/docs/index.rst
index 9c0632c5..77fbe430 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -26,3 +26,12 @@ Table of Contents
:caption: Reference
Python API <reference/python/index>
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Developer Manual
+
+ dev/source_build
+ dev/doc_build
+ dev/ci_cd
+ dev/release_process
diff --git a/pyproject.toml b/pyproject.toml
index 22254d49..464e1b82 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -75,7 +75,7 @@ test = [
]
lint = ["ruff", "pre-commit"]
dev = [{ include-group = "test" }, { include-group = "lint" }]
-docs = ["sphinx>=7", "sphinx-book-theme"]
+docs = ["sphinx>=7", "sphinx-book-theme", "sphinx-autobuild", "pytest"]
[project.scripts]
tvm-tirx-config = "tvm_tirx.config:__main__"