[parenscript-devel] TryParenScript.com!

Nick Fitzgerald fitzgen at gmail.com
Fri Jul 23 21:54:59 UTC 2010


Thanks for the detailed reply, Vladimir!

Unfortunately, I had to temporarily take the site down due to a pretty
serious security bug. I won't be able to fix the issue and bring it back up
until later this evening.

I'm pretty short on time at the moment, but I will revisit everything you've
written tonight, and reply with a little more substance.

_Nick_



On Fri, Jul 23, 2010 at 11:58 AM, Vladimir Sedach <vsedach at gmail.com> wrote:

> This is pretty cool.
>
> Apache is a huge pain to set up, good call on Node.js. I like how
> short the glue code is.
>
> You should probably go with a Lisp process per session.
>
> Consider using CLISP because it starts up really fast and has very
> little memory overhead (although both CLISP and SBCL share their Lisp
> image VM pages, loading FASLs causes some of the pages to be modified
> and unshared - if you make a new image file with Parenscript
> preloaded, all the processes will share their entire image).
>
> The tricky thing is going to be detecting a stuck process. One easy
> way to bypass this is to do a new Lisp process per eval - just run the
> entire REPL history over every time the user presses enter, and have
> something like a 5 second timer that kills that process if it doesn't
> complete. I guess that's exactly like CGI. Users might run into
> trouble if something depends on randomly generated names (gensyms
> should be identical across invocations).
>
> You can use FreeBSD jails or one of the Linux jail tools to sandbox
> the Lisp and allow defmacros (although the latter are kind of a pain
> to set up).
>
> As far as the code goes, the repository Parenscript has implicit
> returns for defuns and lambdas. I should put together a new release
> soon.
>
> Vladimir
>
> 2010/7/23 Nick Fitzgerald <fitzgen at gmail.com>:
> > Hey guys!
> > I just got a quick and dirty first iteration
> > of http://tryparenscript.com/ up and running. Emphasis on dirty. This is
> my
> > first "real" piece of ParenScript, so I would love to have some feedback.
> > All of the code is hosted at
> http://github.com/fitzgen/tryparenscript.com
> > It follows in the footsteps
> > of http://www.tryruby.org/, http://tryhaskell.org/,
> > and http://tryclj.licenser.net/. Basically provides a REPL for
> ParenScript
> > inside of your browser. I would like to add an interactive tutorial like
> how
> > some of those have in the future.
> > I couldn't get sbcl and hunchentoot running behind apache, it was a
> > nightmare for me (though I expect I just was overlooking something), so I
> > ended up writing the backend in ParenScript too, with Node JS.
> > Currently there are some issues with the way that function definitions
> are
> > evaled in the global scope, so
> > (defun foo (x) (return (+ x 1)))
> > won't create a new global foo function because it ends up being evaluated
> as
> > this:
> > window.__tryps_return = function foo(x) { return x + 1; }
> > so what should have been a Function Declaration gets turned in to a Named
> > Function Expression. This is on the top of my list of things to do next.
> > Fortunately, there is a simple (while not quite "easy-to-use") fix:
> > (setf (@ window foo) (lambda (x) (return (+ x 1))))
> > which will work as expected.
> > I also expect I will need to set up some type of monitoring for the
> server
> > because it is just a single process in detachtty, and if it crashes
> (which I
> > suspect it might if it hit the front page of Hacker News all of a sudden,
> or
> > something like that) I would have to go back in and restart the process
> > (after I somehow found out it died). This is obviously less than optimal.
> If
> > anyone has any suggestions on this front, I would love to hear them too.
> > Most of all, I would just like to get some feedback and suggestions on
> the
> > code :)
> > Thanks in advance for all your responses!
> >
> > _Nick_
> >
> >
> > _______________________________________________
> > parenscript-devel mailing list
> > parenscript-devel at common-lisp.net
> > http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
> >
> >
>
> _______________________________________________
> parenscript-devel mailing list
> parenscript-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/parenscript-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/parenscript-devel/attachments/20100723/6a62d141/attachment.html>


More information about the parenscript-devel mailing list