Comments (4)
Hi.
Currently, Go is not suitable for implementing fast scripting language for some reasons.
Debug hooks can easily be implemented in GopherLua, but cause a little performance degradation and are not quite so common(Sandboxing is one of the few exceptions).
Even if debug hooks are implemented as an option, it will need extra 'if' statements in heavy paths on the VM.
So I omitted it to improve performance for common users who do not need debug hooks.
from gopher-lua.
That makes sense to me 👍 . I may fork and add the hooks, just for the project I'm working on. Would you be able to point me in the right direction on where those should be implemented? I'll be diving in some time today to try and get that done, but it will be the first time I've dived in to the gopher-lua source beyond surface level, and some guidance would be a huge help. Feel free to close this issue either way :)
from gopher-lua.
Just off the top of my head...
struct LState
will hold debug functions as fields.struct LState
will hold a counter for counting function calls- You will need to check whether interpreter is about to start the execution of a new line of code and execute hook functions near
Line 26 in 3e406ae
- You will need to count instructions and execute hook functions near
Line 26 in 3e406ae
- You will need to execute hook functions near
Line 503 in 3e406ae
I hope that it will be helpful for you.
from gopher-lua.
That's a great start, thanks!
from gopher-lua.
Related Issues (20)
- 【Help】Panic when call Close(), May be bug? HOT 1
- [ HELP!] How to revert Lua AST to lua source code?
- Preload other lua files
- 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
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.