Re: lua vs luajit vs both

2014-01-14 Thread John Keeping
On Tue, Jan 14, 2014 at 07:06:34PM +0100, Jason A. Donenfeld wrote:
> >
> 
> On Tue, Jan 14, 2014 at 10:08 AM, John Keeping  wrote:
> > It was more of a "there doesn't seem much overhead to supporting both,
> > since the API is the same".  I think the Makefile should take an
> > approach more like this though:
> >
> > ifdef NO_LUA
> > CGIT_CFLAGS += -DNO_LUA
> > else if defined(USE_LUAJIT)
> > # LuaJIT code goes here
> > else
> > # Lua code goes here
> > endif
> 
> Okay we've got this fancy autodetection logic now. From the README:
> 
> > If you'd like to compile without Lua support, you may use:
> >$ make NO_LUA=1
> > And if you'd like to specify a Lua implementation, you may use:
> >$ make LUA_IMPLEMENTATION=JIT
> > for using the LuaJIT project. Or:
> >
> >$ make LUA_IMPLEMENTATION=VANILLA
> > for the mainline Lua project. If you specify neither implementation, it will
> > be auto-detected, preferring LuaJIT if both are present.
> 
> From cgit.mk:
> 
> > ifdef NO_LUA
> > LUA_MESSAGE := linking without specified Lua support
> > CGIT_CFLAGS += -DNO_LUA
> > else
> > LUAJIT_CFLAGS := $(shell pkg-config --cflags luajit 2>/dev/null)
> > LUAJIT_LIBS := $(shell pkg-config --libs luajit 2>/dev/null)
> > LUA_LIBS := $(shell pkg-config --libs lua 2>/dev/null)
> > LUA_CFLAGS := $(shell pkg-config --cflags lua 2>/dev/null)
> > ifeq (JIT,$(LUA_IMPLEMENTATION))
> > ifeq ($(strip $(LUAJIT_LIBS)),)
> >  $(error LuaJIT specified via LUA_IMPLEMENTATION=JIT, but library 
> > could not be found.)
> > endif
> > LUA_MESSAGE := linking with selected LuaJIT
> > CGIT_LIBS += $(LUAJIT_LIBS)
> > CGIT_CFLAGS += $(LUAJIT_CFLAGS)
> > else ifeq (VANILLA,$(LUA_IMPLEMENTATION))
> > ifeq ($(strip $(LUA_LIBS)),)
> >  $(error Lua specified via LUA_IMPLEMENTATION=VANILLA, but library 
> > could not be found.)
> > endif
> > LUA_MESSAGE := linking with selected Lua
> > CGIT_LIBS += $(LUA_LIBS)
> > CGIT_LIBS += $(LUA_CFLAGS)
> > else ifneq ($(strip $(LUAJIT_LIBS)),)
> > LUA_MESSAGE := linking with autodetected LuaJIT
> > CGIT_LIBS += $(LUAJIT_LIBS)
> > CGIT_CFLAGS += $(LUAJIT_CFLAGS)
> > else ifneq ($(strip $(LUA_LIBS)),)
> > LUA_MESSAGE := linking with autodetected Lua
> > CGIT_LIBS += $(LUA_LIBS)
> > CGIT_CFLAGS += $(LUA_CFLAGS)
> > else
> > LUA_MESSAGE := linking without autodetected Lua support
> > NO_LUA := YesPlease
> > CGIT_CFLAGS += -DNO_LUA
> > endif
> >
> > endif
> >
> > # Add -ldl to linker flags on non-BSD systems.
> > ifeq ($(findstring BSD,$(uname_S)),)
> > CGIT_LIBS += -ldl
> > endif
> 
> How's this look to you? The correct way to be doing things?

I think it does the right thing for all the explicitly specified
combinations.

Personally I would let the compiler error out if Lua isn't installed,
and add some documentation in Makefile to point users at NO_LUA, but I
don't feel particularly strongly about that, and since you've done the
hard work to make it more intelligent...
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit


Re: lua vs luajit vs both

2014-01-14 Thread Jason A. Donenfeld
>

On Tue, Jan 14, 2014 at 10:08 AM, John Keeping  wrote:
> It was more of a "there doesn't seem much overhead to supporting both,
> since the API is the same".  I think the Makefile should take an
> approach more like this though:
>
> ifdef NO_LUA
> CGIT_CFLAGS += -DNO_LUA
> else if defined(USE_LUAJIT)
> # LuaJIT code goes here
> else
> # Lua code goes here
> endif

Okay we've got this fancy autodetection logic now. From the README:

> If you'd like to compile without Lua support, you may use:
>$ make NO_LUA=1
> And if you'd like to specify a Lua implementation, you may use:
>$ make LUA_IMPLEMENTATION=JIT
> for using the LuaJIT project. Or:
>
>$ make LUA_IMPLEMENTATION=VANILLA
> for the mainline Lua project. If you specify neither implementation, it will
> be auto-detected, preferring LuaJIT if both are present.

>From cgit.mk:

> ifdef NO_LUA
> LUA_MESSAGE := linking without specified Lua support
> CGIT_CFLAGS += -DNO_LUA
> else
> LUAJIT_CFLAGS := $(shell pkg-config --cflags luajit 2>/dev/null)
> LUAJIT_LIBS := $(shell pkg-config --libs luajit 2>/dev/null)
> LUA_LIBS := $(shell pkg-config --libs lua 2>/dev/null)
> LUA_CFLAGS := $(shell pkg-config --cflags lua 2>/dev/null)
> ifeq (JIT,$(LUA_IMPLEMENTATION))
> ifeq ($(strip $(LUAJIT_LIBS)),)
>  $(error LuaJIT specified via LUA_IMPLEMENTATION=JIT, but library 
> could not be found.)
> endif
> LUA_MESSAGE := linking with selected LuaJIT
> CGIT_LIBS += $(LUAJIT_LIBS)
> CGIT_CFLAGS += $(LUAJIT_CFLAGS)
> else ifeq (VANILLA,$(LUA_IMPLEMENTATION))
> ifeq ($(strip $(LUA_LIBS)),)
>  $(error Lua specified via LUA_IMPLEMENTATION=VANILLA, but library 
> could not be found.)
> endif
> LUA_MESSAGE := linking with selected Lua
> CGIT_LIBS += $(LUA_LIBS)
> CGIT_LIBS += $(LUA_CFLAGS)
> else ifneq ($(strip $(LUAJIT_LIBS)),)
> LUA_MESSAGE := linking with autodetected LuaJIT
> CGIT_LIBS += $(LUAJIT_LIBS)
> CGIT_CFLAGS += $(LUAJIT_CFLAGS)
> else ifneq ($(strip $(LUA_LIBS)),)
> LUA_MESSAGE := linking with autodetected Lua
> CGIT_LIBS += $(LUA_LIBS)
> CGIT_CFLAGS += $(LUA_CFLAGS)
> else
> LUA_MESSAGE := linking without autodetected Lua support
> NO_LUA := YesPlease
> CGIT_CFLAGS += -DNO_LUA
> endif
>
> endif
>
> # Add -ldl to linker flags on non-BSD systems.
> ifeq ($(findstring BSD,$(uname_S)),)
> CGIT_LIBS += -ldl
> endif

How's this look to you? The correct way to be doing things?
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit


Re: lua vs luajit vs both

2014-01-14 Thread John Keeping
On Tue, Jan 14, 2014 at 02:02:40AM +0100, Jason A. Donenfeld wrote:
> I've gone ahead and merged the lua work to master, for testing and
> subsequent cleanup before release.
> 
> Regarding "to jit or not to jit", I currently have this fancy autodetection
> logic:
> http://git.zx2c4.com/cgit/commit/?id=3488d124052f5c3ddef303ed5306ad6a458794c1
> 
> John -- I'm waiting for your input on the parent email, as you seem to be
> the originator of the opinion that "both are good".

It was more of a "there doesn't seem much overhead to supporting both,
since the API is the same".  I think the Makefile should take an
approach more like this though:

ifdef NO_LUA
CGIT_CFLAGS += -DNO_LUA
else if defined(USE_LUAJIT)
# LuaJIT code goes here
else
# Lua code goes here
endif

Basically, use vanilla Lua by default by provide an easy way for users
to switch to LuaJIT if they want.
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit


Re: lua vs luajit vs both

2014-01-13 Thread Jason A. Donenfeld
I've gone ahead and merged the lua work to master, for testing and
subsequent cleanup before release.

Regarding "to jit or not to jit", I currently have this fancy autodetection
logic:
http://git.zx2c4.com/cgit/commit/?id=3488d124052f5c3ddef303ed5306ad6a458794c1

John -- I'm waiting for your input on the parent email, as you seem to be
the originator of the opinion that "both are good".

Please -- everybody -- test master and let me know any regressions.
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit


lua vs luajit vs both

2014-01-13 Thread Jason A. Donenfeld
Hi,

What reasons do we have for supporting lua at all? Why not just go
with luajit? It's faster and just as widely supported. The motivation
for not supporting vanilla lua is this luajit library:
http://luajit.org/ext_ffi.html . This would be a nice way of being
able to ship scripts without a big comment in the header "you need to
have the luacrypto package installed for this to work", and similar.
Currently, the tree supports both lua and luajit, but I'm tempted to
chop this down to just luajit. Thoughts on this?

Jason
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit