• This repository has been archived on 15/May/2021
  • Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Erlang
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Early prototype of ErlT, an experimental Erlang dialect with first-class support for static typing.

ErlT - experimental Erlang dialect

This repository contains an early prototype of ErlT, an experimental Erlang dialect with first-class support for static typing.

ErlT targets existing Erlang users and codebases. It builds on Erlang to provide greater support for working with large Erlang codebases. It does this by introducing static types in a way which opens the door to greater IDE integration, safer refactorings, and faster, more specific feedback from the compiler.

The main goal of ErlT is enriching Erlang with static typing capabilities. This involves:

  • Providing a feasible path for gradually adopting ErlT with static typing for existing teams and codebases.
  • Designing and integrating static typing capabilities of ErlT in a coherent and ergonomic way. It should be a language that users want to use.

See more details in ErlT Vision.

ErlT overview

By default, ErlT is checked (i.e. statically typed), but it also allows some functions or modules to be unchecked (i.e. dynamically typed), both to aid migration and to allow code to be written for which we don't yet have a good typing model. ErlT requires adding specs to unchecked code in order for it to be accessible and typeable from checked code.

Scope of the current prototype includes:

  • first-class optional static typing model, based on Hindley-Milner
  • new first-class data types
  • interoperability between statically typed (checked) and dynamically typed (unchecked) of the language within a single module
  • improved variable scoping model: (almost) lexical scoping and more explicit rules for variable shadowing
  • minimal integrations with rebar3

See more details in ErlT Language Overview.

Examples of things that didn't make it into this prototype:

  • typing of concurrency primitives
  • namespaces and namespace management
  • stdlib and library wrapping mechanisms
  • IDE/editor integration
  • language capabilities to aid the adoption of static typing
  • tooling for migrating from Erlang to ErlT

Getting started with ErlT

Read ErlT Language Overview.

To play with ErlT code, see Examples.

Prerequisites:

  • erlang with OTP 23 or higher
  • rebar3 version 3.14.1 or higher

E.g. on MacOS:

brew install erlang rebar3

Quick Links

Contributing

This project is read-only and not accepting contributions.

Feel free to clone. It is open-sourced under the Apache 2 license. see LICENSE file for details.

Development

For information on how to navigate ErlT development, see the Development Guide.

More Repositories

1

stickers

This repository contains the iOS and Android sample apps and API for creating third party sticker packs for WhatsApp.
Java
2,711
star
2

proxy

This repository contains the WhatsApp proxy implementation for users to host their own proxy infrastructure to connect to WhatsApp for chat (VoIP is not currently supported)
Shell
1,163
star
3

waraft

An Erlang implementation of RAFT from WhatsApp
Erlang
508
star
4

eqwalizer

A type-checker for Erlang
Erlang
477
star
5

erlfmt

An automated code formatter for Erlang
Erlang
391
star
6

WhatsApp-Business-API-Setup-Scripts

The scripts related to setting up WhatsApp business API
373
star
7

StringPacks

Extracts localized strings from an Android app and stores it in a much more efficient format.
Java
124
star
8

erlfuzz

erlfuzz is a fuzzer for the Erlang ecosystem
Rust
112
star
9

WhatsApp-Nodejs-SDK

The official Meta Business Messaging WhatsApp Cloud API Node.js SDK.
TypeScript
102
star
10

erlang-language-platform

Erlang Language Platform. LSP server and CLI.
Rust
77
star
11

power_shell

Erlang shell with advanced features: evaluating non-exported functions and shortcuts for frequently used functions.
Erlang
74
star
12

tree-sitter-erlang

Tree-sitter Grammar for Erlang
C
65
star
13

WADebug

WhatsApp Debug - A command-line tool that will be used to troubleshoot installation of WhatsApp Business API.
Python
30
star
14

whatsapp-business-api-deployment-templates

This repo hosts the cloud templates which enable one-click deployment of their WhatsApp Business Platform On-Premise API on different cloud platforms with stable high messaging throughput.
HCL
24
star
15

erldist_filter

erldist_filter NIF for filtering and logging Erlang Dist Protocol messages
C
13
star
16

WhatsApp-OTP-Sample-App

Sample app that integrates with WhatsApp OTP (One-Time Password) copy code and "one-tap" autofill features. This project shows how to send and receive OTP code from WhatsApp and best practices around integration.
Swift
10
star
17

WhatsApp-Android-OTP-SDK

WhatsApp Android OTP SDK helps you integrate with one-time password solution provided by WhatsApp.It provides handy functions that simplifies the integration work.
Java
4
star
18

WhatsApp-Flows-Tools

Tools and examples to help you create WhatsApp Flows https://developers.facebook.com/docs/whatsapp/flows
1
star