[ANN] BeamletOptics.jl

Dear all,

we are happy to announce BeamletOptics.jl (or BMO for short), a newly registered Julia package for simulating optical (breadboard) systems. BMO is intended to be a simplistic simulation environment for people that primarily build laser-based laboratory optical setups. For more information, refer to the documentation.

Features

While the development of BMO is a ongoing process and we consider it to be in an alpha-state (v0.10.2 as of this post), the following capabilities are currently available and work to a standard where we feel comfortable to request feedback:

  • Hybrid sequential and non-sequential 3D ray tracing without paraxial approximation
  • TEM₀₀ Gaussian beamlet model
  • Various premade optical components
    • Mirrors
    • Lenses
    • Beamsplitters
    • Detectors
  • Surface-like modeling of rotationally symmetrical lens systems
  • Extendable API design for the implementation of custom optical interactions
  • Easy visualization via the Makie package

Similar packages within the Julia ecosystem are listed here.

Showcase

For a showcase of “practical applications” refer to the Michelson interferometer tutorial or the master’s thesis of A. Manny.

Way forward

The primary motivation for the existence of BMO is the kinematic simulation of laser interferometer setups. Refer to the Development roadmap for a rough outline on where we want to take this package. Since this is a pre-1.0 release, expect the API to break in future releases.

I’ve been working on adding Gaussian beamlets and polarization to OpticSim for a while. Perhaps we could work together. Ping me if you are interested, or just if you want to discuss the technical issues of simulating beamlets and polarization.

v0.13 release: what’s new

Since the v0.10.2 release we have been busy fixing bugs and introducing new features. With the help of a major patch by @Hawkes we have now finally implemented the full astigmatic beamlet formalism. This is a major step on the way to trace arbitrary electrical fields via wavefront decomposition.

You can check out the details here: Astigmatic Gaussian
Some preliminary wavefronts are available as well: Astigmatic Beam Groups

Additional changes since v0.10.2 include the unification of the Detector interface and an API section in the docs for developers.

JuliaCon 2026

If you are interested in this package, make sure to check out the talk at JCON this year:
Modeling optical setups with BeamletOptics.jl :: JuliaCon 2026 :: pretalx

v0.13.1 release: what’s new

This minor release has added a new tutorial based on the OpenRaman spectroscopy setup, in addition to some bug fixes. It is a comprehensive guide to follow the showcase presented at JuliaCon 2026.

great visualization. Is that using Makie.jl?

I am curious what it would look like if you included ray tracing? https://makie.org/website/blogposts/raytracing/

All of our illustrations are generated using either GLMakie or CairoMakie.
Personally, I have not played around with the new Makie backends yet, but I am looking forward to the next feature releases.

v0.13.4 release: what’s new

We have added some additional features and components to the current modeling capabilities since v0.13.1. This will be one of the last feature updates before we focus on a major (breaking) overhaul of the core API.

Updates

  • new polarization state visualization tools
  • support for polarized point spread functions
  • new out-of-the-box components (Triplet, (off-axis) parabolic mirror, linear polarization filter)
  • upgraded the docs to use the DocumenterVitepress.jl backend
  • more doc illustrations
  • some bug fixes

v0.13.5 release: what’s new

We have added additional SDFs to model a variety of conic mirrors. This has enabled the implementation of (on- and off-axis) ellipsoidal, hyperbolic and parabolic mirrors used e.g. in telescopes.

Updates

  • new mirror sdfs and constructors
  • fixed bugs in align3d and ray-marching
  • more doc illustrations
  • switched to pkg workspaces

P.S: shoutout to the Makie team for building a great visualization library!