scripting

Weight (or: Vlerq progress)

It takes time to pull stuff in, and to set things up. I'm often amazed by how much apps do when starting up. Even Tclkit suffers from this - here's a listing of the contents of a 4.4 Mb starkit, using sdx:

Pasted Graphic 4

Here's the same with vqx, which I'm using to try things out in Vlerq these days:

Pasted Graphic 1

Tclkit is 2.8 Mb, with Tcl/Tk and Metakit inside, and has to open/launch the sdx starkit. Vqx is a 0.2 Mb standalone app with Lua and Vlerq embedded - it implements lsk as follows:

Pasted Graphic 5

In all fairness, there are many years of experimentation and learning between the two - the above code is considerably streamlined over what I did in sdx. As is Vlerq w.r.t. Metakit.

Jitters

LuaJIT is a small just-in-time system for Lua. It's amazingly effective, because you can just run your code with it and everything simply goes faster (3..5 times is what I see). I have not run into any issues whatsoever. None. Quite a feat, IMO.

Now there's a road map for LuaJIT 2.x, and it promises to become considerably better still. Wow.

I'm very happy to use Lua inside Vlerq now. Performance matters a lot across the scripting <-> C boundary, because one of the things you want to do is perform brute-force selection using custom conditional code, and being able to use a scripting language for those conditions is tremendously useful. I can now think about taking a condition (even from Tcl, just parse and translate to Lua), and using it in C-based brute-force loops. With LuaJIT, that gets compiled to machine code, and since the loops are usually very simple and totally repetitive, chances are that LuaJIT can figure out static datatype-info right on.

Just in case you think I've now joined the church of Lua, and abandoned all others: not so. All I do is use Lua as internal scripting language. At this stage it is also my test environment, to avoid complexity, but once the Vlerq core is sufficiently complete I intend to embed the whole kaboodle into whatever language makes sense. IOW, Lua is my systems scripting language.

i'm soooo tired of "faith-based" language communities. Lua, Python, Ruby, Tcl, whatever. All everyone seems to be doing is defending/protecting their own turf. So many missed opportunities, so little synergy. What an utter waste of human resources.

Akismet

Akismet is a spam filtering service which appears to work quite well. Have added some code on the wiki to use it from Tcl.

Setting wikit free

With the Tcl'ers Wiki getting a new home real soon now, I'm setting the sources of the underlying "wikit" engine free. A starkit with the latest (and probably last) changes from me is available for download.

Do whatever you like with it - all I ask is that credits to me as original author be kept in the sources, at least for those files from which substantial portions are being (re)used. Hopefully others will have as much fun with this code as I had when coming up with all this, many years ago!

LuaJIT

The small Lua scripting core can now be extended to do just-in-time compilation to machine code with LuaJIT. The features page give some speed and size results. Very impressive...

Tcl/Tk Conference

FWIW, I'll be presenting a paper about Vlerq and Ratcl at the Tcl/Tk conference in Chicago next month. Am very much looking forward to it!

Unopinionated software

Another gem by Mark Roseman about Tcl/Tk's (lack of) popularity.

Tcl/Tk

Mark Roseman posted a reply to the ever-recurring Is Tcl/Tk dead? theme. Priceless.

Dynamic languages

Wow, the Dynamic Languages Symposium 2006 looks like a heck of a conference! Too bad I can't make it (there really is no way) ...

Brne

Christian Neukirchen's Brne is the first mention I've ever seen of anyone working on something even remotely similar to Vlerq.

Wee.. so maybe there are some more lost souls chasing the same dream on this planet after all! Wonderful, I need to get in touch with that guy...

Update - more details.

Vlerq lives

The Vlerq research project, which aims to supercede Metakit one day has undergone a dramatic transformation these past weeks.

I have completely rewritten the code as a C extension for Tcl, re-using many ideas and insights but also adding some new ones, and the result has shattered many of my prior assumptions. The new code is a fraction of MK's C++ code base, about 75% C and 25% Tcl, and it looks like it is turning into an incredibly good fit for Tcl.

The big surprise for me was the enormous simplification
and speed increase which means Vlerq now outperforms MK's highly tuned code in many cases, often by a factor 2..3, and I confidently predict that this is not the end of it either.

Scripting

Here is some source code in a blog entry about decoding "tar" archive headers, which IMO is a good example of how different languages have their own way of expressing logic (Ruby in this case).

Wouldn't it be nice if there were a place where the same problem, preferably a simple-to-understand-but-not-quite-trivial-one-to-solve, were coded in different languages and all collected somewhere?

Not as a shoot-out, but to help understand just what the different styles, formatting choices, standard libraries, and conventions are. Hey, let's call it a "sleep-in", to protest against language apartheid!

I'd really like this world to move on from "mono-lingual" language-centric communities ...

Vlerq 1.0

I've released Vlerq 1.0 (i.e. Ratcl 1.0 + Thrive 2.23).

A bit worried about the amount of work still remaining, but nevertheless: lots and lots of progress so far. One could say I'm halfway there.

Synergy

Could the Dynamic Languages Day be what I hope it is - an attempt to bridge the gap between the many scripting languages to emphasize and leverage the commonality between them? I hope many more will come - and would have attended had I known about this. The presentation movies are on-line, great!

Minimal LISP

MISP is a minimal Lisp which is being described in a number of very short and readable blog entries. I love it - not only is it a delightful read, it might in fact be a great candidate to implement on the Thrive VM.

Beyond Java

If Java is not the last word, as this article & book suggest, and if Ruby is the next big thing, then this is great news for the future of scripting languages in general. The differences between Ruby and Perl, Python, Tcl, Lua, etc are minor, IMO.

Ruby, spot on

Ignore the title of this presentation, it's simply a very good list of what makes Ruby look so attractive.

Embedded compiler

Saw this on the Tcler's Wiki. I don't know who the poster is, but most likely this is Linux, which often has gcc installed:

Wow. I've never ever used critcl before. Now I'm convinced. I didn't even know I had critcl on my system, but the above cut'n'pasted and Just Worked. Nifty.


Scripting with a C compiler built-in.
A few years from now, most people will get their first exposure to C this way. Quite a difference from how old-timers like me had to make things work!

Ratcl 0.97

I've pushed out a new release of the Ratcl relational algebra extension for Tcl. It's a preview, nowhere near being production-ready, but it really was long overdue after the massive rewrite since 0.92 in June.

Ajax

Interesting how JavaScript can turn a web browser into an advanced application framework. ZDNet has a list of apps, I had a quick look at Webnote. Double-click to edit, click outside the note to end an edit. Amazing.

A nice (Java-centric) introduction into this sort of approach can be found here.

Releases

Been busy. Released Ratcl 0.92 and Metakit 2.4.9.4. The usual frenzy: check-in, fix all version numbers, do all builds, perform all tests, and DON'T-MESS-UP! kind of thing. It was long overdue.