Language shapes the way we think,
and determines what we can think about.
— B.L. Whorf


Like any other Internal DSL, lua-Coat is dual :

  • an Oriented Object Language
  • a Lua library

lua-Coat shares with Lua : the same syntax and the same style.

Language design is library design
and library design is language design.
— old
Bell Labs proverb


Perl5, like Lua, has no OO model, just OO mechanism. This allows a proliferation (or experimentation) of different model.

Now with Moose, Perl5 find its ultimate OO model. Moose borrows all the best features from Perl6, CLOS (LISP), Smalltalk and many other languages. Moose is built on top of a metaobject protocol, with full introspection.

Coat is light-weight Perl5 module which just mimics Moose. Now, Coat is deprecated, but there are some successors Mouse, Moo, Mo.

Finally, lua-Coat is the Lua port of Coat.


lua-Coat is in beta stage.

It's developed for Lua 5.1, 5.2 & 5.3.


lua-Coat source can be downloaded from Framagit.


lua-Coat is available via LuaRocks:

luarocks install lua-coat

or manually, with:

make install


The test suite requires the module lua-TestAssertion.

make test

Copyright © 2009-2018 François Perrad

This library is licensed under the terms of the MIT/X11 license, like Lua itself.