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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 : _______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
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 |
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 |
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? > 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 |
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 |
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 |
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 |
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:
_______________________________________________ seaside mailing list [hidden email] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside |
Free forum by Nabble | Edit this page |