Initial commit of WebPerl site

gh-pages
Hauke D 7 years ago
commit 4605b386fc

3
.gitignore vendored

@ -0,0 +1,3 @@
/web/
/work/
/emperl5/

@ -0,0 +1 @@
webperl.zero-g.net

@ -0,0 +1,5 @@
theme: jekyll-theme-minimal
title: WebPerl
description: Run Perl in the browser with WebPerl!
logo: webperl.png
show_downloads: false

@ -0,0 +1,15 @@
🕸️🐪 Building WebPerl
===================
\[ [Home](index.html) -
[Using WebPerl](using.html) -
[Building WebPerl](building.html) -
[Wiki](https://github.com/haukex/webperl/wiki) -
[GitHub](https://github.com/haukex/webperl) -
[Notes](notes.html) -
[Legal](legal.html) \]
Nothing here yet.

@ -0,0 +1,34 @@
🕸️🐪 Welcome to WebPerl!
======================
\[ [Home](index.html) -
[Using WebPerl](using.html) -
[Building WebPerl](building.html) -
[Wiki](https://github.com/haukex/webperl/wiki) -
[GitHub](https://github.com/haukex/webperl) -
[Notes](notes.html) -
[Legal](legal.html) \]
WebPerl uses the power of [WebAssembly](https://webassembly.org/) and
[emscripten](http://emscripten.org/) to let you run Perl 5 in the browser!
**Notice: WebPerl is in beta.**
Some things may not work yet, and parts of the API may still change.
Your feedback is always appreciated!
```html
<script src="webperl.js"></script>
<script type="text/perl">
use WebPerl qw/js/;
print "Hello, Perl World!\n";
js('document')->getElementById('my_button')
->addEventListener("click", sub {
print "You clicked 'Testing!'\n";
} );
</script>
```

@ -0,0 +1,32 @@
🕸️🐪 WebPerl Author, Copyright, and License
=========================================
\[ [Home](index.html) -
[Using WebPerl](using.html) -
[Building WebPerl](building.html) -
[Wiki](https://github.com/haukex/webperl/wiki) -
[GitHub](https://github.com/haukex/webperl) -
[Notes](notes.html) -
[Legal](legal.html) \]
**WebPerl <http://webperl.zero-g.net>**
Copyright (c) 2018 Hauke Daempfling (haukex@zero-g.net)
at the Leibniz Institute of Freshwater Ecology and Inland Fisheries (IGB),
Berlin, Germany, <http://www.igb-berlin.de>
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl 5 itself: either the GNU General Public
License as published by the Free Software Foundation (either version 1,
or, at your option, any later version), or the "Artistic License" which
comes with Perl 5.
This program is distributed in the hope that it will be useful, but
**WITHOUT ANY WARRANTY**; without even the implied warranty of
**MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE**.
See the licenses for details.
You should have received a copy of the licenses along with this program.
If not, see <http://perldoc.perl.org/index-licence.html>.

@ -0,0 +1,56 @@
🕸️🐪 Misc. Notes on WebPerl
=========================
\[ [Home](index.html) -
[Using WebPerl](using.html) -
[Building WebPerl](building.html) -
[Wiki](https://github.com/haukex/webperl/wiki) -
[GitHub](https://github.com/haukex/webperl) -
[Notes](notes.html) -
[Legal](legal.html) \]
TODOs
-----
<https://github.com/haukex/webperl/blob/master/ToDo.md>
Possible Improvements
---------------------
- More efficient JS/C/Perl glue
- Test/Support sockets/WebSockets
- for example, can we compile a DBD:: module to connect to a DB on the server?
- A RPC module for communicating between client and server Perls
- Support some of the Emscripten API (like wget?)
- Try to shrink the download size more (exclude more modules, ...?)
Limitations
-----------
- Only works in browsers with WebAssembly support
(asm.js requires aligned memory access, and Perl apparently has quite a few places with unaligned access)
- 32-bit ints
- No `system`, `qx`, `fork`, `kill`, `wait`, `waitpid`, threads, etc.
- Theoretically, we could link in BusyBox to get a shell and utilities (??)
- (`system` and `qx` support could theoretically be added by patching `pp_system`/`pp_backtick` in `pp_sys.c`)
- No signals (except `SIGALRM`)
- In the current configuration, `exit` is not supported, and therefore `atexit` handlers aren't supported
(see discussion in `webperl.js`, and `NO_EXIT_RUNTIME` in the Emscripten documentation - currently it
seems to make the most sense to build with `NO_EXIT_RUNTIME=1`)
- Static linking, requires rebuild to add modules
(Emscripten apparently only supports asm.js dynamic linking when dynamic memory growth is disabled, which is not very useful)
Prior Art
---------
Several people have built microperl with Emscripten:
- Harsha <https://github.com/moodyharsh/plu>
- Shlomi Fish <https://github.com/shlomif/perl5-for-JavaScript--take2>
- FUJI Goro <https://github.com/gfx/perl.js>

@ -0,0 +1,15 @@
🕸️🐪 Using WebPerl
================
\[ [Home](index.html) -
[Using WebPerl](using.html) -
[Building WebPerl](building.html) -
[Wiki](https://github.com/haukex/webperl/wiki) -
[GitHub](https://github.com/haukex/webperl) -
[Notes](notes.html) -
[Legal](legal.html) \]
Nothing here yet.

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Loading…
Cancel
Save