Skip to content

Welcome to Abel Documentation

Abel is a lightweight microservices framework for Lua. It focuses on simple, fun experience of writing modular web services.

Abel's name comes from abelo, which means bee in Esperanto. It further comes from abelujo, which means Hive (the project's former name).

Abel is currently under heavy development, and many functionalities are yet to be implemented. Nevertheless, feel free to try it out, and any feedback would be appreciated!

Getting Started

There are a few places you can start reading:

Features

  • Fully multi-threaded & asynchronous
  • Writing, deploying and iterating Lua microservices without breaking a sweat
  • Compliant to HTTP standards and JSON RESTful API conventions
  • Sandbox environment, with limited yet powerful Lua API

Basic Concepts

Abel follows three major principles:

  • Asynchronous. Reading a file, requesting an API, or other things that can be made asynchronous, will never block other instance to execute.

  • Sandboxed. an Abel service can only access its own contained resources, and is fully blocked from the outside world.

  • Standardized. Abel conforms with HTTP standards and RESTful JSON API conventions (unless you want to break them intentionally).

Thanks to Rust, Tokio, Hyper and Lua (as well as its binding mlua), these ideal designs are way easier to realize.

Lua Version Compatibility

Abel currently uses Lua 5.4 as its runtime. Lower versions and LuaJIT support is under consideration for now.

License

Abel is licensed under the MIT License.