Code Monkey home page Code Monkey logo

Comments (4)

khvzak avatar khvzak commented on August 16, 2024

Hello,
Thanks for the feedback! Sorry for the late response.

How would you go about including libuv inside the executable?

Could you please provide more details please? Why it could be needed? libuv is an async IO library from the C world, whereas in Rust we have awesome mio.

I also not really sure about custom lua scripts and mlua. I mean this a good task for other libraries that depends on mlua. mlua is designed to provide a generic interface to Lua language/runtime rather than specific applications.

from mlua.

TimUntersberger avatar TimUntersberger commented on August 16, 2024

Why it could be needed?

I am using mlua to have lua as my scripting language for an application. libuv provides various utility ranging from threads to filesystem functions. I want to include this library so I don't have to implement all of this myself.

After researching this some more I found out that neovim just has a copy of the libuv.dll in the production build which then gets included in the package.cpath. I probably will also have to do it like this.

Edit:

I also not really sure about custom lua scripts and mlua

This was more meant as a "questions issue". I don't want this to be added to mlua, but I wanted to know how you would go about implementing my usecases.

from mlua.

khvzak avatar khvzak commented on August 16, 2024

libuv provides various utility ranging from threads to filesystem functions. I want to include this library so I don't have to implement all of this myself.

After researching this some more I found out that neovim just has a copy of the libuv.dll in the production build which then gets included in the package.cpath. I probably will also have to do it like this.

I'm afraid if libuv.dll is not a Lua module, you will need to use FFI and tons of unsafe code to integrate with a C library.
If neovim has a runtime (ev loop), you could try to integrate using mlua async functionality.

In a simple way, if neovim allows to execute coroutine.yield() to switch context, you just can create async functions that uses async-std and they should work.

This was more meant as a "questions issue". I don't want this to be added to mlua, but I wanted to know how you would go about implementing my usecases.

Ah, sorry, I misunderstood the question :)
Probably on the of common ways is to a to create lua files and then include them to a binary using include_str! macro. Lua code can be executed in mlua using Lua::load

from mlua.

TimUntersberger avatar TimUntersberger commented on August 16, 2024

In the end i just decided to release a zip folder instead of a single executable similiar to neovim which contains lua files and dlls. Instead of libuv I used luv which already has some nice bindings for libuv. Thank you for your time!

from mlua.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.