Applications

by Alan Milligan last modified Jul 06, 2016 05:56 AM

Mnesia

Distributed DataBase Management System (DBMS), appropriate for telecommunications applications and other Erlang applications which require continuous operation and exhibit soft real-time properties.

  • A relational/object hybrid data model which is suitable for telecommunications applications.

  • A specifically designed DBMS query language, QLC (as an add-on library).

  • Persistence. Tables may be coherently kept on disc as well as in main memory.

  • Replication. Tables may be replicated at several nodes.

  • Atomic transactions. A series of table manipulation operations can be grouped into a single atomic transaction.

  • Location transparency. Programs can be written without knowledge of the actual location of data.

  • Extremely fast real time data searches.

  • Schema manipulation routines. It is possible to reconfigure the DBMS at runtime without stopping the system.

 

Dialyzer

Dialyzer is a static analysis tool that identifies software discrepancies such as type errors, unreachable code, unnecessary tests, etc in single Erlang modules or entire (sets of) applications.

 

Eunit

Testing framework (+surefire for Maven/Bamboo)

 

Reltool

Reltool is a release management tool. It analyses a given Erlang/OTP installation and determines various dependencies between applications. The graphical frontend depicts the dependencies and enables interactive customization of a target system. The backend provides a batch interface for generation of customized target systems.

The tool uses an installed Erlang/OTP system as input. root_dir is the root directory of the analysed system and it defaults to the system executing reltool. Applications may also be located outside root_dir. lib_dirs defines library directories where additional applications may reside and it defaults to the directories listed by the operating system environment variable ERL_LIBS. See the module code for more info.

An application directory AppDir under a library directory is recognized by the existence of an AppDir/ebin directory. If this does not exist, reltool will not consider AppDir at all when looking for applications.

It is recommended that application directories are named as the application, possibly followed by a dash and the version number. For example myapp or myapp-1.1.

Finally single modules and entire applications may be read from Escripts.

Some configuration parameters control the behavior of Reltool on system (sys) level. Others provide control on application (app) level and yet others are on module (mod) level. Module level parameters override application level parameters and application level parameters override system level parameters. Escript escript level parameters override system level parameters.

 

Rebar(3)

Erlang tool that makes it easy to create, develop, and release Erlang libraries, applications, and systems in a repeatable manner.

Rebar3 will:

  • respect and enforce standard Erlang/OTP conventions for project structure so they are easily reusable by the community;
  • manage source dependencies and Erlang packages while ensuring repeatable builds;
  • handle build artifacts, paths, and libraries such that standard development tools can be used without a headache;
  • adapt to projects of all sizes on almost any platform;
  • treat documentation as a feature, and errors or lack of documentation as a bug.

Rebar3 is also a self-contained Erlang script. It is easy to distribute or embed directly in a project. Tasks or behaviours can be modified or expanded with a plugin system flexible enough that even other languages on the Erlang VM will use it as a build tool.