If you used objc with OSX 10.10+ before you might have noticed that your code doesn't work on OSX 10.9-. Likewise, your 10.9- code doesn't work on 10.10+. This change solves the compatibility but at the cost of disabling property access via dot notation, which breaks your 10.10+only code. To make it work again, you need to call objc.with_properties(true) after you load objc.

For those of you who are new to luapower or just need a quick reference on the structure of the source tree, you can now browse the whole tree online with annotations on every file and directory at this link: https://luapower.com/tree

It's a new thing that I hacked over the past few days so there might be some bugs. If found, please shout them out. Thank you.

Hi. Thanks for the feedback. I think the site layout needs improving. For instance, there is a FAQ link at the top. Did you missed it? Also, luajit comes with precompiled binaries and build scripts (all packages do). You can download the package from the download link on luapower.com/luajit or from github.

Luapower author here. Looks like you encountered a few issues with luapower since you started. Can you make a list of things that you found surprising or frustrating or took a while to grasp? I'd like to improve the documentation if I can, maybe make a getting-started guide. Thanks!

The window's WNDPROC is bound to MessageRouter.proc which calls the window's __handle_message() method which calls the WM_PAINT() method or the on_paint() method. If you're using CairoPanel, that descends from BitmapPanel which defines the on_paint() method. Hope this helps.

Luapower hasn't seen much input this year but it will in the future. Not sure when exactly and what packages will be updated but I suspect it will be rewriting cplayer over nw and probably an IMGUI lib. I will also set up a build/test/CI server with multiple versions of Windows, Linux and OSX which will keep the binaries updated and will make the package metadata more accurate (right now I might have forgotten to update the package metadata for some packages on some platforms since I have to do that manually, and I rarely switch on my Mac these days).

For 2D graphics check out cairo which is better than gd and the bindings are ffi-based, not C based and it also integrates well with libpng, freetype, winapi etc. bindings.

If you need to use cmake then that's that (currently only libjpeg-turbo requires it because I was too lazy to make a build script for it) but an effort to make a simple shell script would be appreciated. In any case, even if you require cmake you should still make bash wrapper scripts with the correct cmake invocations so that it works out-of-the-box with the prescribed toolchain (that's a very important feature for me).

For TLS I was thinking maybe extracting the abstraction layer from libcurl since it supports a ton of backends and so you can use the native implementation of each OS. For generic encryption I'd use a cross platform lib like libsodium or openssl but I don't have finished bindings for those AFAIR.