Comments (6)
The above change does not keep the original Lua behaviour though, notably: the space after every item, no new line after the items, and printing to standard error rather than standard out by default.
Also, why does log
have to be used? It would probably be better to give LState
an io.Writer
field and have it initialized to os.Stdout
.
from gopher-lua.
Yes, the change linked up there is for my own use.
The original function added a tab after each printed item instead of a space. And this does actually add a newline after the item set.
Giving LState its own io.Writer is certainly an option. Not ideal though. For instance, in my case, I want all output to written to a single log file. Which would mean each LState would get the same file descriptor. This doesn't solve the thread safety issue.
from gopher-lua.
@jteeuwen - That sounds like an issue with your own code, not gopher-lua. You could easily solve this with a mutex + your own print function.
The most suitable option is allowing a custom writer to be assigned per LState.
In your own code you can then add a function to lock and unlock the writer which is assigned.
from gopher-lua.
I use the log package, which already deals with all of this. It was just a suggestion. It's up to yuin to decide what he deems reasonable.
from gopher-lua.
Threadings
First, the LState(including the print
function) is not goroutine safe.I would recommend to use one LState per goroutine and communicate between goroutines by using channels.
And if not so, you have to implement a locking mechanism as andrewchambers remarks.
Default outputs
Lua reference manual says about the print
function as follows:
Receives any number of arguments, and prints their values to stdout
If you want to print values to anywhere but stdout, use io.write
and/or io.output
.
Now, therefore, in consideration of the above, I would like to make no changes to GopherLua.
from gopher-lua.
I agree that you should keep with the standard.
from gopher-lua.
Related Issues (20)
- L.DoFile does not work when i require a so in lua script
- Wrong result of multi-assignment HOT 2
- Function names do not support UTF-8/Unicode
- Virtual machine interfaces need to be advertised
- bug: pcall affecting function upvalues HOT 4
- xpcall with error in error handler returns (nil, nil)
- The parameter passed by xpcall is nil
- different behavior in read function HOT 1
- Expand fopen modes
- different behavior in io.popen function
- Incorrect behavior for string.gmatch
- stuck when xpcall HOT 3
- LNumber.String() use strconv instead of fmt.Sprint HOT 1
- Can't require lua-cjson
- tonumber doesn't handle E notation correctly HOT 1
- 【BUG】panic: runtime error: index out of range [1048577] with length 1048577 HOT 2
- os.execute not behaving correctly on windows
- Result of L.DoString with coercion is not correct
- Extra PC increment in JMP instruction
- Error from parsing from LString to LNumber
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gopher-lua.