eLua significa Embedded Lua e o projeto projeto visa trazer a funcionalidade completa da linguagem de programação Lua para o mundo do desenvolvimento de software embedded.
A implementação busca oferecer isto de uma forma simples, para que não só desenvolvedores experientes mas também iniciantes no mundo embarcado e até mesmo usuários finais dos sistemas, possam desenvolver e alterar os programas dos seus produtos.
eLua não é uma versão reduzida de Lua, muito pelo contrário, ela oferece os recursos completos da versão desktop de Lua, complementando-a ainda com características específicas para o uso embedded. Oferece também a mesma possibilidade de escolha no uso de implementações diferentes de Lua (ex: Lua Inteiro x Lua Ponto-Flutuante). Muito trabalho foi e ainda será feito no sentido de tornar Lua mais "amigável" no mundo embedded, como as características já adicionadas que permitem a redução dos requisitos de memória.
Lua é o exemplo perfeito de uma linguagem mínima e, ainda assim, totalmente funcional. Embora geralmente anunciada como uma linguagem de "scripting" (e utilizada fortemente como tal na indústria de jogos e em tantas outras áreas), Lua é capaz de executar programas como qualquer outra linguagem tradicional. Grandes sistemas e aplicações (desktop ou web) hoje, são desenvolvidos utilizando seu poder e sua performance (ex: Adobe Lightroom, World of Warcraft, ...). Suas reduzidas necessidades de recursos de hardware, a tornam especialmente adequada para um grande número de famílias de microcontroladores. A alta portabilidade intrínseca do código Lua original (que é ANSI C e funciona praticamente em todas as plataformas que se conhece hoje), combinada com a arquitetura do software de eLua, altamente portátil, permite a migração fácil para uma grande variedade e arquiteturas de microcontroladores. As bibliotecas de acesso a periféricos disponibilizadas por eLua também são portáteis por definição, podendo-se assim executar um mesmo programa em Lua, sem ou com poucas modificações, em qualquer hardware que "rode" eLua (o status do projeto & roadmap mostram uma lista sempre crescente de plataformas com suporte à eLua). eLua herdou o design minimalista e funcional de Lua, mantendo a filosofia bem conhecida do "KISS" - "Keep It Small and Simple", que significa "Mantenha seu código e sua arquitetura simples e sua complexidade reduzida".
eLua permite que você execute Lua diretamente no seu microcontrolador. Um grande conjunto de módulos complementares já existe para a programação de periféricos eLua e o desenvolvimento de novos tem um crescimento cada vez mais rápido.
Relacionamos a seguir algumas funções que estão prontas ou sendo implementadas:
Para obter mais informações sobre as funcionalidades (implementadas e previstas) em eLua veja a página de status.
O projeto foi concebido de forma que migrar eLua para uma outra plataforma ou mesmo arquitetura, seja algo fácil de ser realizado. Atualmente, esta migração está restrita às plataformas para as quais gcc + newlib ou toolchains completos (ex:CodeSourcery) estejam disponíveis. Esta restrição irá desaparecer em um futuro próximo, já que eLua terá sua própria libc e portanto estará disponível em um leque mais amplo de MCUs.
Assim como para os ambientes Desktop, Lua em eLua está disponível em duas implementações: "Lua padrão" (usando ponto flutuante) e "Lua inteiro" (usando inteiro). "Lua padrão" realiza operações de ponto flutuante (mais lentas devido a emulação via software no MCU), enquanto "Lua inteiro" realiza operações com números inteiros (suporte para ponto fixo e ponto flutuante podem ser adicionados em módulos separados) e assim será mais rápido.
eLua tem uma audiência ampla e variada, desde recém-chegados ao mundo embedded que desejam um fácil e poderoso ambiente para prototipação, desenvolvimento e produção rápida de aplicações, como desenvolvedores altamente qualificados, que precisam expandir seus programas com recursos de bibliotecas de alto nível com muita portabilidade.
eLua permite que programadores
com pouca experiência no mundo embedded utilizem a simplicidade
e o poder da linguagem de programação Lua, sem precisarem se preocupar com as complexidades e
da arquitetura do hardware em uso.
Utilizando eLua, o programador pode concentrar-se na implementação do seu programa,
sem ter que se preocupar com detalhes de acessos à registros, configuração de periféricos e mesmo gerenciamento de memória.
Com isso, aumentamos a produtividade e eliminamos tarefas muitas vezes frustrantes de lidar com drivers
complexos de plataformas específicas.
A lista abaixo resume o público-alvo de eLua:
eLua é um projeto conjunto de Bogdan Marinescu, um desenvolvedor de software de Bucarest, na Romênia e Dado Sutter, que dirige o Laboratório LED Lab na Pontifícia Universidade Católica, PUC-Rio, no Rio de Janeiro, Brasil.
Suas origens vêm dos projetos ReVaLuaTe, também desenvolvido pelo Bogdan Marinescu (como participante do concurso Renesas M16C Design de 2005) e do Projeto Volta, desenvolvido por Dado Sutter na PUC-Rio entre 2005 e 2007.
eLua é um projeto Open Source e uma lista crescente de colaboradores pode ser encontrada na nossa página de créditos
Projeto ReVaLuaTe | Projeto Volta |
Os autores de eLua podem ser contactados em:
Bogdan Marinescu: bogdan.marinescu -at- gmail.com
Dado Sutter: dadosutter -at- gmail.com
Sejam bem-vindos e compartilhem suas dúvidas e sugestões em nossa Lista de Discussão
eLua é Open Source e é distribuída gratuitamente sob a licença MIT.
A licença MIT, diferentemente de outras licenças de código aberto (ex: GPL), permite que produtos de código proprietário sejam desenvolvidos utilizando eLua.
O código Lua (com todas as mudanças específicas de eLua) está incluído na árvore de origem e é, naturalmente, licenciado sob a mesma licença MIT de Lua.
Há ainda outros (poucos) componentes com diferentes licenças hoje, em uso no código de eLua. Consulte o arquivo COPYING na distribuição fonte para maiores detalhes.
$$FOOTER$$