luaproc.newproc() can now take a lua function as an argument #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request modifies the behavior of
luaproc.newproc
to handle the case where it is passed a pure Lua function as an argument. The advantages of passing a Lua function reference instead of a chunk of Lua code are:luacheck
, also do not handle functions in longstrings.luaproc.newproc()
mirrors the behavior ofcoroutine.create()
and is more intuitive for new users.Of note, using
string.dump()
like this:luaproc.newproc(string.dump(myfunction))
does not work now and did not work before either, becauselua_loadstring()
assumes that the chunk it is passed is null-terminated, which means that a bytecode chunk passed fromstring.dump()
would often be cut off and generate abinary string: truncated precompiled chunk
error. The rewrittenluaproc_create_newproc()
usesstrlen()
to get the length of code forlua_loadbuffer()
, which also expects null-termination, but I didn't think it was a concern because passing a function directly is simpler and it works, and obviously nobody was usingstring.dump()
anyway or they would have noticed the errors.tests/hello.lua
was also modified to demonstrate both the new and old behavior.Thanks for continuing to maintain this so many years later 👍