# What is \`outputting sysimage file\` actually doing?

**URL:** <https://discourse.julialang.org/t/what-is-outputting-sysimage-file-actually-doing/138364>\
**Category:** Internals & Design\
**Tags:** compilation\
**Created:** [July 20, 2026, 8:21am UTC](https://discourse.julialang.org/t/what-is-outputting-sysimage-file-actually-doing/138364 "2026-07-20T08:21:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rokke](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rokke/32/222691_2.png) [@rokke](https://discourse.julialang.org/u/rokke)\
**Post date:** [July 20, 2026, 8:21am UTC](https://discourse.julialang.org/t/what-is-outputting-sysimage-file-actually-doing/138364/1 "2026-07-20T08:21:51Z")

</div>

it strikes me as odd that the longest step of building julia (like, from source with `make`) is ‘outputting’, which I think of as just writing something already in memory to disk. this step is pretty consistently the longest step, which makes me think it’s doing something other than just outputting:

```julia-auto
Sysimage built. Summary:
Base ──────── 82.924502 seconds 66.0224%
Stdlibs ───── 42.676037 seconds 33.9776%
Total ─────── 125.600575 seconds
    LINK usr/lib/julia/sysbase.so
    JULIA usr/lib/julia/sys-o.a
Collecting precompile statements
Executing precompile statements
Executed 400 precompile statements
Precompilation complete. Summary:
Total ─────── 455.682340 seconds
Outputting sysimage file...
Output ────── 823.662552 seconds
    LINK usr/lib/julia/sys.so
    JULIA stdlib/release.image

# or if there's an error:
Sysimage built. Summary:
Base ──────── 83.128810 seconds 67.201%
Stdlibs ───── 40.572814 seconds 32.7989%
Total ─────── 123.701723 seconds
    LINK usr/lib/julia/sysbase.so
    JULIA usr/lib/julia/sys-o.a
Collecting precompile statements
Executing precompile statements
Executed 432 precompile statements
Precompilation complete. Summary:
Total ─────── 19.288197 seconds
Outputting sysimage file...
Output ────── 195.348901 seconds
    LINK usr/lib/julia/sys.so
    JULIA stdlib/release.image

```

what’s it actually doing in the output step?

---

<div class="post-metadata">

**Author:** ![MDSW](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@MDSW](https://discourse.julialang.org/u/MDSW)\
**Post date:** [July 20, 2026, 12:21pm UTC](https://discourse.julialang.org/t/what-is-outputting-sysimage-file-actually-doing/138364/2 "2026-07-20T12:21:47Z")

</div>

It’s compiling the basic system image (sys.dll in your build). The compilation engine (if you’re building from scratch) at this point is now LLVM and Julia’s own compilation machinery.

---

<div class="post-metadata">

**Author:** ![Oscar\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscar_smith/32/25343_2.png) [@Oscar\_Smith](https://discourse.julialang.org/u/Oscar_Smith)\
**Post date:** [July 20, 2026, 1:55pm UTC](https://discourse.julialang.org/t/what-is-outputting-sysimage-file-actually-doing/138364/3 "2026-07-20T13:55:19Z")

</div>

The other part of the answer is it is probably a lot slower than it should be.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [July 20, 2026, 3:05pm UTC](https://discourse.julialang.org/t/what-is-outputting-sysimage-file-actually-doing/138364/4 "2026-07-20T15:05:51Z")

</div>

Outputting is probably the wrong word, yes. It comes from the fact that the flag to generate this is `--output-o`. “compiling” or “generating” might be better.
