A (potentially?) 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 (Slack/Zulip/Discourse/GHissues/GHdiscussions):
- Wonderful learning materials on how to become a Julia compiler hacker (especially the first comment by ToucheSir). discourse
- Some musings on support for Interfaces in Julia by Keno, Valentin (of AVR fame), Rafael, and Mark. slack/general
- Escape analysis and its potential future use in minimizing allocations briefly discussed. slack/general
- Discussion on current options for a trait system in Julia and potential future work (under an ASML job posting on the topic). slack/jobs
- Keno discusses the many problems with the
--check-bounds
flag in julia and first steps in dealing with these issues. github - A long discussion on how to properly define “public” API in a more standardized way. Valentin Sukera wrote a very detailed proposal that generated many downstream ideas. There is no consensus yet, but many fruitful nearterm steps that volunteers can undertake were brought up. github (and a related discussion on discourse and related ideas in this PR)
- A discussion on the potential for a stable public API for the effects system in the compiler. slack (and a related discussion on github)
- More discussion of SumTypes.jl (and Unityper.jl, and Expronicon.jl) as tools for avoiding boxing and dynamic dispatch when having large unions or arrays of disparate types. (see also: abstract data types, union splitting) zulip
Core Julia Repos:
- [merged] Claire’s absolutely heroic work on merging the new parser
continuesis finished (for a certain definition of the word “finished”)! - [draft] For a while now Julia multithreading tasks can switch between different threads (providing for dynamic scheduling), but this also has led to folks having races in their code due to naive thread-local storage setups that are not safe anymore. There is some work on documenting this and providing a best practices guide (blog draft), as well as new neater API.
- [dispersed] A lot of small incremental improvements to the garbage collector by doggedly persistent folks. 1, 2, 3, 4, 5
- [docs] Documenting the Julia JIT (for the first time?).
Dustbin of History:
- Before the recent amazing improvements to TTFX (precompilation caching thanks to pkgimages in Julia 1.9), a lot of work went into potential faster/incremental compilation of sysimages. See Keno’s and Petr’s and Jameson’s work. That work had to be abandoned because of the clashing pkgimage changes, but it might one day be revived. Context: Pkgimages make loading time (i.e.
using SomePackage
) a bit slower, but make time-to-first-X (a.k.a. TTFX, i.e. the first call toSomePackage.somefunction()
) instant. Sysimages make both instant, but are very slow to compile and they set your environment in stone (need recompilation on each Pkg add/update). - For a while there has been a desire to have more detailed “provenance tracking” for low level generated code, i.e. knowing what source code it comes from. With the improvements brought by JuliaSyntax, maybe this can be tackled soon.
“Ecosystem” Fora, Maintenance, and Colab Promises (Slack/Zulip/Discourse):
- A great set of auto differentiation lecture notes including both theory and Julia ecosystem examples. slack
- A new, very fast and polished Hidden Markov Chain package. discourse
- An alternative to Unitful.jl which is much easier to keep type-stable (units are not encoded in the type). discourse
- OpenCV.jl is now maintained by JuliaImages. slack/image-processing
- JuliaFolds is maintained again (as JuliaFolds2) and in need of more helpers. zulip
- SimJulia is maintained again (under the JuliaDynamics org), renamed to ConcurrentSim. ResumableFunctions is also maintained once again (under the same org).
- Jacob Zelko has kicked off monthly JuliaHealth community organization meetings
Soapboxes (blogs/talks):
- JuliaCon 2023 is approaching (in July, in person and online). The JuMP-Dev conference and the SciML conference happen concurrently with it.
- Chris’s SciML / Digiwell seminar talk “The Continuing Advancements of Scientific Machine Learning (SciML)”
- Wonderful little video intro/tutorial by Jacobus on latency in Julia (great for newcomers). discourse or youtube
- A blog post on “Modern Julia workflows” is being considered, prompted partially by the video above, currently in a very early draft stage.
Sundry:
- JuliaHub is hiring an EDA core system & compiler engineer and a Senior Cloud Engineer.
- ASML is hiring an intern to work on trait systems for Julia.
- A Pluto Notebook Competition is running the next few weeks, for the best, most engaging example of a Pluto notebook project.
- Put changelogs in your package’s documentation! slack thread
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.