OK I'm back online. :)
I created the following page called weblib_demo.html inside the deflated zip-dir (webperl_prebuilt_v0.07-beta.zip) from your webpage:
It shows the alert box from JS but the Perl execution blocks the tab till I get a "Tab crashed" message (in German) after a minute or so.
Reproducible in FF and chrome.
I'm suspecting it has to do with error handling of the deprecation warning.
I tried to copy the democode directory directly from github, but calling demo.html creates an endless loop of "Perl initializing" and "ended" messages.
I suppose the webperl versions are not compatible and I need to clone the whole github rep.
That's the messages I get on the console
I think creating a new zip including the "democode" stuff would be helpful for causal tests.
| [reply] [d/l] [select] |
Thank you, with that HTML file I can reproduce it too. (BTW, req.open('GET', 'http://localhost:5000/emperl.js', false); should probably be req.open('GET', url, false);)
emperl.js is pretty huge, so I tried changing it to webperl.js, and although it exhibited the same behavior of seeming to block the webpage, after a little while it got unstuck and displayed the output. If you do print length(js(...)) instead of print js(), you get a result much quicker. The same is true if you remove the <textarea> from the HTML page, which causes the output to go to the JS console. There is obviously something very inefficient going on with the <textarea>, I'll take a guess that it's this line: ta.value = ta.value + str;.
I didn't put a lot of effort into optimizing the STDOUT/ERR routines because in the WebPerl applications I was imagining, there wouldn't be any console output, and everything would get handled through the UI. But in the case of this textarea, there's certainly a lot of room for improvement. (Patches welcome :-) )
The endless loop of initializing/ended is also interesting, something I haven't seen yet, could you tell me the steps to reproduce that?
| [reply] [d/l] [select] |
wasm streaming compile failed: CompileError: Function body too big
falling back to ArrayBuffer instantiation
failed to asynchronously prepare wasm: CompileError: Function body too
+ big
CompileError: Function body too big
CompileError: Function body too big
plus a popup "Perl Aborted"
democode/demo.html ...
does 2-4 popups saying "Perl aborted"
I also have the feeling that a reload doesn't do a reset of the Perl engine.
> should probably be req.open('GET', url, false);
Indeed, fixed :)
| [reply] [d/l] |
> The endless loop of initializing/ended is also interesting, something I haven't seen yet, could you tell me the steps to reproduce that?
NB demo.html not index.html like in the online version.
| [reply] |
> There is obviously something very inefficient going on with the <textarea>, I'll take a guess that it's this line: ta.value = ta.value + str;.
I've testet it in pure JS inside your webperl/plack environment.
Adding the whole of emperl.js to a textarea works without problem in my FF.
But appending 3000 lines in a loop creates an "out of memory" exception (adding only half the lines still works)
So buffering output (think $| ) might be a solution.
I'm expecting your ta.scrollTop = ta.scrollHeight; to mean even more trouble. *
*) indeed scrolling makes the whole unresponsive with much smaller line-counts already.
| [reply] [d/l] [select] |