[erlang-questions] [ANN] geas 2.0.0-alpha

PAILLEAU Eric eric.pailleau@REDACTED
Wed Nov 25 11:57:31 CET 2015


Hi list,

I'm hereby announcing an alpha-release of the geas 2.0 module.

https://github.com/crownedgrouse/geas

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 
after 17.5.

Geas extract all the function calls from abstract code (if available)
and compare to its database [1].
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 
inventory [2]

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 
window.

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...

Regards

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.

[1] https://github.com/crownedgrouse/geas/blob/master/src/geas_db.hrl
[2] https://github.com/crownedgrouse/geas/tree/master/doc/reldiffs 
(available in Erlang term and Yaml format)







More information about the erlang-questions mailing list