Usage

Quick start

  1. Implement a SlangPackage subclass.

  2. Register the package with SlangPackageManager.register_package.

  3. Instantiate SlangPackageManager to build the dependency graph.

from spm_slang.package import SlangPackage
from spm_slang.package_manager import SlangPackageManager


class MyPackage(SlangPackage):
    @staticmethod
    def name() -> str:
        return "my-package"

    @staticmethod
    def shader_paths() -> list[str]:
        return ["shaders/my_package.slang"]

    def build(self):
        return self._device.load_module_from_source("my-package", "// shader code")


SlangPackageManager.register_package(MyPackage)
manager = SlangPackageManager()
module_map = manager.module_map

Dependency ordering

Dependencies are declared by overriding dependencies() on a package class. The package manager builds packages in topological order and raises ValueError on missing registrations or cycles.