Global EO Cache
EO compilation process consists of several steps covered in details
in this blog post. Most
of the steps have various files (.eo
, .xmir
, etc.) as their input/output, and
sometimes it’s very handy to have them persisted somewhere for reuse between
compilation runs. ~/.eo/
folder acts as such persistent storage.
Let’s have a closer look at its structure and how it is bound to compilation process.
The folder has the following structure:
~/.eo/
|-- pulled/
|-- parsed/
+-- optimized/
Each subfolder can be considered as a local cache serving specific purpose. All caches
store files based on version git-hash. For example org.eolang.array
object source for version
0.27.0
within Pulled
cache will be stored as ~/.eo/pulled/99b64cf/org/eolang/array.eo
,
where 99b64cf
is git-hash for 0.27.0
version tag.
Also, note that the file path corresponds to the package of the object.
Pulled
cache contains .eo
sources downloaded from Objectionary
during Pull step.
Every time pull
step is executed it first checks presence of the file in pulled
cache and would
only go to remote Objectionary in case it’s missing locally. However, this behaviour can be adjusted by
Maven -U
option (see Bypassing object cache)
Parsed
cache stores parsed .xmir
files produced during Parse step.
The structure of this folder is similar to pulled
cache, namely it stores files based on hash+package:
parsed/99b64cf/org/eolang/array.xmir
An EO object discovered during previous compilation cycles and which has meaningful version
(i.e. not like 0.0.0
, *.*.*
or empty) before actually being parsed would be checked in
parsed
cache first. If it’s found it will be copied to corresponding target. In case it’s missing
it would be parsed from EO source.
Optimized
cache is used during Optimize step and
stores optimized .xmir
files. It is functioning identical to Parsed
cache.
To summarize: ~/.eo/
folder represents local file cache for EO compilation artifacts to make
the process more performant. It’s possible that for further optimizations we will see more caches within ~/.eo/
in future.
And of course to clean up all caches you can always execute (for Bash) rm -rf ~/.eo
:)