Fabrice Bellard récidive, cette fois ci avec un moteur JavaScript qui a l'air plutôt complet et supportant les dernières versions de la norme.
Son nom est QuickJs.
J'adore les moteurs JavaScript que l'on peut enfouir dans un exécutable C++, cela permet d'ajouter une couche scriptable à une application. J'utilise depuis longtemps Duktape, une perle, qui me permet même de gagner des sous.
A tester et benchmarker, ce que je compte faire la semaine prochaine si j'ai le temps.
# Oh purée…
Posté par Francois Revol (site web personnel) . Évalué à 5.
On va pouvoir virer NodeJS et compiler en natif ?
[^] # Re: Oh purée…
Posté par Sébastien Le Ray . Évalué à 5.
Heu non, à priori c'est "juste" un moteur JS que tu peux embarquer comme il en existe déjà, ça transforme pas le JS en exécutable
[^] # Re: Oh purée…
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 4.
Pourtant je vois ça dans la liste des fonctionalités:
"Can compile Javascript sources to executables with no external dependency."
Mais ça ne fait pas tout pour node.js, il faut aussi avoir des bindings vers les APIs natives pour tout un tas de trucs.
[^] # Re: Oh purée…
Posté par Thomas Douillard . Évalué à 4.
Potentiellement il « suffit » de compiler l’interpréteur et de mettre le code js dans les données du binaire pour faire un exécutable autosuffisant. Effectivement par contre ça ne mérite pas nécessairement le qualificatif de « compilé » pour le code js.
[^] # Re: Oh purée…
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
A priori, cela compile vers une machine à pile (bytecode comme java) car c'est simple.
"La première sécurité est la liberté"
[^] # Re: Oh purée…
Posté par Guillaume Denry (site web personnel) . Évalué à 4.
NodeJS n'est pas qu'un moteur d'exécution JavaScript donc non.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
# Lua ?
Posté par karteum59 . Évalué à 10. Dernière modification le 15 juillet 2019 à 00:48.
S'il n'y a pas d'obligation de réutiliser du code ou des libs js existants, pourquoi choisir JavaScript et pas un autre langage comme Lua ?
(C'est une vraie question. Je ne suis pas un grand programmeur, mais de loin il me semble que Lua présente à peu près les mêmes caractéristiques de légèreté que les projets présentés dans ce journal, que ses performances sont très honorables avec luajit, et que le langage lui-même ne se traine pas les tares historiques de js…)
[^] # Re: Lua ?
Posté par Wawet76 . Évalué à 9.
Il doit y avoir des dizaines ou des centaines de milliers de fois plus de gens qui connaissent un peu de javascript qu'un peu de lua…
[^] # Re: Lua ?
Posté par abriotde (site web personnel, Mastodon) . Évalué à 1.
Oui mais d'un point de vue perf tu y gagne avec Lua. Et Lua est un langage assez simple et relativement connu surtout dans le scripting pour jeu.
Après tout est une questions de compromis et de besoins.
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
[^] # Re: Lua ?
Posté par devnewton 🍺 (site web personnel) . Évalué à 9. Dernière modification le 09 août 2019 à 16:26.
Dès que l'on creuse un peu, lua n'est pas du tout simple avec ses tables et ses métatables…
Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.
[^] # Re: Lua ?
Posté par pushmepullme . Évalué à 3.
Entièrement d'accord. Quiconque a joué avec les tables, s'est obligatoirement arraché quelques cheveux ;)
C'est assez bien expliqué ici : https://julien.danjou.info/why-not-lua/
[^] # Re: Lua ?
Posté par FantastIX . Évalué à 1.
Euh… non! :-D
J'ajouterais que si tu piges C++ et Python, Lua n'est qu'une formalité.
[^] # Re: Lua ?
Posté par David Demelier (site web personnel) . Évalué à 10.
LuaJIT oui, Lua pur non.
C'est un langage simple mais pas spécialement agréable à utiliser pour l'avoir mis dans mes applications. Comparé au Javascript moderne :
continue
maisbreak
etgoto
existent ;~=
;Et à côté de ça : l'API C est aussi régulièrement cassée d'une version à l'autre rendant tous les modules externes quasiment toujours obsolètes. Un module phare a été longtemps inutilisable en Lua 5.3 : LuaSocket.
Pour ma part, j'ai fini avec ce langage :)
git is great because linus did it, mercurial is better because he didn't
[^] # Re: Lua ?
Posté par reno . Évalué à 4.
Un truc que je déteste dans Lua ce sont les index qui commence à 1, dans un langage spécialisé pour les math comme Julia ça peut se défendre, mais dans un langage utilisé en complément du C,C++, c'est vraiment du n'importe quoi.
[^] # Re: Lua ?
Posté par jyes . Évalué à 4.
Moi c’est une friture que j’aime bien, c’est plus naturel à interfacer avec mon code Fortran :-)
Chacun complémente le langage qu’il veut.
[^] # Re: Lua ?
Posté par AnthonyRabine (site web personnel) . Évalué à 10.
Alors oui Lua est une solution tout à fait valable à ce genre de pratiques. Je l'ai fait dans le passé, avant que des moteurs JS à peu près corrects n'existent.
Sauf que je partage aussi mes algorithmes avec le monde Web. Donc voilà pourquoi j'ai basculé en JS ; l'autre raison que j'ai rencontrée c'est effectivement que beaucoup de monde sait faire du JS.
[^] # Re: Lua ?
Posté par Albert_ . Évalué à 5.
C'est rigolo… L'auteur du logiciel explique un choix et une personne a considéré cela comme "non pertinnent" par rapport au sujet (le logiciel en question) du journal.
[^] # Re: Lua ?
Posté par zurvan . Évalué à 3.
Je crois que c'est plus l'auteur du journal que l'auteur du logiciel (ce qui ne veut pas dire que le commentaire n'est pas pertinent pour autant…)
« Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher
[^] # Re: Lua ?
Posté par StyMaar . Évalué à 2.
Enfin Lua traine quand même ses propres tares … On parle quand même d'un langage qui a décidé que ça serait rigolo de ne faire comme personne d'autre et de commencer ses tableaux à l'index 1 …
C'est d'ailleurs loin d'être le seul point de friction avec lua, mais comme ça fait 5 ans que je n'ai pas eu à y toucher je n'en ai pas mémorisé beaucoup.
[^] # Re: Lua ?
Posté par Tonton Th (Mastodon) . Évalué à 4.
C'est triste ton avis sur le FORTRAN.
# But ?
Posté par flan (site web personnel) . Évalué à 3.
Y a-t-il un but particulier derrière l'écriture de ce nouveau moteur ?
« pour le fun » est bien sûr une réponse valable, mais peut-être y a-t-il d'autres raisons (je ne connais pas nodejs, mais il a sûrement certains défauts).
[^] # Re: But ?
Posté par abriotde (site web personnel, Mastodon) . Évalué à 4.
QuickJS n'est pas en "concurence" avec NodeJS (V8 de Google) ou le moteur Javascript de Mozilla Firefox. Ces derniers sont de lourds et gros moteur utile quand on a besoin de grosses performances mais aussi quand on dispose d'assez de RAM/CPU et de place pour un gros exécutable.
QuickJS est plus à comparer avec des petits moteur JS, ils sont léger et rapide sur de petits programmes, avec une consommation RAM limitée, ils sont plus destinés a de l'embarqué pour ajouter une fonctionnalité JS a un petit programme.
Ca me fait penser au moteur Hermes de Facebook qui a encore une autre visée.
Sous licence Creative common. Lisez, copiez, modifiez faites en ce que vous voulez.
# Inception
Posté par diorcety . Évalué à 6.
Dans cet exemple il fait tourner un moteur JS dans le moteur JS du navigateur… je suis un peu déçu venant de lui. Il aurait au moins pu lancer sont moteur JS dans sa VM x86 dans le moteur du navigateur.
[^] # Re: Inception
Posté par diorcety . Évalué à 9.
C'est dommage qu'on ai pas plus de détail sur sa façon de travailler, car vu de l’extérieur c'est limite si c'est humain ce qu'il arrive à faire (seul!?).
[^] # Re: Inception
Posté par lolop (site web personnel) . Évalué à 10.
Ben, lui ne perd pas de temps à troller sur LinuxFR :-)
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Pas seul
Posté par nico4nicolas . Évalué à 2.
[^] # Re: Pas seul
Posté par Le Pnume . Évalué à 8. Dernière modification le 17 juillet 2019 à 16:39.
Si le Charlie Gordon est celui là : https://fr.wikipedia.org/wiki/Des_fleurs_pour_Algernon son apport dépend fortement de quand il a participé :-)
# "Je suis une Légende"
Posté par El Titi . Évalué à 2.
https://jaxenter.com/javascript-quickjs-160005.html
# Benchmark
Posté par AnthonyRabine (site web personnel) . Évalué à 3.
Il a mis à jour ses Benchmark : https://bellard.org/quickjs/bench.html
Du coup pas besoin de faire le job.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.