Any reason we should expect the two to return different results, other than one is less comprehensive crawling? (I have wondered how thorough the web crawling engines are.)
It bugs me that the numerical for-loop in Terra has identical syntax to Lua's, but different semantics. Especially since you are encouraged to mix Lua and Terra code in the same file. Even something like:
for i = 0, < 10 do --[[ ... ]] end
...and throwing a compile error if you omit the <, though arguably ugly and weird, would still have been preferable I think.
I couldn't find a description of the Terra for loop in a few minutes of poking through the website and the paper. How is it different from the numeric Lua for loop?
Terra also includes for loop. This example counts from 0 up to but not including 10:
for i = 0,10 do
C.printf("%d\n",i)
end
This is different from Lua’s behavior (which is inclusive of 10) since Terra uses 0-based indexing and pointer arithmetic in contrast with Lua’s 1-based indexing. Ideally, Lua and Terra would use the same indexing rules. However, Terra code needs to frequently do pointer arithmetic and interface with C code both of which are cumbersome with 1-based indexing. Alternatively, patching Lua to make it 0-based would make the flavor of Lua bundled with Terra incompatible with existing Lua code.
Lua also has a for loop that operates using iterators. This is not yet implemented (NYI) in Terra, but a version will be added eventually.
The loop may also specify an option step parameter:
for i = 0,10,2 do
c.printf("%d\n",i) --0, 2, 4, ...
end
ARM support, sweet! This is one of the advantages of just using llvm for code-gen -- architectures just work right out of the box, and the library handles all of the specifics.
I think this is a good example of what the llvm code generation libraries enable (as opposed to gcc).
(In addition to being a pretty cool project on it's own!)
I haven't taken the time to play with it yet, but I think it would be nice to write a little sugar language that compiles to Terra, with inline macros that compile to Lua.
Sure, I considered using Moonscript as a starting point. It looks pretty neat.
But what I have in mind is just a little different. I want explicit type declaration, and I don't want to type "->".
So, something more of this character:
void chant( string thing, int times ):
for int i in range( times ):
print( "$thing $i" )
Also, I'd like to write the compiler in Terra.
I'm pretty fond of Lua just the way it is as well, but I'm picky and stubborn and idealistic. I keep telling myself not to think about it, but I can't help but daydream about writing a language. I think Terra presents a fair opportunity to get it out of my system.