A monthly newsletter, mostly on julia internals, digestible for casual observers. A biased, incomplete, editorialized list of what I found interesting this month, with contributions from the community.
“Internals” Fora and Core Repos (Slack/Zulip/Discourse/Github):
Revise is almost ready to work on structs, not just functions… This went from “never going to happen” to “standard feature” in the blink of an eye. See slack discussion and the last PR in the series.
JETLS.jl: New language server for Julia with advanced static analysis in a nascent stage of development and potentially Google Summer of Code positions open for it.
“C codegen considered unnecessary” is a neat example by folks at JuliaHub of the new compile-to-binary capabilities introduced in Julia
The @threads
macro can cause normal looking Julia code to have somewhat confusing behavior in an edge case. Namely, redefining variables inside of the newly defined closure and the way that boxing of variables works in Julia break the mental model of “a variable in Julia is just a label to a piece of actual data and assigning a variable does not modify the data, rather it just changes the what is being labeled”. A pretty esoteric source of bugs, with a possible fix/warning proposed in a recent PR.
Pkg now prints if the precompiled and loaded versions of a library are mismatched (frequent source of repeated precompilation when updating packages in a long-lived session). PR1 and PR2
Compiler.jl, the julia compiler now factored out as a stdlib that you can experiment with, is getting its best practices document.
More caching capabilities for Julia code running through customized compilers / AbstractInterpreters, remind me of the much bigger project of setting up a reliable API for integrating external compilers.
Deep rework and cleanup for IOBuffer
is coming up.
In case you did not know, besides the subtyping comparator <:
we have a supertyping comparator :>
that can be used in type parameterizations. It now also has a little bit more syntactic sugar support.
Suggested best practices for documenting return value types.
BinaryBuilder.jl is stuck to julia 1.7. Work has started on removing these constraints, thanks to stability guarantees in Pkg internals enabled by recent work.
Internal support for LLVM 19 in the julia compiler is done and progress is being made for LLVM 20.
Support for using various external garbage collection algorithms (thanks to immix) is growing here and here.
In search of contributors and new maintainers (specify novice/moderate/expert and internals/domain background necessary):
The Center for Quantum Networks is hirring GUI developers for work on open source network design and simulation frontend, hopefully with positive outcomes to the graphs.jl ecosystem as well.
The Center for Quantum Networks is running many bounties and minigrants on a variety of support packages for quantum information science.
SciML is running a large set of funded small projects – a great opportunity to contribute to the community and be paid for it.
Ecosystem Fora, Maintenance, and Colab Promises (Slack/Zulip/Discourse/Github):
ComposableAsyncStatus.jl is amazing for progress reporting from multiple potentially parallel tasks.
RxInfer.jl just got to v1, an amazing package for Bayesian inference.
AcademicIdentifiers.jl – a convenient library to work with DOI/ORCiD/Arxiv and more
An in-depth discussion of the details behind abstol and reltol in ODE solvers.
CImGui v5.0.0 and ImPlot v0.6.0 are out with many improvements: new documentation, updating for latest library versions, using official GLFW/OpenGL backends, cleaning boilerplate code, and even experimental Makie plots integration (see relevant discussion). And finally, ImGuiTestEngine.jl is a new testing and automation library. Now it is even easier to develop content creation tools, visualization / debug tools, using lots of widgets and plots with dynamic and interactive behaviour.
Makie.jl used for some amazing plots in a recent neutrino physics discovery.
A proposal for better support for file path handling and abstraction in Julia.
The ITensor team is developing new packages for quantum operators and tensor algebra: QuantumOperatorAlgebra.jl, QuantumOperatorDefinitions.jl, and TensorAlgebra.jl.
TerminalSystemMonitor.jl is a neat system resources monitor implemented in Julia.
Abstract Math ecosystem:
Matroids.jl is a Julia library for working with matroids using rank functions, supporting fundamental operations and integration with the Julia Graphs ecosystem.
TensorAlgebra.jl implements tensor contraction and algebra utilities, including dimension splitting, factorization, and permutation handling.
Julia Autodiff ecosystem:
DiffMatic.jl Symbolic differentiation of vector/matrix/tensor expressions in Julia
Notes from other ecosystems:
The UltraScale Playbook (tutorials on parallel computing)
Soapboxes (blogs/talks):
See also: French community newsletter, community calendar, minutes of triage meetings
You can engage in the discussion of this newsletter on Discourse