# \[ANN\] BeamletOptics.jl

**URL:** https://discourse.julialang.org/t/ann-beamletoptics-jl/131912
**Category:** Package Announcements
**Tags:** announcement, physics, optics
**Created:** [August 28, 2025, 1:45pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912 "2025-08-28T13:45:33Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![StackEnjoyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stackenjoyer/32/39069_2.png) [@StackEnjoyer](https://discourse.julialang.org/u/StackEnjoyer)
#### Post date: [August 28, 2025, 1:45pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/1 "2025-08-28T13:45:33Z")

</div>

Dear all,

we are happy to announce [BeamletOptics.jl](https://github.com/JuliaPhysics/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.](https://juliaphysics.github.io/BeamletOptics.jl/stable/)

## 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](https://github.com/MakieOrg/Makie.jl) package

Similar packages within the Julia ecosystem are listed [here.](https://juliaphysics.github.io/BeamletOptics.jl/stable/#Similar-packages)

## Showcase

For a showcase of “practical applications” refer to the [Michelson interferometer tutorial](https://juliaphysics.github.io/BeamletOptics.jl/stable/tutorials/michelson/) or the [master’s thesis of A. Manny.](https://elib.dlr.de/211867/)

## Way forward

The primary motivation for the existence of BMO is the kinematic simulation of laser interferometer setups. Refer to the [Development roadmap](https://juliaphysics.github.io/BeamletOptics.jl/stable/#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.

---

<div class="post-metadata">

### Author: ![brianguenter](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brianguenter/32/29519_2.png) [@brianguenter](https://discourse.julialang.org/u/brianguenter)
#### Post date: [August 31, 2025, 2:10am UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/2 "2025-08-31T02:10:31Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![StackEnjoyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stackenjoyer/32/39069_2.png) [@StackEnjoyer](https://discourse.julialang.org/u/StackEnjoyer)
#### Post date: [May 26, 2026, 12:44pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/3 "2026-05-26T12:44:44Z")

</div>

# 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](https://juliaphysics.github.io/BeamletOptics.jl/stable/basics/beams/astigmatic_beam/)  
Some preliminary wavefronts are available as well: [Astigmatic Beam Groups](https://juliaphysics.github.io/BeamletOptics.jl/stable/basics/beams/beam_groups/#Astigmatic-Beam-Groups)

 ![agbtest3](https://global.discourse-cdn.com/julialang/original/3X/8/0/80b985e9e26aa8ff5bde3ad2e4312ff48dfa65fd.png)

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](https://pretalx.com/juliacon-2026/talk/KXDFUJ/)

---

<div class="post-metadata">

### Author: ![StackEnjoyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stackenjoyer/32/39069_2.png) [@StackEnjoyer](https://discourse.julialang.org/u/StackEnjoyer)
#### Post date: [September 14, 2026, 3:31pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/4 "2026-09-14T15:31:11Z")

</div>

# 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.

 ![raman](https://global.discourse-cdn.com/julialang/original/3X/e/9/e9d8ca2486f4ec08c08dab5e32aad3aa387adf82.jpeg)

---

<div class="post-metadata">

### Author: ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)
#### Post date: [September 14, 2026, 4:07pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/5 "2026-09-14T16:07:10Z")

</div>

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/](https://makie.org/website/blogposts/raytracing/)

---

<div class="post-metadata">

### Author: ![StackEnjoyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stackenjoyer/32/39069_2.png) [@StackEnjoyer](https://discourse.julialang.org/u/StackEnjoyer)
#### Post date: [September 14, 2026, 4:16pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/6 "2026-09-14T16:16:33Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![StackEnjoyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stackenjoyer/32/39069_2.png) [@StackEnjoyer](https://discourse.julialang.org/u/StackEnjoyer)
#### Post date: [September 18, 2026, 11:10am UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/7 "2026-09-18T11:10:41Z")

</div>

# 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.

 ![polray_showcase.wpS7hiLs](https://global.discourse-cdn.com/julialang/original/3X/9/5/95307b0ec68a688cff6eed790f60856fd3195f38.jpeg)

## 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](https://github.com/LuxDL/DocumenterVitepress.jl) backend
- more doc illustrations
- some bug fixes

---

<div class="post-metadata">

### Author: ![StackEnjoyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stackenjoyer/32/39069_2.png) [@StackEnjoyer](https://discourse.julialang.org/u/StackEnjoyer)
#### Post date: [September 22, 2026, 5:27pm UTC](https://discourse.julialang.org/t/ann-beamletoptics-jl/131912/8 "2026-09-22T17:27:18Z")

</div>

# 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.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/d/9/d98ce7fea0ee31421b47d4b84dd8c025d8c37471.jpeg)

## 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](https://docs.makie.org/stable/) team for building a great visualization library!
