# \[ANN\] About.jl

**URL:** https://discourse.julialang.org/t/ann-about-jl/118547
**Category:** Package Announcements
**Tags:** package, announcement
**Created:** [August 24, 2024, 3:03am UTC](https://discourse.julialang.org/t/ann-about-jl/118547 "2024-08-24T03:03:54Z")
**Posts on this page:** 8
**Page:** 2

<div class="post-metadata">

### Author: ![lazarusA](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lazarusa/32/6571_2.png) [@lazarusA](https://discourse.julialang.org/u/lazarusA)
#### Post date: [March 14, 2025, 8:25am UTC](https://discourse.julialang.org/t/ann-about-jl/118547/22 "2025-03-14T08:25:53Z")

</div>

We could help out with the other issues. Maybe pointing out were things broke and need fixing could help?

About.jl is a great package, hence I believe having this available for everyone on upcoming versions would be a big plus. I have the feeling more contributors will be willing to step in.

---

<div class="post-metadata">

### Author: ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)
#### Post date: [March 14, 2025, 8:57am UTC](https://discourse.julialang.org/t/ann-about-jl/118547/23 "2025-03-14T08:57:45Z")

</div>

Thanks for the kind words, the main issue is that I still haven’t gone through the headache of backporting some breaking changes in StyledStrings.jl to the compat release, and JuliaSyntaxHighlighting.jl needs to then be updated to account for those, but that may also require JuliaSyntax.jl to make new release now that JuliaSyntaxHighlighting.jl has been updated to support the latest version used in 1.12. All this will happen, it’s just a bit of a headache.

Any help would be lovely, and once it’s sorted I’d be keen to collaborate with people on improving About.jl further 🙂

In the mean time About.jl should be fine with Julia 1.9-1.10 and 1.12+, it’s just 1.11 that sits at the intersection of package versions/compatibility that’s a bit of a headache until the above issues are solved.

---

<div class="post-metadata">

### Author: ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)
#### Post date: [January 10, 2026, 4:59pm UTC](https://discourse.julialang.org/t/ann-about-jl/118547/24 "2026-01-10T16:59:48Z")

</div>

I’ve just done a spate of bugfixes, released as v1.0.3 🙂 (diff linked below)

> **[About.jl](https://code.tecosaur.net/tec/About.jl/compare/d761e0c3..4b4df7ab)**
>
> Tell me about yourself

---

<div class="post-metadata">

### Author: ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)
#### Post date: [January 29, 2026, 9:57am UTC](https://discourse.julialang.org/t/ann-about-jl/118547/25 "2026-01-29T09:57:48Z")

</div>

Thanks to a particularly egregious bug I managed to slip into the last release 🙈 we already have **v1.0.4**!

> **[About.jl](https://code.tecosaur.net/tec/About.jl/compare/4b4df7ab..7777ae41)**
>
> Tell me about yourself

There are two notable improvements that also come with the bugfix(es):

- Better guessing whether `sizeof` will work
- Showing tag bytes used in inlined unions

 ![image](https://global.discourse-cdn.com/julialang/original/3X/d/e/de097eb76f0bce2bc0125f142e11ecd41bddb014.png)

Showing the tag byte lets you spot that simply reversing the field cuts the memory required for the `Int`-flavour of this structure by a third.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/6/365ad3d715c5436cbaa3b65b9ddff414a2bf16a3.png)

This is based on observable heuristics, since it’s not exposed, so this may not always be correct, but it seems to work fairly well 🙂

---

<div class="post-metadata">

### Author: ![karei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karei/32/214809_2.png) [@karei](https://discourse.julialang.org/u/karei)
#### Post date: [January 29, 2026, 11:03am UTC](https://discourse.julialang.org/t/ann-about-jl/118547/26 "2026-01-29T11:03:51Z")

</div>

Thanks for `About.jl`! The visualization helped me understand Julia’s memory layout for the first time. Super clear and useful for learning how to design data structures.

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [January 31, 2026, 1:28pm UTC](https://discourse.julialang.org/t/ann-about-jl/118547/27 "2026-01-31T13:28:56Z")

</div>

Thanks a lot, @tecosaur! About.jl became one of the most important packages in my Julia workflow. I can only recommend to every REPL user to put it in `startup.jl` and append a ` |> about` whenever you want to know something about basically anything there is in Julia.  
I am especially thankful for the patience with which you fix bugs whenever I come up with another special case. 🙂

I am still struggling a bit to fully understand the memory layout for the non-`isbitstype` case.

> [@tecosaur](#):
>
> ![image](https://global.discourse-cdn.com/julialang/original/3X/d/e/de097eb76f0bce2bc0125f142e11ecd41bddb014.png)

`x` has 4 bytes, followed by 4 bytes of padding followed by 8 bytes to the “pointer” to either the `UnionAll` type `Vector` or `Nothing`, where the type information is (somehow) taken from the memory address where the pointer points to.

I haven’t fully understand the Julia source code, but if I got this right, the field access [will not use a separate union type tag if `jl_field_isptr`](https://github.com/JuliaLang/julia/blob/08dedb8db48724319d931a144817082098835c1d/src/datatype.c#L1825) is true. Otherwise it will go into the [`jl_is_uniontype` branch](https://discourse.julialang.org/t/union-structs-type-tag-memory-layout/133816/12).

I think `isptr` is true:

```julia
const FieldDesc8 = Tuple{UInt8, UInt8}
MyStruct32{Vector}.layout + sizeof(Base.DataTypeLayout) + sizeof(FieldDesc8) |> Ptr{FieldDesc8} |> unsafe_load |> first |> (x -> x & 0b1) |> Bool

```

See the [definitions of `jl_fielddesc8_t` and `jl_datatype_layout_t`](https://github.com/JuliaLang/julia/blob/08dedb8db48724319d931a144817082098835c1d/src/julia.h#L574).

But if this is correct, doesn’t it mean that `Base.summarysize` is incorrect, as it returns:

```julia
julia> Union{Nothing, Vector} |> Base.SummarySize(IdDict(), Any[], Int[], Union{}, Union{})
16

```

See [the definition of `Base.summarysize`](https://github.com/JuliaLang/julia/blob/08dedb8db48724319d931a144817082098835c1d/base/summarysize.jl#L45).

Can anyone with more insights please point out my error or confirm that we should fix `Base.summarysize`?

---

<div class="post-metadata">

### Author: ![PatrickHaecker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/patrickhaecker/32/222891_2.png) [@PatrickHaecker](https://discourse.julialang.org/u/PatrickHaecker)
#### Post date: [February 9, 2026, 5:31am UTC](https://discourse.julialang.org/t/ann-about-jl/118547/28 "2026-02-09T05:31:21Z")

</div>

> [@hz-xiaxz](#):
>
> This package is fantastic! I’m wondering if it’s positioned as a superior replacement and enhancement for Julia REPL’s built-in `help?>` .

Although About.jl isn’t, together with `TerminalPager.jl` v0.6.8 I think it (mostly) is. You can just use `<alt>`+`<a>` and `<alt>`+`<h>` with your text cursor on an identifier to get the output of `about` and of `help?>`, respectively.

Especially `<alt>`+`<a>` might be interesting for every regular `about` user.

See the [announcement for more details](https://discourse.julialang.org/t/ann-terminalpager-jl-repl-inline-help-added/133131/56).

---

<div class="post-metadata">

### Author: ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)
#### Post date: [July 18, 2026, 1:09pm UTC](https://discourse.julialang.org/t/ann-about-jl/118547/29 "2026-07-18T13:09:54Z")

</div>

If anyone wants to chime in, the main thing stopping me from fixing `about(::Matrix)` is not having come to an idea I like for how the value/memory layout of matrices could be best displayed.

> <https://github.com/tecosaur/About.jl/issues/50>
>
> \`\`\`julia
> julia\> about(\[0 0\])
> 1×2 Matrix{Int64} (mutable) (\<: DenseMatrix{Int64} …\<: AbstractMatrix{Int64} \<: Any)
> Memory footprint: 32B directly (referencing 64B in total, holding 16B of data)
> 
> Int64 contents exist on the CPU within the ref::MemoryRef from 0x000000030b8b0a40 to 0x000000030b8b0a50.
> ERROR: MethodError: no method matching vecbytes(::Base.TTY, ::Matrix{Int64}; eltext::String)
> The function \`vecbytes\` exists, but no method is defined for this combination of argument types.
> 
> Closest candidates are:
> vecbytes(::IO, ::DenseVector{T}; elshowfn, eltext, topbar, itemfaces, byteface, bitcolour, bytevals) where T
> @ About ~/.julia/packages/About/dIW3Z/src/values.jl:309
> 
> Stacktrace:
> \[1\] memorylayout(io::Base.TTY, arr::Matrix{Int64})
> @ About ~/.julia/packages/About/dIW3Z/src/values.jl:440
> \[2\] about(io::Base.TTY, value::Matrix{Int64})
> @ About ~/.julia/packages/About/dIW3Z/src/values.jl:47
> \[3\] about(x::Matrix{Int64})
> @ About ~/.julia/packages/About/dIW3Z/src/About.jl:207
> \[4\] top-level scope
> @ REPL\[44\]:1
> 
> julia\> versioninfo()
> Julia Version 1.11.4
> Commit 8561cc3d68d (2025-03-10 11:36 UTC)
> Build Info:
> Official https://julialang.org/ release
> Platform Info:
> OS: macOS (arm64-apple-darwin24.0.0)
> CPU: 8 × Apple M2
> WORD\_SIZE: 64
> LLVM: libLLVM-16.0.6 (ORCJIT, apple-m2)
> Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
> Environment:
> JULIA\_EDITOR = subl
> JULIA\_SHELL = zsh
> 
> julia\> about(About)
> Module About \[69d22d85-9f48-4c46-bbbe-7ad8341ff72a\]
> Version 1.0.2 loaded from ~/.julia/packages/About/dIW3Z
> 
> Directly depends on 4 packages (+8 indirectly):
> • PrecompileTools (+5) • StyledStrings (stdlib)
> • InteractiveUtils (stdlib) • JuliaSyntaxHighlighting (+1)
> 
> Exports 2 names:
> • About • about
> \`\`\`

Something that shows the column-major layout of information would be neat (e.g. matched highlighting of some matrix values + lanes of bytes?).

[Previous page](https://discourse.julialang.org/t/ann-about-jl/118547.md?page=1)
