
Python, client side: Skulpt - s3graham
http://www.skulpt.org/
======
s3graham
I just can't get myself to love JS the way I do other languages... so, this is
my current little weekend project.

It's a source-to-source translator so it interops reasonably with JS and
should perform similarly also.

The parser is derived from CPython's so that part is relatively complete, but
the "backend" isn't done yet. For example, there's not even support for
"class" yet.

~~~
dtf
Very impressive work. But you'll need to implement "import this" for it to be
considered a serious Python implementation.

~~~
kevindication
Any support at all for modules is really a requirement to be considered a
serious Python implementation.

    
    
      >>> import sys
      don't have handler for: import_stmt
    

But otherwise, neato.

------
zokier
<http://www.trypython.org/>

Requires Silverlight, but is far more complete as it wraps IronPython. I think
its quite neat what you can do with silverlight even if its EEEEVIL MS tech.

Another cool SL trick:
[http://www.mix09.org/labs/gestalt/samples/canvas.2d.drawing/...](http://www.mix09.org/labs/gestalt/samples/canvas.2d.drawing/canvas.2d.drawing.html)

Using Python inline in your html via Silverlight and a helper JavaScript
called "Gestalt". It also supports Ruby.

<http://www.mix09.org/labs/gestalt/>

~~~
pingswept
On the topic of Silverlight: is there a reason beyond Microsoft's economic
whims that Silverlight couldn't be implemented for non-IE browsers? And if it
were implemented across browsers, would it easily work across different OS's?

Or is Silverlight not really a browser plugin like Flash?

(As is probably obvious, I'm totally ignorant of how browser plugins, Flash,
Silverlight, and most other things work.)

~~~
bmelton
I believe Silverlight works in Firefox actually.

I don't use it, but the trypython.org page has a statement:

"Target browsers are Firefox 2 & 3, Safari and IE 7 & 8\. (It won't work in
other browsers until there is a version of Silverlight that works with them.)"

~~~
pingswept
Thanks. I did a little googling. It appears that Silverlight works (at least
marginally) in several browsers on two OS's (Windows and OS X).

I'm still curious about why Silverlight works for, say, Firefox on OS X, but
not Firefox on Linux. I understand that Microsoft probably wants to prevent
Silverlight from working on Linux, but I'm curious whether it's something hard
to do because Linux doesn't have X, Y, and Z that Silverlight requires, or is
it relatively easy to do (if you had control of the codebase).

------
benhoyt
Maybe it's just me (Firefox 3.5.2 on WinXP), but the plus key ('+' and '=')
doesn't seem to work, so I can't type 1+2 or x=1. Just tried it in Chrome, and
that works fine. IE8 does too (though it's very slow).

Anyway, very neat project! How layered is it -- do you think it could approach
the speed of JavaScript?

------
tlrobinson
Fun stuff. I've got a similar proof-of-concept project for Ruby, called
"CappRuby" which targets the Objective-J runtime (not unlike how MacRuby
targets the Objective-C runtime):

<http://github.com/tlrobinson/cappruby>

(disclaimer: it's horribly incomplete and I haven't touched it in months)

~~~
s3graham
Neat.

ObjJ and Capp were my inspiration for doing a browser language without an
offline convert process, so... thanks :)

I was wondering if I could use Cappuccino as the "Skulpt GUI toolkit" too, but
that might start to get a bit silly with number of layers involved.

------
DanielStraight
All I get is a blank page... Is there something I'm missing or is the site
down?

~~~
avibryant
All I get is a blank page too. I was very curious to look at this because I've
been doing something very similar - for Smalltalk, instead of Python.

------
paulbaumgart
Anybody else on Mac OS X unable to type a colon in the interactive prompt?

I tried it in both Firefox 3.5 and Safari 4, and neither works.

Apparently it's not just this site, though. According to
[http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f...](http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-
Char-Codes-Key-Codes.aspx) it's only sending a shift (KeyCode 16) when I try
typing a colon...

On my Ubuntu system, the colon works just fine. Is this a known bug?

~~~
apgwoz
I wasn't able to type a colon either. I also wasn't able to type '+', '_',
'<', '>', '|', '?', and '~'. These all have the common pattern of being
shifted on a normal US keyboard, so I'm going to assume it's related to that.

------
uggedal
Somewhat buggy:

    
    
        >>> print 1, 2, 3
        1 1 1

~~~
diN0bot
I can't get shift-+ or shift+; to print to the screen. Nothing gets printed.
Shift-<other keys> works as expected. Without '+' and ':' it is quite limited.

Is this a problem on my end? FF3.1 Leopard.

------
ccheever
wow, that's super cool. i hope you keep working on it and making it more
complete.

------
Xixi
Doing the source-to-source translation on top of the javascript on the client
side is quite neat.

I'd actually love to create a "GWT like" that would compile my python (in
javascript/html/css) for the different browsers out there. That would be
awesome.

GWT is nice and all, but python >> Java...

~~~
s3graham
As snprbob86 pointed out, that already exists: Pyjamas @ pyjs.org.

I used pyjamas a while back for a couple toy projects. It's quite nice and
sounds like what you're looking for.

With Skulpt, I wanted to avoid the build step that Pyjamas has (the compiler's
written in Python, not Javascript so you run it ahead of time) and at least
when I used it, it sometimes felt like Javascript with Python syntax, rather
than actually programming in Python. It's certainly closer to Python than
Skulpt is today though!

------
Torn
In Opera 10 b2, the python shell never seems to grab focus correctly, so
pressing space will scroll down the page way past it, making it very fiddly to
use!

Along with hn user pmorici I'd like to find out what subset of Python this
supports.

~~~
s3graham
Hrm, sorry about Opera. I tested in a few browsers, but I confess my browser-
dom-fu is weak.

From the look of it I'm telling MooTools to stop that event, but backspace
doesn't seem to stop in Opera either. Maybe they don't want people disabling
keyboard navigation maliciously?

edit: re: subset, my intention is for source-level 2.6 compatibility with the
core language, but that's definitely far away.

------
m_eiman
Very neat and all, but why not let the browser handle the input instead of
emulating a US keyboard layout? Makes it hard to write stuff on non-US
keyboards...

------
wooby
Awesome - reminiscent of HotRuby, except cooler/faster/parses and executes all
by itself. It would be nice if there was a JS Parrot VM.

------
adrinavarro

       >>> from __future__ import braces
       don't have a handler for: import_stmt
    

Looks nice, still a lot to do.

------
cool-RR
I can't even type = or +

~~~
mahmud
Opera and Firefox hijack + for the zooming in functionality.

------
kennethreitz
Amazing!! I love python and i love this :)

site looks down though..

