Hacker News new | past | comments | ask | show | jobs | submit login
Terra: A low-level counterpart to Lua (terralang.org)
93 points by jamii on Aug 24, 2013 | hide | past | favorite | 14 comments




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


HNSearch seems to be better at finding previously posted content than Google is:

https://www.hnsearch.com/search#request/submissions&q=terra+...

Still, it's interesting and relevant, and I hadn't seen it before, so thanks for posting.


Don't feel sorry. I hadn't seen Terra before and now I have, so thanks for submitting!


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


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?


From 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


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.

In the meantime, I'm watching Terra.


Moonscript could be easily modified to accomodate Terra:

http://moonscript.org/

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


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.


Then you can compile it to C++, which, thanks to asm.js/emscripten, can be compiled to JS!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: