Is CSV in Julia 1.12 (kind of) stdlib?

Calling using CSV does not result in an error, even in a frish session and though I do not have CSV.jl in my default environment. With v1.10 and v1.11 it errors as expected. I have same, and quite minimal, default environments in all versions.

Why?

I think you need to re-evaluate your v1.12 environment.

▶ JULIA_DEPOT_PATH=$(mktemp -d) julia +1.12 -q
julia> using CSV
 │ Attempted to find missing packages in package registries but no registries are installed.
 └ Use package mode to install a registry. `pkg> registry add` will install the default registries.

ERROR: ArgumentError: Package CSV not found in current path.
- Run `import Pkg; Pkg.add("CSV")` to install the CSV package.
Stacktrace:
 [1] macro expansion
   @ ./loading.jl:2400 [inlined]
 [2] macro expansion
   @ ./lock.jl:376 [inlined]
 [3] __require(into::Module, mod::Symbol)
   @ Base ./loading.jl:2383
 [4] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:2359
 [5] top-level scope
   @ REPL[1]:1

(@v1.12) pkg> registry add
  Installing known registries into `/var/folders/cb/h4ftb1y11ls5khbqltqswsl40000gn/T/tmp.KeMtt6gpwa`
       Added `General` registry to /var/folders/cb/h4ftb1y11ls5khbqltqswsl40000gn/T/tmp.KeMtt6gpwa/registries

julia> using CSV
 │ Package CSV not found, but a package named CSV is available from a registry.
 │ Install package?
 │   (@v1.12) pkg> add CSV
 └ (y/n/o) [y]:

If I remove/rename the v1.12 folder, I do get an error on using CSV. After renaming it back to v1.12 (and restarting Julia of course each time) I again can import CSV.

Here what I see (in Terminal, Julia freshly started):

eben60@Mac ~ % julia
ShareAdd, BasicAutoloads & TerminalPager are loaded
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.12.2 (2025-11-20)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org release
|__/                   |

(@v1.12) pkg> st
Status `~/.julia/environments/v1.12/Project.toml`
  [09cdc199] BasicAutoloads v1.0.4
⌃ [295af30f] Revise v3.8.1 ⚲
  [27c01619] ShareAdd v2.4.0
  [0c614874] TerminalPager v0.6.6
Info Packages marked with ⌃ have new versions available and may be upgradable.

julia> using CSV

julia> 

CSV is not in the Manifest of the default environment.

It is not that it is a problem for me, just strange.

Do you have anything in your startup? Or a JULIA_LOAD_PATH?

Oh my bad :grin:

Surely I have:

@static if VERSION >= v"1.11" && isinteractive()
	using ShareAdd
	using TerminalPager
    import BasicAutoloads
    BasicAutoloads.register_autoloads([
    	["plot", "scatter"] => :(isdefined(Main, :plot) || @usingany Plots),
    	["DataFrame", "combine", "transform!", "transform", "select!", "select", "groupby"] 
    		=> :(@usingany DataFrames),
    	["CSV"] => :(@usingany CSV, StringEncodings, DataFrames),
    	["Dates", "Date","DateTime"] => :(@usingany Dates),
    	["mean", "std", "median"] => :(isdefined(Main, :mean) || @usingany Statistics), 
    	["@u_str"] => :(@usingany Unitful),  
    	["@benchmark"] => :(@usingany BenchmarkTools), 
    	["TestEnv"] => :(@usingany TestEnv),   	
    ])
    println("ShareAdd, BasicAutoloads & TerminalPager are loaded")
end

So the question would actually be not why I have it autoloaded under v1.12, but why it didn’t work as I tested the same thing under v1.11. In the meanwhile I’ve found the issue under v1.11 however.