5 ms·
Terra: A low-level counterpart to Lua
- djent 13y agoPrevious discussion: http://news.ycombinator.com/item?id=5702793 http://news.ycombinator.com/item?id=5702793
- jamii 13y agoHuh, searching for "site:news.ycombinator.com terra lua" did not turn up any discussion at all. Thanks.
- djent 13y agoThere's a search field at the bottom of the HN page that searches all of HN.
- HCIdivision17 13y agoAny 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.)
- Bootvis 13y agoDon't feel sorry. I hadn't seen Terra before and now I have, so thanks for submitting!
- greenyoda 13y agoHNSearch seems to be better at finding previously posted content than Google is: https://www.hnsearch.com/search#request/submissions&q=terra+lua&start=0 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.
- atrilumen 13y agoI 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 13y agoMoonscript 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 13y agoSure, 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.
- trentmb 13y agoThen you can compile it to C++, which, thanks to asm.js/emscripten, can be compiled to JS!
- denzquix 13y agoIt 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 13y agoI 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 13y agoFrom 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 13y agoARM 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!)