Skip to content

v0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Mar 12:38

StructureFunctions v0.3.0

Diff since v0.2.0

Breaking changes

  • Backend selection is now type-based instead of symbol-based.
    • Old: backend = :serial, :threaded, :distributed
    • New: backend = SerialBackend(), ThreadedBackend(), DistributedBackend(), GPUBackend(...), AutoBackend()
  • AutoBackend() is now the explicit auto-selection path.
  • API/docs now reflect operator-first, typed backend usage throughout.

New features

  • Added typed execution backend hierarchy:
    • SerialBackend
    • ThreadedBackend (OhMyThreads extension)
    • DistributedBackend
    • GPUBackend (KernelAbstractions extension)
    • AutoBackend
  • Added comprehensive extension-based GPU path and parity-focused backend design.
  • Added extensive new documentation pages and worked examples.

Fixes

  • Fixed critical threaded buffer indexing issue (threadid()-related safety bug).
  • Fixed OhMyThreads reduction integration/signature issues.
  • Improved type stability in backend paths (including removal of unstable dynamic Val construction in hot paths).
  • Added explicit boolean keyword annotations where needed (verbose, show_progress).
  • Fixed progress display behavior in main calculation loops.
  • Reduced JET false positives by tightening analysis scope to package code.

Documentation

  • Expanded and reorganized package documentation for v0.3.0:
    • architecture
    • backend guide
    • extensions guide
    • theory/reference material
    • real-data workflows
  • Added runnable example workflows for serial, threaded, distributed, GPU, and real-data usage.

Migration guide (quick)

  • Replace symbol backends with typed backend constructors.
  • If using threading, ensure OhMyThreads is available.
  • If using GPU backend, ensure KernelAbstractions-compatible backend dependencies are installed.

📢 API Changes:

🚀 Features

📑 Documentation

🐛 Fixes