All Projects β†’ gleam-lang β†’ otp

gleam-lang / otp

Licence: Apache-2.0 license
πŸ“« Fault tolerant multicore programs with actors

Programming Languages

Gleam
7 projects
erlang
1774 projects

Projects that are alternatives of or similar to otp

wasmcloud-otp
wasmCloud host runtime that leverages Elixir/OTP and Rust to provide simple, secure, distributed application development using the actor model
Stars: ✭ 197 (+16.57%)
Mutual labels:  otp, actors
ants
What is this, a repo for ants?
Stars: ✭ 23 (-86.39%)
Mutual labels:  otp
DPOTPView
Customisable OTP view and Passcode view
Stars: ✭ 52 (-69.23%)
Mutual labels:  otp
plug
πŸ”Œ A Gleam HTTP service adapter for the Plug web application interface
Stars: ✭ 25 (-85.21%)
Mutual labels:  gleam
SOMns
SOMns: A Newspeak for Concurrency Research
Stars: ✭ 62 (-63.31%)
Mutual labels:  actors
BJOTPViewController
Entering OTP made simpler.
Stars: ✭ 42 (-75.15%)
Mutual labels:  otp
2FAuth
A Web app to manage your Two-Factor Authentication (2FA) accounts and generate their security codes
Stars: ✭ 664 (+292.9%)
Mutual labels:  otp
multiOTPCredentialProvider
multiOTP Credential Provider is a V2 Credential Provider for Windows 7/8/8.1/10/2012(R2)/2016 with options like RDP only and UPN name support
Stars: ✭ 121 (-28.4%)
Mutual labels:  otp
sockerl
Sockerl is an advanced Erlang/Elixir socket framework for TCP protocols and provides fast, useful and easy-to-use API for implementing servers, clients and client connection pools.
Stars: ✭ 26 (-84.62%)
Mutual labels:  otp
issuer-icons
Vector graphics of one-time password issuer logo's, used in Raivo OTP for iOS.
Stars: ✭ 79 (-53.25%)
Mutual labels:  otp
akka-contextual-actor
A really small library (just a few classes) which lets you trace your actors messages transparently propagating a common context together with your messages and adding the specified values to the MDC of the underlying logging framework.
Stars: ✭ 17 (-89.94%)
Mutual labels:  actors
xsystem
Building Blocks for XState-based Actor Systems.
Stars: ✭ 40 (-76.33%)
Mutual labels:  actors
yubitell
Silently extract a YubiKey serial number
Stars: ✭ 15 (-91.12%)
Mutual labels:  otp
jiface
A Clojure-idiomatic wrapper around Erlang's JInterface
Stars: ✭ 27 (-84.02%)
Mutual labels:  otp
clojang
Clojure API for Erlang/OTP Communications (built on jiface)
Stars: ✭ 61 (-63.91%)
Mutual labels:  otp
kronos
Management of arithmetic operations on dates
Stars: ✭ 23 (-86.39%)
Mutual labels:  otp
rx-otp
HMAC-based (HOTP) and Time-based (TOTP) One-Time Password manager. Works with Google Authenticator for Two-Factor Authentication.
Stars: ✭ 79 (-53.25%)
Mutual labels:  otp
otp
One Time Password for 2-Factor-Authentication implemented in Rust
Stars: ✭ 21 (-87.57%)
Mutual labels:  otp
Fibrous
Concurrency library for .Net
Stars: ✭ 47 (-72.19%)
Mutual labels:  actors
effpi
Verified message-passing programs in Dotty
Stars: ✭ 42 (-75.15%)
Mutual labels:  actors

Gleam OTP

GitHub release Discord chat CI

A Gleam library for building fault tolerant multi-core programs using the actor model. It is compatible with Erlang's OTP framework.

This library is experimental and will likely have many breaking changes in the future!

Gleam’s actor system is built with a few primary goals:

  • Full type safety of actors and messages.
  • Be compatible with Erlang’s OTP actor framework.
  • Provide fault tolerance and self-healing through supervisors.
  • Have equivalent performance to Erlang’s OTP.

Usage

Add this library to your Gleam project.

gleam add gleam_otp

How to understand the Gleam OTP library

  1. Read the rest of this README.
  2. Understand Erlang's OTP library.
  3. this blog post is a decent jumping off point.
  4. Gleam OTP test suite demonstrates what the library offers in more detail.

Actor hierarchy

This library defines several different types of actor that can be used in Gleam programs.

      Process
      ↙    β†˜
   Actor   Task
     ↓
Supervisor

Process

The process is the lowest level building block of OTP, all other actors are built on top of processes either directly or indirectly. Typically this abstraction would be not be used very often in Gleam applications, favour other actor types that provide more functionality.

Actor

The actor is the most commonly used process type in Gleam and serves as a good building block for other abstractions. Like Erlang's gen_server it will automatically handle OTP's debug system messages for you.

Task

A task is a kind of process that performs a single task and then shuts down. Commonly tasks are used to convert sequential code into concurrent code by performing computation in another process.

Supervisor

Supervisors is a process that starts and then supervises a group of processes, restarting them if they crash. Supervisors can start other supervisors, resulting in a hierarchical process structure called a supervision tree, providing fault tolerance to a Gleam application.

Limitations and known issues

This library is experimental there are some limitations that not yet been resolved.

  • There is no support for named processes.
  • Actors do not yet support all OTP system messages. Unsupported messages are dropped.
  • Supervisors do not yet support different shutdown periods per child. In practice this means that children that are supervisors do not get an unlimited amount of time to shut down, as is expected in Erlang or Elixir.
  • This library has not seen much testing compared to the Erlang OTP libraries, both in terms of unit tests and real world testing in applications.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].