I’m excited to announce a new package ExproniconLite that is generated by the
Expronicon package I announced previously:
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
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.
ExproniconLite has no dependency on any other Julia packages. To see the difference
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
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:
The next thing is we are planning to write GitHub - thautwarm/MLStyle.jl: Julia functional programming infrastructures and metaprogramming facilities 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.