whew… it has been two years of doing this… time flies…
A monthly newsletter, mostly on julia internals, digestible for casual observers. A biased, incomplete, editorialized list of what a clique of us found interesting this month, with contributions from the community.
For recent news on Julia and interesting conversations with community members, check out the JuliaDispatch podcast (on many platforms, including youtube and spotify). Highlights from the newsletter get discussed (with more context) during some episodes.
JuliaCon Local Paris 2025:
- The call for proposals is still open until May 15th! Submit your talk, tutorial or poster while you can.
- Tickets are now available! Get yours here!
“Internals” Fora and Core Repos (Slack/Zulip/Discourse/Github):
-
Julia 1.11.5 and 1.12-beta2 have been released.
-
The API for the compiler’s lowering has been reworked [1, 2], paving the way for experimental use of JuliaLowering.jl as the default lowering implementation. JuliaLowering is intended to improve code provenance in Julia, which will have a big impact on future developer tooling. See the JuliaCon 2024 video. A recent discussion on discourse also delves deeper in the inner workings of JuliaLowering. JuliaLowering is also an important part of the experimental JET-based language server, which would provide much better dev feedback in IDEs.
-
The StyledStrings standard library committed piracy against Base and was type unstable. This led to invalidations and contributed to the higher latency of Julia 1.11 and 1.12 compared to 1.10. The latency impact has now been deemed untenable, so work is ongoing to fix the piracy and invalidations [1, 2, 3]
-
The discussion on optional modules has bubbled up again [1, 2]. This is related to the older discussion of precompile-only packages as well as package extensions, all mechanisms to reduce the number of dependencies, and thereby improve precompile times and latency.
-
There have been many posts about the increasing load latency since the release of Julia 1.10 [1, 2, 3, 4, 5, 6]. This issue is well known to the compiler team who are looking into it. One particularly nice outcome of this is the creation of a repository of “representative examples of a package’s use” for benchmarking Julia’s performance on load, compilation, and more. There is even a simple webpage for direct submission of such code snippets.
-
Detailed new documentation on the “world age” mechanism in julia.
-
Further progress on support for LLVM v20 is near.
-
Unexpectedly, a few ‘optimised’ methods in Base have been found to be slower than the naive implementations, providing rare opportunities to optimise code simply by deleting stuff [1, 2, 3].
-
A talk for non-julian audiences on the recent progress on static compilation at PyData Global by Jeff.
-
Why are static arrays immutable? - a short discourse post in which Oscar and Mason give very informative short answers about stack and heap allocations in julia and other languages.
Ecosystem Fora, Maintenance, and Colab Promises (Slack/Zulip/Discourse/Github):
- TestPicker.jl - a neat dev tool for interactively running a subset of tests matching a fuzzy search.
- BorrowChecker.jl - a runtime borrow checker (similar to Rusts compile borrow checker) that can be disabled in release code, but kept enabled during development and testing to detect bugs and structural issues in your library code.
- The Pluto notebook is getting AI coding assistance features. They are taking a very cautious approach of putting in only limited-scope features of high value right now, e.g. automatically fixing syntax errors.
- AskAI.jl for interactive queries to LLMs and executing code returned by them.
- RxInferServer and a Python SDK: remote execution of probabilistic modules and support for consumers from other languages.
- ZeroDimensionalArrays.jl - tiny package, implementing several similar types, each being a zero-dimensional array, as a semantically neater alternative to the many meanings
Base.Ref
has. - PawsomeTracker.jl for target tracking in videos.
- StructuralVibration.jl released recently for work on modeling various problems in mechanics.
- ClickeTrees.jl - tree decomposition tools
- SmallCollections.jl - fast small vectors, sets and dictionaries
Abstract Math ecosystem:
- LieGroups.jl - an interface to work with and define Lie groups as well as a library of Lie groups
Numerical Math ecosystem:
- ConvolutionInterpolations.jl: Smooth multi-dimensional high order of accuracy interpolation.
- Breakers.jl for binning continuous data, a pure Julia partial implementation of the R classInt library, that handles fisher, kmeans, quantile and equal breaks of a vector (potentially containing missing values).
- NumericalDistributions.jl: a Distributions.jl-compatible tool for defining custom probability distributions from arbitrary numerical functions.
- Numerical Linear Algebra class in Julia at TUM
Notes from other ecosystems:
- PhysLean: Digitizing physics in Lean 4 – formalizing calculations, theorems, and proofs!
- CubeCL: the Rust version of KernelAbstractions
Events:
- The QNumerics summer school on numerical methods in quantum information science is open for registration.
See also: French community newsletter, community calendar, minutes of triage meetings
Please feel free to post below with your own interesting finds, or in-depth explanations, or questions about these developments.
If you would like to help with the draft for next month, please drop your short, well formatted, linked notes in this shared document. Some of it might survive by the time of posting