Releases: HarrisonKramer/optiland
v0.5.9 (Feb 8, 2026)
Optiland v0.5.9 Release Notes
v0.5.9 represents a significant architectural expansion for Optiland, introducing critical capabilities for complex system design. This release focuses on high-fidelity modeling for wide-angle and zoom systems through multi-configuration support and robust ray aiming. Additionally, new image simulation tools and advanced material definitions further bridge the gap between theoretical design and practical analysis.
🔭 Advanced System Modeling
Multi-Configuration Support
Implemented a comprehensive multi-configuration framework, enabling the design and analysis of systems with variable states, such as zoom lenses and focusing groups. Examples demonstrating these capabilities have been added to the gallery.
Robust Ray Aiming
Added iterative ray aiming methods designed for systems where paraxial assumptions fail. This allows for accurate pupil sampling in systems with high fields of view (FOV) and significant pupil aberration.
Image Simulation
Introduced an image simulation module, allowing users to generate simulated images of scenes as they would appear when imaged through the optical system.
Real Ray Image Height Fields
Added a "Real Ray Image Height" field type, enabling optimization and analysis based on the actual ray landing coordinates rather than paraxial approximations.
📐 Physics & Analysis
Afocal Wavefront Mode
Enabled an afocal mode for wavefront and Optical Path Difference (OPD) calculations. When active, OPD is calculated against a planar reference wavefront rather than a spherical reference, suitable for collimated output systems.
Jones Pupil Analysis
Added functionality for Jones Pupil analysis to evaluate polarization states across the pupil.
Orthogonal Descent Optimizer
Integrated an orthogonal descent optimizer, providing an alternative local optimization strategy for specific convergence characteristics.
Geometric MTF Scaling
Refined the scaling logic within the Geometric MTF calculation to improve accuracy in diffraction-limited regimes.
⚙️ Core & Visualization
Visualization Enhancements
Updated the optic.draw() method with new controls:
- Vignetting Control: Added an option to hide vignetted rays for cleaner layout inspection.
- Aperture Visualization: Physical apertures are now visually represented in the system draw.
Material Modeling
-
Improved Abbe Materials: Introduced a revamped
AbbeMaterialfor modeling glass based solely on refractive index ($n_d$ ) and Abbe number ($V_d$ ), along with a specific e-line variant. - Formatting: Fixed formatting issues in the lens info viewer for material data.
Geometry Scaling
Implemented a universal scale method across all geometry classes. This ensures that surface parameters evolve correctly when the macroscopic system scale is modified.
Interoperability & API
- Zemax Import: Added support for importing circular aperture definitions from Zemax files.
- Surface Management: Added a
remove_surfacemethod to the Optic class for dynamic system modification.
🐛 Stability & Maintenance
- Forbes Polynomials: Addressed numerical issues related to Forbes polynomial surfaces.
- Phase Interaction: Fixed a unit consistency bug in the phase interaction model.
- Documentation: General improvements to documentation, including the README, and expanded test coverage to ensure reliability of new features.
Summary
Optiland v0.5.9 significantly widens the scope of simulatable systems, moving from static, standard-field designs to complex, dynamic, and wide-angle optical systems.
Contributors in v0.5.9
@RFerraciniAlves, @manuelFragata, @Xiong-Ziyi, @v4sud3v, @Littie28, @HarrisonKramer
v0.5.8 (Nov 22, 2025)
Optiland v0.5.8 Release Notes
v0.5.8 acts as a targeted update focusing on geometry flexibility, expanded import capabilities, and visualization enhancements. This release introduces generalized phase interaction models, grid sag geometry, and versatile 2D layout options, alongside key improvements to material handling and the Zemax reader.
🧩 Geometry & Physics Modeling
Generalized Phase Interaction Models
Expanded the interaction model framework to allow the application of arbitrary phase profiles on any surface type, significantly increasing design flexibility for diffractive and hybrid systems.
Grid Sag Geometry
Added support for Grid Sag surfaces, enabling the definition of surface sags based on interpolated grid data.
Toroidal Surface Support
Implemented support for toroidal surfaces within the Zemax reader, expanding compatibility with imported legacy designs.
🔭 Analysis & Visualization
2D Layout Projections
Added the ability to plot 2D system layouts with selectable projections. Users can now visualize systems in YZ, XZ, and XY planes.
New Apodization Types
Introduced additional apodization profiles for more complex source modeling, including Super Gaussian, Cosine Squared, and more.
Backend-Agnostic Huygens PSF
Refactored the Huygens Point Spread Function calculation to be fully backend-agnostic, improving compatibility across computation modes.
⚙️ Core & Stability Improvements
Material System Enhancements
- Efficiency: Optimized object handling to avoid creating multiple copies of material objects.
- Equality Testing: Enabled direct equality testing for material instances.
- Extinction Coefficients: The Abbe material model now returns an array for extinction coefficients.
Zemax Reader Fixes
Resolved a float vs aperture error when reading specific Zemax file configurations, ensuring smoother imports.
Refactoring & Maintenance
- Refactored geometry configuration files for better maintainability.
- Added a
stop_indexsetter and logic to disallow second object surfaces for cleaner system definitions. - General documentation updates, testing coverage expansion, and minor bug fixes.
Summary
Optiland v0.5.8 continues to refine the user experience with better interoperability and more robust modeling tools. This update prepares the codebase for further advancements in complex surface modeling.
v0.5.7 (Oct 15, 2025)
Optiland v0.5.7 Release Notes
v0.5.7 delivers a major architectural upgrade with new geometry capabilities, backend-agnostic optimization, and improved performance across modeling and analysis. This release focuses on extensibility, clarity, and computational efficiency while preparing the foundation for advanced features like GRIN modeling and next-generation optimization workflows.
Simple example window demonstrating new NURBS functionality. Contribution by @mattemilio
🧩 Core Geometry & Modeling
-
NURBS Geometry Support (New Major Feature)
Introduces full Non-Uniform Rational B-Spline (NURBS) surface modeling, enabling smooth freeform and parametric designs with unprecedented flexibility.
Includes integration with surface visualization and sag computation tools. -
Propagation Model Framework
Added a generalized propagation model interface that supports current field propagation and will serve as the foundation for GRIN and wave-based modeling in future versions. -
Interaction Models on Surfaces
Decoupled ray-surface interaction logic through modular interaction models, improving separation of concerns and paving the way for exotic surface behaviors (diffractive, reflective, refractive, hybrid). -
Field System Refactor
Reworked the internal field framework to simplify extension and customization, improving maintainability and consistency across analysis modules.- Added Paraxial Image Height as a new field type for rapid paraxial evaluation and comparison with full raytrace results.
-
MMDFT PSF Calculation
Added a Matrix-Multiply Discrete Fourier Transform (MMDFT) method for efficient, high-accuracy point spread function computation, especially for large pupils or fine sampling grids. -
Pixel Pitch Option for Huygens PSF
Introduced apixel_pitchparameter for Huygens-based PSF analyses, allowing precise control over spatial sampling and detector mapping. -
AOI Operand for Optimization
Added Angle of Incidence as a new optimization operand, enabling direct optimization of surface angles and incidence-dependent performance.
🧠 Optimization & Backend Integration
-
Torch Optimization Rework (Major Update)
Completely restructured optimization backend to allow PyTorch-driven optimization within the standard Optiland framework.- Supports backend-agnostic optimization problems that can run seamlessly on either native or torch-based backends.
- Introduces a torch-like API for differentiable and gradient-based optimization workflows.
- Includes new documentation and examples demonstrating torch-based optimization.
-
Modular Variable Scaling Framework
Refactored scaling of optimization variables into a clean modular system, improving transparency, tuning flexibility, and code clarity.
⚙️ Performance & Robustness Improvements
-
Caching of Material Index and Absorption Calculations
Added intelligent caching to material property computations, significantly improving performance during repeated evaluations and optimization. -
Wavefront Error Calculation Fixes
Improved robustness and accuracy in wavefront error computation, addressing numerical edge cases and filtering issues. -
Forbes Geometry Improvements
Enhanced numerical stability and handling of Forbes polynomial surfaces. -
General Bug Fixes and Cleanups
Numerous fixes across modules, including visualization bugs, doc build issues, and cleanup of obsolete files and redundant utilities. -
pyproject.tomlCompatibility Updates
Adjusted dependencies to resolve version mismatches withnumbaandtyping-extensions.
🖥️ Graphical User Interface
-
Stability and Responsiveness Improvements
Multiple GUI fixes addressing visual refresh issues and interactivity problems in the lens editor and analysis panels. -
Quality-of-Life Enhancements
Better synchronization between system state and visualization components, improving reliability for multi-surface or diffractive designs.
📚 Documentation & Examples
-
RTD Documentation Expansion
Improved and expanded ReadTheDocs documentation with clearer structure, new code examples, and setup guidance. -
New Example Systems
- Czerny–Turner Spectrometer: Added a fully functional diffractive spectrometer example.
- Additional doc examples highlighting NURBS usage, torch optimization, and new PSF modes.
Czerny–Turner Spectrometer example added in v0.5.7
Optiland v0.5.7 reinforces the platform’s foundation with powerful modeling primitives, a unified optimization framework, and improved computational efficiency. This release establishes a strong base for upcoming GRIN modeling, wave-based propagation, and deep integration of differentiable optics.
Contributors in v0.5.7: @mattemilio, @crnh, @Littie28, @rjmoerland, @drpaprika, @scottpaine, @manuelFragata, @hemkumarsrinivas
v0.5.6 (Aug 24, 2025)
Optiland v0.5.6 Release Notes
v0.5.6 is a feature-rich release that deepens Optiland’s modeling capabilities, strengthens wavefront and diffraction analysis, and significantly expands the GUI. This version focuses on making the platform more robust, flexible, and ready for advanced optical system exploration, including diffractive and exotic designs.
Littrow spectrometer example, implemented by contributor @mattemilio
🖥️ Graphical User Interface
-
Lens Data Editor Upgrades
Improved tools for creating and editing lens systems interactively, with more intuitive workflows. -
Expanded Surface Sag Visualization
More detailed and reliable sag profile plots directly in the GUI. -
Refactor for Maintainability
Large internal restructuring of the GUI codebase, improving reliability and preparing for future expansions.
🧪 Modeling & Analysis Enhancements
-
Intensity Visualization Analysis
New plot type for visualizing intensity distributions. -
Huygens MTF
Implemented Modulation Transfer Function calculations based on the Huygens integral, enabling higher-fidelity performance analysis. -
PSF Calculation Updates
Improved point spread function computations to align more closely with standard optical conventions. -
Diffraction Gratings
Surfaces can now include diffraction grating behavior, unlocking modeling of spectrometers and other diffractive instruments. -
Conversion Utility: Thin → Thick Lenses
Convert paraxial thin lens elements into realistic thick lens equivalents for practical design starting points. -
New Example Systems
Gallery expanded with diffractive systems such as spectrometers, categorized under a new “Diffractive Systems” section. -
Navarro Schematic Eye Model
Added a new sample system and unit tests for biomedical and vision science applications.
🌊 Wavefront & Aberration Analysis
-
Refactored Wavefront Module
Major restructuring for clarity, robustness, and maintainability. -
Flexible Wavefront Error Calculation
Introduced a strategy-based system allowing multiple methods:- Standard chief ray and exit pupil reference
- Centroid-sphere method: uses ray centroids and best-fit spheres, ideal for exotic or asymmetric systems where paraxial rays are unreliable
-
OPD Tilt Removal Option
Added ability to remove tilt by subtracting a best-fit plane, aiding interpretation of wavefront maps. -
Zernike Geometry Improvements
Unified Zernike handling across the codebase and enable Zernike geometries to accept an explicitzernike_typeoption (standard, fringe, Noll). -
Forbes Surface Geometry Fixes
Improved robustness and accuracy for Forbes polynomial surface definitions. -
Wavefront Robustness
Explicit filtering of vignetted or zero-intensity points for more reliable results.
🧠 Developer & Technical Improvements
-
Type Hints Introduced
Began adding type annotations across the codebase, starting with theOpticclass. -
Lens.info() Expansion
Displays full tables of coefficients for all aspheric surfaces, improving transparency. -
Matplotlib OOP Migration
Allview()methods updated to use the matplotlib object-oriented API, increasing flexibility and compatibility. -
Code Refactoring
Multiple modules cleaned up to reduce technical debt and improve maintainability. -
Python Support Update
Dropped support for Python 3.9, aligning with modern ecosystem standards.
📚 Documentation & Installation
-
Expanded Documentation
New and updated sections covering diffraction gratings, Huygens MTF, OPD options, and GUI workflows. -
PyTorch Installation Notes
Updated instructions with important guidance for GPU users.
Optiland v0.5.6 represents a significant step forward: diffraction modeling, robust wavefront analysis, and deeper GUI integration bring Optiland closer to being a comprehensive, end-to-end platform for modern optical system design.
Contributors for v0.5.6: @mattemilio, @lordpositron, @manuelFragata, @crnh, @drpaprika
v0.5.3 (July 26, 2025)
Optiland v0.5.3 Release Notes
v0.5.3 is a milestone release that introduces the first public version of the Optiland GUI, expands physical modeling capabilities, and enhances the optimization system with powerful new tools. This update pushes Optiland into a more accessible, interactive, and intelligent design platform for optics professionals and researchers.
Littrow spectrometer example, implemented by contributor @mattemilio
🖥️ Graphical User Interface (Preview Release)
-
First Public GUI Release
An interactive desktop interface built with PySide6, providing access to key modeling and analysis tools without requiring code. -
Surface Sag Viewer
Visualize surface sag profiles directly in the GUI for fast and intuitive inspection. -
Live Analysis Plots
Dynamic plotting tools integrated into the GUI for rapid design diagnostics.
🧪 Modeling & Analysis Enhancements
-
Temperature & Pressure Dependent Index
Refractive indices can now be computed as functions of temperature and pressure, supporting more realistic and adaptive modeling. -
Angle vs. Height Plot Type
New analysis plot for tracing ray angles against height, useful for telecentric or afocal systems.
🧠 Optimization System Upgrades
-
Total Track Operand
A new operand for objective functions based on total optical track length, useful for constraining system size or managing physical layout. -
Glass Expert (🚀 New Optimization Type)
A major addition to the optimizer: automatically explores and selects optimal glass types for a given design, intelligently navigating the glass catalog during optimization. Brings Optiland closer to expert-level design support.
🧰 General Improvements
-
Custom Surface Insertion Fix
Corrected behavior when inserting user-defined surfaces, improving stability for advanced design workflows. -
Expanded Test Coverage
Additional tests for new features and GUI components. -
Documentation Overhaul
Significant expansion and revision of documentation, especially for GUI functionality and new optimization features.
Optiland is rapidly evolving into a powerful end-to-end platform for optical design and analysis. The new GUI, advanced physical modeling, and expert-level optimization tools mark a leap forward in usability and capability.
v0.5.2 (July 5, 2025)
Optiland v0.5.2 Release Notes
v0.5.2 is a focused update that improves accuracy in core calculations, adds an important new feature for optical modeling, and fixes several edge-case bugs. These changes ensure greater consistency with commercial tools and improved physical realism in advanced analyses.
🔬 Optical Modeling & Analysis
-
Apodization Support
Added optional apodization weighting to better simulate realistic illumination conditions across the entrance pupil. -
Improved Working F/# Calculation
Updated PSF calculation to use a more physically consistent working F-number, resulting in more accurate sampling and scaling. -
Refined PSF Sampling Behavior
Improved PSF spatial frequency sampling to better match the conventions of commercial tools, improving interpretability and alignment in benchmarking scenarios.
🐞 Bug Fixes
-
Cardinal Point Calculation
Fixed bug in principal plane and cardinal point determination when object or image space media differ from air. -
Vignetting Calculation Fix
Resolved edge case in vignetting determination logic to avoid false clipping in optical systems.
📚 Documentation & Examples
- Minor Cleanup
Miscellaneous documentation clarifications and small codebase maintenance updates.
v0.5.0 (June 12, 2025)
Optiland v0.5.0 Release Notes
This release brings major enhancements across optical modeling, analysis capabilities, and usability, along with significant backend and documentation improvements. v0.5.0 focuses on increased analysis flexibility, better numerical consistency, and new tools for building and visualizing real-world systems.

Visualization of the solution space for a singlet lens, using Optiland’s differentiable raytracing and PyTorch autograd to compute gradients of RMS spot size with respect to lens radii.
🔬 Optical Modeling & Geometry
-
Flip Optical Systems or Elements
New utility to flip the optical system or optical element. -
Biconic Geometry Support
Added support for biconic surfaces, expanding modeling capability for freeform or highly aspheric systems. -
Aperture Size Control
Surfaces and lenses can now specify custom aperture sizes for plotting purposes. -
"Float by Stop Size" Aperture Type
New aperture type allows sizing relative to the system stop, enabling more parametric designs. -
Zemax File Coordinate Break Support
Zemax file reading utility now supports coordinate breaks.
🧪 Optical Analysis & Solvers
-
Through-Focus Spot Diagram
Added support for computing and visualizing spot diagrams as a function of image plane defocus. -
Through-Focus MTF
Compute the Modulation Transfer Function across image plane defocus values for detailed depth-of-focus characterization. -
Sampled MTF Evaluation
New functionality to evaluate the MTF at specific target spatial frequencies. Significantly faster than Fourier-based approaches when the MTF is only needed at specific frequencies. -
Irradiance Analysis Type
Added an irradiance-based analysis mode for evaluating intensity distribution across a surface. -
Huygens PSF
Added a new point spread function calculation using the Huygens-Fresnel integral for more accurate estimation of the PSF. -
Clearance Operand for Off-Axis Systems
New clearance optimization operands enables optimization to avoid vignetting or clipping for off-axis systems
⚙️ Backend & Core Improvements
-
Torch Backend Fixes
Improved gradient retention and differentiability in key components when using the PyTorch backend. -
Improved Least Squares Optimization
Enhanced stability and convergence in optimization routines through algorithmic improvements. -
Surface Ordering Fix
Improved robustness when defining surfaces in a non-sequential manner. -
FFT PSF Sampling Behavior
Updated sampling behavior to align more closely with commercial optical design tools. -
Ensure Unique Points in Distributions
Improved internal representation of pupil distributions for improved efficiency. -
__str__for RealRays
Added a string representation forRealRaysobjects for easier debugging and logging.
🛠 Refactors & API Cleanups
-
Refactored
solvesModule
Reorganized and streamlined solving utilities for clarity and extensibility. -
Refactored
analysisSubpackage
Abstracted common logic into reusable components and improved structure. -
PSF & MTF Refactor into Subpackages
Modularized the PSF and MTF modules into a separate subpackages, improving maintainability.
📚 Documentation & Examples
-
Live Demo
Added an interactive live demo to the docs. Try Optiland directly in your browser! -
Differential Raytracing Examples
Added examples of using Optiland for differential raytracing and sensitivity analysis. -
Real-World Projects Section
Showcased how Optiland can be used in applied optical design projects. -
External Tools Section
Documented external tools which are using Optiland.
🌈 Miscellaneous Features
add_wavelengthsFunctionality
New API to add multiple geometrically spaced wavelengths, e.g. Chebyshev spacing in log-wavelength, useful for apochromats or non-standard spectral ranges.
This release deepens Optiland’s capabilities across analysis, performance, and real-world integration. We're excited to see how you'll use it in your design work!
👉 Try it out now, or visit the updated docs at https://optiland.readthedocs.io/en/latest/.
v0.4.0 (May 2, 2025)
Optiland v0.4.0 Release Notes
This release marks a major step toward deeper numerical flexibility and performance optimization. v0.4.0 introduces official support for PyTorch as a computational backend, enabling seamless switching between NumPy and PyTorch across the entire codebase - along with targeted enhancements in modeling capabilities and documentation. Here's what’s new:
Backend Abstraction & PyTorch Integration
-
PyTorch Backend Support
Optiland now officially supports PyTorch as a backend! All core computations can now be performed using PyTorch tensors, enabling GPU acceleration and autograd-based differentiable optics workflows. This update enables a more than 100x increase in raytracing speed when run on GPU. -
Configurable Backend System
A new abstraction layer allows you to switch betweennumpyandtorchbackends with zero changes to your code. This lays the groundwork for future machine learning integrations and high-performance computing. -
Torch Backend Documentation
Documentation added to help users get started with the new backend. See the Configurable Backend Guide for more details.
Optical Modeling Features
- Toroidal Surface Support
Added a newToroidalSurfacetype, useful for modeling astigmatic or freeform-like systems such as ophthalmic lenses and laser beam shaping components. More details here.
Maintenance and Quality
-
Bug Fixes
Various small bugs were fixed across the codebase, improving robustness and numerical consistency, especially when switching backends. -
Improved Documentation
Additional examples and backend usage patterns have been added to the documentation. More tutorials are currently planned.
This release strengthens Optiland's foundations for high-performance optical design and simulation in both research and production contexts. Let us know what you build with it!
v0.3.1 (Apr 14, 2025)
Optiland v0.3.1 Release Notes
This release brings a number of new features, improvements, and refinements aimed at enhancing both user experience and codebase maintainability. Here's what's new in v0.3.1:
General Optical System Enhancements
- Physical Aperture Overhaul
Major upgrade to the physical apertures module, including support for Boolean apertures (e.g., unions, intersections). Reference here.
-
QuickFocus Solver
New solver to automatically move the image plane to the point of best focus. -
Paraxial Surface Support
IntroducedParaxialSurfacetype for fast first-order (Gaussian) optical system modeling. Reference here. -
Surface Comments
Surfaces now support acommentattribute for easier documentation and traceability.
Usability and Workflow
-
Merge Optics with
+
TwoOpticinstances can now be combined using the+operator for quick concatenation of optical systems. Reference here. -
Custom Callback in Optimizers
Optimizers now accept user-defined callback functions for real-time updates or custom stopping conditions.
Testing, Compatibility & Maintenance
-
Improved Python Compatibility
Official support for Python 3.13. -
Expanded Test Coverage
New tests added to improve reliability and prevent regressions. -
Better Handling of Incomplete Material Data
Gracefully handles missing extinction coefficient (k) data in materials. -
Documentation & Style Cleanup
Documentation has been improved, examples added, and code formatting updated for consistency. -
Refactors & Quality of Life
General internal improvements to make future development smoother and easier.
v0.3.0 (Feb 19, 2025)
Optiland v0.3.0 Release Notes
Additions and Improvements:
- Airy disc function added to the spot diagram
- Enhanced Zemax file support
- Corrected non-air image space wavefront calculations
- Fixed wavefront issues for +x angular fields
- Revised sign conventions for angular fields
- General code maintenance and cleanup


