All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Improved type stability across TMSV, SPDC, ZALM, SIGSAG, and tools modules by giving explicit return types to
- The Python wrapper failed to import with recent juliacall releases:
juliacall.Pkgwas removed after 0.9.31 (now activated via Julia's ownPkg), and newer juliacall/PythonCall versions force Julia ≤ 1.11, incompatible with Genqo's Julia 1.12 requirement (juliacall is now pinned to 0.9.31).
tools.WTermsandtools.WBuckettypes for more stable dispatch on precomputed moment polynomial terms by the fasttools.W()Wick evaluator. The goal of this is to improvetools.W()performance by avoiding heap memory where possible in storing the moment term list. It also allows for dispatch on n, the number of separate q-p variables appearing in a moment polynomial term, which avoidstools.wick_partitions[n]Dict lookup on every call totools.wick_out().
sigsagfunctions now rely on pre-computed terms of moment polynomials for improved speed.- Wick partitions are now stored in an
Array{Int, 3}instead of clunkyVector{Vector{Tuple{Int,Int}}}for better memory continuity. - Benchmarking now saves .json files and plots under
.benchmarks/<ISO-timestamp>_<short-commit-hash>/instead of overwriting.benchmarks/py-bench.json,.benchmarks/jl-bench.json, and.benchmarks/benchmark_comparison.svg. just testnow calculates and reports absolute and relative error figures for each function and combination of parameters.
justfilenow updated to reflect Julia workspaces underdocs/andtest/.
- Julia implementations of TMSV, SPDC, ZALM, and SIGSAG entangled photon sources
- Python wrapper using juliacall with attrs-based dataclasses
- Comparison test suite validating Julia against reference Python implementation
- Benchmark suite for Julia and Python performance comparison
- CI/CD workflows for testing, releasing, and publishing
- API documentation