Comments on Current QuickSilver Status
March 11, 2011
Update to ExtJs 4.0
ExtJs 4.0 was scheduled to be released Feb 28, but the beta is still not available as of today (March 11). Instead, there are a number of pre-releases (currently pre-release 3) that are only available in full debug configuration. This is about a 2.8 MB download, so the loading will be slow until the beta is available.
Once the beta is ready, I will use the dynamic loading capability which should improve startup times dramatically.
ExtJs 4.0 is a major refactoring of the product, so I decided to proceed with the upgrade rather than extending the ExtJs 3.3 tools.
QuickSilver Smalltalk Compiler
The compiler is working well with only a few bugs that I am aware of.
Debugger
A debugger can be implemented by some additions to the code generator that will insert extra statements to store the current state and exit the current process. I don’t see any major problems implementing a debugger.
Smalltalk vs JavaScript Syntax
The QuickSilver compiler could be extended to handle either Smalltalk or JavaScript syntax. In any case, the compiler will have to be reworked to support a debugging environment.
Currently, the compiler takes Smalltalk code from which it generates JavaScript code for compilation. The inverse should also be possible – that is, take JavaScript code and convert it to Smalltalk syntax.
ExtJs 4.0 supports SVG graphics which means that it is probably not too difficult to build an “MIT Scratch” type visual programming interface for end users.
QuickSilver is now about 86kb in size. Adding JavaScript syntax support could add another 30-50kb (guess?). Supporting Scratch really doesn’t add much to the compiler – it receives a graph structure from the graphical interface and uses it to generate code – this just uses the generator that is already in the compiler.
Dynamic Environment
One change that I am currently implementing is to load as much as possible (HTML, CSS, JavaScript) from dynamic sources – Memcache or Database. This will allow many applications to share common components.
It also means that applications can be dynamically created from existing components on the site. The “Lego” building-block approach to creating applications.
March 11, 2011 at 3:23 pm
I LOVE the idea of converting javascript to SST. It makes me happy just thinking about it. Of course, I have no idea whether it would be intelligible after the conversion. But, just think how great it would be to refactor you JS code by turning it into SST first!
March 11, 2011 at 5:07 pm
There are some restrictions.
For example, namespaces:
In JS:
Qs.vars.Transcript
Qs.xyz.Transcript
refer to two separate variables
while in ST there is just one global namespace.
Also, JS can initialize hashes and lists:
child2 = ‘Bob’;
x = {name: ‘Sam’, children: ['Joe', child2 , 'Bill']};
ST syntax for this is extremely clumsy.
That is why is QuickSilver I introduced a ‘{}’ syntax to include JS code.
So, use an expanded Smalltalk syntax or a subset of JavaScript.
March 15, 2011 at 5:38 am
Hi,
what are the main differences from your point of view between SilverSmalltalk and JTalk
http://nicolaspetton.github.com/jtalk/?
March 15, 2011 at 12:57 pm
The concepts are very similar.
They are based on different libraries:
– SST is based on ExtJs
– JTalk is based on jQuery
SST can embed JavaScript code in Smalltalk statements using the {} syntax; I don’t know is JTalk has something equivalent.
Thanks for the link – I will try to learn more about JTalk.
– Peter
March 16, 2011 at 12:53 pm
I am watching your progress with Smalltalk on Javascript with great interest. In my dreams, a Smalltalk development environment with browsers, debugger… all executing on top of a Javascript VM would be ideal. Are you envisioning all or parts of this kind of environment in your ongoing work?
Real-world factors require co-habitation of your generated Javascript with existing Javascript libraries and code. I understand you are ‘wrapping’ certain Javascript libraries. I believe there should also be a way to co-exist with existing Javascript. Can you comment please?
March 16, 2011 at 2:09 pm
Yes, the goal is to have a complete Smalltalk (and/or JavaScript) development environment online.
QuickSilver Smalltalk can co-exist with any JavaScript library.
The development environment uses the ExtJs JavaScript libraries because they are currently amongst the most advanced that are available.
The QuickSilver Smalltalk compiler itself is not dependent upon these libraries. As I said above, it could be used with any JS libraries.
– Peter
May 4, 2011 at 8:39 am
So, is this another Vista Smalltalk or rather another GWT Smalltalk, suddenly coming to a grinding halt, never to be heard again? Strange