Skip to content
This repository has been archived by the owner on Aug 2, 2023. It is now read-only.

What are the goals of this project? #36

Open
dgryski opened this issue Nov 16, 2018 · 14 comments
Open

What are the goals of this project? #36

dgryski opened this issue Nov 16, 2018 · 14 comments

Comments

@dgryski
Copy link

dgryski commented Nov 16, 2018

Given that there are already a number of existing lua VMs in Go, how does this one from Microsoft plan to differentiate itself (aside from the fact that it's lua 5.3).

The rationale for a new project should be in the README.

@mattfarina
Copy link

I see questions like this are coming up in other venues as well. For example, this comment sub-set on the reddit post about this lib.

@technosophos
Copy link

There are several reasons:

  • We need a Lua 5.3 engine, and the others were not, nor where they interested in updating
  • The VM is designed differently (I'm encouraging Brian to write a blog post about this), but in a nutshell it is designed for better error handling and for adding a debugger
  • We wanted an implementation that was closer to the Lua spec than some of the others. We haven't totally nailed that, but we're getting closer by the day
  • We also wanted clean and idiomatic Go APIs

Before starting on this path, we had been using other Go Lua implementations for quite a while. We just finally arrived at the point where it became evident that our needs were not going to be met.

Eventually we will add more documentation to the README. We honestly didn't think people would discover (let alone use) this project the day we open-sourced it. So it's been a pleasant surprise, but one that caught us off guard.

@shanemhansen
Copy link

Where does performance fit in your list of goals?

@ajloveslily14
Copy link

Well, it is Microsoft

@VictorLowther
Copy link

https://github.com/milochristiansen/lua also claims to implement a Lua 5.3 VM.

@sylus
Copy link

sylus commented Nov 17, 2018

This is very cool! ^_^ Thanks for open sourcing this project early on 😄

It took me a while to understand the direct benefits lua syntax brings. But now I get it 😅

@technosophos
Copy link

Right now, our priorities are full language support, ergonomic Go API, and a flexible VM. Once we feel like we've gotten those nailed, we will turn toward performance improvements. The VM does use pretty much the same stack model as the C implementation, but given that this VM is only a few months old, and the C Lua VM is ten years old, we are highly unlikely to outpace it right away.

@quasilyte
Copy link
Contributor

I wonder if this project is active and is going to be maintained.
If it's not, another notice to the README should be added.

@bacongobbler
Copy link

bacongobbler commented Jan 26, 2019

The project is indeed actively being developed. We intend to use this as the engine for Helm 3. Brian and a few others are working on getting the fundamentals in the engine cleaned up for general use.

We will update the README when we have more information to share :)

@artob
Copy link

artob commented Jun 29, 2019

Which branch do you guys recommend using? The last commit to master is from February, and to lua53-go-api from April? Is the latter something that will eventually be merged to master, or just an experiment?

@technosophos
Copy link

The lua53-go-api branch is the current WIP for merging over master. AFAIK, it may still have an issue with the stack. I'll have to check with @fibonacci1729 to see if that is merged on this branch yet.

@mooreatv
Copy link

mooreatv commented Sep 6, 2019

any documentation anywhere?

@mmccormack-scwx
Copy link

Hi all, any updates on the merging of the lua53-go-api branch?
Is this project still under development? We'd like to use it, but are wary of having abandoned dependencies.

@technosophos
Copy link

I would suggest using Gopher Lua for the time being. We are delayed on this work as we try to finish Helm and CNAB.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests