A 30-lines library for object-orientation in Lua

30log logo

Join the chat at https://gitter.im/Yonaba/30log Build Status Lua License Coverage Status

30log, in extenso 30 Lines Of Goodness is a minified framework for object-orientation in Lua. It provides named and unnamed classes, single inheritance, metamethods and a basic support for mixins. In 30 lines.
Well, somehow.



Current release is 1.3.0. See other releases.


This will clone the repository, as-is, and deliver the cutting edge release. Might be unstable.

git clone git://github.com/Yonaba/30log.git


This will download and install the latest stable release from Luarocks servers.

luarocks install 30log


A full documentation is available on the wiki. Find the project page at yonaba.github.io/30log.

Class-Commons support

Class-Commons is an interface which provides a common API for a wide range of Object Orientation libraries in Lua. There is a small plugin, originally written by TsT which provides compatibility between 30log and Class-commons.
See the module 30log-commons.lua.


You can run the included specs with Telescope using the following command from Lua from the root foolder:

lua tsc -f specs/*

About the source


30log was initially designed for minimalistic purposes. But then commit after commit, I came up with a source code that was obviously surpassing 30 lines. As I wanted to stick to the "30-lines" rule that defines the name of this library, I had to use an ugly syntax which not much elegant, yet 100 % functional.
For those who might be interested though, the file 30log-clean.lua contains the full source code, properly formatted and well indented for your perusal.


The file 30log-global.lua features the exact same source as the original 30log.lua, excepts that it sets a global named class. This is convenient for Lua-based frameworks such as Codea.


The file 30log-singleton.lua is a singleton pattern implementation for use with 30log.



This work is MIT-Licensed.