This month in Julia world - 2024-03

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):

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 and Tuple{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 and waitall 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:

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:

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.

111 Likes

(Shameless Plug) If anyone want to collaborate on providing batched blas and lapack extensions for sciml workloads, checkout GitHub - LuxDL/BatchedRoutines.jl: Routines for batching regular code and make them fast!

3 Likes

Nice news all around! I’m writing my thesis, and have very little time and energy to play around with Julia, sadly. So I just wanted to thank you for this monthly reminder of what I’m missing :slight_smile:

10 Likes

@Krastanov as always you are a legend for compiling this list! Thanks a lot!!! Allows me to keep up with the community when I might be too busy to follow things regularly on discourse!!!

9 Likes

Thanks, folks! The kind words are very much appreciated. Happy to help where I can :slight_smile:

17 Likes