[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [epsilon-devel] epsilon in javascript in the browser
From: |
amz3 |
Subject: |
Re: [epsilon-devel] epsilon in javascript in the browser |
Date: |
Mon, 30 Dec 2013 07:22:07 +0100 |
User-agent: |
Roundcube Webmail/0.9.5 |
(Sorry for the duplicate email, I'm not fully familiar with my new email
software)
On 2013-12-30 03:15, Luca Saiu wrote:
On 2013-12-29 at 23:51, address@hidden wrote:
I am working on a epsilon implementation in JavaScript. The purpose of
this project are manyfolds:
amz3 and I already exchanged a couple messages about this in private.
I'm no fan of the web, but this is a nice,
ambitious project,
Why is that? It looks pretty simple actually.
if particularly if you care about performance. As I told you in
private,
I'll be very interested in comparing performances.
I don't really care about performances actually. I fail to understand
why performances will be interesting since asm.js is known to be slower
than native [1][2]. Nonetheless I will consider it.
I'm honored that you consider epsilon worthy of this.
Hey you don't have to. I am thankful in the first place for the
existence of epsilon, without it I would surely be implementing
yet-another-scheme-from-scratch which would be not particularly useful
for anyone. At least with epsilon, I have some rails to follow and
something to learn from some one more experienced. Thank you.
My understanding is that epsilon is lowering the barrier of entry for
creating languages, I'm not sure it's is very much needed, but at least
it will burn the late hours of some hackers around the world. And I'm
pretty confident good things will happen for epsilon and you. At the
very least it's the state of the art of language creation, as such it's
worth considering.
I have just one comment, which however I think is crucially important:
epsilon's design can make your work *much* easier than your current
design. You'd have to implement epsilon0 primitives, an epsilon0
interpreter (compiling to Javascript on the fly if you want), and that
would be it: epsilon1 is implemented in epsilon0, so you won't have to
redo the difficult part. You can just run by loading an unexeced image
into your new environment. Load it with Javascript, epsilon0, or
whatever is convenient to you; it's quite easy: I've implemented this
both in epsilon0 and in C (just for speed). Look at unexec.e.
This will become easier as soon as I complete the bootstrap process and
remove the dependency from Guile. For example, I still use Scheme's
load procedure to load a file, and there's no good epsilon1
Read-Eval-Print Loop. However all of this is trivial, compared to a
re-implementation of epsilon1.
I don't understand. Which file do you want me to unexec? I was planning
to implement epsilon0 only. I'm not sure where the implementation of
epsilon1 is.
The current implementation does the following:
- parse some sexpr into a list of tokens.
- convert the tokens to list a atoms or lists
- an atom can be a JavaScript number or a string
- there is stack of contexts where are defined procedures et al.
- some e0 primitives are defined, but not enough to do anything useful.
... that is all... it's not much...
[1]
http://techcrunch.com/2013/12/21/mozillas-asm-js-gets-another-step-closer-to-native-performance/
[2] http://kripken.github.io/mloc_emscripten_talk/sloop.html