archives

muSE - an embeddable scheme dialect

Hi all,

My pleasure to announce that my company has allowed me to publish muSE - an embeddable Scheme-like scripting engine we use - under a liberal open-source license. The first place I could think of was LtU, so here it is.

Code is available here.
I'm documenting it gradually in this blog.

From a language design perspective, nothing very dramatic, though some lisp afficionados might be interested in some novel/experimental features like -

  • (Sort of) first class macros
  • Ability to choose dynamic or lexical scoping for functions/closures.
  • Use of pattern-matching bind in let, case and fn (read "lambda").

Enjoy!

[EDIT] Code hosting site and blog site address have changed.

Concurrency made easy?

With the wide availability of multicore and multiple processor systems, I've decided it's time for me to learn a new language. Until now it's been pretty much straight C, but I really don't want to do explicit threads if possible. I have a few projects that should be highly parallelizable, eg counting the number of random graphs with a particular property. But what language to use?

Functional languages seem like a natural, but how are the actual implementations? Which implementations of which languages will handle the concurrency without having to explicitly count processors and create threads. It should be fairly readable, and available for Linux and Mac OS X. Any suggestions?

Strongtalk goes open source

There seem to be a few scattered references to strongtalk in the archives, but no threads dedicated to it. Sun apparently just released the source code with a BSD style license, so feel free to look at the code or steal it for your own devious purposes. The following snippet from the homepage made me think of lambda-the-ultimate.

Type System: It contains the first fully developed strong, static type system for Smalltalk (hence the name Strongtalk). The type system is both optional and incremental, and operates completely independently of the compiler technology (which means that normal untyped Smalltalk code runs just as fast as typed code). It also contains a re-designed, strongly-typed "Blue Book" class library.

Get it here

Neophyte question: detecting deadlock, livelock, races etc.

Since I've seen things like TyPiCal claim to perform static deadlock detection, I wonder why such presumably powerful tools don't seem to be more prevalent. There seem to be a few formal method languages and tools which help folks avoid deadlock etc., but then you have to convert that into the final language and hope it really does match the theory. And, most programmers don't know the theory or tools enough to use formal methods, or think they are in too much of a rush to afford them.

So I'm just wondering if there any less-formal programming language systems that have static deadlock, livelock, etc. detection? E.g. Erlang is great, but does it have any tools to help dis/prove such useful and important aspects of your final system? Might there be a relatively simple way to use TyPiCal with, say, occam-pi? Are there research-y programming systems that might address these bugaboos?

AppleScript - a story worth telling

"... I believe that the development of AppleScript is a story worth telling, and I have been encouraged to attempt it despite the inherent difficulty of the task. I can only offer my own subjective views on the project, as someone who was intimately involved with all its aspects. ..."