7 ms·
TLC, a tiny lua cocoa bridge
- jws 15y agoThat is a spectacular amount of functionality in one small source file. It appears to open all objective C classes and their methods to Lua.
- limmeau 15y agoPlus it claims to have the Lua GC perform automatic ObjC refcounting.
- gravitronic 15y agoI looked at these comments before the code and assumed it was going to be an ugly first-principals dump of code connecting lua to objc. What I found instead is beautiful.
- atilimcetin 15y agoIs it using LuaJIT or any another ffi library?
- dubya 15y agoI know exactly zero Lua, but if ffi == nil then ffi = require("ffi") end is suggestive.
- gregholmberg 15y agoThere are some idioms in Lua that you might recognize from Python or Ruby. I have seen this one in Perl and the Bourne shell, as well. ffi = ffi or require("ffi") If the ffi expression evaluates to something that is not nil, we keep the previous value of ffi. The assignment becomes a no-op. If it evaluates to a nil, we initialize it by calling require().
- chrisdevereux 15y agoLooks like luaJIT: http://luajit.org/ext_ffi_api.html http://luajit.org/ext_ffi_api.html
- akadien 15y agoIt's LuaJIT (FFI). Legacy wrappers involve mostly C code and a lot of code managing metatables.
- pygy_ 15y agoJames McKaskill ported LuaJIT's FFI to standard (PUC) Lua, but there are a few differences. I don't know for which one it was developed. https://github.com/jmckaskill/luaffi https://github.com/jmckaskill/luaffi
- fyolnish 15y agoYes, it does indeed require LuaJIT. (I probably should indicate this more clearly in the source)
- ahnunahki 15y agoElse If
- seclorum 15y agoAmazing .. off to pack it into an iOS bundle and wire it up to an editor. ;)
- prpatel 15y agoQuestion: how is this different than iPhoneWax?
- fyolnish 15y agoWell, the biggest difference is that it's written in Lua. And it uses LuaJIT not vanilla Lua. (LuaJIT being orders of magnitude faster) And from what I can tell, iphonewax is intended for writing entire apps in lua, this project is intended to be used when embedding bits of lua code in your objc app. (But there's nothing stopping you from writing most of your app in it)
- wildmXranat 15y agoHmm, this looks very interesting. Could it be used as a scripting layer within a OSX/iOS application or could you whip up a complete application with this ?
- fyolnish 15y agoIt was designed for use for scripting within an objc app. (http://github.com/aptiva/tranquil http://github.com/aptiva/tranquil to be precise) It doesn't support subclassing objective-c objects so that would probably limit you if you tried to write your app exclusively in lua.
- rainysunday 15y agoAmazing. Can you use this to run a LuaCocoa example? Like https://bitbucket.org/ewing/luacocoa/src/e939d422b62a/LuaCocoa/Samples/MinimalAppKit/MinimalAppKit.lua https://bitbucket.org/ewing/luacocoa/src/e939d422b62a/LuaCoc... Can you load a framework with this? I know hardly anything about Objective-C.
- fyolnish 15y agoThere's no need to load a framework since linking to a framework means all of it's classes are added to the runtime. You simply request the class you want. That is, if you are embedding lua in your app. I haven't tried using TLC from the standalone luajit interpreter, but in that case you would probably have to use fii.load() to load the Framework & libobjc before being able to use objc. But that is not what it was designed for To translate a LuaCocoa example you'd in most cases just have to add objc_loadClass calls for any class you want to use, and use dots instead of colons to call methods (obj:method() -> obj.method() ).
- pirateking 15y agoAnyone know any real world examples of Lua being used with Objective-C, and what use cases it is good for? Sounds very interesting.
- hjaltij 15y agoTake a look at the app that the OP is building. It's pretty interesting and uses this scripting bridge for generating OpenGL visuals. (http://github.com/aptiva/tranquil http://github.com/aptiva/tranquil)
- seany 15y agoWhat's the reason to use this over https://bitbucket.org/ewing/luacocoa https://bitbucket.org/ewing/luacocoa ?
- fyolnish 15y agoIt's moved to https://github.com/aptiva/TLC https://github.com/aptiva/TLC