
Terra: A low-level counterpart to Lua - jamii
http://terralang.org/index.html
======
djent
Previous discussion:
[http://news.ycombinator.com/item?id=5702793](http://news.ycombinator.com/item?id=5702793)

~~~
jamii
Huh, searching for "site:news.ycombinator.com terra lua" did not turn up any
discussion at all. Thanks.

~~~
djent
There's a search field at the bottom of the HN page that searches all of HN.

~~~
HCIdivision17
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.)

------
denzquix
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.

~~~
omaranto
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?

~~~
tekacs
From [http://terralang.org/getting-
started.html#control_flow](http://terralang.org/getting-
started.html#control_flow)

    
    
         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

------
aray
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!)

------
atrilumen
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.

In the meantime, I'm watching Terra.

~~~
jnbiche
Moonscript could be easily modified to accomodate Terra:

[http://moonscript.org/](http://moonscript.org/)

Personally, through, Lua is sugary enough for me, particularly if I use
Penlight.

~~~
atrilumen
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.

