Pyroeis

Lua in your JavaScript applications, with an execution budget decided by the host code.

A Lua 5.4.6 VM for browsers and Node.js, an optional numeric compiler and a tool to translate your Lua sources to JavaScript.Une VM Lua 5.4.6 pour le navigateur et Node.js, un compilateur numérique optionnel et un outil pour traduire vos sources Lua en JavaScript.

npm install @datamoc/pyroeis
Pyroeis logo: a red Mars in a night sky

Try the engineEssayez le moteur

Limits put to the testLes limites à l’épreuve

Run the same scripts on Fengari 0.1.5 and Pyroeis. Watch costly pattern searches, caught errors and allocation ceilings.Exécutez les mêmes scripts sur Fengari 0.1.5 et Pyroeis. Observez les recherches de motifs coûteuses, les erreurs attrapées et les plafonds d’allocation.

Measure performanceMesurer les performances

Upstream Fengari, interpreted Pyroeis, compiled Lua and native JavaScript: same algorithms, same inputs, results verified in your browser.Fengari amont, Pyroeis interprété, Lua compilé et JavaScript natif : mêmes algorithmes, mêmes entrées, résultats vérifiés dans votre navigateur.

A robot, MWG and your LuaUn robot, MWG et votre Lua

Change the robot strategy, apply the script and watch it collect samples on Mars. The map and paths come from the MWG framework.Changez la stratégie du robot, appliquez le script et regardez-le récolter des échantillons sur Mars. La carte et les chemins viennent du framework MWG.

Lua ↔ JavaScriptLua ↔ JavaScript

Send data to Lua, call JavaScript from Lua and receive tables, multiple returns or a Lua function. Also suspend Lua during a user dialogue and resume with its answer. The source translator is on the same page.Envoyez des données à Lua, appelez JavaScript depuis Lua et recevez des tables, plusieurs retours ou une fonction Lua. Suspendez aussi Lua pendant un dialogue utilisateur et reprenez avec sa réponse. Le traducteur de sources reste disponible sur la même page.

An independent project grown from FengariUn projet indépendant issu de Fengari

Why our JavaScript ↔ Lua exchange interface?Pourquoi notre interface d’échange JavaScript ↔ Lua ? The data contract, the functions exposed to Lua and the differences with fengari-interop.Le contrat des données, les fonctions exposées à Lua et les différences avec fengari-interop.

Pyroeis continues its own development from the work of Benoit Giannangeli, Daurnimator and the contributors of Fengari. Credits and the MIT licence are preserved.Pyroeis poursuit son propre développement à partir du travail de Benoit Giannangeli, Daurnimator et des contributeurs de Fengari. Les crédits et la licence MIT sont conservés.

The currently implemented language is Lua 5.4.6. The move to Lua 5.5.1 is in progress. Execution limits complement the sandbox preset; the JavaScript callbacks you provide stay your responsibility.Le langage actuellement implémenté est Lua 5.4.6. Le passage à Lua 5.5.1 est en cours. Les limites d’exécution complètent le préréglage de sandbox ; les callbacks JavaScript que vous fournissez restent sous votre responsabilité.

const { PyroeisVm } = require('@datamoc/pyroeis');
const vm = new PyroeisVm(undefined, undefined, {
  sandbox: true,
  limits: { instructions: 100000, timeMs: 100 }
});
console.log(vm.run('return 6 * 7')); // 42