Initial draft of transition to use LuaJIT2 instead of Lua 5.2
There is problem with utf8 expression matching on common.utf8_chars
This commit is contained in:
parent
6264caffe1
commit
f0aca1f179
|
@ -0,0 +1,2 @@
|
|||
table.unpack = unpack
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
require "core.strict"
|
||||
require "core.regex"
|
||||
require "core.compat"
|
||||
local common = require "core.common"
|
||||
local config = require "core.config"
|
||||
local style = require "core.style"
|
||||
|
|
|
@ -45,8 +45,8 @@ endif
|
|||
if not get_option('source-only')
|
||||
libm = cc.find_library('m', required : false)
|
||||
libdl = cc.find_library('dl', required : false)
|
||||
lua_dep = dependency('lua5.2', fallback: ['lua', 'lua_dep'],
|
||||
default_options: ['shared=false', 'use_readline=false', 'app=false']
|
||||
lua_dep = dependency('luajit', fallback: ['luajit', 'lua_dep'],
|
||||
default_options: ['default_library=static']
|
||||
)
|
||||
pcre2_dep = dependency('libpcre2-8')
|
||||
freetype_dep = dependency('freetype2')
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
#include <lauxlib.h>
|
||||
#include <lualib.h>
|
||||
|
||||
#include "compat.h"
|
||||
|
||||
#define API_TYPE_FONT "Font"
|
||||
#define API_TYPE_PROCESS "Process"
|
||||
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
#include <lauxlib.h>
|
||||
|
||||
#include "compat.h"
|
||||
|
||||
static int lua_absindex (lua_State *L, int i) {
|
||||
if (i < 0 && i > LUA_REGISTRYINDEX)
|
||||
i += lua_gettop(L) + 1;
|
||||
return i;
|
||||
}
|
||||
|
||||
int luaL_getsubtable (lua_State *L, int i, const char *name) {
|
||||
int abs_i = lua_absindex(L, i);
|
||||
luaL_checkstack(L, 3, "not enough stack slots");
|
||||
lua_pushstring(L, name);
|
||||
lua_gettable(L, abs_i);
|
||||
if (lua_istable(L, -1))
|
||||
return 1;
|
||||
lua_pop(L, 1);
|
||||
lua_newtable(L);
|
||||
lua_pushstring(L, name);
|
||||
lua_pushvalue(L, -2);
|
||||
lua_settable(L, abs_i);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void luaL_requiref (lua_State *L, const char *modname, lua_CFunction openf, int glb) {
|
||||
luaL_checkstack(L, 3, "not enough stack slots available");
|
||||
luaL_getsubtable(L, LUA_REGISTRYINDEX, "_LOADED");
|
||||
lua_getfield(L, -1, modname);
|
||||
if (lua_isnil(L, -1)) {
|
||||
lua_pop(L, 1);
|
||||
lua_pushcfunction(L, openf);
|
||||
lua_pushstring(L, modname);
|
||||
lua_call(L, 1, 1);
|
||||
lua_pushvalue(L, -1);
|
||||
lua_setfield(L, -3, modname);
|
||||
}
|
||||
if (glb) {
|
||||
lua_pushvalue(L, -1);
|
||||
lua_setglobal(L, modname);
|
||||
}
|
||||
lua_replace(L, -2);
|
||||
}
|
||||
|
||||
void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) {
|
||||
luaL_checkstack(L, nup+1, "too many upvalues");
|
||||
for (; l->name != NULL; l++) { /* fill the table with given functions */
|
||||
int i;
|
||||
lua_pushstring(L, l->name);
|
||||
for (i = 0; i < nup; i++) /* copy upvalues to the top */
|
||||
lua_pushvalue(L, -(nup + 1));
|
||||
lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */
|
||||
lua_settable(L, -(nup + 3)); /* table must be below the upvalues, the name and the closure */
|
||||
}
|
||||
lua_pop(L, nup); /* remove upvalues */
|
||||
}
|
||||
|
||||
|
||||
void luaL_setmetatable (lua_State *L, const char *tname) {
|
||||
luaL_checkstack(L, 1, "not enough stack slots");
|
||||
luaL_getmetatable(L, tname);
|
||||
lua_setmetatable(L, -2);
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef COMPAT_H
|
||||
#define COMPAT_H
|
||||
|
||||
#include <lua.h>
|
||||
#include <lauxlib.h>
|
||||
|
||||
#define luaL_newlibtable(L, l) \
|
||||
(lua_createtable(L, 0, sizeof(l)/sizeof(*(l))-1))
|
||||
#define luaL_newlib(L, l) \
|
||||
(luaL_newlibtable(L, l), luaL_register(L, NULL, l))
|
||||
|
||||
extern void luaL_requiref (lua_State *L, const char *modname, lua_CFunction openf, int glb);
|
||||
extern void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);
|
||||
extern void luaL_setmetatable (lua_State *L, const char *tname);
|
||||
extern int luaL_getsubtable (lua_State *L, int i, const char *name);
|
||||
|
||||
#endif
|
|
@ -1,4 +1,5 @@
|
|||
lite_sources = [
|
||||
'api/compat.c',
|
||||
'api/api.c',
|
||||
'api/renderer.c',
|
||||
'api/regex.c',
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[wrap-git]
|
||||
directory = lua
|
||||
url = https://github.com/franko/lua
|
||||
revision = v5.2.4-7
|
|
@ -0,0 +1,5 @@
|
|||
[wrap-git]
|
||||
directory = luajit
|
||||
url = https://github.com/franko/luajit
|
||||
revision = v2.0.5-lhelper2
|
||||
|
Loading…
Reference in New Issue