# Internals & Design

**URL:** https://discourse.julialang.org/c/dev/5.md?page=4

[Latest](https://discourse.julialang.org/latest.md) · [Categories](https://discourse.julialang.org/categories.md) · [Tags](https://discourse.julialang.org/tags.md)

**Page:** 5

---

## [Method to unsafely close a mmap](https://discourse.julialang.org/t/method-to-unsafely-close-a-mmap/129900)

<div class="topic-metadata">

**Author:** [@nhz2](https://discourse.julialang.org/u/nhz2)\
**Replies:** 1\
**Last updated:** [June 16, 2025, 7:41am UTC](https://discourse.julialang.org/t/method-to-unsafely-close-a-mmap/129900 "2025-06-16T07:41:38Z")

</div>

Currently the Mmap.mmap function uses a finalizer to handle calling munmap or UnmapViewOfFile when the array is garbage collected. It is useful to be able to do this finalization eagerly despite the potential risks if t…

---

## [Pre-release versions of packages](https://discourse.julialang.org/t/pre-release-versions-of-packages/26926)

<div class="topic-metadata">

**Author:** [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Replies:** 22\
**Last updated:** [June 16, 2025, 5:32pm UTC](https://discourse.julialang.org/t/pre-release-versions-of-packages/26926 "2025-06-16T17:32:57Z")

</div>

My understanding is that since Pkg uses SemVer, pre-release versions like 2.0.0-rc.1 and similarly alpha and beta would be technically allowed for package versions. What I would like to avoid is unsuspecting users upgra…

---

## [How is \`Symbol\` special?](https://discourse.julialang.org/t/how-is-symbol-special/129885)

<div class="topic-metadata">

**Author:** [@nsajko](https://discourse.julialang.org/u/nsajko)\
**Replies:** 8\
**Last updated:** [June 14, 2025, 4:18pm UTC](https://discourse.julialang.org/t/how-is-symbol-special/129885 "2025-06-14T16:18:02Z")

</div>

Symbol is a mutable struct, just like Expr: julia\> dump(Expr) mutable struct Expr \<: Any head::Symbol args::Vector{Any} julia\> dump(Symbol) mutable struct Symbol \<: Any Although it’s not possible to mutate it, as…

---

## [Why is \`Expr\` mutable?](https://discourse.julialang.org/t/why-is-expr-mutable/129850)

<div class="topic-metadata">

**Author:** [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)\
**Replies:** 9\
**Last updated:** [June 14, 2025, 11:32am UTC](https://discourse.julialang.org/t/why-is-expr-mutable/129850 "2025-06-14T11:32:34Z")

</div>

Expr does not have object identity have field equality, i.e. julia\> Expr(:call, println) == Expr(:call, println) true I was surprised to learn that Expr nevertheless is mutable. I can easily imagine why Expr does not h…

---

## [Ahead of Time Compilation in 1.11](https://discourse.julialang.org/t/ahead-of-time-compilation-in-1-11/115423)

<div class="topic-metadata">

**Author:** [@Jakub\_Mitura](https://discourse.julialang.org/u/Jakub_Mitura)\
**Replies:** 7\
**Last updated:** [June 10, 2025, 7:30am UTC](https://discourse.julialang.org/t/ahead-of-time-compilation-in-1-11/115423 "2025-06-10T07:30:01Z")

</div>

how to use julia Ahead of Time Compilation in 1.11 version? I have a series of long compiling functions (minimum 15 minut each up to 54 - Enzyme related kernels) would love to save the compiled version locally and then j…

---

## [Documenting nested functions](https://discourse.julialang.org/t/documenting-nested-functions/129708)

<div class="topic-metadata">

**Author:** [@maxwell3025](https://discourse.julialang.org/u/maxwell3025)\
**Replies:** 2\
**Last updated:** [June 9, 2025, 6:15am UTC](https://discourse.julialang.org/t/documenting-nested-functions/129708 "2025-06-09T06:15:53Z")

</div>

I’m currently working on a project and I came across an issue with using nested functions. In particular, I have a nested function that I want to document, and I am getting a warning about “replacing docs”. This seems …

---

## [Default Real (Float) kind?](https://discourse.julialang.org/t/default-real-float-kind/129631)

<div class="topic-metadata">

**Author:** [@VinceNeede](https://discourse.julialang.org/u/VinceNeede)\
**Replies:** 50\
**Last updated:** [June 7, 2025, 8:47am UTC](https://discourse.julialang.org/t/default-real-float-kind/129631 "2025-06-07T08:47:43Z")

</div>

This is somehow a follow-up to this question: Disable promotion from Float64 to BigFloat The most used Fortran compilers offer the possibility to select which real kind should be used as default, i.e. the type (or bette…

---

## [Could introducing formal interfaces be nonbreaking?](https://discourse.julialang.org/t/could-introducing-formal-interfaces-be-nonbreaking/129567)

<div class="topic-metadata">

**Author:** [@araujoms](https://discourse.julialang.org/u/araujoms)\
**Replies:** 36\
**Last updated:** [June 4, 2025, 2:10pm UTC](https://discourse.julialang.org/t/could-introducing-formal-interfaces-be-nonbreaking/129567 "2025-06-04T14:10:18Z")

</div>

I’m surprised by the talk about formal interfaces coming to the base language. I thought that was impossible before Julia 2.0, as they will necessarily break all the packages who don’t conform to the new interface. For e…

---

## [Destructuring syntax in julia 1.7](https://discourse.julialang.org/t/destructuring-syntax-in-julia-1-7/68236)

<div class="topic-metadata">

**Author:** [@xfcjscn](https://discourse.julialang.org/u/xfcjscn)\
**Replies:** 66\
**Last updated:** [October 27, 2022, 7:21am UTC](https://discourse.julialang.org/t/destructuring-syntax-in-julia-1-7/68236 "2022-10-27T07:21:46Z")

</div>

1.7 introduced new language feature: (; a, b) = x can now be used to destructure properties a and b of x . This syntax is equivalent to a = getproperty(x, :a); b = getproperty(x, :b) From a reader perspective(much more…

---

## [Better error message for modified structs in Julia \>= 1.12](https://discourse.julialang.org/t/better-error-message-for-modified-structs-in-julia-1-12/129265)

<div class="topic-metadata">

**Author:** [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Replies:** 5\
**Last updated:** [May 23, 2025, 4:33pm UTC](https://discourse.julialang.org/t/better-error-message-for-modified-structs-in-julia-1-12/129265 "2025-05-23T16:33:08Z")

</div>

In Julia 1.12 it is now possible to edit structs (finally!!), with the objects instantiated using the “old” structs “assigned” to a world age table rather than the last “version” of the type. The issue is when you try t…

---

## [Thought: Move GC to packages](https://discourse.julialang.org/t/thought-move-gc-to-packages/129225)

<div class="topic-metadata">

**Author:** [@Tarny\_GG\_Channie](https://discourse.julialang.org/u/Tarny_GG_Channie)\
**Replies:** 4\
**Last updated:** [May 22, 2025, 5:18am UTC](https://discourse.julialang.org/t/thought-move-gc-to-packages/129225 "2025-05-22T05:18:35Z")

</div>

Here’s some thought. Provide an abstract interface for writing a custom garbage collection. Objects created under garbage collector A gets managed by A (perhaps unless transfer ownership or something). Now, things might…

---

## [How is data routed between distributed processes?](https://discourse.julialang.org/t/how-is-data-routed-between-distributed-processes/129102)

<div class="topic-metadata">

**Author:** [@NonDairyNeutrino](https://discourse.julialang.org/u/NonDairyNeutrino)\
**Replies:** 0\
**Last updated:** [May 17, 2025, 3:59pm UTC](https://discourse.julialang.org/t/how-is-data-routed-between-distributed-processes/129102 "2025-05-17T15:59:16Z")

</div>

Say there are two machines, the local L and remote R. I start my “director” julia process (myid() == 1) on machine L. Then the director process (L.1) spawns two worker processes R.2, R.3 on R with addprocs(\[("R", 2)\]).…

---

## [Julia 2.0, new scope rules, and other breaking changes](https://discourse.julialang.org/t/julia-2-0-new-scope-rules-and-other-breaking-changes/129083)

<div class="topic-metadata">

**Author:** [@Leon\_Niceday](https://discourse.julialang.org/u/Leon_Niceday)\
**Replies:** 4\
**Last updated:** [May 17, 2025, 8:53am UTC](https://discourse.julialang.org/t/julia-2-0-new-scope-rules-and-other-breaking-changes/129083 "2025-05-17T08:53:08Z")

</div>

I’m interested in potentially better scoping rules but those will be breaking changes. (I have read the PSA: Julia is not at that stage of development anymore ). When is Julia 2.0 planned to come? Is changing scoping r…

---

## [Remove the soft scope altogether and make it global](https://discourse.julialang.org/t/remove-the-soft-scope-altogether-and-make-it-global/33333)

<div class="topic-metadata">

**Author:** [@Wenjie](https://discourse.julialang.org/u/Wenjie)\
**Replies:** 49\
**Last updated:** [May 17, 2025, 5:03am UTC](https://discourse.julialang.org/t/remove-the-soft-scope-altogether-and-make-it-global/33333 "2025-05-17T05:03:15Z")

</div>

I see that the Julia community are currently debating on the new scope rules in v1.0, in an attempt to return to the deprecated soft/hard local scopes in v0.6. In my opinion, neither solution is ideal. Here, let me give …

---

## [Why does runtime dispatch allocate when the return type is inferred?](https://discourse.julialang.org/t/why-does-runtime-dispatch-allocate-when-the-return-type-is-inferred/129061)

<div class="topic-metadata">

**Author:** [@Benny](https://discourse.julialang.org/u/Benny)\
**Replies:** 5\
**Last updated:** [May 17, 2025, 2:00am UTC](https://discourse.julialang.org/t/why-does-runtime-dispatch-allocate-when-the-return-type-is-inferred/129061 "2025-05-17T02:00:25Z")

</div>

The usual explanation for why runtime dispatches allocate is that falling back to inferring ::Any for the return type requires boxing the instance at runtime. Thing is, there seems to be a workaround. If the compiler kno…

---

## [Datatypes SIMD by default? (as in Mojo)](https://discourse.julialang.org/t/datatypes-simd-by-default-as-in-mojo/128777)

<div class="topic-metadata">

**Author:** [@alexandergunnarson](https://discourse.julialang.org/u/alexandergunnarson)\
**Replies:** 14\
**Last updated:** [May 15, 2025, 4:40pm UTC](https://discourse.julialang.org/t/datatypes-simd-by-default-as-in-mojo/128777 "2025-05-15T16:40:22Z")

</div>

Hello all! Super excited to use Julia. It won out in a lengthy evaluation of mine against Rust, “modern” C++ (\>= C++23), modern Java (\>= Java 24), Mojo, etc. as the basis of my startup’s backend. Thank you to all who hav…

---

## [Lexical scope vs. Dynamic scope](https://discourse.julialang.org/t/lexical-scope-vs-dynamic-scope/78829)

<div class="topic-metadata">

**Author:** [@Iulian.Cioarca](https://discourse.julialang.org/u/Iulian.Cioarca)\
**Replies:** 28\
**Last updated:** [May 14, 2025, 11:13pm UTC](https://discourse.julialang.org/t/lexical-scope-vs-dynamic-scope/78829 "2025-05-14T23:13:59Z")

</div>

What are the advantages of the lexical scope in general compared to dynamic scope? Isn’t inheriting from the parent scope similar to global variables? Why did Julia chose this approach and what are the perfomance differ…

---

## [Calling convension, should Julia "preserve\_none"?](https://discourse.julialang.org/t/calling-convension-should-julia-preserve-none/128898)

<div class="topic-metadata">

**Author:** [@Palli](https://discourse.julialang.org/u/Palli)\
**Replies:** 3\
**Last updated:** [May 11, 2025, 1:32am UTC](https://discourse.julialang.org/t/calling-convension-should-julia-preserve-none/128898 "2025-05-11T01:32:27Z")

</div>

https://clang.llvm.org/docs/AttributeReference.html#preserve-none It seems to be low-hanging fruit to faster performance. What does Julia do currently? It seems to require C23 and “clang::preserve\_none”, and new opt-in…

---

## [Interfaces/traits in julia 2.0 and multiple inheritance](https://discourse.julialang.org/t/interfaces-traits-in-julia-2-0-and-multiple-inheritance/124011)

<div class="topic-metadata">

**Author:** [@serhii](https://discourse.julialang.org/u/serhii)\
**Replies:** 37\
**Last updated:** [May 7, 2025, 5:53pm UTC](https://discourse.julialang.org/t/interfaces-traits-in-julia-2-0-and-multiple-inheritance/124011 "2025-05-07T17:53:09Z")

</div>

Recently, I started programming in Rust, and like many others, I noticed how powerful the design language and solutions around traits can be. This prompted me to investigate Julia’s interface and trait-related packages: …

---

## [Behavior changes with introduction of binding partitions](https://discourse.julialang.org/t/behavior-changes-with-introduction-of-binding-partitions/128660)

<div class="topic-metadata">

**Author:** [@CameronBieganek](https://discourse.julialang.org/u/CameronBieganek)\
**Replies:** 4\
**Last updated:** [May 4, 2025, 8:05pm UTC](https://discourse.julialang.org/t/behavior-changes-with-introduction-of-binding-partitions/128660 "2025-05-04T20:05:49Z")

</div>

Recently Keno merged a few PRs (like this one) that introduce binding partitions. One consequence is that we will now be able to redefine structs. However, there are some other consequences. According to this PR, those c…

---

## [Juliaup: a modest suggestion](https://discourse.julialang.org/t/juliaup-a-modest-suggestion/128465)

<div class="topic-metadata">

**Author:** [@lewis](https://discourse.julialang.org/u/lewis)\
**Replies:** 62\
**Last updated:** [May 4, 2025, 9:48am UTC](https://discourse.julialang.org/t/juliaup-a-modest-suggestion/128465 "2025-05-04T09:48:07Z")

</div>

I might suggest that juliaup not be the recommended way to install julia and manage julia installations. Before the cognoscenti jump on me, let me explain why and, then, propose a compromise position, if indeed any easy…

---

## [Redesigning String, optimising small strings and comparison](https://discourse.julialang.org/t/redesigning-string-optimising-small-strings-and-comparison/119716)

<div class="topic-metadata">

**Author:** [@tecosaur](https://discourse.julialang.org/u/tecosaur)\
**Replies:** 71\
**Last updated:** [May 3, 2025, 6:26am UTC](https://discourse.julialang.org/t/redesigning-string-optimising-small-strings-and-comparison/119716 "2025-05-03T06:26:33Z")

</div>

Whenever I’ve had to do large-scale string work in Julia, I tend to be less impressed with performance than when doing numerical work. This has produced a niggle, and that niggle as lead to some investigation, which has …

---

## [BroadcastStyle of a SubArray](https://discourse.julialang.org/t/broadcaststyle-of-a-subarray/128181)

<div class="topic-metadata">

**Author:** [@RainerHeintzmann](https://discourse.julialang.org/u/RainerHeintzmann)\
**Replies:** 0\
**Last updated:** [April 18, 2025, 7:50am UTC](https://discourse.julialang.org/t/broadcaststyle-of-a-subarray/128181 "2025-04-18T07:50:46Z")

</div>

The broadcast style of SubArrray (i.e. as obtained using view) is a DefaultArrayStyle: julia\> Base.BroadcastStyle(typeof(view(rand(10,10),2:3,3:4))) Base.Broadcast.DefaultArrayStyle{2}() yet it would be extremely usefu…

---

## [Function definition Expr that prints incorrectly but evals correctly](https://discourse.julialang.org/t/function-definition-expr-that-prints-incorrectly-but-evals-correctly/128038)

<div class="topic-metadata">

**Author:** [@cstjean](https://discourse.julialang.org/u/cstjean)\
**Replies:** 1\
**Last updated:** [April 14, 2025, 6:29am UTC](https://discourse.julialang.org/t/function-definition-expr-that-prints-incorrectly-but-evals-correctly/128038 "2025-04-14T06:29:29Z")

</div>

@MilesCranmer and I have a discussion over whether MacroTools.longdef is correct or not. For reference, longdef is meant to take a short-form function definition and turn it into long-form julia\> MacroTools.longdef(:(f(…

---

## [Absence of method to convert NamedTuple -\> Dictionary?](https://discourse.julialang.org/t/absence-of-method-to-convert-namedtuple-dictionary/127472)

<div class="topic-metadata">

**Author:** [@Jordan\_Cluts](https://discourse.julialang.org/u/Jordan_Cluts)\
**Replies:** 4\
**Last updated:** [March 28, 2025, 8:28pm UTC](https://discourse.julialang.org/t/absence-of-method-to-convert-namedtuple-dictionary/127472 "2025-03-28T20:28:14Z")

</div>

Is there a reason why we don’t and/or can’t have a method that converts a named tuple into a Dictionary? Currently passing a named tuple to a Dictionary constructor simply errors as there is no defined method. The soluti…

---

## [What's under the hood of Julia's remote call procedure?](https://discourse.julialang.org/t/whats-under-the-hood-of-julias-remote-call-procedure/127572)

<div class="topic-metadata">

**Author:** [@NonDairyNeutrino](https://discourse.julialang.org/u/NonDairyNeutrino)\
**Replies:** 2\
**Last updated:** [April 2, 2025, 6:21am UTC](https://discourse.julialang.org/t/whats-under-the-hood-of-julias-remote-call-procedure/127572 "2025-04-02T06:21:16Z")

</div>

As I’ve been using Julia’s Distributed.jl for my master’s thesis (which has been really easy to use; thanks!), I was interested to learn more about distributed computing in general. I’ve just gone down the rabbit hole o…

---

## [Elimination of duplicate atomic loads (more of an llvm question)](https://discourse.julialang.org/t/elimination-of-duplicate-atomic-loads-more-of-an-llvm-question/125652)

<div class="topic-metadata">

**Author:** [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Replies:** 18\
**Last updated:** [March 28, 2025, 4:18pm UTC](https://discourse.julialang.org/t/elimination-of-duplicate-atomic-loads-more-of-an-llvm-question/125652 "2025-03-28T16:18:27Z")

</div>

I am wondering about why llvm doesn’t optimize the following: julia\> mutable struct A @atomic x::Int end julia\> f(a) = (@atomic :acquire a.x) + (@atomic :acquire a.x); julia\> @code\_llvm f(A(1)) ; Functio…

---

## [Why is multiple dispatch a feature?](https://discourse.julialang.org/t/why-is-multiple-dispatch-a-feature/31101)

<div class="topic-metadata">

**Author:** [@Sayod](https://discourse.julialang.org/u/Sayod)\
**Replies:** 33\
**Last updated:** [August 23, 2020, 6:10am UTC](https://discourse.julialang.org/t/why-is-multiple-dispatch-a-feature/31101 "2020-08-23T06:10:23Z")

</div>

Multiple Dispatch is prominently advertised as one of the main selling points of Julia. But I am not even sure if I would consider it a feature at all. So maybe I don’t quite understand it yet. My background: I am a Mat…

---

## [Variable Length Tuples Without Allocation](https://discourse.julialang.org/t/variable-length-tuples-without-allocation/127113)

<div class="topic-metadata">

**Author:** [@mrufsvold](https://discourse.julialang.org/u/mrufsvold)\
**Replies:** 9\
**Last updated:** [March 27, 2025, 3:26pm UTC](https://discourse.julialang.org/t/variable-length-tuples-without-allocation/127113 "2025-03-27T15:26:05Z")

</div>

A quick search of this forum yields a number of questions about variable length Tuples. Maybe you have a recursive function that returns a tuple based on depth or something like that. I have bumped into this issue sever…

---

## [Building Julia master on Raspberry Pi](https://discourse.julialang.org/t/building-julia-master-on-raspberry-pi/10908)

<div class="topic-metadata">

**Author:** [@josefsachs](https://discourse.julialang.org/u/josefsachs)\
**Replies:** 10\
**Last updated:** [March 14, 2025, 4:37am UTC](https://discourse.julialang.org/t/building-julia-master-on-raspberry-pi/10908 "2025-03-14T04:37:08Z")

</div>

(I hope that Development is not an inappropriate category to use for this topic.) I had been building Julia master on Raspberry Pi from JuiliaCon 2016 until mid-February (https://github.com/JuliaLang/julia/issues/26122)…

[Previous page](https://discourse.julialang.org/c/dev/5.md?page=3)

[Next page](https://discourse.julialang.org/c/dev/5.md?page=5)
