# This month in Julia world - 2023-06

**URL:** <https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906>\
**Category:** Newsletter\
**Created:** [June 27, 2023, 5:33pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906 "2023-06-27T17:33:23Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [June 27, 2023, 5:33pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/1 "2023-06-27T17:33:24Z")

</div>

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](https://discourse.julialang.org/t/compiler-tools-and-workflow-for-compiler-optimization/100016)
- Some musings on support for Interfaces in Julia by Keno, Valentin (of AVR fame), Rafael, and Mark. [slack/general](https://julialang.slack.com/archives/C67910KEH/p1685526477993929)
- Escape analysis and its potential future use in minimizing allocations briefly discussed. [slack/general](https://julialang.slack.com/archives/C67910KEH/p1687852217103719)
- Discussion on current options for a trait system in Julia and potential future work (under an ASML job posting on the topic). [slack/jobs](https://julialang.slack.com/archives/C8P49NJHG/p1686142264144369)
- Keno discusses the many problems with the `--check-bounds` flag in julia and first steps in dealing with these issues. [github](https://github.com/JuliaLang/julia/pull/50239)
- 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](https://github.com/JuliaLang/julia/issues/49973) (and a related discussion on [discourse](https://discourse.julialang.org/t/a-kind-of-two-language-problem-in-julia-ecosystem/100445) and related ideas in this [PR](https://github.com/JuliaLang/julia/pull/50105))
- A discussion on the potential for a stable public API for the effects system in the compiler. [slack](https://julialang.slack.com/archives/C67910KEH/p1686593181570309?thread_ts=1686591563.885149&cid=C67910KEH) (and a related discussion on [github](https://github.com/JuliaLang/julia/issues/49273))
- 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](https://julialang.zulipchat.com/#narrow/stream/137791-general/topic/SumTypes.2Ejl.20updates/near/345285237)

Core Julia Repos:

- [merged] Claire’s [absolutely heroic work](https://github.com/JuliaLang/julia/pull/46372#issuecomment-1580312174) on merging the new parser ~~continues~~ is 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](https://github.com/JuliaLang/julia/pull/48542#issuecomment-1569101718). There is some work on documenting this and providing a best practices guide ([blog draft](https://github.com/JuliaLang/www.julialang.org/pull/1904)), as well as [new neater API](https://github.com/JuliaLang/julia/pull/50052).
- [dispersed] A lot of small incremental improvements to the garbage collector by doggedly persistent folks. [1](https://github.com/JuliaLang/julia/pull/48600), [2](https://github.com/JuliaLang/julia/pull/48969), [3](https://github.com/JuliaLang/julia/pull/49644), [4](https://github.com/JuliaLang/julia/pull/50137), [5](https://github.com/JuliaLang/julia/pull/50144)
- [docs] [Documenting](https://github.com/JuliaLang/julia/pull/50168) 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](https://github.com/JuliaLang/julia/pull/40414) and [Petr’s](https://github.com/JuliaLang/julia/pull/46045) and [Jameson’s](https://github.com/JuliaLang/julia/pull/38119) work. That work had to be abandoned because of the clashing pkgimage changes, but it might [one day be revived](https://github.com/JuliaLang/julia/pull/49953). 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 to `SomePackage.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”](https://github.com/JuliaLang/julia/issues/31162) 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](https://adrhill.github.io/julia-ml-course/L6_Automatic_Differentiation/) including both theory and Julia ecosystem examples. [slack](https://julialang.slack.com/archives/C6G240ENA/p1685627057690829)
- A new, very fast and polished Hidden Markov Chain package. [discourse](https://discourse.julialang.org/t/ann-hiddenmarkovmodels-jl-when-did-hmms-get-so-fast/100191)
- An alternative to Unitful.jl which is much easier to keep type-stable (units are not encoded in the type). [discourse](https://discourse.julialang.org/t/ann-dynamicquantities-jl-type-stable-physical-quantities/99963)
- [OpenCV.jl](https://github.com/JuliaImages/OpenCV.jl) is now maintained by JuliaImages. [slack/image-processing](https://julialang.slack.com/archives/CB1R90P8R/p1685468068195209)
- JuliaFolds is maintained again (as JuliaFolds2) and in need of more helpers. [zulip](https://julialang.zulipchat.com/#narrow/stream/137791-general/topic/Request.20for.20help.20with.20JuliaFolds2/near/357978488)
- SimJulia is maintained again (under the JuliaDynamics org), renamed to [ConcurrentSim](https://github.com/JuliaDynamics/ConcurrentSim.jl). [ResumableFunctions](https://github.com/JuliaDynamics/ResumableFunctions.jl) is also maintained once again (under the same org).
- Jacob Zelko has kicked off monthly JuliaHealth community organization meetings

Soapboxes (blogs/talks):

- [JuliaCon 2023](https://juliacon.org/2023/) is approaching (in July, in person and online). The [JuMP-Dev](https://jump.dev/meetings/jumpdev2023/) conference and the SciML conference happen concurrently with it.
- Chris’s SciML / Digiwell seminar talk “[The Continuing Advancements of Scientific Machine Learning (SciML)](https://www.youtube.com/watch?v=yHiyJQdWBY8)”
- Wonderful little video intro/tutorial by Jacobus on latency in Julia (great for newcomers). [discourse](https://discourse.julialang.org/t/video-how-to-reduce-julias-latency/100298) or [youtube](https://www.youtube.com/watch?v=_3vJSBk0Bls)
- A blog post on “Modern Julia workflows” is being considered, prompted partially by the video above, currently in a very early [draft stage](https://github.com/JuliaLang/www.julialang.org/issues/1908).

Sundry:

- JuliaHub is hiring an [EDA core system & compiler engineer](https://jobs.juliacomputing.com/jobs/Iyii70VtHMgj/eda-core-system-compiler-engineer-remote) and a [Senior Cloud Engineer](https://jobs.juliacomputing.com/jobs/k_NT-998DQPl/senior-cloud-engineer-remote).
- ASML is hiring an intern to work on [trait systems for Julia](https://julialang.slack.com/archives/C8P49NJHG/p1686142264144369).
- A [Pluto Notebook Competition](https://help.juliahub.com/juliahub/stable/pluto2023/) 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](https://julialang.slack.com/archives/C6FGJ8REC/p1687399466834029)

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](https://docs.google.com/document/d/1Np1deH_W1o0EO7_tZkScveCLA0XiYg538ceUJs0bFpE/edit). Some of it might survive by the time of posting.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 27, 2023, 5:41pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/2 "2023-06-27T17:41:06Z")

</div>

This newsletter is an amazing initiative ! Thanks for keeping this up, hopefully the momentum lasts 🙏  
Small query: how hard would it be to save these few interesting slack threads to a more permanent location?

---

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [June 27, 2023, 5:54pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/3 "2023-06-27T17:54:10Z")

</div>

There were a few folks in the last thread that suggested making a github repo or Hack.md account around which to structure these posts. That might be a valuable thing to do if we also want to preserve these slack threads, as it does not seem particularly scalable to copy paste the threads in the google doc draft of the newsletter.

Or maybe a slack/discourse bot that automatically makes the necessary edits…

**Actually, I am putting a 100$ bounty** , to be paid if someone makes a script that can take a markdown file containing links to slack, and then for each slack link it downloads the corresponding slack thread, uploads it to a github repository as a markdown file, and modifies the original link to point to the new github repo. If the script is written in Julia, then the bounty will be 50$ extra, for a total of 150$

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [June 27, 2023, 10:45pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/4 "2023-06-27T22:45:44Z")

</div>

Just to say that the discussion about saving knowledge from the slack hole has been had many times over on slack and the consensus was generally that people post on slack on the assumption that it is ephemeral, and content therefore shouldn’t be permanently published somewhere without consent.

---

<div class="post-metadata">

**Author:** ![TheCedarPrince](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/thecedarprince/32/17323_2.png) [@TheCedarPrince](https://discourse.julialang.org/u/TheCedarPrince)\
**Post date:** [June 27, 2023, 10:59pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/5 "2023-06-27T22:59:50Z")

</div>

Just thinking, could we have people consent to having their Slack messages potentially scraped, use the great [SlackSDK.jl](https://docs.juliahub.com/SlackSDK/1AgC7/1.0.0/) package created by @avik, pull down relevant Slack messages, and redact those messages/mentions concerning folks who do not consent such that we can still store messages publicly and permanently? We could use Slackbot to recommend a consent message that prompts for someone’s user name such that this scraper tool could have a list of consenting Slack users/non-consenting Slack users and filter accordingly? I loved @logankilpatrick 's prior initiative with emojis and helpdesk once upon a time and I am a huge advocate for pulling this content as appropriate. Zulip is great but there are great conversations happening here on the Slack.

Wondering if that could get around privacy concerns @nilshg …

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [June 28, 2023, 6:11am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/6 "2023-06-28T06:11:04Z")

</div>

> [@Krastanov](#):
>
> JuliaHub

in addition maybe, [JuliaHub Receives $13 Million Strategic Investment from AE Industrial Partners HorizonX](https://www.prnewswire.com/news-releases/juliahub-receives-13-million-strategic-investment-from-ae-industrial-partners-horizonx-301863793.html)

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [June 28, 2023, 7:13am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/7 "2023-06-28T07:13:03Z")

</div>

This is very useful! Is ti possible to spread it to a wider audience?  
I suggest Twitter and perhaps the hpcwire website.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [June 28, 2023, 7:53am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/8 "2023-06-28T07:53:29Z")

</div>

Good idea!

> <https://twitter.com/giomdal/status/1673962699842093058?s=20>

---

<div class="post-metadata">

**Author:** ![Kruxigt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kruxigt/32/11694_2.png) [@Kruxigt](https://discourse.julialang.org/u/Kruxigt)\
**Post date:** [June 28, 2023, 10:25am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/9 "2023-06-28T10:25:10Z")

</div>

Fantastic initiative! The Julia community really needs curating efforts like these.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [June 28, 2023, 2:21pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/10 "2023-06-28T14:21:07Z")

</div>

Thanks for preparing this!

I’m surprised all the JuliaFolds repositories had to be forked in a new JuliaFolds2 organization due to an inactive member… I thought one of the main points of GitHub organizations was to avoid this type of problems?

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [June 28, 2023, 6:24pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/11 "2023-06-28T18:24:21Z")

</div>

This had surprised me as well, but it seems that the other members of the organization did not have merge rights to some of the repos.

---

<div class="post-metadata">

**Author:** ![viralbshah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/viralbshah/32/54_2.png) [@viralbshah](https://discourse.julialang.org/u/viralbshah)\
**Post date:** [June 29, 2023, 12:25am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/12 "2023-06-29T00:25:25Z")

</div>

That is right. JuliaFolds has only one owner, and we haven’t been able to reach them. We will certainly want to move things back to JuliaFolds whenever the opportunity presents itself.

---

<div class="post-metadata">

**Author:** ![indymnv](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/indymnv/32/212594_2.png) [@indymnv](https://discourse.julialang.org/u/indymnv)\
**Post date:** [June 29, 2023, 7:17am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/13 "2023-06-29T07:17:39Z")

</div>

> [@Krastanov](#):
>
> SimJulia is maintained again (under the JuliaDynamics org), renamed to [ConcurrentSim](https://github.com/JuliaDynamics/ConcurrentSim.jl).

JuliaDynamics has two libraries for discrete event simulation, this one and [discreteevents.jl](https://github.com/JuliaDynamics/DiscreteEvents.jl). Will ConcurrentSim replace this library or will these libraries serve different purposes?

---

<div class="post-metadata">

**Author:** ![jacobusmmsmit](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jacobusmmsmit/32/217669_2.png) [@jacobusmmsmit](https://discourse.julialang.org/u/jacobusmmsmit)\
**Post date:** [June 29, 2023, 9:29am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/14 "2023-06-29T09:29:07Z")

</div>

From `ConcurrentSim`’s [readme](https://github.com/JuliaDynamics/ConcurrentSim.jl#alternatives):

> `ConcurrentSim.jl` and `DiscreteEvents.jl` both provide for typical event-based simulations. `ConcurrentSim.jl` is built around coroutines (implemented in `ResumableFunctions.jl` ), while `DiscreteEvents.jl` uses Julia’s async primitives via `Channels` . If you are evaluating which library to you for your goals, `ConcurrentSim.jl` might be a good choice if you are used to python’s SimPy, but otherwise you are advised to try a small demo project in each and do your own benchmarks.

---

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [June 29, 2023, 7:53pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/15 "2023-06-29T19:53:36Z")

</div>

To add to Jacobus’s comment:  
ConcurrentSim (previously SimJulia) is a much older library than DiscreteEvents – it is one of the oldest julia libraries actually. Being older does not imply anything about quality, but I am mentioning it because if someone is to be replacing someone else, the onus is probably on DiscreteEvents. For what is worth, ConcurrentSim currently has a maintainer which does not seem to be the case with DiscreteEvents. But both of these libraries are not seeing serious development or support so **do not hesitate to reach out if these are tools you need and want to help develop**. DiscreteEvents was developed recently during a time when ConcurrentSim did not have a maintainer. Thankfully both libraries are relatively small so someone that needs this type of modeling can benchmark both of them for a small version of their problem and decide for themselves which fits their needs better.

---

<div class="post-metadata">

**Author:** ![Ashwani\_Rathee](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ashwani_rathee/32/49551_2.png) [@Ashwani\_Rathee](https://discourse.julialang.org/u/Ashwani_Rathee)\
**Post date:** [June 30, 2023, 5:21am UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/16 "2023-06-30T05:21:00Z")

</div>

General consensus among the Julia Slack admins according to what I understood from @logankilpatrick after asking for access to the Julia Slack through a slack api bot was that it’s better to not allow access to slack threads like this and it’s better to avoid making that data scrapper.

---

<div class="post-metadata">

**Author:** ![Hasnep](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasnep/32/10912_2.png) [@Hasnep](https://discourse.julialang.org/u/Hasnep)\
**Post date:** [July 1, 2023, 1:33pm UTC](https://discourse.julialang.org/t/this-month-in-julia-world-2023-06/100906/17 "2023-07-01T13:33:00Z")

</div>

I’ve written a Julia script that archives Slack links and have been given the go ahead by Stefan to open source it here: [GitHub - Hasnep/slack-archiver: A tool to archive Slack links](https://github.com/hasnep/slack-archiver)

I’m not active on the Julia Slack, only the Zulip, so I’ll leave it up to the community if/how they want to deploy it.
