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.

Advertisements

7 Responses to “Comments on Current QuickSilver Status”

  1. Andy Burnett Says:

    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!

  2. Peter Fisk Says:

    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.


  3. Hi,

    what are the main differences from your point of view between SilverSmalltalk and JTalk
    http://nicolaspetton.github.com/jtalk/?

  4. Peter Fisk Says:

    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

  5. PeterO Says:

    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?

  6. Peter Fisk Says:

    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

  7. Ben Says:

    So, is this another Vista Smalltalk or rather another GWT Smalltalk, suddenly coming to a grinding halt, never to be heard again? Strange


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: