hello! 👋

I'm june, a PhD student advised by Marco Gaboardi and working with Ankush Das at Boston University. I plan to graduate December 2026, and am currently looking for employment after graduation. My PhD has been focused on programming languages and type systems, applied to:

want to get in contact? my email is june@junewunder.com and I am on mathstodon.xyz

During my PhD I designed Willow, a type system for functional reactive programming that provides guarantees on temporal behavior. Willow captures the chain of events that may be caused by a state change or event firing.

In addition I also worked with Stefan Muller on GML, a language that can find common runtime-bugs in highly multithreaded programs.


publications

preprint: A Type-and-Effect System for Temporal Dependency Analysis of Render-based Reactive Programs
june wunder, Ankush Das, Marco Gaboardi
[arXiv]   [code]

abstractReactive programming frameworks such as React let developers build interactive applications by declaratively specifying how outputs depend on changing inputs. Although this model makes it easy to reason about what an application computes, the temporal behavior of reactive programs remains difficult to understand and verify. Applications implicitly rely on timing assumptions buried in framework runtimes, leading to subtle bugs such as stale reads, transient inconsistencies, order-dependent behavior, and unintended feedback cycles. This paper presents Willow, a core calculus for reactive programming inspired by React. Willow gives a time-aware operational semantics that models computation in terms of renders, the fundamental evaluation step in which components produce user interface descriptions, and pairs it with a novel type-and-effect system that statically tracks timing behavior as effects. A "next" modality expresses delays measured not only in renders but in any unit the host environment exposes: renders, network round-trips, or wall-clock milliseconds. A family of modalities tracks the full lifecycle of event handlers: when they are registered, when they fire, when pending events are cancelled, and when handlers are removed. A key insight is that the resulting effects form a temporal dependency graph, letting standard graph algorithms statically detect render cascades and inter-render loops that cause non-termination or performance degradation. We formalize Willow and prove preservation of the effect system with respect to the semantics. We also implement a prototype checker with automatic effect inference and evaluate it on representative reactive patterns such as debouncing, form inputs, and API-driven updates.

Pipelines and Beyond: Graph Types for ADTs with Futures
Francis Rinaldi, june wunder, Arthur Azevedo de Amorim, Stefan K Muller
Principles of Programming Languages (POPL), 2024
[acm library]   [arXiv]   [artifact]

abstract

Parallel programs are frequently modeled as dependency or cost graphs; such graphs can be used to detect various bugs, or simply to visualize the parallel structure of the code. However, such graphs reflect just one particular execution and are typically constructed in a post-hoc manner. Graph types, which were introduced recently to mitigate this problem, can be assigned statically to a program by a type system and compactly represent the family of all graphs that could result from the program.

Unfortunately, prior work is restricted in its treatment of futures, an increasingly common and especially dynamic form of parallelism. In short, each instance of a future must be statically paired with a vertex name. Previously, this led to the restriction that futures could not be placed in collections or be used to construct data structures. Doing so is not a niche exercise: such structures form the basis of numerous algorithms that use forms of pipelining to achieve performance not attainable without futures. All but the most limited of these examples are out of reach of prior graph type systems.

In this paper, we propose a graph type system that allows for almost arbitrary combinations of futures and recursive data types. We do so by indexing datatypes with a type-level vertex structure, a codata structure that supplies unique vertex names to the futures in a data structure. We prove the soundness of the system in a parallel core calculus annotated with vertex structures and associated operations. Although the calculus is annotated, this is merely for convenience in defining the type system. We prove that it is possible to annotate arbitrary recursive types with vertex structures, and show using a prototype inference engine that these annotations can be inferred from OCaml-like source code for several complex parallel algorithms.

Bunched Fuzz: Sensitivity for Vector Metrics
june wunder, Arthur Azevedo de Amorim, Patrick Baillot, Marco Gaboardi
European Symposium on Programming (ESOP), 2023
[Springer]   [arXiv]   [pdf]   [pdf (rendered w/ OpenDyslexic)]

abstract

Program sensitivity measures the distance between the outputs of a program when run on two related inputs. This notion, which plays a key role in areas such as data privacy and optimization, has been the focus of several program analysis techniques introduced in recent years. Among the most successful ones, we can highlight type systems inspired by linear logic, as pioneered by Reed and Pierce in the Fuzz programming language. In Fuzz, each type is equipped with its own distance, and sensitivity analysis boils down to type checking. In particular, Fuzz features two product types, corresponding to two different notions of distance: the tensor product combines the distances of each component by adding them, while the with product takes their maximum.

In this work, we show that these products can be generalized to arbitrary Lp distances, metrics that are often used in privacy and optimization. The original Fuzz products, tensor and with, correspond to the special cases L1 and L∞. To ease the handling of such products, we extend the Fuzz type system with bunches---as in the logic of bunched implications---where the distances of different groups of variables can be combined using different Lp distances. We show that our extension can be used to reason about quantitative properties of probabilistic programs.


name

I spell my name "june wunder" in all lowercase. people referring to me in any context should use this stylization.