[erlang-questions] [ANN] geas 2.0.0-alpha
Wed Nov 25 11:57:31 CET 2015
I'm hereby announcing an alpha-release of the geas 2.0 module.
A major version change for a major new feature.
Geas can now give the compatibility of beam files with official Erlang
releases from R15B to 18.1 .
For example, using application:ensure_all_started/1 can only be used
starting R16B01 or maps starting 17.0. As well pg module cannot be used
Geas extract all the function calls from abstract code (if available)
and compare to its database .
Geas database is a .hrl file containing all modules and exported
functions informations from official releases (even undocumented ones)
with their starting and eventually ending version.
This database is created from incremental Erlang release difference
Geas gives you finally the official Erlang release window where the beam
files are runnable. So it can help you to :
- Write your Travis CI (or equivalent) config file
- Know if beam files can run with an Erlang VM
- Verify that your dependencies can run on same Erlang release window
than your project
- Write clear statements in your README project files
Note, it is not a guarantee that beam files will run correctly on
the whole release window (some bugs may exists in older release for
instance). But this will tell you it cannot work correctly outside this
As well Geas can inform you on what are the functions which reduce the
Erlang release window, so it can then help you to :
- Modify your code in order to increase runnable release window
- Know if application/module have to be fixed in order to run on the
last official release
In this alpha version, only a raw analyze is done of beam files and no
attempt is done to understand the code. So, even if a function is
protected with a 'catch', it will be part of the analyze.
Further work will be needed to add a smarter analyze of code.
However I plan to add some ways to ignore some module/function if necessary.
I hope you will enjoy Geas 2.0 ! Feedback is welcome...
PS : Why starting from R15 ? Because older releases cannot compile on my
machines. But if some people are still using older releases and wanting
to contribute to the project, it is very easy. Contact me in such case.
(available in Erlang term and Yaml format)
More information about the erlang-questions