Python dans le navigateur: comment choisir entre Brython, PyPy.js, Skulpt et Transcrypt?

89

Je suis très heureux de voir qu'il est désormais possible de coder Python dans le navigateur. Voici les principaux candidats (veuillez ajouter ceux que j'ai pu ignorer):

Mais comment choisir entre eux? La seule différence évidente que je peux voir est que Skulpt est basé sur Python 2, alors que Brython est basé sur Python 3.

Remarque: il ne s'agit pas d'une demande de recommandations ou d'avis. Je recherche des faits objectifs qui éclaireraient un choix éclairé.

P i
la source
6
Nous demander de recommander la meilleure bibliothèque pour quelque chose est l'un des cas pour lesquels l'aide explique explicitement que StackOverflow n'est pas bon pour. C'est une excellente question, mais pas pour le format de ce site; vous voulez probablement quelque chose de basé sur la discussion, comme une liste de diffusion ou un forum.
abarnert
2
Transcrypt ( transcrypt.org ) compile d'un grand sous - ensemble de python3.5 inc. héritage multiple, génère un code rapide (mémorisation des appels), petit et lisible, prend en charge les sourcemaps à plusieurs niveaux et peut utiliser n'importe quelle bibliothèque JS sans adaptation. Avertissement: je l'ai écrit.
Jacques de Hooge
1
Salut fzzylogic, j'ai ajouté la balise, afin que les gens puissent maintenant poser des questions sur SO en l'utilisant. Remplacé la balise JS par elle, car c'est la moins susceptible de rechercher si vous préférez utiliser Python dans le navigateur.
Jacques de Hooge
1
J'ai écrit une sorte de tutoriel pour Transcrypt pour les débutants. Vous pouvez le consulter sur github.com/bunkahle/Transcrypt-Examples/blob/master/alerts/… et github.com/bunkahle/Transcrypt-Examples/blob/master/cookies/…
bunkus
1
La réponse supprimée par dstromberg avec 27 votes positifs a un bon lien de comparaison: stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html
Cees Timmerman

Réponses:

26

Exécuter Python dans le navigateur est un très bon article à jour (à partir de 2019) qui compare Brython, Skulpt, PyPy.js, Transcrypt, Pyodide, Batavia . Je recommande vivement de le lire.

Un bon résumé peut être vu dans les images suivantes.

entrez la description de l'image ici

entrez la description de l'image ici

laike9m
la source
61

Voici quelques informations sur Brython vs Transcrypt (juillet 2016, puisque Transcrypt a été ajouté en option sur cette question par l'OP), glanées en démarrant un projet avec Brython il y a quelques mois et en passant à Transcrypt (déménagement terminé la semaine dernière). J'aime Brython et Transcrypt et je peux voir les utilisations des deux.

Pour les personnes novices dans ce domaine, Brython et Transcrypt `` transpilent '' les entrées python en javascript (Modifier: il est peut-être préférable de voir Brython comme une `` implémentation Python pour le navigateur '' car elle ne produit pas de javascript autonome). Les deux nécessitent la syntaxe Python 3. Brython comprend un nombre substantiel de bibliothèques standard Python et certaines de ses propres pour traiter des choses liées au Web, alors que Transcrypt évite cela pour la plupart et suggère d'utiliser des bibliothèques Javascript à la place.

Brython ( Github) peut effectuer la conversion dans le navigateur. Vous écrivez donc en python et le moteur brython.js le convertit en javascript à la volée lorsque la page est chargée. C'est vraiment pratique et beaucoup plus rapide que vous ne le pensez. Cependant, le moteur brython.js que vous devez inclure dans vos pages fait environ 500 Ko. De plus, il y a la question de l'importation de bibliothèques standard, que Brython gère en récupérant des fichiers .js séparés avec des requêtes XHR. Certaines bibliothèques sont déjà compilées dans brython.js, donc toutes les importations n'introduiront pas de nouveaux fichiers, mais si vous utilisez de nombreuses importations, les choses peuvent ralentir. Cependant, il existe des moyens de contourner ce problème. Ce que j'ai fait a été de vérifier l'onglet réseau dans les outils de développement du navigateur pour voir quels fichiers étaient extraits lorsque la page était chargée, puis de supprimer tous les fichiers que mon projet n'utilisait pas dans une copie du dossier Brython src, et exécutez le script inclus avec Brython (je pense que c'est à Brython / www / scripts / make_VFS.py) qui compile toutes les bibliothèques disponibles dans un fichier appelé py_VFS.js que vous devez également lier à partir de votre html. Normalement, cela fera un énorme fichier de 2 Mo +, mais si vous supprimez les choses que vous n'utilisez pas, il peut être assez petit. En procédant de cette façon, vous n'avez qu'à extraire brython.js, py_VFS.js et votre code python, et aucune requête XHR supplémentaire ne sera nécessaire.

Transcrypt ( Github ), d'autre part, est distribué sous forme de package python 3que vous pouvez utiliser manuellement ou vous connecter à votre chaîne d'outils pour compiler python en javascript à l'avance. Donc, avec Transcrypt, vous écrivez en python, exécutez transcrypt contre le python et il crache du javascript que vous pouvez lier dans votre projet. Il ressemble plus à un compilateur traditionnel en ce qu'il offre un certain contrôle sur la sortie. Par exemple, vous pouvez choisir de compiler vers ES6 ou ES5, ou lui demander de générer des sourcemaps (que lors du débogage, le navigateur vous amène directement au code python correspondant, à la lecture du code javascript généré.) La sortie javascript de Transcrypt est assez laconique ( ou en d'autres termes, c'est joli et laconique). Dans mon cas, 150 Ko de python sont convertis en 165 Ko de javascript ES5 non minimisé. À titre de comparaison, la version Brython de mon projet a utilisé environ 800 Ko après la conversion.

Cependant, pour obtenir les avantages de la concision Transcrypts, il faut lire un peu la documentation (vraiment juste un peu). Par exemple, avec Transcrypt, la `` véracité '' de Python pour les structures de données telles que dict, set et list n'est pas activée par défaut et son activation globale est découragée en raison de problèmes de performances potentiels liés à la vérification de type. Pour plus de clarté: sous CPython, un dict, un ensemble ou une liste vide a la valeur de vérité False, alors qu'en Javascript, il est considéré comme «vrai». Exemple:

myList = []
if myList:    # False in CPython bcs it's empty, true in javascript bcs it exists
    # do some things.

Il existe au moins trois façons de résoudre ce problème:

  • Utilisez l'indicateur -t lors de la conversion de python en javascript, par exemple: $ transcrypt -t python.py (non recommandé, mais ce n'est probablement pas un problème, sauf si vous vérifiez la véracité plusieurs fois dans les boucles internes de code sensible aux performances.)
  • Utilisez __pragma__(tconv)ou __pragma__(notconv)dans votre code pour indiquer au compilateur transcrypt d'activer la conversion automatique en valeurs de vérité de type python localement.
  • Au lieu de vérifier la valeur de vérité, évitez complètement le problème en vérifiant simplement len ​​(myList)> 0 ... Peut-être que ce sera bien pour la plupart des situations, fait le travail pour mon usage léger.

Bon, donc mon projet prenait de l'ampleur et je voulais pré-compiler pour un gain de performances, mais j'ai eu du mal à le faire avec Brython (bien que ce soit techniquement possible, un moyen simple étant d'utiliser l' éditeur en ligne et de cliquer sur le bouton javascript pour voir le résultat). Je l'ai fait et lié au javascript généré à partir de project.html, mais cela n'a pas fonctionné pour une raison quelconque. De plus, j'ai du mal à comprendre les messages d'erreur de Brython, donc je ne savais pas par où commencer après l'échec de cette étape. De plus, la grande taille du code produit et la taille du moteur brython commençaient à me déranger. J'ai donc décidé d'examiner de plus près Transcrypt, qui avait d'abord semblé être de meilleure qualité car je préfère les instructions simplifiées qui me disent comment commencer immédiatement (elles ont depuis été ajoutées).

La principale chose à faire après l'installation de Python3.5 était:

  1. Utilisez venv (c'est comme une nouvelle version intégrée de virtualenv qui utilise moins d'espace pour chaque projet) pour configurer un dossier de projet python3.5 (tapez simplement: python3.5 -m venv nomdossier - solution de contournement pour ubuntu avec des problèmes de package pour 3.5 ). Cela fait, entre autres, un nom de dossier avec un sous-dossier bin.
  2. Installez le package python Transcrypt avec pip ('nomdossier / bin / pip install transcrypt') qui l'installe dans nomdossier / lib / python3.5 / site-packages / transcrypt.
  3. activatele terminal actuel si vous ne voulez pas avoir à taper le chemin complet vers le nom du dossier / bin / python3.5 à chaque fois. Activer en tapant: 'nom du dossier source / bin / activer'
  4. Commencez à écrire du code et à le compiler en javascript pour le tester. Compilez à partir du dossier dans lequel vous écrivez votre code. Par exemple, j'ai utilisé foldername / www / project. Alors CD dans ce dossier et exécutez: 'transcrypt -b your_python_script.py'. Cela place la sortie dans un sous-dossier appelé __javascript__. Vous pouvez ensuite créer un lien vers le javascript généré à partir de votre html.

Principaux problèmes qui évoluent

J'ai des besoins assez simples, donc votre kilométrage peut varier.

  • Vous devez remplacer les bibliothèques standard brython ou python par des bibliothèques javascript. Ainsi, par exemple, 'import json' est fourni par Brython, mais sous Transcrypt, vous pouvez utiliser une bibliothèque javascript ou simplement utiliser JSON.parse / JSON.stringify directement dans votre code Python. Pour inclure une version minifiée d'une bibliothèque javascript directement dans votre code python, utilisez ce format (notez les triples guillemets):

    __pragma__ ('js', '{}', '''
    // javascript code
    ''')
    
  • Les fonctions spécifiques html de Brython ne fonctionnent évidemment pas avec Transcrypt. Utilisez simplement les méthodes javascript normales. Exemples: 1) sous Brython, vous pourriez avoir fait référence à une balise HTML spécifique en utilisant 'document [' id ']', mais avec Transcrypt vous utiliseriez 'document.getElementById (' id ') (ce qui est la même façon que vous le faites depuis javascript). 2) Vous ne pouvez pas supprimer un nœud avec 'del nodeName' (bcs est une fonction brython). Utilisez quelque chose comme «node.parentNode.removeChild (node)». 3) remplacez toutes les fonctions DOM de brython par les alternatives javascript. par exemple nom_classe = nom_classe; text = textContent; html = innerHTML; parent = parentNode; children = childNodes, etc. Je suppose que si vous avez besoin de quelque chose qui contient des alternatives requises par certains navigateurs plus anciens, il existe des bibliothèques javascript pour cela. 4) set_timeout de Brython est remplacé par des javascripts setTimeout 5) Les balises html de Brython telles que BR () doivent être remplacées en utilisant les méthodes javascript habituelles ainsi que de refaire tous les endroits où vous avez utilisé sa syntaxe de manipulation <= dom. Vous pouvez soit injecter du balisage de texte brut en tant que innerHTML, soit créer les éléments à l'aide de la syntaxe javascript, puis les attacher à l'aide de la syntaxe DOM javascript normale. J'ai également remarqué que pour les cases à cocher, brython utilise "if checkbox = 'checked':" mais Transcrypt est satisfait de "if checkbox:" .. Vous pouvez soit injecter du balisage de texte brut en tant que innerHTML, soit créer les éléments à l'aide de la syntaxe javascript, puis les attacher à l'aide de la syntaxe DOM javascript normale. J'ai également remarqué que pour les cases à cocher, brython utilise "if checkbox = 'checked':" mais Transcrypt est satisfait de "if checkbox:" .. Vous pouvez soit injecter du balisage de texte brut en tant que innerHTML, soit créer les éléments à l'aide de la syntaxe javascript, puis les attacher à l'aide de la syntaxe DOM javascript normale. J'ai également remarqué que pour les cases à cocher, brython utilise "if checkbox = 'checked':" mais Transcrypt est satisfait de "if checkbox:" ..

  • J'ai fini de déplacer un projet de 2700 lignes la semaine dernière, date à laquelle Transcrypt n'avait pas de support pour quelques petites choses (bien qu'elles soient assez faciles à remplacer par des fillers), il s'agissait de 1) str.lower, str.split (str. split est présent, mais semble être le split javascript, qui fonctionne différemment de la version python, dont je comptais sur le comportement), 2) round (cela semble être pris en charge dans la version dev maintenant) et 3) isinstance didn ne fonctionne pas sur str, int et float, uniquement sur dict, list et set. 4) Une autre différence avec Brython que j'ai remarquée est que si je tire une représentation JSON d'un dict, je dois le faire en utilisant 'myDict = dict (data)', alors que brython était satisfait de 'myDict = data'. Mais cela pourrait être lié à quelque chose dans json.loads de Brython, que j'ai remplacé directement par JSON.parse.__pragma__('opov')pour local), vous ne pouvez pas effectuer des opérations telles que définir des opérations en utilisant le format surchargé, mais vous devez utiliser les fonctions correspondantes. Par exemple

    a = set([1, 2, 3])
    b = set([3, 4, 5])
    a.difference(b)             # is used instead of a - b
    a.union(b)                  # used instead of a | b
    a.intersection(b)           # used instead of a & b
    a.symmetric_difference(b)   # used instead of a ^ b
    

6) De plus, vous ne pouvez pas itérer les dicts par défaut en utilisant 'for i in dict:', sans l'activer (ligne cmd -i ou __pragma__('iconv'), mais vous pouvez éviter d'avoir à l'activer en utilisant simplement le membre keys (), par exemple:

for key, value in dict.items():
    # do things for each key and value..

Pour résumer

  • J'aime Brython car il est facile de s'y mettre et de tester votre code (juste F5). C'est plus proche du vrai python car la plupart des bibliothèques standard sont là. Je n'aime pas avoir à inclure le moteur de transpilation (Edit: Ou on pourrait le voir comme une machine virtuelle python) dans le navigateur et la grande taille javascript produite. Si je devais refaire les choses (mais toujours en utilisant Brython), j'aurais utilisé des méthodes javascript pour manipuler le DOM à partir de brython (ce que vous pouvez faire ...), au lieu de me pencher autant sur les méthodes brython parce que ce temps perdu à passer à un autre transpilateur lorsque mes besoins ont changé.

  • J'aime Transcrypt parce que le javascript produit est vraiment `` léger et méchant '' et parce que la seule chose que vous chargez côté navigateur est votre code javascript généré qui est de taille similaire à votre code python. Aussi parce qu'il prend en charge les sourcemaps et parce qu'il me donne une mesure de contrôle sur le javascript produit. Et son utilisation m'a beaucoup appris sur l'optimisation.

J'espère que cela aidera quelqu'un à voir lequel d'entre eux pourrait être bon pour son projet particulier.

fzzylogic
la source
1
Êtes-vous sûr que Brython est un transpilateur? Je suis presque sûr qu'il implémente un interpréteur Python en JavaScript. S'il s'agissait d'un transpilateur, vous n'auriez pas besoin de le regrouper avec votre application.
Carl Smith
@Carl Smith Point intéressant, je n'y avais pas pensé comme ça. Brython convertit le code python en javascript, mais comme javascript n'a pas de bytecode standard, on pourrait peut-être voir le javascript généré comme 'bytecode' pour le moteur Brython.
fzzylogic
1
Tu m'as mal compris. Je ne pense pas que Brython transpile du tout Python en JavaScript. Il implémente juste un interpréteur Python dans JS, au lieu de C. Selon leur GitHub README "Brython (Browser Python) est une implémentation de Python 3 fonctionnant dans le navigateur, avec une interface vers les éléments et événements DOM".
Carl Smith
4
@jsbueno Actuellement disponibles sont seed, randint, choice et random, qui sont simplement un point de départ. En fait, nous espérons que quelqu'un le reprendra et le complétera, comme cela a été fait pour re, qui était en haut de notre liste. Ça ne devrait pas être si difficile. Le nombre de bibliothèques a augmenté mais les contributions sont les bienvenues. Bien que l'accent restera sur l'utilisation des bibliothèques JS, je souhaiterais personnellement plus de bibliothèques standard.
Jacques de Hooge
1
Un bel aperçu. Dans l'ensemble, ce que je considère comme la principale différence (que vous indiquez mais ne mettez pas l'accent) est que l'objectif de Brython est en fait de vous permettre d'utiliser Python dans le navigateur, alors qu'il semble que l'objectif de Transcrypt soit de vous permettre d'utiliser la syntaxe Python pour écrire du JavaScript. Cela signifie que Transcrypt est prêt à faire des choses comme la différence de vérité qui s'écarte à un niveau de base de la sémantique Python, et semble également être destiné au code qui exploite les bibliothèques JavaScript; alors que Brython essaie de répliquer Python aussi étroitement que possible avec l'idée que vous ferez tout en Python.
BrenBarn
12

J'ai utilisé et je me suis engagé à skulpt ainsi qu'à pypyjs. Et ils sont tous les trois très différents que toute comparaison est sans objet si vous me demandez.

Cela dépend de ce que vous recherchez et qui aura le plus de sens.

PyPyJS

pypyjs est énorme, c'est un fichier javascript de 12 Mo qui contient toute la machine virtuelle pypy. Donc, si vous voulez l'exhaustivité de l'implémentation de python, c'est votre bébé. Il a un pont javascript qui fonctionne vraiment bien mais ce n'est pas une option viable pour écrire le code de votre site Web javascript en python. Il vous laissera cependant import compiler.

Il est construit avec emscripten et est plus rapide que CPython pour exécuter le benchmark pystone.

J'ai fait une brève présentation de pypyjs, voici les diapositives.

Skulpt

Est un outil d'enseignement (ou il a évolué vers cela au fil du temps), il compile votre python dans une machine à états émulant de très près le compilateur cpython. À la base, il s'agit d'une implémentation manuscrite du compilateur python en javascript. Il permet une exécution asynchrone qui vous permet de faire:

while (True):
    print "hi"

Sans verrouiller le navigateur.

Skulpt est le seul qui prend en charge les continuations asynchrones, il vous permet de mettre en pause l'exécution de python pendant qu'il résout une chose asynchrone. Faire ce travail:

from time import sleep
sleep(1)

Skulpt tourne à environ un dixième de la vitesse de CPython, en comparant pystone.

Brython

Je connais le moins celui-ci, peut-être que @ olemis-lang peut développer celui-ci. Mais à côté de la différence évidente, Brython est py3 et les autres py2. Brython est également un transpilateur.

Brython n'exécute pas le benchmark pystone car time.clock n'est pas implémenté, car officiellement c'est une fonction matérielle.

Albertjan
la source
Les développeurs PyPyJS ont arrêté le développement. La prise en charge de Python3 semble également inachevée. github.com/pypyjs/pypyjs/issues/213 et github.com/pypyjs/pypyjs/issues/172
Roland Pihlakas
Ce n'est pas maintenu, mais cela ne veut pas dire que cela ne fonctionne pas :) trinket.io/pypyjs mais surveillez cet espace, je suis presque sûr que quelque chose finira par bouillonner. Vous ne pouvez pas non plus vous attendre à ce que l'open source soit maintenu, à moins que vous ne le fassiez vous-même. :)
albertjan
Il me semble que Trinket avec Python 2 fonctionne côté navigateur, tandis que Trinket avec Python 3 (et numpy) fonctionne côté serveur. Il est toujours impressionnant qu'ils parviennent à avoir un tracé visuel rendu dans le navigateur, même si le code s'exécute côté serveur. Il serait très utile de savoir comment y sont parvenus. Avez-vous des idées?
Roland Pihlakas
Trinket utilise la bibliothèque GlowScript (glowscript.org) qui utilise RapydScript-NG pour transpiler Python en JavaScript, et WebGL pour produire les animations 3D. Le transpiling et l'exécution se font dans le navigateur. Voici un aperçu de l'architecture GlowScript
user1114907
11

https://brythonista.wordpress.com/2015/03/28/comparing-the-speed-of-cpython-brython-skulpt-and-pypy-js/

Cette page compare les trois candidats. Brython ressort clairement comme un gagnant.

Malgré l '«aide» expliquant que le SO n'est pas bon pour ce genre de question, il semble qu'une réponse concise soit dans ce cas possible.

Peut-être que les gens sont trop pressés?

P i
la source
5
La dernière fois que j'ai vérifié brython, ce n'était pas une implémentation complète de python. On ne sait pas non plus comment mesurer «au mieux» ou «comment choisir entre ces deux éléments». Le plus rapide? Python n'est généralement pas utilisé pour la vitesse. Implémente la plupart des fonctions / bibliothèques? Il se peut que vous n'utilisiez jamais des modules dans un navigateur. La syntaxe extra (non compatible avec cpython) pour les opérations courantes (manipulation d'arbre) est-elle un plus ou un moins? Je ne pense pas que la performance dans un benchmark soit aussi significative.
syntonyme
Le benchmark de performance est un facteur important lorsqu'il n'est pas environ 20 à 40% plus rapide - mais plutôt environ 1000% d'améliorations dans certaines opérations. Brython est une couche légère sur javascript, donc c'est différent. De plus, le projet est très conforme à Python3 ces jours-ci - ce qu'il fait est d'incorporer quelques bibliothèques Javascript bien connues et matures dans le projet selon les besoins, par exemple pour la gestion de gros entiers.
jsbueno
7

Tout d'abord, je suis un committer Brython. Néanmoins, je vais essayer d'être aussi impartial que possible afin de faire une évaluation objective.

La dernière fois que je l'ai utilisé, Skulpt ne prenait pas en charge les fonctionnalités telles que les expressions génératrices. Brython et PyPy.js le font, donc au niveau des fonctionnalités IMHO, les derniers sont supérieurs.

Brython (pour le moment) est toujours en cours de travail. Certains modules ne peuvent pas être importés (par exemple xml.ElementTree ). Néanmoins, cette situation commence à changer puisque nous travaillons à exécuter toute la suite de tests CPython malgré une compatibilité totale avec les standards (du moins quand cela a du sens).

Brython prend également en charge .vfs.js pour accélérer les importations de modules.

PyPy.js a un certain nombre de caractéristiques qui découlent directement du fait qu'il est alimenté par PyPy (compilation JIT, bien testée, ...) mais je ne suis pas sûr qu'il soit adapté pour fonctionner dans le navigateur. Cela pourrait changer à mesure que le projet évolue.

TODO: Je vais essayer de compléter ma réponse avec des repères fiables.

Olemis Lang
la source
8
En tant que committer de skulpt, je peux vous dire qu'il prend en charge les expressions génératrices. :)
albertjan
6

Non mentionné ici est RapydScript ou RapydScript-NG. Ils produisent du code JavaScript très efficace, qui est utilisé dans GlowScript VPython (glowscript.org). J'utilisais le RapydScript original d'Alex Tsepkov ( https://github.com/atsepkov/RapydScript ) mais je suis récemment passé à RapydScript-NG de Kovid Goyal ( https://github.com/kovidgoyal/rapydscript-ng ). J'ai récemment exécuté le benchmark pystone sur CPython, RapydScript et Brython, et vous pouvez voir les résultats ici:

https://groups.google.com/forum/?fromgroups&hl=en#!topic/brython/20hAC9L3ayE

user1114907
la source
Pouvez-vous résumer les résultats?
Jay
1
Le 18 juin, Pierre Quentel a déclaré: "Ok, il y a un problème de performances, mais les choses s'améliorent; la version sur laquelle je travaille actuellement (3.2.7) exécute le test pystone 2.5 plus rapidement que 3.2.6. Il est toujours 15 fois plus lent que CPython, mais au début, il était des milliers de fois plus lent. "
user1114907
1
J'ai exécuté le benchmark pystones en utilisant le transpileur rapydscript-ng, et il a évalué 5 fois la vitesse de CPython sur mon ordinateur Windows 10, 600000 pystones / sec contre 125000 pystones / sec. Le facteur d'environ 5 fois la vitesse de CPython pour rapydscript-ng augmente à environ 7 fois CPython si je désactive la surcharge d'opérateurs qui est utilisée dans GlowScript VPython, dans lequel par exemple a + b est converti en ["+"] (b) ; ceci est fait pour permettre une manipulation aisée des vecteurs 3D.
user1114907
Je n'ai pas dit que le commentaire de Quentel faisait référence à Brython.
user1114907
2
Je n'ai plus exécuté de benchmarks. Je suis d'abord passé à RapydScript-NG lorsque le développement de RapydScript s'est arrêté. Puis plus tard, quand Alex Tsepkov est revenu au développement, j'ai eu un échange avec lui dans lequel même il a convenu que le projet NG de Kovid Goyal était plus approprié pour mon utilisation particulière sur glowscript.org. Tsepkov souhaite créer un langage mixte Python / JavaScript pour les programmeurs Web, tandis que Goyal met l'accent sur l'approximation de Python standard et fournit un bon support pour la compilation dans le navigateur, qui sont tous deux essentiels à mon travail.
user1114907
4

Comme personne ne l'a mentionné, j'ai pensé qu'il valait la peine de mentionner Batavia qui implémente la machine virtuelle Python pour exécuter le bytecode Python précompilé.

Je viens de l'essayer et, bien que ce soit un concept intéressant, il en est encore à ses débuts car il y a peu de documentation.

En fin de compte, cela dépendra de ce que vous essayez de faire. J'ai choisi Transcrypt après avoir jeté un coup d'œil car il était plus pragmatique et plus performant, également plus récemment publié / maintenu.

icarito
la source
Skulpt est toujours activement maintenu et utilisé par une base d'utilisateurs assez importante (plusieurs cours très polulaires sur cousera), il pourrait ne pas obtenir autant de versions que transcrypt, mais il y a beaucoup plus de mainteneurs, de mainteneurs qui ont construit un produit dessus. Ils sont donc là pour le long terme. :)
albertjan
3

Il s'agit d'une conférence mise à jour qui compare toutes les options disponibles sur le marché à l'heure actuelle:

https://www.youtube.com/watch?v=2XSeNQyPlTY

Le conférencier est Russell Keith-Magee, qui est un développeur bien connu dans la région.

Daian Gan
la source