Skip to content

lfe/rebar3

Repository files navigation

rebar3_lfe

CI/CD Hex.pm LFE Erlang License

Project Logo

A modern rebar3 plugin for LFE projects

✨ Why rebar3_lfe?

  • 🚀 Fast: Incremental compilation is 10-30x faster than full rebuilds
  • 🎯 Correct: Header changes automatically trigger recompilation
  • 🛡️ Reliable: >90% test coverage, tested on Erlang/OTP 24-28
  • 📦 Powerful: Nested module packages with proper cleanup
  • 💬 Clear: Professional error messages that help you fix issues
  • 🔧 Modern: Uses rebar3's latest compiler infrastructure

Quick Start

%% rebar.config
{plugins, [
    {rebar3_lfe, "0.5.0"}
]}.

{deps, [
    {lfe, "2.2.0"}
]}.
rebar3 lfe compile    # Compile your code
rebar3 lfe repl       # Start REPL
rebar3 lfe eval '(+ 1 2 3)'  # Evaluate LFE expressions
rebar3 lfe ltest      # Run tests

See Full Quick Start →

Features

🔥 Smart Compilation

$ rebar3 lfe compile
Compiling 10 LFE files...
Progress: 10/10 (100%)
Compiled 10 files in 1.25s

$ touch include/records.lfe
$ rebar3 lfe compile
Compiling 3 LFE files...  # Only files using the header
Compiled 3 files in 0.3s

🤖 Updated REPL

REPL support in rebar3_lfe has changed slightly in 0.5.0:

  • Easier support for customising the LFE REPL prompt
  • rlwrap for most consistent experience with readline support (dedicated LFE history file, etc.)

There is a new Makefile target that is included with all generated projects (rebar3 new lfe-*) which makes it easy for projects to use rlwrap and prompt customisations:

make repl

LFE REPL

Autocompletion support is current in progress; when complete, example usage will be shown here.

📦 Package System

Optional!

Organize your code by directories:

src/
├── myapp.lfe           → myapp module
└── myapp/
    ├── core.lfe        → myapp.core module
    └── utils/
        └── helpers.lfe → myapp.utils.helpers module

🎨 Great Errors

src/myapp.lfe:10: error: undefined function foo/1
  Did you mean: bar/1?

⚡ All the Commands

Core:

  • compile - Smart, incremental compilation
  • clean - Remove build artifacts
  • repl - Interactive LFE shell
  • eval - Evaluate LFE expressions
  • ltest - Run tests
  • versions - Version information

Scripts & Escripts:

  • run - Execute LFE scripts (main/1)
  • escriptize - Build standalone executables
  • run-escript - Execute built escripts

Releases:

  • release - Build OTP releases
  • run-release - Manage releases (start/stop/console/etc)

Utilities:

  • confabulate - Convert LFE data to Erlang format

See All Commands →

Documentation

Examples

Compatibility

Erlang/OTP rebar3 r3lfe Status
28 3.25 0.5.0 ✅ Tested
27 3.25 0.5.0 ✅ Tested
26 3.25 0.5.0 ✅ Tested
25 3.22 0.5.0 ✅ Tested
24 3.22 0.5.0 ✅ Tested

Breaking Changes from 0.4.x

Version 0.5.0 is a complete rewrite with breaking changes:

  • Module prefix: rebar3_lfe_*r3lfe_*
  • Faster, more reliable compilation
  • Better error messages

Migration Guide →

Contributing

See contributing.

git clone https://github.com/lfe/rebar3.git rebar3_lfe
cd rebar3_lfe
rebar3 compile
make check

Support

License

Apache 2.0 - See LICENSE