libvips / lua-vips

Lua binding for the libvips image processing library
MIT License
125 stars 10 forks source link

Add standard Lua support #60

Closed rolandlo closed 6 months ago

rolandlo commented 6 months ago

In combination with https://github.com/rolandlo/luaffifb this makes lua-vips work with Standard Lua. I have tested it with Lua 5.3.6 (mostly) and 5.4.6 (to a lesser degree). Compare with my announcement in #9.

The whole test suite in the spec folder runs now successfully (tested on Ubuntu 23.10) and all examples in the example folder work as well.

grafik

I have also checked that the test suite still runs successfully with LuaJit (tested on Ubuntu 22.04 on a different machine).

The only commit I added to Tekenlight's maintained fork of luaffifb is this one which adds the __index metamethod to the ctype metatable (in order to allow for things like voperation.call or <ffi-metatype>.<function name> more generally). I hope to get it upstreamed and have raised an issue on the maintained fork.

jcupitt commented 6 months ago

Hi @rolandlo,

This looks great! Nice job.

Should this PR wait for the ffi PRs to merge?

Stepping back slightly, I'm no longer using Lua much myself, so I no longer have a personal use for lua-vips. Would you be interested in taking over this repo? You'd have complete freedom to do anything you liked with it.

rolandlo commented 6 months ago

Stepping back slightly, I'm no longer using Lua much myself, so I no longer have a personal use for lua-vips. Would you be interested in taking over this repo? You'd have complete freedom to do anything you liked with it.

Thanks for the offer. I am tempted to accept, since I will have personal use for lua-vips in the foreseeable future and am willing to put in some effort. Consider though that I have only a little fraction of the experience with lbvips and lua-vips of what you have. So if you think someone is needed with a lot of experience, then you should find someone else for taking over the repo. Otherwise I will do my best and keep learning by doing.

jcupitt commented 6 months ago

I think this project needs an experienced Lua person -- I like Lua, but I've only done a couple of little pico8 games, I'm sure you're much stronger than me on on things like package conventions.

Thanks for considering it anyway.

rolandlo commented 6 months ago

My experience with Lua comes mostly from writing Lua plugins for Xournal++ (note taking software) and extending and supervising the Lua API in the C++ code of Xournal++. I don't know if that counts as "experienced" in any way. Lua is a great language and libvips is a pretty impressive library, so it would be really interesting to work on lua-vips.

One question: What are some of the main tasks in your view that lua-vips should undertake in the coming years? From the issues I can only see that true streaming would be nice to have (I can't find a branch on it though) and that the Interpolation integration would need to be finished. Also lua-vips should be made installable using luarocks along with luaffifb (once my commit is merged there) when combined with standard Lua. Anything else that comes to mind? Are there features introduced in newer libvips version that would have to be integrated in the binding?

Another question: What versions of libvips should lua-vips support and what operating systems (Linux, MacOS, Windows I guess) and architectures? If you prefer we can also communicate privately about it. You find me on Matrix.

jcupitt commented 6 months ago

The things that come to mind are:

  1. Keep up with new libvips API features, like streaming (as you say). There's not too much of this, mostly the thing self-updates via introspection, it's only when significant new API is added that lua vips would need extending.
  2. The node.js binding, sharp, has a great feature where a matching libvips binary is automatically downloaded when you install the binding. The set of suitable binaries is all there, lua-vips just needs a simple thing in the install process to identify the platform and trigger the download. This would save users a lot of trouble.
  3. Better docs. The lua-vips docs are very basic. We have the main C API docs as XML, it wouldn't be difficult to automatically paste them into a set of indexed lua-vips docs.

And of course any other ideas that take your fancy.

rolandlo commented 6 months ago

Should this PR wait for the ffi PRs to merge?

It has been merged today (into the maintained fork of luaffifb) and the package has been uploaded by the maintainer under the name luaffi-tkl.

rolandlo commented 6 months ago

The things that come to mind are:

1. Keep up with new libvips API features, like streaming (as you say). There's not too much of this, mostly the thing self-updates via introspection, it's only when significant new API is added that lua vips would need extending.

2. The node.js binding, sharp, has a great feature where a matching libvips binary is automatically downloaded when you install the binding. The set of suitable binaries is all there, lua-vips just needs a simple thing in the install process to identify the platform and trigger the download. This would save users a lot of trouble.

3. Better docs. The lua-vips docs are very basic. We have the main C API docs as XML, it wouldn't be difficult to automatically paste them into a set of indexed lua-vips docs.

And of course any other ideas that take your fancy.

Ok, that sounds reasonable to me. Thanks for the ideas. I am willing to take over maintenance. Maybe you could upload the current version (or after merging #61) to luarocks, so that there is always a fallback option for those who are sceptical with the changes made after that.

jcupitt commented 6 months ago

I am willing to take over maintenance.

Hey, that's great! It's always best if the package maintainer is also a user of the package, things tend to rot otherwise, a bit like gardening.

You must feel free to walk away any time it stops being fun or interesting. This kind of volunteer work ought to be rewarding, or it's not worth doing.

The libvips devs idle on gitter, you might like to join: https://app.gitter.im/#/room/#libvips_devchat:gitter.im

jcupitt commented 6 months ago

I made you a maintiner, have fun!

rolandlo commented 6 months ago

I made you a maintiner, have fun!

Thanks! It's an honour for me.