# Internals & Design

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

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

**Page:** 6

---

## [Julia's Design Choices for Keyword Arguments in Function Calls and Broadcasting](https://discourse.julialang.org/t/julias-design-choices-for-keyword-arguments-in-function-calls-and-broadcasting/126845)

<div class="topic-metadata">

**Author:** [@vishalpaudel](https://discourse.julialang.org/u/vishalpaudel)\
**Replies:** 4\
**Last updated:** [March 12, 2025, 2:58pm UTC](https://discourse.julialang.org/t/julias-design-choices-for-keyword-arguments-in-function-calls-and-broadcasting/126845 "2025-03-12T14:58:39Z")

</div>

Hello Julia community, hello internals folks! I’ve been increasingly appreciating Julia’s thoughtful design decisions. Recently, I noticed something interesting about keyword arguments and why positional arguments must …

---

## [PowerPC will be demoted to Tier 4 in Julia 1.12 and later](https://discourse.julialang.org/t/powerpc-will-be-demoted-to-tier-4-in-julia-1-12-and-later/122923)

<div class="topic-metadata">

**Author:** [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)\
**Replies:** 5\
**Last updated:** [February 27, 2025, 6:49pm UTC](https://discourse.julialang.org/t/powerpc-will-be-demoted-to-tier-4-in-julia-1-12-and-later/122923 "2025-02-27T18:49:50Z")

</div>

For Julia 1.12 and later, PowerPC will be demoted to Tier 4, and release binaries will not be available for download. Julia 1.10.x and 1.11.x will continue to have support for PowerPC on Linux at the existing support ti…

---

## [Introduce a command-line option to warn on constant redefinition?](https://discourse.julialang.org/t/introduce-a-command-line-option-to-warn-on-constant-redefinition/126213)

<div class="topic-metadata">

**Author:** [@nsajko](https://discourse.julialang.org/u/nsajko)\
**Replies:** 6\
**Last updated:** [February 24, 2025, 9:01am UTC](https://discourse.julialang.org/t/introduce-a-command-line-option-to-warn-on-constant-redefinition/126213 "2025-02-24T09:01:36Z")

</div>

Keno’s recent changes on in-development versions of Julia enable safe redefinition of constants, including, for example, struct types. This is great, especially for interactive use, Revise.jl, etc. However, I think it’d…

---

## [Non-legal UTF-8 filenames (in e.g. TOML or JSON)](https://discourse.julialang.org/t/non-legal-utf-8-filenames-in-e-g-toml-or-json/126214)

<div class="topic-metadata">

**Author:** [@Palli](https://discourse.julialang.org/u/Palli)\
**Replies:** 10\
**Last updated:** [February 23, 2025, 10:00pm UTC](https://discourse.julialang.org/t/non-legal-utf-8-filenames-in-e-g-toml-or-json/126214 "2025-02-23T22:00:25Z")

</div>

A major flaw with json is its inability to store non-UTF8 strings which inadvertently makes them unreliable for storing unix filenames (here a filename is defined as any sequence of bytes except NUL and /, including i…

---

## [New syntax suggestion: catch with type specs](https://discourse.julialang.org/t/new-syntax-suggestion-catch-with-type-specs/101840)

<div class="topic-metadata">

**Author:** [@HanD](https://discourse.julialang.org/u/HanD)\
**Replies:** 42\
**Last updated:** [February 21, 2025, 8:58pm UTC](https://discourse.julialang.org/t/new-syntax-suggestion-catch-with-type-specs/101840 "2025-02-21T20:58:47Z")

</div>

Hello! When using exceptions and try-catch blocks, it’s very common to handle some specific types of exceptions, and propagate everything else. Here’s how this is usually done: try # body with potential exceptions …

---

## [Porting Julia to new platforms](https://discourse.julialang.org/t/porting-julia-to-new-platforms/122698)

<div class="topic-metadata">

**Author:** [@phma](https://discourse.julialang.org/u/phma)\
**Replies:** 17\
**Last updated:** [February 17, 2025, 8:59pm UTC](https://discourse.julialang.org/t/porting-julia-to-new-platforms/122698 "2025-02-17T20:59:57Z")

</div>

I cloned the Julia repo to my SmartOS box, intending to build it. I found out that: it has a Makefile, not a configure script or a CMakeLists.txt file or the like; it failed to build; somewhere in the source code, ther…

---

## [Proposal: Adding Optional Static Interface/Traits Checking to Julia](https://discourse.julialang.org/t/proposal-adding-optional-static-interface-traits-checking-to-julia/125846)

<div class="topic-metadata">

**Author:** [@Solmantos](https://discourse.julialang.org/u/Solmantos)\
**Replies:** 32\
**Last updated:** [February 17, 2025, 12:09pm UTC](https://discourse.julialang.org/t/proposal-adding-optional-static-interface-traits-checking-to-julia/125846 "2025-02-17T12:09:03Z")

</div>

Adding Optional Static Interface Checking to Julia TL;DR Proposing a system for optional static interface checking in Julia (similar to Python’s mypy) that would: Add compile-time verification of behavioral contracts f…

---

## [Julep: Efficient Hierarchical Mutable Data](https://discourse.julialang.org/t/julep-efficient-hierarchical-mutable-data/125190)

<div class="topic-metadata">

**Author:** [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)\
**Replies:** 47\
**Last updated:** [February 12, 2025, 4:54pm UTC](https://discourse.julialang.org/t/julep-efficient-hierarchical-mutable-data/125190 "2025-02-12T16:54:12Z")

</div>

TL;DR This proposal outlines a method to achieve space and time-efficient writable substructures in Julia. The memory layout is identical to that of immutable structs within mutable structs. This approach allows to expre…

---

## [Allow docstring on the right of string fields](https://discourse.julialang.org/t/allow-docstring-on-the-right-of-string-fields/125786)

<div class="topic-metadata">

**Author:** [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Replies:** 3\
**Last updated:** [February 11, 2025, 3:08pm UTC](https://discourse.julialang.org/t/allow-docstring-on-the-right-of-string-fields/125786 "2025-02-11T15:08:31Z")

</div>

In the era of super-wide screens, would allowing docstring on the right of struct fields be breaking ? Compare this: To this:

---

## [REPL syntax highlighting with StyledStrings](https://discourse.julialang.org/t/repl-syntax-highlighting-with-styledstrings/125708)

<div class="topic-metadata">

**Author:** [@CameronBieganek](https://discourse.julialang.org/u/CameronBieganek)\
**Replies:** 3\
**Last updated:** [February 10, 2025, 5:23am UTC](https://discourse.julialang.org/t/repl-syntax-highlighting-with-styledstrings/125708 "2025-02-10T05:23:46Z")

</div>

A while ago somewhere I saw a screen shot of the Julia REPL with syntax highlighting provided by StyledStrings, but I haven’t heard anything about it since then. Is that still in the works? @tecosaur

---

## [How to debug the compiler with Debugger.jl](https://discourse.julialang.org/t/how-to-debug-the-compiler-with-debugger-jl/124229)

<div class="topic-metadata">

**Author:** [@nsajko](https://discourse.julialang.org/u/nsajko)\
**Replies:** 1\
**Last updated:** [December 28, 2024, 1:19pm UTC](https://discourse.julialang.org/t/how-to-debug-the-compiler-with-debugger-jl/124229 "2024-12-28T13:19:15Z")

</div>

For Debugger.jl, I assume compiled mode is enabled by default for @run? How do I disable it? I want to disable it to be able to step through the type inference code in the compiler. Can’t use VS Code’s debugger because i…

---

## [Structural hash collisions](https://discourse.julialang.org/t/structural-hash-collisions/125613)

<div class="topic-metadata">

**Author:** [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Replies:** 5\
**Last updated:** [February 6, 2025, 3:37pm UTC](https://discourse.julialang.org/t/structural-hash-collisions/125613 "2025-02-06T15:37:06Z")

</div>

There is some discussion over at github about switching out murmur3 for a different hash function. If we open such a can of worms, then we might also address structural pecularities of our hash construction. I’ll start …

---

## [Type instability and/or behavior instability of \`sqrt\` on nightly](https://discourse.julialang.org/t/type-instability-and-or-behavior-instability-of-sqrt-on-nightly/125428)

<div class="topic-metadata">

**Author:** [@lkdvos](https://discourse.julialang.org/u/lkdvos)\
**Replies:** 3\
**Last updated:** [February 3, 2025, 8:20pm UTC](https://discourse.julialang.org/t/type-instability-and-or-behavior-instability-of-sqrt-on-nightly/125428 "2025-02-03T20:20:31Z")

</div>

I noticed that since this commit for LinearAlgebra.jl, the default implementation of sqrt will now check if a matrix is diagonal to improve performance. There is however a change in behavior associated to this which mig…

---

## [Invalidating the generator of a \`@generated\` function](https://discourse.julialang.org/t/invalidating-the-generator-of-a-generated-function/125164)

<div class="topic-metadata">

**Author:** [@K11BN367](https://discourse.julialang.org/u/K11BN367)\
**Replies:** 1\
**Last updated:** [January 24, 2025, 1:03pm UTC](https://discourse.julialang.org/t/invalidating-the-generator-of-a-generated-function/125164 "2025-01-24T13:03:18Z")

</div>

Hello, i started to investigate the julia internals a bit and toyed around with some code that tries to invalidate the generator of a ‘@generated’ function. I came up with the following code: import Core.Compiler.Meth…

---

## [How does Julia manage its depot \`~/.julia\`?](https://discourse.julialang.org/t/how-does-julia-manage-its-depot-julia/125015)

<div class="topic-metadata">

**Author:** [@WuSiren](https://discourse.julialang.org/u/WuSiren)\
**Replies:** 3\
**Last updated:** [January 21, 2025, 2:04pm UTC](https://discourse.julialang.org/t/how-does-julia-manage-its-depot-julia/125015 "2025-01-21T14:04:49Z")

</div>

It seems that Julia will download all the used packages and corresponding dependencies into its default depot ~/.julia which is usually located in the disk C: of a PC. Will this behavior lead to a dramatic expansion of t…

---

## [Why does \`@inbounds\` disable constant propagation?](https://discourse.julialang.org/t/why-does-inbounds-disable-constant-propagation/105789)

<div class="topic-metadata">

**Author:** [@nsajko](https://discourse.julialang.org/u/nsajko)\
**Replies:** 25\
**Last updated:** [January 20, 2025, 12:00am UTC](https://discourse.julialang.org/t/why-does-inbounds-disable-constant-propagation/105789 "2025-01-20T00:00:58Z")

</div>

The Julia manual says: An explicit @inbounds annotation inside the function will also disable constant folding and not be overridden by :foldable. Some other references of this fact: Issue #48245 says: turning on -…

---

## [Feature request: --project=@script\_dir](https://discourse.julialang.org/t/feature-request-project-script-dir/124828)

<div class="topic-metadata">

**Author:** [@greatpet](https://discourse.julialang.org/u/greatpet)\
**Replies:** 3\
**Last updated:** [January 16, 2025, 4:14pm UTC](https://discourse.julialang.org/t/feature-request-project-script-dir/124828 "2025-01-16T16:14:56Z")

</div>

I’d like to run a command like julia --project=@script\_dir long/path/to/my/package/src/script.jl rather than what I currently have to use, where the path is repeated verbatim julia --project=long/path/to/my/package lo…

---

## [Juliac and PackageCompiler](https://discourse.julialang.org/t/juliac-and-packagecompiler/124683)

<div class="topic-metadata">

**Author:** [@wujinq](https://discourse.julialang.org/u/wujinq)\
**Replies:** 1\
**Last updated:** [January 13, 2025, 2:35pm UTC](https://discourse.julialang.org/t/juliac-and-packagecompiler/124683 "2025-01-13T14:35:50Z")

</div>

It seems that juliac is currently being developed to compile Julia code into binary, which does not impose the constraints in static compilation. I’m however curous about the relation between juliac and Package Compiler:…

---

## [Repl: should \`ans\` be shared across different prompt modes?](https://discourse.julialang.org/t/repl-should-ans-be-shared-across-different-prompt-modes/124694)

<div class="topic-metadata">

**Author:** [@mfandl](https://discourse.julialang.org/u/mfandl)\
**Replies:** 1\
**Last updated:** [January 13, 2025, 12:07am UTC](https://discourse.julialang.org/t/repl-should-ans-be-shared-across-different-prompt-modes/124694 "2025-01-13T00:07:36Z")

</div>

I just lost some data :person\_shrugging: because I didn’t think a command executed in shell mode will overwrite my ans. That is my fault, but anyway, should this be the case? julia\> 22.5 22.5 julia\> ans 22.5 shell\> ca…

---

## [Introducing Rust alongside C in Julia's source tree?](https://discourse.julialang.org/t/introducing-rust-alongside-c-in-julias-source-tree/124559)

<div class="topic-metadata">

**Author:** [@MilesCranmer](https://discourse.julialang.org/u/MilesCranmer)\
**Replies:** 18\
**Last updated:** [January 10, 2025, 6:53pm UTC](https://discourse.julialang.org/t/introducing-rust-alongside-c-in-julias-source-tree/124559 "2025-01-10T18:53:41Z")

</div>

Just curious if anyone has ever raised the question of introducing Rust inside the Julia source tree, alongside C? I know that the Linux kernel has recently started this in their C source to improve memory safety: Rust f…

---

## [Julia nightly REPL has broken prompt](https://discourse.julialang.org/t/julia-nightly-repl-has-broken-prompt/124591)

<div class="topic-metadata">

**Author:** [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Replies:** 4\
**Last updated:** [January 9, 2025, 3:13pm UTC](https://discourse.julialang.org/t/julia-nightly-repl-has-broken-prompt/124591 "2025-01-09T15:13:21Z")

</div>

Hi, I just updated my nightly version, but the REPL is unusable (Windows).

---

## [Storing sortedness for numeric vectors](https://discourse.julialang.org/t/storing-sortedness-for-numeric-vectors/124381)

<div class="topic-metadata">

**Author:** [@ajinkya-k](https://discourse.julialang.org/u/ajinkya-k)\
**Replies:** 14\
**Last updated:** [January 4, 2025, 11:07pm UTC](https://discourse.julialang.org/t/storing-sortedness-for-numeric-vectors/124381 "2025-01-04T23:07:17Z")

</div>

Hello! I was wondering if it would be a good idea to store whether a numeric Vector is sorted in the vector struct itself. The current implementation Vector has the fields (:ref,:size), what I am suggesting for numeric …

---

## [Julia 1.12 feature freeze: Wednesday, January 8, 2025](https://discourse.julialang.org/t/julia-1-12-feature-freeze-wednesday-january-8-2025/122902)

<div class="topic-metadata">

**Author:** [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)\
**Replies:** 4\
**Last updated:** [January 4, 2025, 4:04am UTC](https://discourse.julialang.org/t/julia-1-12-feature-freeze-wednesday-january-8-2025/122902 "2025-01-04T04:04:52Z")

</div>

We have set the feature freeze for Julia 1.12 to Wednesday, January 8, 2025. If there are any feature PRs that you’d like to get into Julia 1.12, they’ll need to be merged prior to that date. For context, the Julia 1.…

---

## [Lapack wrappers and final arguments 1](https://discourse.julialang.org/t/lapack-wrappers-and-final-arguments-1/124391)

<div class="topic-metadata">

**Author:** [@juthohaegeman](https://discourse.julialang.org/u/juthohaegeman)\
**Replies:** 2\
**Last updated:** [January 3, 2025, 12:25am UTC](https://discourse.julialang.org/t/lapack-wrappers-and-final-arguments-1/124391 "2025-01-03T00:25:17Z")

</div>

Studying some of the Lapack wrappers over at LinearAlgebra.jl/src/lapack.jl at master · JuliaLang/LinearAlgebra.jl · GitHub, I am confused by the ccall structure. Most relevant lapack methods have info as their final arg…

---

## [My insane garbage collector idea. Why wouldn't it work?](https://discourse.julialang.org/t/my-insane-garbage-collector-idea-why-wouldnt-it-work/124273)

<div class="topic-metadata">

**Author:** [@Tarny\_GG\_Channie](https://discourse.julialang.org/u/Tarny_GG_Channie)\
**Replies:** 6\
**Last updated:** [December 30, 2024, 12:41pm UTC](https://discourse.julialang.org/t/my-insane-garbage-collector-idea-why-wouldnt-it-work/124273 "2024-12-30T12:41:36Z")

</div>

This probably wouldn’t work but I can’t figure out why… Garbage collectors can either stop the world, which has the most throughput, but ruins real-time performance, or it could be concurrent, and there are many version…

---

## [Bug when extending broadcast to ^ and non-explicit Int64](https://discourse.julialang.org/t/bug-when-extending-broadcast-to-and-non-explicit-int64/123826)

<div class="topic-metadata">

**Author:** [@croberts](https://discourse.julialang.org/u/croberts)\
**Replies:** 2\
**Last updated:** [December 17, 2024, 5:09pm UTC](https://discourse.julialang.org/t/bug-when-extending-broadcast-to-and-non-explicit-int64/123826 "2024-12-17T17:09:36Z")

</div>

Where should bugs be reported? When extended to new type, broadcasting syntax fails in the final case below: import Base.Broadcast.broadcasted struct Bob end broadcasted(f, ::Bob, t) = "here" Bob() .\* 2 Bob(…

---

## [Performance regression on v1.12 (nightly): \`hypot(::Float64, ::Float64)\` causes allocations](https://discourse.julialang.org/t/performance-regression-on-v1-12-nightly-hypot-float64-float64-causes-allocations/123871)

<div class="topic-metadata">

**Author:** [@nsajko](https://discourse.julialang.org/u/nsajko)\
**Replies:** 1\
**Last updated:** [December 16, 2024, 5:41am UTC](https://discourse.julialang.org/t/performance-regression-on-v1-12-nightly-hypot-float64-float64-causes-allocations/123871 "2024-12-16T05:41:56Z")

</div>

I don’t have a MWE yet (tried but failed as of yet), mostly writing this so I wouldn’t forget to make an actual bug report later. I have some code, and profiling it on Julia nightly show that this line allocates Float64 …

---

## [How the compiler decides which allocation is eliminated?](https://discourse.julialang.org/t/how-the-compiler-decides-which-allocation-is-eliminated/123127)

<div class="topic-metadata">

**Author:** [@sumiya11](https://discourse.julialang.org/u/sumiya11)\
**Replies:** 27\
**Last updated:** [December 14, 2024, 5:09am UTC](https://discourse.julialang.org/t/how-the-compiler-decides-which-allocation-is-eliminated/123127 "2024-12-14T05:09:58Z")

</div>

Consider three functions: foo1() = (Vector() ; 0) foo2() = (Vector(undef, 2^50) ; 0) foo3() = (Vector(undef, -1) ; 0) On the current master, creation of Vector seems to be eliminated in foo1, foo2, a…

---

## [Performance of Dictionaries.jl vs Base.Dict](https://discourse.julialang.org/t/performance-of-dictionaries-jl-vs-base-dict/92073)

<div class="topic-metadata">

**Author:** [@ParadaCarleton](https://discourse.julialang.org/u/ParadaCarleton)\
**Replies:** 31\
**Last updated:** [December 13, 2024, 6:31pm UTC](https://discourse.julialang.org/t/performance-of-dictionaries-jl-vs-base-dict/92073 "2024-12-13T18:31:31Z")

</div>

Lots of places; Dictionaries.jl’s packages are just much faster than Base Dicts to iterate over. There’s a reason most package designers use them rather than Dicts.

---

## [Export Markdown.parse?](https://discourse.julialang.org/t/export-markdown-parse/123638)

<div class="topic-metadata">

**Author:** [@matthias314](https://discourse.julialang.org/u/matthias314)\
**Replies:** 5\
**Last updated:** [December 13, 2024, 1:07am UTC](https://discourse.julialang.org/t/export-markdown-parse/123638 "2024-12-13T01:07:59Z")

</div>

I’ve just discovered Markdown.parse, which allows to convert strings to Julia’s MarkDown type. I think this is a very useful functionality. Wouldn’t it make sense to export it or at least make it public? EDIT: Well, exp…

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

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