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):
- A convenient way to run Julia in Google Colab notebooks.
- The Modern Julia Workflows blog is becoming a great resource to new and established users interested in best practices and quality-of-life improvements.
- A discussion on the utility and feasibility-of-implementation of immutable arrays in Julia that emerged on a recently closed PR.
Core Julia Repos:
- A subproject/workspace feature is now available in the package manager. This feels like it came out of nowhere, but it will drastically simplify the lives of developers keeping doc and test environments in sync with the corresponding package. Discussed also on slack.
- A bit of a long story in the type domain.
Tuple
has many special properties not shared by other types andTuple{Union{}}
has been problematic for a while. Here is a sequence of interesting fixes and side effects from these fixes over the last few months: gh49111, gh52385, and gh53452 (among many other discussions). - We now have
waitany
andwaitall
functions for waiting on multiple tasks at once. - Shadowing / redefining methods is slightly different now. It seems it has been used to great effect in Pluto, but now that it is a core part of julia, it has caused some minor confusion as well.
- Claire, the awesome hacker who brought the new JuliaSyntax parser (and its much better error message), might be tackling the lowering stage in the future. If you are interested in julia internals, this could be a great place to contribute.
- ExplicitImports.jl is a wonderful new linter for import statements in julia packages, recently discussed on slack.
Dustbin of History:
literal_pow
is a neat trick Julia uses as a workaround for the lack of dispatch on values. Discussed recently on slack and github issues. It led to a fun discussion on the potential future of literal integer types.
In search of contributors and new maintainers (specify novice/moderate/expert and internals/domain background necessary):
- no one this month, but do not forget to announce here if you are searching for helping hands
Ecosystem Fora, Maintenance, and Colab Promises (Slack/Zulip/Discourse/Github):
- Documenter 1.3 was recently released, with support for “inventories”, a standard permitting cross-package documentation reference, also supported by the Python ecosystem.
- StringUnits.jl is a wonderful “string indexing” library that lets you easily ask for bytes/characters/graphemes or other units in unicode strings.
- Chairmarks.jl is a recent alternative to BenchmarkTools.jl taking a different approach for the sake of developer UX and potentially future automated regression testing.
- A long slack discussion about the new DifferentiationInterface.jl, an experimental package trying to work around some of the limitations of AbstractDifferentiation.jl. The thread also contains remarks on how these limitations can potentially be fixed without the need for a new package (but experimentation here seems to be valuable).
- About.jl discussed on slack – a wonderful small package about introspecting type instances in a pretty-printed fashion.
- SIMDFastMath.jl for SIMD-ified math functions.
- Supposition.jl – a new property-based-testing and fuzzing tool.
- A neat variables exploration tool for the Pluto notebook.
- A fun discussion about some of the weirder internals of the Enzyme.jl autodiff tool.
- PAndQ.jl is a new computer algebra tool for propositional logic (with a wonderful name).
- The agent modeling toolkit Agents.jl has a significant new release with a great deal of new capabilities.
- HampelOutliers.jl can help significantly with outliers detection and rejection from time series data.
- Anyone working with with stable probability distributions would probably be interested in StableDistributions.jl, which extends the already sophisticated Distributions.jl
- Tidier is a Julia org for data science work in the style of R’s tidyverse that we have mentioned here before. They are nearly ready with their TidierDB.jl database interface as discussed on slack.
- Yet more tools for working with geographic map projections and plots thanks to CoordRefSystems.jl – seems to be a pretty hot topic in Julia.
- WriteDocx.jl for generating high-quality word documents and SummaryTables.jl for generating publication-quality tables (in various formats) were recently contributed by PumasAI.
Notes from other ecosystems:
- A wonderful new book on Differentiable Programming.
- Batched BLAS – an extension to BLAS for better batched operations, now frequently needed in ML workloads.
- The new NonlinearSolve.jl discussed on Hacker News.
- You might have heard the fantastic story of the recently uncovered backdoor in the XZ compression utility. Julians do not have anything to worry about.
Soapboxes (blogs/talks):
- Consider subscribing to the French community newsletter (much of the shared materials are in English).
- Consider subscribing to the community calendar to be informed of upcoming virtual meetings and talks.
- Consider attending the triage meetings of the julia core contributors (organized on slack) – being a fly on the wall can be a great way to learn the nitty-gritty details of current priorities and development work. These are organized on the triage channel in slack.
- EnzymeCon – an impressive conference on autodiff tooling and specifically on the Enzyme ecosystem has published its videorecorded talks.
- The Genie framework is a great tool for creation of (data-focused) web apps in julia. Recently featured in a blog.
- A lovely little online book on introduction to Julia and statistics with an original title: Romeo and Julia, where Romeo is basic statistics.
Sundry:
- Glass Notebook – a new service for hosting static and interactive Pluto notebooks.
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.