lua-language.gif
Langage de script multiplate-forme, open-source
Version stable actuelle : 5.4 (29/06/2020)
Licence MIT (en FR)
Site officiel : www.lua.org
Téléchargement

 

Compact, léger, flexible, Lua est un langage de script extrêmement puissant et rapide, de dix à trente fois plus rapide que d'autres langages de scripts tel que TCL, Perl, Python, Ruby ou PHP.

Sa force : sa petite taille et sa portabilité. Compilateur, interpréteur et librairies standards n'occupent qu'environ 150 kilo-octets une fois compilés ! C'est facilement dix fois moins qu'un environnement Perl ou Python réduit à son strict minimum, ou cent fois moins qu'un compilateur C++ moderne en ligne de commande.

L'intégralité de son code source est écrit en ANSI C et respecte la norme C++98 ; il peut donc être compilé au choix comme un programme C ou C++.

Conçu sous forme de librairie C, il peut être très simplement embarqué à l'intérieur d'une application ou d'un micrologiciel et appelé comme une extension du programme principal : c'est ce qui lui a valu sa notoriété, notamment dans le secteur du développement de jeux.

Il est idéal pour configurer, scripter, prototyper.

Il est entièrement libre et gratuit. Distribué sous la licence MIT, vous pouvez l'intégrer dans tous types d'applications et modifier ses sources comme bon vous semble.

Tour d'horizon de Lua (extrait du chapitre éponyme du livre Le guide de Lua et ses applications) présentant des forces et faiblesses du langage Lua.

Bon à savoir !
Lua se prononce <loua> et signifie Lune en portugais. Il ne s'agit donc pas d'une abréviation, le mot s'écrit avec une simple majuscule initiale (et non LUA).

Des performances dopées par LuaJIT

Déjà nativement très performant, la réputation de Lua s'est très vite construite sur celle de LuaJIT, une implémentation alternative dépassant toutes les attentes en matière de rapidité. 

LuaJIT, une implémentation de référence

LuaJIT (Just-In-Time Compiler) est un projet mené par Mike Pall qui remplace l'interpréteur standard de Lua par un compilateur à la volée. En termes simples, au lieu d'interpréter le code ligne par ligne à chaque fois, LuaJIT analyse les parties fréquemment utilisées de votre code et les compile en code machine natif, optimisé pour le processeur.

Les gains de performance sont spectaculaires. Un script exécuté avec LuaJIT peut devenir de 10 à 100 fois plus rapide que sur l'interpréteur standard, rivalisant souvent avec des langages compilés comme le C. 

La compatibilité de LuaJIT s'arrête aux versions 5.1/5.2  de Lua, mais ce choix est délibéré pour garantir une stabilité et des performances extrêmes.

Quelques exemples d'utilisation de LuaJIT

  • OpenResty intègre LuaJIT pour permettre le développement de logiques complexes (API, firewalls applicatifs, etc.) directement au cœur du serveur web, capable de gérer des dizaines de milliers de requêtes par seconde.
  • Cloudflare : Une grande partie de son infrastructure, qui sécurise et accélère des millions de sites web, repose sur LuaJIT. Leurs règles de pare-feu applicatif (WAF) et de nombreux services "edge" sont écrits en Lua pour garantir une latence minimale.
  • Jeux vidéo et finance : Bien que de nombreux jeux utilisent l'interpréteur standard, les projets nécessitant une performance maximale pour la physique, l'IA ou le traitement de données (comme dans le trading à haute fréquence) se tournent souvent vers LuaJIT.

Un standard de l'industrie dans le scripting de jeux vidéo et les systèmes embarqués

Qui découvre Lua, en devient vite un adepte, ce langage facile à apprendre et à intégrer offrant de vastes possibilités. C'est ce qui explique sa rapide diffusion : créé en 1993, pour répondre aux besoins de l'industrie brésilienne, il est désormais utilisé dans de nombreux secteurs et pays, et compte régulièrement depuis 2011 parmi les 20 langages les plus utilisés dans le monde répertoriés par l'index TIOBE.

Il faut dire, Lua est souvent utilisé comme deuxième langage pour scripter et écrire des extensions dans de nombreux logiciels. Par exemple 40 % du code de Adobe Photoshop Lightroom est écrit en Lua (voir aussi conférence de Mark Hamburg /Adobe : It's all glue : Building a desktop application with Lua ). De même, Lua est présent dans VLC, Wireshark, Nginx, Wikipédia a adopté Lua pour refondre son système de templates, etc.

Une grande part de sa popularité provient indubitablement de son utilisation dans le secteur du jeu vidéo.

Une place de choix dans le développement de jeux vidéo

logo du front line awards 2011 Début janvier 2012, Lua s'est vu attribuer le prix Front Line Award 2011 par le magazine de référence dans l'industrie du jeu vidéo Game Developers Magazine dans la catégorie Outils de développement.

Très prisé par les studios de développement de jeux en tant que langage d'extension, Lua apporte aux productions une grande modularité et permet de déléguer certaines parties du développement à des collaborateurs non-développeurs : game designersound designer, etc. Les jeux produits y gagnent en richesse et en qualité.

Le mouvement a été initié par les développeurs du World of Warcraft, qui eurent l'idée de proposer aux amateurs d'ajouter leurs propres modules au jeu. Lua permettait de développer des fonctionnalités sans toucher au code source. L'initiative remporta un succès immédiat et des centaines de modules ont pu ainsi être développés, enrichissant le jeu de toutes sortes de fonctionnalités aussi variées les unes que les autres : cartographies, bloc-notes, gestion d'inventaire…

Aujourd’hui c’est la plateforme Roblox qui a pris la relève : les utilisateurs peuvent y concevoir leurs propres jeux ou mondes virtuels en Lua (ou plus exactement dans un dialecte de Lua, le Luau) via une interface très intuitive, puis les partager avec d’autres. Les créateurs peuvent partir de zéro ou s’appuyer sur des modèles prédéfinis, puis intégrer des scripts, ajouter des objets et des textures personnalisés.

On citera également Celeste ou Factorio qui utilisent largement Lua pour leur logique de jeu et leur modding. Ou encore les moteurs 2D LÖVE (ou Love2D) et Defold, dont Lua est le langage principal.

Lua est désormais enseigné dans plusieurs écoles spécialisées dans le jeu vidéo et fait partie des compétences requises pour les level designer.

Un incontournable de l’embarqué

Lua est également très prisé dans le domaine de l’électronique et des systèmes embarqués, même si récemment son emploi dans ce domaine accuse un léger recul au profit de Rust ou de Python (via MicroPython). Il reste une référence pour les cas où la légèreté, la portabilité et l’extensibilité sont prioritaires, notamment dans l’IoT, certains firmwares et des environnements nécessitant un moteur de script personnalisable.

Interview de Roberto Ierusalimschy, créateur du langage Lua
Roberto Ierusalimschy est professeur associé au département informatique de l'université PUC-Rio au Brésil. Il a coinventé le langage Lua en  1993 avec Waldemar Celes et Luiz Henrique de Figueiredo. Lire la suite

45-visuel1469466716.jpgCréer des interfaces graphiques en Lua avec wxWidgets
Il existe des liaisons (bindings) en Lua pour utiliser la plupart des outils dédiés à la conception d'interfaces graphiques (GTK+, Qt, FLTK, tekUI, Java). Parmi elles, wxLua vous permettra de tirer parti de wxWidgets. Cet outil développé par John Labenski en 32 bits est très stable et simple d'utilisation. En revanche, il a peu évolué. La version mise à disposition sur le... Lire la suite

44-visuel1469440380.pngDévelopper pour le web en Lua
Lua est d'abord connu pour son utilisation dans le développement de jeux vidéo et l'embarqué, notamment la domotique. Mais sa puissance et sa simplicité le prête à de nombreux usages. Et sa communauté et son écosystème sont suffisamment vastes pour vous offrir généralement les outils adaptés. Il en va ainsi pour le développement web. Il existe... Lire la suite

Logo du studio Mis-ClosDévelopper des jeux mobiles en Lua avec Corona SDK
Interview de Michaël Peiffert, fondateur du studio indépendant lyonnais Mis-Clos. Michaël développe ses jeux en Lua sur Corona SDK, qui offre un kit complet de développement très avenant pour développer simplement et rapidement des applis iOS et Android. Lire la suite

détail d'une carte stm32F4Portage en Lua des fonctionnalités Arduino
Si vous vous intéressez aux systèmes embarqués, au prototypage et aux microcontrôleurs, ce projet de développement en Lua d'une bibliothèque inspirée du projet arduino pour les cartes STM32F4-DISCOVERY vous intéressera certainement. Il a été conduit en 2011-2012, sous la direction de Olivier Richard, par deux élèves ingénieur de 5 e... Lire la suite