Skip to content

TensorLogic 0.1.1 Release

Latest

Choose a tag to compare

@cool-japan cool-japan released this 09 Jun 04:31

[0.1.1] - 2026-06-09

Added — Round 7 (2026-06-02)

  • Exact LTL Next (X) operator (tensorlogic-compiler): compile_next now emits a temporal_next:<axis> unary node dispatched via tensorlogic_scirs_backend::temporal_ops::shift_next; previously returned an unimplemented error.
  • Exact LTL Until (U) operator (tensorlogic-compiler): compile_until now emits a temporal_until:<tag>:<axis> binary node; previously returned an unimplemented error.
  • Exact LTL Release (R), WeakUntil (W), StrongRelease (M) operators (tensorlogic-compiler + tensorlogic-scirs-backend): replaced three mathematically incorrect single-step approximations with exact finite-trace backward-scan recurrences. Unified temporal_binary_scan / temporal_binary_scan_vjp generalise the until_scan from Round 6. OUTER/INNER parametrised over TemporalBinaryForm × UntilSemantics; boundary_val ∈ {0.0, 1.0} distinguishes strong/weak variants.
  • Temporal ops backend (tensorlogic-scirs-backend): new temporal_ops.rs module exposing UntilSemantics (MaxMin / ProbSumProduct), TemporalBinaryForm (Until / WeakUntil / Release / StrongRelease), shift_next, shift_prev, temporal_binary_scan, temporal_binary_scan_vjp. +16 tests (10 unit + 6 integration).
  • OxiCUDA solver f64 + PCG + Thomas algorithm (tensorlogic-oxicuda-solver): generic solve_lu_f64, solve_cholesky_f64, solve_qr_lstsq_f64, cg_solve_f64; preconditioned CG (pcg_solve / pcg_solve_f64) with Precond::Jacobi and Precond::IncompleteCholesky; solve_tridiagonal / solve_tridiagonal_f64 via Thomas LU (new banded.rs). 12 new integration tests; 47 total in crate.
  • Generic OxiCUDA sparse: SparseCsr + SparseCsc (tensorlogic-oxicuda-sparse): SparseCsr<T> generalised over T: Float (backward-compatible f32 default); new SparseCsc<T> (column-histogram build, csc_spmv, to_csr, from_dense); SparseCsr::transpose(), to_csc(), from_dense(); spmv_f64, spmm_f64, spmv_batched. 14 new tests; 27 total in crate.
  • OxiCUDA RNG f64 + streaming (tensorlogic-oxicuda-rng): uniform_f64 / normal_f64 using 52-bit mantissa extraction + Box-Muller on f64; streaming fill_uniform_chunked / fill_uniform_chunked_f64 / fill_normal_chunked callbacks; CPU builds now auto-derive Sync (PhantomData guard moved behind #[cfg(feature="gpu")]). 12 new integration tests; 60 total in crate.

Added — GPU Autodiff + Multi-output Kernels (2026-05-29)

  • Tape-based autodiff for OxiCudaExecutor (tensorlogic-oxicuda-backend): TlAutodiff implementation recording a tape during forward and replaying it in reverse for backward. Supports Matmul2D, BatchedMatmul3D, Identity, Unary, Binary, and Reduce ops. OxiCudaTape with gradients: HashMap<usize, OxiCudaTensor> exposed for inspection. Optional native-broadcast feature routes gradient broadcasts through GPU kernels.
  • Multi-output Gaussian Processes (tensorlogic-sklears-kernels): new multi_output/ module — MultiOutputKernel trait (compute_block, block_gram_matrix), ICM (Intrinsic Coregionalization Model), LMC (Linear Model of Coregionalization), VVGP (vector-valued GP regression). Integration tests for Swiss-roll and block-structure scenarios.
  • Variational Bayes Gaussian Mixture (tensorlogic-quantrs-hooks): new vmp/mixture.rsVariationalGaussianMixture implementing the VBEM algorithm (Bishop 2006 §10.2 / Attias 1999) with VgmmConfig, Dirichlet-prior mixing proportions, Gaussian-Normal component means, coordinate-ascent E-step / M-step, ELBO monitoring.

Added — Round 8 (2026-06-03)

  • Probabilistic execution (tensorlogic-scirs-backend): new probabilistic/ sub-module — Monte Carlo samplers (sample_bernoulli, sample_uniform, sample_normal, sample_categorical via Gumbel-max trick), mc_integrate; MonteCarloEstimator with mean/variance/percentile credible intervals; predictive_entropy, bald_epistemic_uncertainty; VariationalInference::fit — mean-field Gaussian VI with reparameterization trick + Adam SGA maximising the ELBO. +15 tests; 641 total in crate.
  • SPARQL tensor evaluation (tensorlogic-oxirs-bridge): new InternedGraph — O(1) term dictionary, predicate-indexed adjacency, parallel N-Triples bulk loading via std::thread::scope, from_rdf_triples / into_quad_store; new TensorBgpEvaluator evaluates conjunctive SELECT/BGP queries as boolean tensor contractions over EinsumGraph + Scirs2Exec::forward, decoding non-zero entries back to variable bindings. +21 tests (12 unit + 9 integration); 541 total in crate.
  • Neural Architecture Search (tensorlogic-train): new nas/ module — ArchSearchSpace / Architecture / LayerSpec with param_count() + HyperparamConfig interop; ArchSampler with 4-operator mutation (change op / width / activation, add/remove layer); RegularizedEvolution (Real et al. 2019 aging evolution with tournament selection and oldest eviction, ask/tell API); RandomArchSearch baseline; NasResult. +15 tests; 741 total in crate.
  • SVM via SMO (tensorlogic-sklears-kernels): new svm/ module — SvcModel / SvcFitted (C-SVM binary + one-vs-rest multiclass); SvrModel / SvrFitted (ε-SVR via 2N-variable augmented dual); smo_svc implementing Platt 1998 SMO with Keerthi two-loop heuristics, error cache, KKT convergence guard. All built on Arc<dyn Kernel>. +24 tests; 557 total in crate.

Changed

  • scirs2-{core,linalg,autograd,optimize,sparse} updated 0.4.2 → 0.5.0
  • oxiarc-deflate updated 0.2.7 → 0.3.3
  • quantrs2-{core,circuit,sim} updated 0.1.3 → 0.2.0
  • oxirs-{core,gql,ttl} updated 0.2.4 → 0.3.1
  • oxicuda-{backend,blas,driver,fft,memory,rand,solver,sparse} updated to 0.1.8; oxicuda-backend and oxicuda-fft added as new workspace dependencies
  • oxicode updated 0.2 → 0.2.4
  • sklears-{core,kernel-approximation} updated 0.1.0 → 0.1.1
  • Test count: 6,407 → 7,178 (+771 new tests, 100% pass rate; 37 GPU-only tests skipped)

Full Changelog: v0.1.0...v0.1.1