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):
- Julia’s compiler has long had the ability to detect if memory allocations escape local scopes, and optimize them away in some cases when it can be proven they don’t escape. However, this existing ‘escape analysis’ in Julia has been limited and hasn’t actually enabled much optimisation. A new overhaul of escape analysis aims to be more accurate and open the door for implementing further memory optimisations in the future.
- Support for the independent external experimental Garbage Collector framework MMTk is almost a reality.
- Another discussion on current and future ways to work with interfaces and traits in Julia. While these discussions are always informative, be careful as they also can be a bit bikesheddy.
- A small helpful discussion on when does
@inbounds
increase performance?
In search of contributors and new maintainers (specify novice/moderate/expert and internals/domain background necessary):
- 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.
- ChainRules, a foundational package to the Julia autodiff effort is looking for a new primary maintainer.
Ecosystem Fora, Maintenance, and Colab Promises (Slack/Zulip/Discourse/Github):
- The general package registry now requires release notes on breaking releases.
- Cute little GUI for creating Julia packages (on top of PkgTemplates.jl)
- DispatchDoctor.jl is a neat way to ensure your code is type stable.
- The benchmarking toolkit Chairmarks.jl now supports benchmarking two functions in an interleaved fashion, avoiding potential sources of noise and bias.
- Julia is proving to be really interesting for signal processing and real time control of space satellites.
Julia Autodiff ecosystem:
- DynamicDiff.jl, integrated with the larger SymbolicRegression.jl ecosystem, provides for blazingly fast differentiation of dynamically generated expressions without compilation overhead.
- DifferentiationInterface.jl has great documentation with a useful overview of the ecosystem.
Notes from other ecosystems:
- EmacsConf talk: “Exploring shared philosophies in Julia and Emacs” (YouTube)
- NumPy uses avx-512 SIMD instructions when available for sorting, leading to much higher performance
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