# Invalidate precompilation cache

**URL:** <https://discourse.julialang.org/t/invalidate-precompilation-cache/90992>\
**Category:** Internals & Design\
**Tags:** question\
**Created:** [November 29, 2022, 12:33pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992 "2022-11-29T12:33:18Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![t-bltg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/t-bltg/32/25526_2.png) [@t-bltg](https://discourse.julialang.org/u/t-bltg)\
**Post date:** [November 29, 2022, 12:33pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/1 "2022-11-29T12:33:18Z")

</div>

How can I invalidate the precompilation cache in a programmable way from within julia, to force precompilation upon restart ?

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [November 29, 2022, 4:13pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/2 "2022-11-29T16:13:06Z")

</div>

You can delete the files.

---

<div class="post-metadata">

**Author:** ![t-bltg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/t-bltg/32/25526_2.png) [@t-bltg](https://discourse.julialang.org/u/t-bltg)\
**Post date:** [November 29, 2022, 4:15pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/3 "2022-11-29T16:15:15Z")

</div>

Sure 🙂 , but is there are `Base` officially supported way ?

I need to add this to `Plots` in [select `Plots` backend via `Preferences` (or env variable) by t-bltg · Pull Request #4566 · JuliaPlots/Plots.jl · GitHub](https://github.com/JuliaPlots/Plots.jl/pull/4566), upon changing the backend via `Preferences`.

---

<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:** [November 29, 2022, 4:16pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/4 "2022-11-29T16:16:06Z")

</div>

I’ve really wanted this too.

---

<div class="post-metadata">

**Author:** ![t-bltg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/t-bltg/32/25526_2.png) [@t-bltg](https://discourse.julialang.org/u/t-bltg)\
**Post date:** [November 29, 2022, 4:38pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/5 "2022-11-29T16:38:00Z")

</div>

This seems to work:

```julia
rm.(Base.find_all_in_cache_path(Base.module_keys[Plots]))

```

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [November 29, 2022, 6:29pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/6 "2022-11-29T18:29:16Z")

</div>

Preferences.jl should address this as long as you use `@load_preference` during _every_ precompilation.

> <https://github.com/JuliaLang/julia/blob/edc8241acf912fc009419ccc37ff8e6b3d7807c6/base/loading.jl#L2161-L2163>

If you don’t use it during a precompilation session, then Julia will not know it should check that file and will not invalidate the cache.

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [November 29, 2022, 9:40pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/7 "2022-11-29T21:40:58Z")

</div>

Would be nice to have an official API for this if people want to propose one.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [December 2, 2022, 12:35pm UTC](https://discourse.julialang.org/t/invalidate-precompilation-cache/90992/8 "2022-12-02T12:35:59Z")

</div>

Doesn’t [`Base.compilecache`](https://docs.julialang.org/en/v1/base/base/#Base.compilecache) do that already?
