$$HEADER$$

O que é eLua?

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, 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 seu excelente desempenho (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".

Funcionalidades

eLua permite que você execute Lua diretamente no seu microcontrolador. Um grande conjunto de módulos já existe para a programação de periféricos de um grande número de plataformas 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 portar 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 números inteiros). "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, otimizando ainda mais a execução se necessário.

Público Alvo

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 da arquitetura do hardware em uso. Utilizando eLua, o programador pode concentrar-se na implementação da sua aplicação, 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. eLua absorve a complexidade das diversas arquiteturas, sem afastar demais o usuário do hardware.

A lista abaixo resume o público-alvo de eLua:

Autores

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 são o projeto ReVaLuaTe, também desenvolvido pelo Bogdan Marinescu (como participante do concurso Renesas M16C Design de 2005) e o 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
ReVaLuaTe project picture Volta project picture



Contatos

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



Licença

eLua é um projeto Livre e de Código Aberto, distribuído 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 LICENSE na distribuição fonte para maiores detalhes.

O código de transporte XMODEM foi adaptado da biblioteca FreeBSD at91, de M. Warner Losh e é distribuído sob a licença BSD.

O módulo "pack" foi adaptado do módulo "lpack", de Luiz Henrique de Figueiredo e foi posto em domínio público.

O módulo "bit" foi adaptado da biblioteca "bitlib", de Reuben Thomas, distribuída sob a licença MIT.

A versão "integer only Lua" é baseada no patch "Go Long Lua!", de John D. Ramsdell (do site Lua Power Patches), posto em domínio público.

O alocador múltiplo de memória "dlmalloc" foi escrito por Doug Lea e foi posto em domínio público.

O stack TCP/IP usado atualmente é o uIP (Micro IP), escrito por Adam Dunkels e distribuído sob a licença BSD. A versão usada em eLua sofreu pequenas adaptações para se adequar à arquitetura embarcada.

O sistema de arquivos FAT usado é uma adaptação do "FatFs", escrito por Elm Chan e uma cópia da licença do FatFs pode ser encontrada na nossa distribuição, no arquivo LICENSE.fatfs.

A implementação de RPC (Remote Procedure Calls) de eLua é baseada na biblioteca LuaRPC, de Russell Smith e uma cópia da licença de LuaRPC pode ser encontrada na nossa distribuição, no arquivo LICENCE.luarpc.

Bibliotecas de suporte às MCUs são disponibilizadas por fabricantes das diversas plataformas suportadas, sob diversas licenças e termos. Detalhes podem ser encontrados na árvore do código fonte nas pastas src/platform/.

Todo o restante do código de eLua é distribuído sob a licença MIT.

$$FOOTER$$