Dan -- OK.
The big rewrite is "done". There are still plenty of warts on the current implementation, not the least of which is a bunch of dead code that I still need to remove. But, most of the examples compile and run, including the ever popular (hi, acme!) mandelzoom. Queens.jako still doesn't work right, and now neither does primes.jako. I've printed out primes.{jako,imc,pasm} to see if I can locate the problem there. Queens will have to remain a mystery (not surprising, really -- mystery of royalty and all) until I solve primes (there's a thought...). As a special treat, Jako now has a language feature for telling it about ops that are not among the basic set supported by imcc. For example, the test programs I use now have sub prototype lines like these in them: sub print {op} (str s); That thingee in the curly braces is a single entry in the compile-time properties for the sub being declared. The more general form, eventually intended to support loadable oplib stuff, is: sub num coversine { oplib = "obscure", op = "covers" } (num x); Limitation: You'll really want to be able to tell jakoc about different versions of the same op, with different arg types. The renaming notation above could help until something cooler comes along. But, in the case of print, you can just use interpolated strings: sub print {op} (str s); const int x = 10; print("$x\n"); which has the advantage of actually working, even though its not the most efficient thing to do (you can see the generated imc code to watch the string be compiled). I haven't looked lately at the IO stuff you want (I will soon). But, you might be able to do some fiddling with this feature, although be aware that I've not done any testing at all with the 'obj' type, which probably means jakoc will throw itself on the floor and go into a fit of convulsions and cursing when you try it... BTW, the same syntax is intended for eventual use with the Native Call stuff: sub int BlitSurface { fnlib = "libsdl", fn = "SDL_BlitSurface" } ( obj { nat = "p" } src, obj { nat = "p" } srcrect, obj { nat = "p" } dst, obj { nat = "p" } dstrect ); Although that is brainware only for now. This will all be much more useful when the Jako compiler has an include mechanism. In anticipation of this, there are a few .jako files in the languages/jako directory that have declarations of op-subs for various corners of the core op set. Regards, -- Gregor