Changelog

All notable changes to PEPit.jl are documented in this file. The format is based on Keep a Changelog, and the project aims to follow Semantic Versioning.

[Unreleased]

Added

  • Mathematical interpolation conditions (in display-math fences, verified against each add_class_constraints! implementation) in the docstrings of all 16 function classes and 13 operator classes.
  • Academic references in all function/operator class docstrings, ported from the corresponding Python PEPit docstrings (Taylor-Hendrickx-Glineur, Ryu-Taylor-Bergeling-Giselsson, Bousselmi-Hendrickx-Glineur, Bauschke-Combettes, and others).
  • Class-specific notes ported from Python PEPit: differentiability and reuse_gradient behavior, L == Inf/beta == 0 degenerate-parameter advice, the nonexpansive infimal-displacement-vector discussion, and the documented adjoint usage gradient!(M.T, u) for LinearOperator.
  • A representative # Returns approximately: (...) output line inside the # Julia usage block of every example docstring (96 examples), generated by running each example with its documented arguments (Clarabel).

Fixed

  • Class docstring usage examples previously showed the template placeholder OrderedDict("L" => 1.0) # adapt keys to the class for every class; each class now shows its actual parameter keys ("mu", "beta", "M", "rho", "partition", ...), so copy-pasting no longer raises KeyError.
  • Mislabeled prose in operator docstrings: LipschitzOperator and both CocoerciveStronglyMonotoneOperator* variants described "Cocoercive operators"; BlockSmoothConvexFunctionExpensive referred to itself by a non-existent name (RefinedBlockSmoothConvexFunctionExpensive).
  • Ten example docstrings falsely claimed "No bibliographic reference was listed in the corresponding Python PEPit example docstring"; eight now carry the actual references (Lieder; Gu-Yang; Kim; Park-Ryu; Bousselmi et al.; Goujaud et al.) and the remaining two state that no reference exists.
  • Broken display-math fence in the theoretical-guarantee block of examples/fixed_point_problems/krasnoselskii_mann_constant_step_sizes.jl.
  • # Note/# Warning pseudo-headings with indented bodies in class docstrings (rendered as code blocks by Documenter) replaced with proper !!! note/!!! warning admonitions; generic # Fields boilerplate replaced with accurate per-class field descriptions.

[0.1.2] - 2026-06-08

Added

  • Documenter.jl documentation scaffold with API reference pages, an executable Quick Start, tutorials, contributing guide, release notes, and custom styling.
  • GitHub Actions workflow for building and deploying the documentation site.
  • Comprehensive source docstrings for the public API and key implementation helpers across the core objects, function classes, operator classes, primitive steps, and utilities.
  • Mathematical docstrings for all wc_* example functions.
  • Executable, expanded Quick Start covering worst-case instance recovery with evaluate, the explicit dual certificate (solve_dual!, eval_dual, DualPEPCertificate), and dimension-reduction heuristics (tracetrick, logdetiters).
  • Contributing guide with templates for adding function/operator classes, primitive steps, and worked examples.
  • Automatically generated Examples overview, category pages, and per-example pages extracted from the corresponding wc_* function docstrings.
  • This changelog and a "Release notes" page in the documentation.

Changed

  • evaluate is now exported. It is the documented way to recover numerical realizations of Point/Expression objects after solving.
  • Standardized all documentation links and documentation deployment on github.com/PerformanceEstimation/PEPit.jl.
  • Tests now access internal counters and helper functions as PEPit.<name> after those symbols were removed from the public export list.

Fixed

  • evaluate was documented and shown in the Quick Start but not exported, so user code following the Quick Start raised UndefVarError.
  • Broken display-math block in the inexact_gradient_step! docstring: the conditional definition is now contained in a single math fence (previously part of it rendered as raw LaTeX / a code block).
  • De-Pythonized the inexact_gradient_step! docstring: a # Throws section now documents the real ErrorException, with Julia string/list syntax.

Removed

  • Internal symbols are no longer exported into the public namespace: the global counters (Point_counter, Expression_counter, Function_counter, Global_Constraint_counter, PSDMatrix_counter, NEXT_ID) and the internal helpers (_is_already_evaluated_on_point, _separate_leaf_functions_regarding_their_need_on_point, _get_nb_eigs_and_corrected). They remain reachable as PEPit.<name>.

[0.1.1]

  • Initial documented release: the core PEP workflow (PEP, Point, Expression, Constraint, PSDMatrix), function and operator interpolation classes, primitive steps, solve! / solve_dual!, and ~96 worked examples validated against the Python PEPit package.