[Erlang Systems]

1 Introduction

Erlang is a programming language specifically designed to build fault-tolerant, distributed systems which can contain a large number of concurrent processes. The Erlang Development Environment described in this User's Guide contains the following building blocks:

Erlang is a high-level functional language. The language combines important attributes of declarative languages with constructs for supporting concurrency, distribution, and error-detection. Erlang programs are made up of functions which are grouped into modules. Functions spawn processes which are the executing elements of an Erlang system. Processes communicate by sending and receiving message via ports, which themselves behave like processes. A built-in distribution mechanism enables designers to create a system whose processes may run on different computers. Erlang handles fault detection and recovery in distributed systems and has fault recovery schemes, which can be customized. These facilities are described in Chapter 3; Design Principles.

The Development Environment includes several facilities for creating interfaces between applications written in Erlang and other programming languages. These include:

The Development Environment contains numerous tools to support the tasks of developing and testing applications. These tools include:

These tools are described in detail in Chapters 2, 6 and 7 of this User's Guide. Refer also to the Reference Manual.

1.1 The Erlang Runtime System

The Erlang runtime system is made up of the following parts:

1.1.1 The Erlang Virtual Machine

The Erlang virtual machine runs on top of a host operating system. The Erlang runtime system frequently runs as a single process in the host operating system. However, in many of the operating systems that support Erlang, it is possible to run several completely unrelated Erlang virtual machines in parallel. The following support is provided for Erlang programs:

1.1.2 The Kernel

The kernel is always the first application to be started. It provides low-level services which are necessary for an Erlang system to start, to participate in a distributed system, to handle errors, and to perform IO operations.

Refer to the Reference Manual, section kernel where each module is fully described. Chapter 4 of this User Guide also has information about these services.

1.1.3 Standard Library

The standard library contains a large number of re-usable software modules which greatly aid the Erlang system developer. Many of these modules are specially adapted to programming concurrent, distributed systems.

The Reference Manual describes these modules in detail. Modules which solve common programming tasks are also described in Chapter 3 of this User's Guide. These include gen_server, gen_event, and gen_fsm

1.2 Scope and Purpose

This manual describes the Erlang Development Environment. The major focus is twofold:

All of the chapters provide numerous examples which illustrate the concepts and the theories described and a glossary defines the terminology used.

1.2.1 Exclusions

This User Guide assumes that the reader is familiar with the Erlang programming language and does not explain how to program in Erlang. References to programming manuals are listed at the end of this chapter.

1.3 About This Book

The chapters in this User Guide are independent of each other and can be read in any order.

1.3.1 Typographical Conventions

The following typographical conventions are used in this user's guide.

convention where used
command To show menu selections and equivalent command line entries
To show keyboard entries at system prompts
code To highlight Erlang code, module and function names, arguments, variables, and file names.
Examples of Typographical Conventions

1.4 Where to Find More Information

Refer to the following documentation for more information:


Copyright © 1991-1999 Ericsson Utvecklings AB