Jtalk, a Smalltalk for web developers

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
23 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Jtalk, a Smalltalk for web developers

Nicolas Petton
Hi,

I would like to share a project I'm working on on my spare time: Jtalk
Smalltalk.

http://nicolaspetton.github.com/jtalk
https://github.com/NicolasPetton/jtalk

Jtalk is an implementation of the Smalltalk language that compiles into
JavaScript.

Some features:
- it is written in itself (including the parser/compiler)
- it is self-contained
- it compiles into efficient JS code
- it uses the Squeak chunk format
- Pharo is considered as the reference implementation

I think Jtalk can be compared to CoffeeScript[1], Objective-J[2] or
Clamato[3], from which it reuses some ideas and code.

Jtalk includes an IDE with a class browser, transcript and workspace, an
HTML canvas similar to Seaside and a jQuery binding.

It is still a young piece of code, and some important features are still
missing/incomplete.

Cheers,
Nicolas Petton

[1] http://jashkenas.github.com/coffee-script/
[2] http://cappuccino.org/
[3] http://clamato.net

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

sebastianconcept@gmail.co
 a move in an appealing direction!




On Mar 14, 2011, at 3:36 PM, Nicolas Petton wrote:

> Hi,
>
> I would like to share a project I'm working on on my spare time: Jtalk
> Smalltalk.
>
> http://nicolaspetton.github.com/jtalk
> https://github.com/NicolasPetton/jtalk
>
> Jtalk is an implementation of the Smalltalk language that compiles into
> JavaScript.
>
> Some features:
> - it is written in itself (including the parser/compiler)
> - it is self-contained
> - it compiles into efficient JS code
> - it uses the Squeak chunk format
> - Pharo is considered as the reference implementation
>
> I think Jtalk can be compared to CoffeeScript[1], Objective-J[2] or
> Clamato[3], from which it reuses some ideas and code.
>
> Jtalk includes an IDE with a class browser, transcript and workspace, an
> HTML canvas similar to Seaside and a jQuery binding.
>
> It is still a young piece of code, and some important features are still
> missing/incomplete.
>
> Cheers,
> Nicolas Petton
>
> [1] http://jashkenas.github.com/coffee-script/
> [2] http://cappuccino.org/
> [3] http://clamato.net
>
> _______________________________________________
> seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Lukas Renggli
Very cool, this is exactly the direction to go!

Lukas

On 14 March 2011 21:10, Sebastian Sastre <[hidden email]> wrote:

>  a move in an appealing direction!
>
>
>
>
> On Mar 14, 2011, at 3:36 PM, Nicolas Petton wrote:
>
>> Hi,
>>
>> I would like to share a project I'm working on on my spare time: Jtalk
>> Smalltalk.
>>
>> http://nicolaspetton.github.com/jtalk
>> https://github.com/NicolasPetton/jtalk
>>
>> Jtalk is an implementation of the Smalltalk language that compiles into
>> JavaScript.
>>
>> Some features:
>> - it is written in itself (including the parser/compiler)
>> - it is self-contained
>> - it compiles into efficient JS code
>> - it uses the Squeak chunk format
>> - Pharo is considered as the reference implementation
>>
>> I think Jtalk can be compared to CoffeeScript[1], Objective-J[2] or
>> Clamato[3], from which it reuses some ideas and code.
>>
>> Jtalk includes an IDE with a class browser, transcript and workspace, an
>> HTML canvas similar to Seaside and a jQuery binding.
>>
>> It is still a young piece of code, and some important features are still
>> missing/incomplete.
>>
>> Cheers,
>> Nicolas Petton
>>
>> [1] http://jashkenas.github.com/coffee-script/
>> [2] http://cappuccino.org/
>> [3] http://clamato.net
>>
>> _______________________________________________
>> seaside mailing list
>> [hidden email]
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
> _______________________________________________
> seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>



--
Lukas Renggli
www.lukas-renggli.ch
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Olivier Auverlot
In reply to this post by Nicolas Petton
Very impressive. Congratulations !

Best regards
Olivier ;-)

www.auverlot.fr

> Hi,
>
> I would like to share a project I'm working on on my spare time: Jtalk
> Smalltalk.
>
> http://nicolaspetton.github.com/jtalk
> https://github.com/NicolasPetton/jtalk
>
> Jtalk is an implementation of the Smalltalk language that compiles into
> JavaScript.
>
> Some features:
> - it is written in itself (including the parser/compiler)
> - it is self-contained
> - it compiles into efficient JS code
> - it uses the Squeak chunk format
> - Pharo is considered as the reference implementation
>
> I think Jtalk can be compared to CoffeeScript[1], Objective-J[2] or
> Clamato[3], from which it reuses some ideas and code.
>
> Jtalk includes an IDE with a class browser, transcript and workspace, an
> HTML canvas similar to Seaside and a jQuery binding.
>
> It is still a young piece of code, and some important features are still
> missing/incomplete.
>
> Cheers,
> Nicolas Petton
>
> [1] http://jashkenas.github.com/coffee-script/
> [2] http://cappuccino.org/
> [3] http://clamato.net
>
> _______________________________________________
> seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Bernat Romagosa
I've no words, amazing work Nico! I really look forward to see you presenting it at ESUG 2011!

Bernat Romagosa.

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

drush66
On Tue, Mar 15, 2011 at 10:19 AM, AxiNat <[hidden email]> wrote:
> I've no words, amazing work Nico! I really look forward to see you
> presenting it at ESUG 2011!
> Bernat Romagosa.

Hello Nico,

this is really interesting! Could you compare JTalk and summarize
important differences between JTalk and QuickSilver Smalltalk
(http://silversmalltalk.wordpress.com/)?

Davorin Rusevljan
http://www.cloud208.com/
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Sven Van Caekenberghe
In reply to this post by Nicolas Petton

On 14 Mar 2011, at 19:36, Nicolas Petton wrote:

> I would like to share a project I'm working on on my spare time: Jtalk Smalltalk.
>
> http://nicolaspetton.github.com/jtalk
> https://github.com/NicolasPetton/jtalk
>
> Jtalk is an implementation of the Smalltalk language that compiles into JavaScript.

Really impressive!

Senders/Implementers would be nice to browse the code.

Since the implementation is relatively small, it makes an excellent example of how to implement Smalltalk.

Sven

PS: On Safari, the 'Class Browser' button does not seem to work._______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Hannes Hirzel
On 3/15/11, Sven Van Caekenberghe <[hidden email]> wrote:
....
> Since the implementation is relatively small, it makes an excellent example
> of how to implement Smalltalk.

Yes, the download of the Javascript files is just 160kB.

And the license is MIT!

Hannes
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] Jtalk, a Smalltalk for web developers

Hannes Hirzel
In reply to this post by Nicolas Petton
On 3/15/11, Richard Durr <[hidden email]> wrote:
> Beautifull and elegant. Nice, that you used PP.

What is PP?

--Hannes
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-project] Jtalk, a Smalltalk for web developers

NorbertHartl

On 15.03.2011, at 13:14, Hannes Hirzel wrote:

> On 3/15/11, Richard Durr <[hidden email]> wrote:
>> Beautifull and elegant. Nice, that you used PP.
>
> What is PP?
>
PetitParser

Norbert

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Nicolas Petton
In reply to this post by Sven Van Caekenberghe
Le mardi 15 mars 2011 à 10:53 +0100, Sven Van Caekenberghe a écrit :

> On 14 Mar 2011, at 19:36, Nicolas Petton wrote:
>
> > I would like to share a project I'm working on on my spare time: Jtalk Smalltalk.
> >
> > http://nicolaspetton.github.com/jtalk
> > https://github.com/NicolasPetton/jtalk
> >
> > Jtalk is an implementation of the Smalltalk language that compiles into JavaScript.
>
> Really impressive!

Thanks :)
>
> Senders/Implementers would be nice to browse the code.
Yes, the IDE is very immature. Code checking before compiling is
missing, and better browsing tools too. The class browser isn't even
able to commit changes to disk yet.


>
> PS: On Safari, the 'Class Browser' button does not seem to work.
It should work now.

Cheers,
Nicolas

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Nicolas Petton
In reply to this post by Hannes Hirzel
Le mardi 15 mars 2011 à 12:10 +0000, Hannes Hirzel a écrit :
> On 3/15/11, Sven Van Caekenberghe <[hidden email]> wrote:
> ....
> > Since the implementation is relatively small, it makes an excellent example
> > of how to implement Smalltalk.
>
> Yes, the download of the Javascript files is just 160kB.
This is with the Smalltalk sources. Without it, it will be much smaller
for deployment.

Cheers,
Nicolas

>
> And the license is MIT!
>
> Hannes
> _______________________________________________
> seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside


_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Richard Durr-2
Did you create a Symbol class? I did not find one. If so, how did you manage to circumvent the problem with no weak references?

On Tue, Mar 15, 2011 at 2:02 PM, Nicolas Petton <[hidden email]> wrote:
Le mardi 15 mars 2011 à 12:10 +0000, Hannes Hirzel a écrit :
> On 3/15/11, Sven Van Caekenberghe <[hidden email]> wrote:
> ....
> > Since the implementation is relatively small, it makes an excellent example
> > of how to implement Smalltalk.
>
> Yes, the download of the Javascript files is just 160kB.
This is with the Smalltalk sources. Without it, it will be much smaller
for deployment.

Cheers,
Nicolas

>
> And the license is MIT!
>
> Hannes
> _______________________________________________
> seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside


_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside


_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Pavel Krivanek-2
In reply to this post by Nicolas Petton
I supposed it has potential to be the fastest Smalltalk implementation
however classical tinyBenchmark results are not good. :-)

2240896 bytecodes/sec; 162601 sends/sec

Cheers,
-- Pavel

On Mon, Mar 14, 2011 at 7:36 PM, Nicolas Petton
<[hidden email]> wrote:

> Hi,
>
> I would like to share a project I'm working on on my spare time: Jtalk
> Smalltalk.
>
> http://nicolaspetton.github.com/jtalk
> https://github.com/NicolasPetton/jtalk
>
> Jtalk is an implementation of the Smalltalk language that compiles into
> JavaScript.
>
> Some features:
> - it is written in itself (including the parser/compiler)
> - it is self-contained
> - it compiles into efficient JS code
> - it uses the Squeak chunk format
> - Pharo is considered as the reference implementation
>
> I think Jtalk can be compared to CoffeeScript[1], Objective-J[2] or
> Clamato[3], from which it reuses some ideas and code.
>
> Jtalk includes an IDE with a class browser, transcript and workspace, an
> HTML canvas similar to Seaside and a jQuery binding.
>
> It is still a young piece of code, and some important features are still
> missing/incomplete.
>
> Cheers,
> Nicolas Petton
>
> [1] http://jashkenas.github.com/coffee-script/
> [2] http://cappuccino.org/
> [3] http://clamato.net
>
> _______________________________________________
> seaside mailing list
> [hidden email]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Hannes Hirzel
Hello Nicolas

You mentioned the jtalk is a compiler.

I did in the workspace

1 to: 10 do: [ :i | Transcript show: (i printString, ' ',(i*i)
printString, ' ', (i*i*i) printString); cr]. Transcript cr.

And the result showed in the Transcript.

Is there a place to see the translation of the Smalltalk code?

Or put the question otherwise: how do I use the compiler?

Regards
Hannes
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

NorbertHartl

Am 19.03.2011 um 13:55 schrieb Hannes Hirzel:

> Hello Nicolas
>
> You mentioned the jtalk is a compiler.
>
> I did in the workspace
>
> 1 to: 10 do: [ :i | Transcript show: (i printString, ' ',(i*i)
> printString, ' ', (i*i*i) printString); cr]. Transcript cr.
>
> And the result showed in the Transcript.
>
> Is there a place to see the translation of the Smalltalk code?
>
> Or put the question otherwise: how do I use the compiler?
>
To see the code I would use

Compiler new compileExpression: '3 + 4'

in the workspace. If you print it you get

 'smalltalk.method({
selector: "doIt",
source: unescape("doIt%20%5E%5B3%20+%204%5D%20value"),
fn: function(){
var self=this;
return (function(){return (3).__plus((4));})._value();
return self;}
})'

If you execute it you use

Compiler new loadExpression: '3 + 4'

That is my short insight. Nicholas may come up with the real meat :)

hope it helps,

Norbert


_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Nicolas Petton
Le samedi 19 mars 2011 à 14:08 +0100, Norbert Hartl a écrit :

> Am 19.03.2011 um 13:55 schrieb Hannes Hirzel:
>
> > Hello Nicolas
> >
> > You mentioned the jtalk is a compiler.
> >
> > I did in the workspace
> >
> > 1 to: 10 do: [ :i | Transcript show: (i printString, ' ',(i*i)
> > printString, ' ', (i*i*i) printString); cr]. Transcript cr.
> >
> > And the result showed in the Transcript.
> >
> > Is there a place to see the translation of the Smalltalk code?
> >
> > Or put the question otherwise: how do I use the compiler?
> >
> To see the code I would use
>
> Compiler new compileExpression: '3 + 4'
>
> in the workspace. If you print it you get
>
>  'smalltalk.method({
> selector: "doIt",
> source: unescape("doIt%20%5E%5B3%20+%204%5D%20value"),
> fn: function(){
> var self=this;
> return (function(){return (3).__plus((4));})._value();
> return self;}
> })'
>
> If you execute it you use
>
> Compiler new loadExpression: '3 + 4'

Yes, that's exactly how te compiler is used. I would just add that you
can get the Smalltalk source of any compiledMethod with:

(Behavior methodDictionary at: 'new') source

And the JS code with:

(Behavior methodDictionary at: 'new') fn compiledSource

Also, if you want to compile a method for a class you can use:

compiler := Compiler new.
compiledJS := compiler compile: aString forClass: aClass.
compiler eval: compiledJS.

Cheers,
Nicolas

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Igor Stasenko
In reply to this post by Pavel Krivanek-2
On 19 March 2011 11:43, Pavel Krivanek <[hidden email]> wrote:
> I supposed it has potential to be the fastest Smalltalk implementation
> however classical tinyBenchmark results are not good. :-)
>
Fastest?? Without dedicated VM support.. Noo.. that's impossible.

> 2240896 bytecodes/sec; 162601 sends/sec
>
> Cheers,
> -- Pavel
>


--
Best regards,
Igor Stasenko AKA sig.
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Nicolas Petton
Le dimanche 20 mars 2011 à 15:13 +0100, Igor Stasenko a écrit :
> On 19 March 2011 11:43, Pavel Krivanek <[hidden email]> wrote:
> > I supposed it has potential to be the fastest Smalltalk implementation
> > however classical tinyBenchmark results are not good. :-)
Results could be better, I didn't do any optimization yet.

> >
> Fastest?? Without dedicated VM support.. Noo.. that's impossible.
Not the fastest. But since Jtalk compiles into idiomatic JavaScript, it
could be quite fast, depending on the underlying JS VM.

Cheers,
Nicolas

_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Reply | Threaded
Open this post in threaded view
|

Re: Jtalk, a Smalltalk for web developers

Richard Durr-2
In reply to this post by Igor Stasenko
Oh, but it has "dedicated" VM support, because of the mapping:

Message-sending -> JS Prototype Chain
Blocks -> JS Functions


On Sun, Mar 20, 2011 at 3:13 PM, Igor Stasenko <[hidden email]> wrote:
On 19 March 2011 11:43, Pavel Krivanek <[hidden email]> wrote:
> I supposed it has potential to be the fastest Smalltalk implementation
> however classical tinyBenchmark results are not good. :-)
>
Fastest?? Without dedicated VM support.. Noo.. that's impossible.

> 2240896 bytecodes/sec; 162601 sends/sec
>
> Cheers,
> -- Pavel
>


--
Best regards,
Igor Stasenko AKA sig.
_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside


_______________________________________________
seaside mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
12