# \[ANN\] ExproniconLite.jl - the MLStyle generated dependency free package for low latency

**URL:** <https://discourse.julialang.org/t/ann-exproniconlite-jl-the-mlstyle-generated-dependency-free-package-for-low-latency/59247>\
**Category:** Package Announcements\
**Tags:** package, announcement, metaprogramming\
**Created:** [April 14, 2021, 1:23am UTC](https://discourse.julialang.org/t/ann-exproniconlite-jl-the-mlstyle-generated-dependency-free-package-for-low-latency/59247 "2021-04-14T01:23:10Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Roger-luo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/roger-luo/32/3399_2.png) [@Roger-luo](https://discourse.julialang.org/u/Roger-luo)\
**Post date:** [April 14, 2021, 1:23am UTC](https://discourse.julialang.org/t/ann-exproniconlite-jl-the-mlstyle-generated-dependency-free-package-for-low-latency/59247/1 "2021-04-14T01:23:10Z")

</div>

I’m excited to announce a new package [ExproniconLite](https://github.com/Roger-luo/ExproniconLite.jl) that is generated by the `Expronicon` package I announced previously:

> [@\[ANN\] Expronicon.jl - meta programming made easy](https://discourse.julialang.org/t/ann-expronicon-jl-meta-programming-made-easy/57765):
>
> I created a new package [Expronicon.jl](https://github.com/Roger-luo/Expronicon.jl) to wrap up some meta-programming tools on Julia’s Expr I wrote in the past year using [MLStyle](https://github.com/thautwarm/MLStyle.jl) The goal of Expronicon is to serve as a stdlib for MLStyle for meta programming Julia Expr This package provides a few tools as following Syntax Types In many other meta programming packages, such as MacroTools, ExprTools etc. one often use a function called split\_function to split function components into a Dict for easy manipulation and construction, Expronicon …

unfortunately, depending on MLStyle itself will cause a small loading latency which can be unpleasant for certain use cases (such as my CLI generator Comonicon.jl), since MLStyle has the promise that it will generate dependency-free code for you, we managed to generate a dependency-free version of `Expronicon`:

> **[GitHub - Roger-luo/ExproniconLite.jl: no fancy pattern matching, no dependencies,...](https://github.com/Roger-luo/ExproniconLite.jl)**
>
> no fancy pattern matching, no dependencies, lightweight Expronicon for low latency.

it has the exact same API and version number as `Expronicon`, thus after you develop your metaprogramming code using Expronicon if you would like to reduce the loading latency and dependencies, you can simply switch the `using Expronicon` statement to `using ExproniconLite`. The rest should just work.

where `ExproniconLite` has no dependency on any other Julia packages. To see the difference

```julia
julia> @time using Expronicon
  0.113103 seconds (238.17 k allocations: 16.753 MiB, 2.85% compilation time)

julia> @time using ExproniconLite
  0.006301 seconds (20.55 k allocations: 2.176 MiB, 27.85% compilation time)

```

the only drop back currently is ExproniconLite doesn’t support Julia version before 1.3, since the printing of `Expr` was not parsable before `1.3`, where `Expronicon` is fully compatible with all Julia versions. But I’m thinking to most people would drop 1.0 support after the next LTS is out, so this is probably fine for most people, as e.g SciML/DiffEq.jl already dropped the support of 1.0 and only supports 1.3+

* * *

along with this announcement, Expronicon.jl now contains a set of tools to allow expanding certain macro that has the promise of generating dependency-free code, which is the `expand_project` function, a glance of `Expronicon`’s own “bootstrap” script:

> <https://github.com/Roger-luo/Expronicon.jl/blob/main/bin/bootstrap>

* * *

The next thing is we are planning to write [GitHub - thautwarm/MLStyle.jl: Julia functional programming infrastructures and metaprogramming facilities](https://github.com/thautwarm/MLStyle.jl) using `ExproniconLite` and the `expand_project` tool to “bootstrap” (note, to be precise, it’s not exactly the bootstrap process of a programming language compiler) a new version of MLStyle so that we can use the nice high-level programming feature provided by MLStyle for the development of MLStyle itself.

PS. I think @Mason asked about expanding `MLStyle.@match` at some point in Zulip, you might want to use this tool chain for that.
