This month in Julia world - 2025-05

A monthly newsletter, mostly on julia internals, digestible for casual observers. A biased, incomplete, editorialized list of what a clique of us found interesting this month, with contributions from the community.

For recent news on Julia and interesting conversations with community members, check out the JuliaDispatch podcast (on many platforms, including youtube and spotify). Highlights from the newsletter get discussed (with more context) during some episodes.

“Internals” Fora and Core Repos (Slack/Zulip/Discourse/Github):

Ecosystem Fora, Maintenance, and Colab Promises (Slack/Zulip/Discourse/Github):

  • AirspeedVelocity.jl is a CI-focused package-benchmarking utility that now comes with a Github action that can run and post benchmarks in your pull requests.
  • Trash.jl - the most feature-complete cross-platform file-trashing library in existence.
  • SmallCollections.jl - static implementation for small vectors, sets, and dicts, without allocations, and satisfying isbitstype.
  • pluto.land is web service for hosting static HTML exports of Pluto notebooks by the Pluto team.
  • SankeyMakie.jl for Sankey-style flow diagrams in Makie.
  • ExchangeRates.jl for simple conversion between currencies.
  • JSON.jl will have a breaking release fixing many outstanding issues with it and JSON3.
  • TensorMixedStates.jl is a new package for simulating open quantum system based on ITensor
  • The main Julia repository now contains an AGENTS.md file to guide AI agents on how to develop Julia. It is also an interesting way to distill dev tips.

Numerical Math ecosystem:

Autodiff ecosystem:

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

86 Likes

This is very nice info, Thanks for making this post.

1 Like

Thank you for your prokrastanovation! :grinning_face:

9 Likes

Thanks for mentioning that, will be great to try out!

1 Like

Do we know if this changes the values of old hashes as well? Is this expected to change in 1.12? Our team has a lot of files keyed by the hash of their values, so we’d need to refresh those caches when updating (which is not a big deal, I just want to be prepared.)

pretty much every hash value will change (except of types). but it will be 1.13 not 1.12

2 Likes

FYI, the hash function does not guarantee to give the same result even on the very same version of julia between separate executions of the process.

5 Likes

Huh, I don’t think we’ve ever run into this (when hashing immutable values, in 1.11.) Regardless, if it’s not a guarantee, we definitely need to switch to a different hashing algorithm. Good to know!

3 Likes

To be fair, this comment was only added to the documentation in Julia 1.10, and we’ve been using Julia since 1.5. It’s pretty easy to miss such a tiny change in documentation! The main other language that randomizes Dict traversal order (not even hashes) I can think of is Go, and they’re very explicit about it all, bringing it up several times.

Randomized dict traversal order is a different feature. Hashes not being stable is pretty common.

2 Likes