There are a couple different Lua implementations in Go. Has anyone researched the difference between them?<p><a href="https://github.com/yuin/gopher-lua" rel="nofollow">https://github.com/yuin/gopher-lua</a><p><a href="https://github.com/Shopify/go-lua" rel="nofollow">https://github.com/Shopify/go-lua</a><p><a href="https://github.com/milochristiansen/lua" rel="nofollow">https://github.com/milochristiansen/lua</a><p><a href="https://github.com/afitz/golua" rel="nofollow">https://github.com/afitz/golua</a>
A _partial_ implementation without IO, pattern matching, or coroutines.<p>Nothing to see here, really. Just remaps basic Lua syntax to Go without actually _implementing_ what makes Lua useful.
Slightly related: I'm in the process of choosing the best way to give our Go binaries some scripting capabilities (it's entreprise stuff, the idea is "let's the customer script this behaviour").<p>I'm aware of Lua and JS interpreters, some fully native, some made of binding against existing interpreters.
Native JS interpreters have my preference right now: easier to build/maintain, I can bear the loss of perfs, and JS seems easier to sell than Lua (remember it's entreprise stuff).<p>Does anyone have some insight or experience in that area and care to give feedback to a fellow HNer? And did I miss other scripting languages?
This is really interesting for me personally because I just completed writing an interpreter in Golang and it's great to compare and contrast.<p>One thing I noticed is that the parser is hand written. Which is interesting. I always preferred to write my parsers in Yacc and Go actually has Yacc as a built in tool (although know Lex).<p>Edit: I went through the list someone else posted and only one of the implementations actually has a Yacc grammar file in it.