Seite 1 von 2
PyPy.js
Verfasst: Donnerstag 18. September 2014, 11:01
von jens
Also wenn das nicht mal abgefahren ist: Man nehme PyPy und LLVM und generiere eine PyPy.js Datei... Die ist dann zwar ~140MB groß (die komprimierte Version schrumpft allerdings auf ~14MB), aber es funktioniert, siehe die DEMO:
http://pypyjs.org/demo/
Details:
https://www.rfk.id.au/blog/entry/pypy-js-first-steps/
Projekt Webseite:
https://github.com/rfk/pypyjs
Re: PyPy.js
Verfasst: Donnerstag 18. September 2014, 11:03
von Hyperion
Wow. Das ist echt cool

Re: PyPy.js
Verfasst: Donnerstag 18. September 2014, 11:21
von jens
Schade ist, das die DEMO Seite die kleinere/komprimierte "pypy.vm.js" Datei, per XMLHttpRequest() zieht. Keine Ahnung warum...
So kann man nicht einfach hingehen und die HTML Demo Seite "komplett" speichern, um damit Lokal ein wenig zu spielen
Hab dafür mal ein Ticket gemacht:
https://github.com/rfk/pypyjs/issues/25
Würde mich ja reizten, darin dann mein DragonPy Emulator laufen zu lassen. Nicht mit TkInter GUI, sondern eine Konsolen-Version...
Re: PyPy.js
Verfasst: Donnerstag 18. September 2014, 12:44
von jens
Re: PyPy.js
Verfasst: Donnerstag 18. September 2014, 13:09
von BlackJack
@jens: Wobei zumindest Brython und Skulpt nicht so wirklich kompatibel sind, und bei Brython das auch nicht angestrebt wird. PyPy ist halt ”echtes” Python. Und nicht nur etwas sehr ähnliches.
Re: PyPy.js
Verfasst: Donnerstag 18. September 2014, 15:55
von jens
Hast recht... Aber
https://github.com/replit/empythoned nicht:
Empythoned
Empythoned is a build script that uses Emscripten to compile CPython for use in a browser. It attempts to compile the main interpreter as a single small executable and the whole standard library as dynamically loaded libraries.
The project is in its infancy. Right now the core interpreter works very well, but many of the libraries either don't work at all or contain various bugs.
Letzte Änderungen sind allerdings von 2012... Also nur ein Versuch, mehr nicht?
DEMO hier:
http://repl.it/languages/Python
Nun kommt mir spontan eine andere Idee: Kann man Cython nehmen, C generieren und dann über Emscripten JS generieren?
Re: PyPy.js
Verfasst: Dienstag 23. September 2014, 12:06
von jens
Habe mal
https://github.com/rfk/pypyjs genommen und nur den DEMO Teil extrahiert... Denn das original Repro ist echt sehr groß...
->
https://github.com/jedie/pypyjs-standalone
Darin ist auch der Bugfix, das es lokal läuft, siehe:
https://github.com/jedie/pypyjs-standal ... 484b75bc74
Und hier findet sich auch mein "throttled_html_server.py" wieder (noch nicht verbessert), damit man die Ladezeit einschätzten kann:
https://github.com/jedie/pypyjs-standal ... _server.py Siehe auch:
http://www.python-forum.de/viewtopic.php?f=11&t=34726
Nun Frage ich mich, wie man die Ladezeit noch optimieren kann... Dazu ist mir eingefallen, das es LZMA implementierungen in JavaScript gibt, wie z.B.:
https://github.com/nmrugg/LZMA-JS/
Darauf hin hab ich mal eben die 13,7MB große "pypy.vm.js" mit 7-Zip komprimiert. Die schrumpft auf 1MB... Das wäre doch eine Idee, oder?
Dazu kommt, das man nicht nur diese, sondern auch eine reihe anderer, nötige Dateien einpacken könnte...
Die gepackte LZMA Datei müßte man auch per JavaScript als Binäredaten vom Server abrufen können, siehe
https://github.com/jDataView/jDataView bzw.
https://developer.mozilla.org/en-US/doc ... inary_data
Hat jemand sowas schon mal gemacht?
Re: PyPy.js
Verfasst: Dienstag 23. September 2014, 12:35
von jerch
Dieses emscripten ist eines der Projekte, wo einem schnell mal die Kinnlade runterklappt
jens hat geschrieben:Hat jemand sowas schon mal gemacht?
Was erreichst Du denn mit "normaler" gzip-Auslieferung? Dann könnten Server und Browser das transparent vornehmen. Die Binärsache ist ansonsten kein Hexenwerk, Du nimmst einfach den Binärstring aus dem Response und arbeitest damit weiter (in Deinem Fall halt entpacken usw.)
Re: PyPy.js
Verfasst: Dienstag 23. September 2014, 13:05
von Sirius3
@jens: Du solltest nicht die ungepackte Variante mit der LZMA-gepackten vergleichen, sondern die gzippte Version, und dann ist der Unterschied nur noch 1.85 zu 1.14 Megabytes. Da bringt es wirklich nicht mehr viel, dem Browser ein neues Packverfahren beizubringen.
Re: PyPy.js
Verfasst: Dienstag 23. September 2014, 14:31
von jens
Hm. Ja stimmt, das mach nicht mehr so viel aus...
Hab wärenddessen mal ein wenig an der Ausgabe geschraubt... Sieht dann so aus:
Init PyPy.js, it's big, so this might take a while...
Request: 'pypy.vm.js' ...
2.0 MBytes loaded
3.9 MBytes loaded
5.9 MBytes loaded
8.2 MBytes loaded
10.2 MBytes loaded
12.5 MBytes loaded
100% loaded (13.7 MBytes)
Request: 'pypy.vm.js', done (status:200)
Request: 'modules/index.json' ...
evaluating asmjs code...
run() called, but dependencies remain, so not running
evaluating asmjs, done.
488.5 kBytes loaded
100% loaded (488.5 kBytes)
Request: 'modules/index.json', done (status:200)
initialising the vm...
loading module index...
pypy.js is ready.
Python v2.7.6 (?, Sep 18 2014, 09:21:40)
[PyPy 2.3.1]
>>>
->
https://github.com/jedie/pypyjs-standal ... 70b8a066e8
Zum selbst ausprobieren:
http://jedie.github.io/pypyjs-standalone/
Re: PyPy.js
Verfasst: Samstag 16. Mai 2015, 19:42
von jens
Hab das Projekt wieder entdeckt und gesehen, das es noch aktiv ist.
Gibt eine neue Webseite zum probieren:
http://pypyjs.org/
Startet direkt den Python Interpreter
Ich arbeite gerade an Selenium tests:
https://github.com/rfk/pypyjs/pull/96
Stoße aber noch auf einige Probleme...
Re: PyPy.js
Verfasst: Samstag 16. Mai 2015, 21:35
von jens
Gerade gesehen, gibt einen recht Aktuellen Vortrag vom Autor "Ryan Kelly" auf der PyCon 2015:
https://www.youtube.com/watch?v=PiBfOFqDIAI
EDIT: Hier die Pläsentation:
https://speakerdeck.com/nzpug/ryan-kell ... at-how-why
Re: PyPy.js
Verfasst: Samstag 16. Mai 2015, 23:18
von jens
Nu hab ich auch noch eine kleine Editor Seite gemacht:
https://github.com/rfk/pypyjs/pull/102
Sieht so aus:

Re: PyPy.js
Verfasst: Dienstag 19. Mai 2015, 16:12
von jens
Re: PyPy.js
Verfasst: Dienstag 26. Mai 2015, 08:54
von jens
Hab zwei neue repositories gemacht:
Re: PyPy.js
Verfasst: Mittwoch 27. Mai 2015, 17:54
von jens
Re: PyPy.js
Verfasst: Mittwoch 27. Mai 2015, 18:50
von jens
Re: PyPy.js
Verfasst: Montag 1. Juni 2015, 11:34
von jens
Es tut sich was...
Nun gibt es:
https://github.com/pypyjs
Und mein "Editor" ist online:
http://pypyjs.org/editor.html
Re: PyPy.js
Verfasst: Montag 1. Juni 2015, 15:12
von jens
Re: PyPy.js
Verfasst: Freitag 12. Juni 2015, 17:40
von jens
Ein großes Problem sind die Ladezeiten... Alleine zum "init" sind zwei Dateien zu ziehen, die zusammen 19,2MB groß sind.
Nun hatte ich die Idee LZMA zu verwenden. Denn damit bleiben von den 19,2MB nur noch 2,88MB über!
Details dazu hier:
https://github.com/pypyjs/pypyjs.github.io/issues/4
EDIT: Achja, das hier:
Ist nun auch unter
https://github.com/pypyjs/ zu finden:
https://github.com/pypyjs/pypyjs-examples