Skip to content

@time_imports not showing extension parents #55713

@IanButterworth

Description

@IanButterworth
Member
julia> @time_imports using Plots
...
      0.5 ms  LogExpFunctions
      0.3 ms  CompatLinearAlgebraExt
      0.4 ms  StatsAPI

It seems that EXT_PRIMED which @time_imports uses to figure out if the package is an ext and return its parent is empty throughout the load process, which didn't used to be the case. Works on 1.10. Broken on 1.11 too.

parentid = get(EXT_PRIMED, pkg, nothing)

On 1.10

      0.5 ms  Compat
      0.3 ms  Compat → CompatLinearAlgebraExt
      2.1 ms  OrderedCollections

EXT_PRIMED is only populated by _insert_extension_triggers which is only called at the end of everything loading now.

julia> @time_imports using Plots
      0.6 ms  Printf
     15.3 ms  Dates
      0.8 ms  Statistics
               ┌ 3.0 ms SuiteSparse_jll.__init__()
      4.7 ms  SuiteSparse_jll
      0.7 ms  Serialization
               ┌ 4.6 ms SparseArrays.CHOLMOD.__init__() 90.28% compilation time
    192.1 ms  SparseArrays 38.90% compilation time (62% recompilation)
      0.4 ms  SparseArraysExt
      0.5 ms  TOML
      8.2 ms  Preferences
      0.4 ms  PrecompileTools
      0.3 ms  Reexport
      0.3 ms  Scratch
      0.4 ms  RelocatableFolders
      6.5 ms  RecipesBase
     13.6 ms  FixedPointNumbers
               ┌ 0.0 ms ColorTypes.__init__()
     13.0 ms  ColorTypes
     26.4 ms  Colors
      0.5 ms  TensorCore
               ┌ 0.0 ms ColorVectorSpace.__init__()
     26.3 ms  ColorVectorSpace
      4.0 ms  ColorSchemes
     46.8 ms  PlotUtils
     10.3 ms  PlotThemes
               ┌ 1.7 ms OpenLibm_jll.__init__()
      3.5 ms  OpenLibm_jll
      0.4 ms  NaNMath
     18.9 ms  RecipesPipeline
      0.4 ms  UUIDs
               ┌ 0.0 ms Requires.__init__()
      0.5 ms  Requires
     24.3 ms  StyledStrings
               ┌ 0.0 ms JuliaSyntaxHighlighting.__init__()
      8.2 ms  JuliaSyntaxHighlighting
               ┌ 0.0 ms Markdown.__init__()
      3.3 ms  Markdown
      1.4 ms  InteractiveUtils
               ┌ 0.0 ms REPL.REPLCompletions.__init__()
               ├ 0.0 ms REPL.__init__()
     54.1 ms  REPL
      1.8 ms  UnicodeFun
      0.8 ms  DataAPI
      0.4 ms  Compat
     24.5 ms  OrderedCollections
     15.3 ms  DataStructures
      0.8 ms  SortingAlgorithms
      2.1 ms  Missings
               ┌ 0.0 ms NetworkOptions.__init__()
      1.3 ms  NetworkOptions
               ┌ 1.1 ms MbedTLS_jll.__init__()
      3.2 ms  MbedTLS_jll
               ┌ 0.5 ms LibSSH2_jll.__init__()
      2.2 ms  LibSSH2_jll
               ┌ 0.8 ms LibGit2_jll.__init__()
      2.5 ms  LibGit2_jll
      9.7 ms  LibGit2
               ┌ 0.0 ms DocStringExtensions.__init__()
      1.0 ms  DocStringExtensions
      6.1 ms  IrrationalConstants
      0.5 ms  LogExpFunctions
      0.3 ms  CompatLinearAlgebraExt
      0.4 ms  StatsAPI
      9.6 ms  StatsBase
      5.6 ms  ArgTools
               ┌ 0.4 ms nghttp2_jll.__init__()
      2.1 ms  nghttp2_jll
               ┌ 0.7 ms LibCURL_jll.__init__()
      2.4 ms  LibCURL_jll
               ┌ 0.0 ms MozillaCACerts_jll.__init__()
      1.7 ms  MozillaCACerts_jll
               ┌ 0.0 ms LibCURL.__init__()
      1.2 ms  LibCURL
               ┌ 1.9 ms Downloads.Curl.__init__()
     14.2 ms  Downloads
      0.5 ms  Showoff
      2.3 ms  Unzip
      0.5 ms  JLLWrappers
               ┌ 132.1 ms fzf_jll.__init__() 99.84% compilation time (7% recompilation)
    132.9 ms  fzf_jll 99.27% compilation time (7% recompilation)
      0.5 ms  Pipe
      0.5 ms  JLFzf
      0.8 ms  Mmap
               ┌ 0.0 ms Parsers.__init__()
     17.0 ms  Parsers
      7.1 ms  JSON
      1.7 ms  Measures
               ┌ 0.6 ms Bzip2_jll.__init__()
      1.2 ms  Bzip2_jll
               ┌ 3.1 ms Zlib_jll.__init__()
      4.9 ms  Zlib_jll
               ┌ 0.6 ms FreeType2_jll.__init__()
      1.2 ms  FreeType2_jll
               ┌ 0.5 ms FriBidi_jll.__init__()
      1.1 ms  FriBidi_jll
               ┌ 0.9 ms Libiconv_jll.__init__()
      1.4 ms  Libiconv_jll
               ┌ 0.4 ms Libffi_jll.__init__()
      1.0 ms  Libffi_jll
               ┌ 12.1 ms CompilerSupportLibraries_jll.__init__()
     13.9 ms  CompilerSupportLibraries_jll
               ┌ 0.7 ms XML2_jll.__init__()
      1.4 ms  XML2_jll
               ┌ 1.2 ms Gettext_jll.__init__()
      1.8 ms  Gettext_jll
               ┌ 3.4 ms PCRE2_jll.__init__()
      5.1 ms  PCRE2_jll
               ┌ 4.9 ms Glib_jll.__init__()
      5.5 ms  Glib_jll
               ┌ 0.9 ms LLVMOpenMP_jll.__init__()
      1.5 ms  LLVMOpenMP_jll
               ┌ 0.5 ms Pixman_jll.__init__()
      1.1 ms  Pixman_jll
               ┌ 0.5 ms libpng_jll.__init__()
      1.1 ms  libpng_jll
      0.4 ms  Libuuid_jll
               ┌ 0.5 ms Expat_jll.__init__()
      1.1 ms  Expat_jll
               ┌ 7.4 ms Fontconfig_jll.__init__() 89.55% compilation time (17% recompilation)
      8.4 ms  Fontconfig_jll 78.89% compilation time (17% recompilation)
               ┌ 2.0 ms Cairo_jll.__init__()
      2.7 ms  Cairo_jll
               ┌ 0.6 ms Graphite2_jll.__init__()
      1.2 ms  Graphite2_jll
               ┌ 2.1 ms HarfBuzz_jll.__init__()
      2.8 ms  HarfBuzz_jll
               ┌ 0.7 ms libass_jll.__init__()
      1.4 ms  libass_jll
               ┌ 0.5 ms libfdk_aac_jll.__init__()
      1.2 ms  libfdk_aac_jll
               ┌ 0.6 ms LAME_jll.__init__()
      1.2 ms  LAME_jll
               ┌ 0.5 ms Ogg_jll.__init__()
      1.2 ms  Ogg_jll
               ┌ 1.6 ms libvorbis_jll.__init__()
      2.3 ms  libvorbis_jll
               ┌ 0.7 ms libaom_jll.__init__()
      1.4 ms  libaom_jll
               ┌ 0.8 ms x264_jll.__init__()
      1.5 ms  x264_jll
               ┌ 0.8 ms x265_jll.__init__()
      1.5 ms  x265_jll
               ┌ 1.8 ms OpenSSL_jll.__init__()
      2.5 ms  OpenSSL_jll
               ┌ 0.6 ms Opus_jll.__init__()
      1.3 ms  Opus_jll
               ┌ 9.5 ms FFMPEG_jll.__init__()
     10.4 ms  FFMPEG_jll
      0.8 ms  FFMPEG
               ┌ 1.0 ms GLFW_jll.__init__()
      1.7 ms  GLFW_jll
               ┌ 1.2 ms JpegTurbo_jll.__init__()
      2.0 ms  JpegTurbo_jll
               ┌ 0.8 ms LERC_jll.__init__()
      1.6 ms  LERC_jll
               ┌ 0.7 ms XZ_jll.__init__()
      1.6 ms  XZ_jll
               ┌ 0.7 ms Zstd_jll.__init__()
      1.4 ms  Zstd_jll
               ┌ 0.8 ms Libtiff_jll.__init__()
      1.6 ms  Libtiff_jll
      0.6 ms  libinput_jll
      0.6 ms  Xorg_libXext_jll
      0.6 ms  Xorg_libxcb_jll
      0.6 ms  Xorg_xcb_util_wm_jll
      0.6 ms  Xorg_xcb_util_cursor_jll
      0.6 ms  Xorg_xcb_util_image_jll
      0.6 ms  Xorg_xcb_util_keysyms_jll
      0.6 ms  Xorg_xcb_util_renderutil_jll
      0.6 ms  Xorg_libXrender_jll
      0.6 ms  Xorg_libSM_jll
      0.6 ms  xkbcommon_jll
      0.6 ms  Libglvnd_jll
               ┌ 0.8 ms Vulkan_Loader_jll.__init__()
      1.5 ms  Vulkan_Loader_jll
               ┌ 16.8 ms Qt6Base_jll.__init__()
     17.7 ms  Qt6Base_jll
               ┌ 0.1 ms GR_jll.__init__()
      1.1 ms  GR_jll
      1.4 ms  Tar
               ┌ 0.0 ms p7zip_jll.__init__()
      3.1 ms  p7zip_jll
               ┌ 88.9 ms GR.GRPreferences.__init__() 99.92% compilation time (100% recompilation)
    102.7 ms  GR 86.48% compilation time (100% recompilation)
               ┌ 2.3 ms Plots.__init__() 90.98% compilation time (100% recompilation)
    259.3 ms  Plots 0.80% compilation time (100% recompilation)
[ Info: _insert_extension_triggers
[ Info: _insert_extension_triggers
[ Info: _insert_extension_triggers
[ Info: _insert_extension_triggers
[ Info: _insert_extension_triggers

Activity

added
bugIndicates an unexpected problem or unintended behavior
on Sep 7, 2024
IanButterworth

IanButterworth commented on Sep 8, 2024

@IanButterworth
SponsorMemberAuthor

@KristofferC I tried to fix this but I got lost in the loading sequencing. Is there another way to tell that they are extensions?

KristofferC

KristofferC commented on Sep 8, 2024

@KristofferC
Member

Perhaps look at pkgdir and see if it is in an ext folder or something ugly like that...

IanButterworth

IanButterworth commented on Sep 9, 2024

@IanButterworth
SponsorMemberAuthor

It seems like pkgorigins isn't set yet for the packages at that point because register_root_module is called conditionally after _include_from_serialized returns.

I could try passing that condition into _include_from_serialized so it can be done just before the print.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIndicates an unexpected problem or unintended behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @KristofferC@IanButterworth

      Issue actions

        `@time_imports` not showing extension parents · Issue #55713 · JuliaLang/julia