Browse Source

`lauxlib' is now part of the libraries (not used by core Lua)

Roberto Ierusalimschy 25 năm trước cách đây
mục cha
commit
8060193702
14 tập tin đã thay đổi với 134 bổ sung122 xóa
  1. 3 4
      lapi.c
  2. 1 23
      lauxlib.c
  3. 1 2
      lauxlib.h
  4. 16 12
      ldebug.c
  5. 1 2
      ldo.c
  6. 8 10
      liolib.c
  7. 3 4
      llex.c
  8. 35 1
      lobject.c
  9. 4 1
      lobject.h
  10. 1 2
      ltable.c
  11. 17 9
      ltm.c
  12. 6 4
      luadebug.h
  13. 9 10
      lundump.c
  14. 29 38
      makefile

+ 3 - 4
lapi.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lapi.c,v 1.94 2000/09/05 19:33:32 roberto Exp roberto $
+** $Id: lapi.c,v 1.95 2000/09/11 19:45:27 roberto Exp roberto $
 ** Lua API
 ** See Copyright Notice in lua.h
 */
@@ -10,7 +10,6 @@
 #include "lua.h"
 
 #include "lapi.h"
-#include "lauxlib.h"
 #include "ldo.h"
 #include "lfunc.h"
 #include "lgc.h"
@@ -234,7 +233,7 @@ void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
 void lua_pushusertag (lua_State *L, void *u, int tag) {  /* ORDER LUA_T */
   luaC_checkGC(L);
   if (tag != LUA_ANYTAG && tag != TAG_USERDATA && tag < NUM_TAGS)
-    luaL_verror(L, "invalid tag for a userdata (%d)", tag);
+    luaO_verror(L, "invalid tag for a userdata (%d)", tag);
   tsvalue(L->top) = luaS_createudata(L, u, tag);
   ttype(L->top) = TAG_USERDATA;
   api_incr_top(L);
@@ -387,7 +386,7 @@ void lua_settag (lua_State *L, int tag) {
       tsvalue(L->top-1)->u.d.tag = tag;
       break;
     default:
-      luaL_verror(L, "cannot change the tag of a %.20s",
+      luaO_verror(L, "cannot change the tag of a %.20s",
                   luaO_typename(L->top-1));
   }
   L->top--;

+ 1 - 23
lauxlib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.c,v 1.33 2000/08/29 20:43:28 roberto Exp roberto $
+** $Id: lauxlib.c,v 1.34 2000/09/11 17:38:42 roberto Exp roberto $
 ** Auxiliary functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -118,28 +118,6 @@ void luaL_verror (lua_State *L, const char *fmt, ...) {
 }
 
 
-#define EXTRALEN	sizeof("string \"...\"0")
-
-void luaL_chunkid (char *out, const char *source, int len) {
-  if (*source == '(') {
-    strncpy(out, source+1, len-1);  /* remove first char */
-    out[len-1] = '\0';  /* make sure `out' has an end */
-    out[strlen(out)-1] = '\0';  /* remove last char */
-  }
-  else {
-    len -= EXTRALEN;
-    if (*source == '@')
-      sprintf(out, "file `%.*s'", len, source+1);
-    else {
-      const char *b = strchr(source , '\n');  /* stop at first new line */
-      int lim = (b && (b-source)<len) ? b-source : len;
-      sprintf(out, "string \"%.*s\"", lim, source);
-      strcpy(out+lim+(EXTRALEN-sizeof("...\"0")), "...\"");
-    }
-  }
-}
-
-
 /*
 ** {======================================================
 ** Generic Buffer manipulation

+ 1 - 2
lauxlib.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lauxlib.h,v 1.22 2000/09/04 18:27:32 roberto Exp roberto $
+** $Id: lauxlib.h,v 1.23 2000/09/11 17:38:42 roberto Exp roberto $
 ** Auxiliary functions for building Lua libraries
 ** See Copyright Notice in lua.h
 */
@@ -34,7 +34,6 @@ void luaL_checktype (lua_State *L, int narg, const char *tname);
 
 void luaL_verror (lua_State *L, const char *fmt, ...);
 int luaL_findstring (const char *name, const char *const list[]);
-void luaL_chunkid (char *out, const char *source, int len);
 
 
 

+ 16 - 12
ldebug.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ldebug.c,v 1.38 2000/08/28 20:22:21 roberto Exp roberto $
+** $Id: ldebug.c,v 1.39 2000/08/31 13:29:12 roberto Exp roberto $
 ** Debug Interface
 ** See Copyright Notice in lua.h
 */
@@ -10,7 +10,6 @@
 #include "lua.h"
 
 #include "lapi.h"
-#include "lauxlib.h"
 #include "lcode.h"
 #include "ldebug.h"
 #include "ldo.h"
@@ -18,6 +17,7 @@
 #include "lobject.h"
 #include "lopcodes.h"
 #include "lstate.h"
+#include "lstring.h"
 #include "ltable.h"
 #include "ltm.h"
 #include "luadebug.h"
@@ -172,17 +172,20 @@ const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int localnum) {
 }
 
 
+static void infoLproto (lua_Debug *ar, Proto *f) {
+  ar->source = f->source->str;
+  ar->linedefined = f->lineDefined;
+  ar->what = "Lua";
+}
+
+
 static void lua_funcinfo (lua_Debug *ar, StkId func) {
   switch (ttype(func)) {
     case TAG_LCLOSURE:
-      ar->source = clvalue(func)->f.l->source->str;
-      ar->linedefined = clvalue(func)->f.l->lineDefined;
-      ar->what = "Lua";
+      infoLproto(ar, clvalue(func)->f.l);
       break;
     case TAG_LMARK:
-      ar->source = infovalue(func)->func->f.l->source->str;
-      ar->linedefined = infovalue(func)->func->f.l->lineDefined;
-      ar->what = "Lua";
+      infoLproto(ar, infovalue(func)->func->f.l);
       break;
     case TAG_CCLOSURE:  case TAG_CMARK:
       ar->source = "(C)";
@@ -192,6 +195,7 @@ static void lua_funcinfo (lua_Debug *ar, StkId func) {
     default:
       LUA_INTERNALERROR("invalid `func' value");
   }
+  luaO_chunkid(ar->source_id, ar->source, sizeof(ar->source_id));
   if (ar->linedefined == 0)
     ar->what = "main";
 }
@@ -431,10 +435,10 @@ void luaG_typeerror (lua_State *L, StkId o, const char *op) {
   const char *kind = getobjname(L, o, &name);
   const char *t = luaO_typename(o);
   if (kind)
-    luaL_verror(L, "attempt to %.30s %.20s `%.40s' (a %.10s value)",
+    luaO_verror(L, "attempt to %.30s %.20s `%.40s' (a %.10s value)",
                 op, kind, name, t);
   else
-    luaL_verror(L, "attempt to %.30s a %.10s value", op, t);
+    luaO_verror(L, "attempt to %.30s a %.10s value", op, t);
 }
 
 
@@ -449,8 +453,8 @@ void luaG_ordererror (lua_State *L, StkId top) {
   const char *t1 = luaO_typename(top-2);
   const char *t2 = luaO_typename(top-1);
   if (t1[2] == t2[2])
-    luaL_verror(L, "attempt to compare two %.10s values", t1);
+    luaO_verror(L, "attempt to compare two %.10s values", t1);
   else
-    luaL_verror(L, "attempt to compare %.10s with %.10s", t1, t2);
+    luaO_verror(L, "attempt to compare %.10s with %.10s", t1, t2);
 }
 

+ 1 - 2
ldo.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ldo.c,v 1.93 2000/09/04 18:52:51 roberto Exp roberto $
+** $Id: ldo.c,v 1.94 2000/09/11 17:38:42 roberto Exp roberto $
 ** Stack and Call structure of Lua
 ** See Copyright Notice in lua.h
 */
@@ -12,7 +12,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "ldebug.h"
 #include "ldo.h"
 #include "lgc.h"

+ 8 - 10
liolib.c

@@ -1,5 +1,5 @@
 /*
-** $Id: liolib.c,v 1.77 2000/09/05 19:33:32 roberto Exp $
+** $Id: liolib.c,v 1.78 2000/09/11 17:38:42 roberto Exp roberto $
 ** Standard I/O (and system) library
 ** See Copyright Notice in lua.h
 */
@@ -393,8 +393,8 @@ static int io_read (lua_State *L) {
     firstarg = lastarg = 1;  /* correct indices */
     lua_pushstring(L, "*l");  /* push default argument */
   }
-  else
-    luaL_checkstack(L, lastarg-firstarg+1, "too many arguments");
+  else  /* ensure stack space for all results and for auxlib's buffer */
+    luaL_checkstack(L, lastarg-firstarg+1+LUA_MINSTACK, "too many arguments");
   for (n = firstarg; n<=lastarg; n++) {
     int success;
     if (lua_isnumber(L, n))
@@ -598,7 +598,6 @@ static int errorfb (lua_State *L) {
   lua_concat(L, 3);
   while (lua_getstack(L, level++, &ar)) {
     char buff[120];  /* enough to fit following `sprintf's */
-    char buffchunk[60];
     int toconcat = 1;  /* number of strings in the stack to concat */
     if (level > LEVELS1 && firstpart) {
       /* no more than `LEVELS2' more levels? */
@@ -607,7 +606,7 @@ static int errorfb (lua_State *L) {
       else {
         lua_pushstring(L, "       ...\n");  /* too many levels */
         lua_concat(L, 2);
-        while (lua_getstack(L, level+LEVELS2, &ar))  /* get last levels */
+        while (lua_getstack(L, level+LEVELS2, &ar))  /* find last levels */
         level++;
       }
       firstpart = 0;
@@ -616,7 +615,6 @@ static int errorfb (lua_State *L) {
     sprintf(buff, "%4d:  ", level-1);
     lua_pushstring(L, buff); toconcat++;
     lua_getinfo(L, "Snl", &ar);
-    luaL_chunkid(buffchunk, ar.source, sizeof(buffchunk));
     switch (*ar.namewhat) {
       case 'g':  case 'l':  /* global, local */
         sprintf(buff, "function `%.50s'", ar.name);
@@ -629,11 +627,11 @@ static int errorfb (lua_State *L) {
         break;
       default: {
         if (*ar.what == 'm')  /* main? */
-          sprintf(buff, "main of %.70s", buffchunk);
+          sprintf(buff, "main of %.70s", ar.source_id);
         else if (*ar.what == 'C')  /* C function? */
-          sprintf(buff, "%.70s", buffchunk);
+          sprintf(buff, "%.70s", ar.source_id);
         else
-          sprintf(buff, "function <%d:%.70s>", ar.linedefined, buffchunk);
+          sprintf(buff, "function <%d:%.70s>", ar.linedefined, ar.source_id);
         ar.source = NULL;
       }
     }
@@ -643,7 +641,7 @@ static int errorfb (lua_State *L) {
       lua_pushstring(L, buff); toconcat++;
     }
     if (ar.source) {
-      sprintf(buff, " [%.70s]", buffchunk);
+      sprintf(buff, " [%.70s]", ar.source_id);
       lua_pushstring(L, buff); toconcat++;
     }
     lua_pushstring(L, "\n"); toconcat++;

+ 3 - 4
llex.c

@@ -1,5 +1,5 @@
 /*
-** $Id: llex.c,v 1.68 2000/08/22 20:07:56 roberto Exp $
+** $Id: llex.c,v 1.69 2000/09/11 17:38:42 roberto Exp roberto $
 ** Lexical Analyzer
 ** See Copyright Notice in lua.h
 */
@@ -11,7 +11,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "llex.h"
 #include "lmem.h"
 #include "lobject.h"
@@ -58,8 +57,8 @@ void luaX_checklimit (LexState *ls, int val, int limit, const char *msg) {
 
 void luaX_syntaxerror (LexState *ls, const char *s, const char *token) {
   char buff[MAXSRC];
-  luaL_chunkid(buff, ls->source->str, sizeof(buff));
-  luaL_verror(ls->L, "%.100s;\n  last token read: `%.50s' at line %d in %.80s",
+  luaO_chunkid(buff, ls->source->str, sizeof(buff));
+  luaO_verror(ls->L, "%.100s;\n  last token read: `%.50s' at line %d in %.80s",
               s, token, ls->linenumber, buff);
 }
 

+ 35 - 1
lobject.c

@@ -1,11 +1,14 @@
 /*
-** $Id: lobject.c,v 1.45 2000/08/11 16:17:28 roberto Exp roberto $
+** $Id: lobject.c,v 1.46 2000/09/11 17:38:42 roberto Exp roberto $
 ** Some generic functions over Lua objects
 ** See Copyright Notice in lua.h
 */
 
 #include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "lua.h"
 
@@ -123,3 +126,34 @@ int luaO_str2d (const char *s, Number *result) {  /* LUA_NUMBER */
   return 1;
 }
 
+
+void luaO_verror (lua_State *L, const char *fmt, ...) {
+  char buff[500];
+  va_list argp;
+  va_start(argp, fmt);
+  vsprintf(buff, fmt, argp);
+  va_end(argp);
+  lua_error(L, buff);
+}
+
+
+#define EXTRALEN	sizeof("string \"...\"0")
+
+void luaO_chunkid (char *out, const char *source, int len) {
+  if (*source == '(') {
+    strncpy(out, source+1, len-1);  /* remove first char */
+    out[len-1] = '\0';  /* make sure `out' has an end */
+    out[strlen(out)-1] = '\0';  /* remove last char */
+  }
+  else {
+    len -= EXTRALEN;
+    if (*source == '@')
+      sprintf(out, "file `%.*s'", len, source+1);
+    else {
+      const char *b = strchr(source , '\n');  /* stop at first new line */
+      int lim = (b && (b-source)<len) ? b-source : len;
+      sprintf(out, "string \"%.*s\"", lim, source);
+      strcpy(out+lim+(EXTRALEN-sizeof("...\"0")), "...\"");
+    }
+  }
+}

+ 4 - 1
lobject.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lobject.h,v 1.74 2000/08/22 17:44:17 roberto Exp roberto $
+** $Id: lobject.h,v 1.75 2000/09/11 17:38:42 roberto Exp roberto $
 ** Type definitions for Lua objects
 ** See Copyright Notice in lua.h
 */
@@ -198,5 +198,8 @@ char *luaO_openspace (lua_State *L, size_t n);
 int luaO_equalObj (const TObject *t1, const TObject *t2);
 int luaO_str2d (const char *s, Number *result);
 
+void luaO_verror (lua_State *L, const char *fmt, ...);
+void luaO_chunkid (char *out, const char *source, int len);
+
 
 #endif

+ 1 - 2
ltable.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltable.c,v 1.53 2000/08/09 19:16:57 roberto Exp roberto $
+** $Id: ltable.c,v 1.54 2000/08/31 14:08:27 roberto Exp roberto $
 ** Lua tables (hash)
 ** See Copyright Notice in lua.h
 */
@@ -20,7 +20,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "lmem.h"
 #include "lobject.h"
 #include "lstate.h"

+ 17 - 9
ltm.c

@@ -1,5 +1,5 @@
 /*
-** $Id: ltm.c,v 1.47 2000/09/05 19:33:32 roberto Exp roberto $
+** $Id: ltm.c,v 1.48 2000/09/11 19:45:27 roberto Exp roberto $
 ** Tag methods
 ** See Copyright Notice in lua.h
 */
@@ -10,7 +10,6 @@
 
 #include "lua.h"
 
-#include "lauxlib.h"
 #include "ldo.h"
 #include "lmem.h"
 #include "lobject.h"
@@ -26,14 +25,23 @@ const char *const luaT_eventname[] = {  /* ORDER IM */
 };
 
 
+static int findevent (const char *name) {
+  int i;
+  for (i=0; luaT_eventname[i]; i++)
+    if (strcmp(luaT_eventname[i], name) == 0)
+      return i;
+  return -1;  /* name not found */
+}
+
+
 static int luaI_checkevent (lua_State *L, const char *name, int t) {
-  int e = luaL_findstring(name, luaT_eventname);
+  int e = findevent(name);
   if (e >= IM_N)
-    luaL_verror(L, "event `%.50s' is deprecated", name);
+    luaO_verror(L, "event `%.50s' is deprecated", name);
   if (e == IM_GC && t == TAG_TABLE)
-    luaL_verror(L, "event `gc' for tables is deprecated");
+    luaO_verror(L, "event `gc' for tables is deprecated");
   if (e < 0)
-    luaL_verror(L, "`%.50s' is not a valid event name", name);
+    luaO_verror(L, "`%.50s' is not a valid event name", name);
   return e;
 }
 
@@ -86,12 +94,12 @@ int lua_newtag (lua_State *L) {
 
 static void checktag (lua_State *L, int tag) {
   if (!(0 <= tag && tag <= L->last_tag))
-    luaL_verror(L, "%d is not a valid tag", tag);
+    luaO_verror(L, "%d is not a valid tag", tag);
 }
 
 void luaT_realtag (lua_State *L, int tag) {
   if (!(NUM_TAGS <= tag && tag <= L->last_tag))
-    luaL_verror(L, "tag %d was not created by `newtag'", tag);
+    luaO_verror(L, "tag %d was not created by `newtag'", tag);
 }
 
 
@@ -140,7 +148,7 @@ void lua_settagmethod (lua_State *L, int t, const char *event) {
   e = luaI_checkevent(L, event, t);
   checktag(L, t);
   if (!luaT_validevent(t, e))
-    luaL_verror(L, "cannot change `%.20s' tag method for type `%.20s'%.20s",
+    luaO_verror(L, "cannot change `%.20s' tag method for type `%.20s'%.20s",
                 luaT_eventname[e], luaO_typenames[t],
                 (t == TAG_TABLE || t == TAG_USERDATA) ? " with default tag"
                                                           : "");

+ 6 - 4
luadebug.h

@@ -1,5 +1,5 @@
 /*
-** $Id: luadebug.h,v 1.12 2000/08/11 16:17:28 roberto Exp roberto $
+** $Id: luadebug.h,v 1.13 2000/08/28 17:57:04 roberto Exp roberto $
 ** Debugging API
 ** See Copyright Notice in lua.h
 */
@@ -26,16 +26,18 @@ lua_Hook lua_setcallhook (lua_State *L, lua_Hook func);
 lua_Hook lua_setlinehook (lua_State *L, lua_Hook func);
 
 
+#define LUA_IDSIZE	60
 
 struct lua_Debug {
   const char *event;     /* `call', `return' */
-  const char *source;    /* (S) */
-  int linedefined;       /* (S) */
-  const char *what;      /* (S) `Lua' function, `C' function, Lua `main' */
   int currentline;       /* (l) */
   const char *name;      /* (n) */
   const char *namewhat;  /* (n) `global', `tag method', `local', `field' */
   int nups;              /* (u) number of upvalues */
+  int linedefined;       /* (S) */
+  const char *what;      /* (S) `Lua' function, `C' function, Lua `main' */
+  const char *source;    /* (S) */
+  char source_id[LUA_IDSIZE]; /* (S) */
   /* private part */
   struct lua_TObject *_func;  /* active function */
 };

+ 9 - 10
lundump.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lundump.c,v 1.27 2000/09/04 18:53:41 roberto Exp roberto $
+** $Id: lundump.c,v 1.28 2000/09/11 17:38:42 roberto Exp roberto $
 ** load bytecodes from files
 ** See Copyright Notice in lua.h
 */
@@ -7,7 +7,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "lauxlib.h"
 #include "lfunc.h"
 #include "lmem.h"
 #include "lopcodes.h"
@@ -26,7 +25,7 @@ static const char* ZNAME(ZIO* Z)
 
 static void unexpectedEOZ (lua_State* L, ZIO* Z)
 {
- luaL_verror(L,"unexpected end of file in `%.255s'",ZNAME(Z));
+ luaO_verror(L,"unexpected end of file in `%.255s'",ZNAME(Z));
 }
 
 static int ezgetc (lua_State* L, ZIO* Z)
@@ -100,7 +99,7 @@ static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap)
 #if 0
  if (swap) SwapBytes(tf->code,sizeof(*tf->code),size);
 #endif
- if (tf->code[size-1]!=OP_END) luaL_verror(L,"bad code in `%.255s'",ZNAME(Z));
+ if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.255s'",ZNAME(Z));
 }
 
 static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
@@ -167,14 +166,14 @@ static void LoadSignature (lua_State* L, ZIO* Z)
  const char* s=SIGNATURE;
  while (*s!=0 && ezgetc(L,Z)==*s)
   ++s;
- if (*s!=0) luaL_verror(L,"bad signature in `%.255s'",ZNAME(Z));
+ if (*s!=0) luaO_verror(L,"bad signature in `%.255s'",ZNAME(Z));
 }
 
 static void TestSize (lua_State* L, int s, const char* what, ZIO* Z)
 {
  int r=ezgetc(L,Z);
  if (r!=s)
-  luaL_verror(L,"virtual machine mismatch in `%.255s':\n"
+  luaO_verror(L,"virtual machine mismatch in `%.255s':\n"
 	"  %s is %d but read %d",ZNAME(Z),what,r,s);
 }
 
@@ -188,11 +187,11 @@ static int LoadHeader (lua_State* L, ZIO* Z)
  LoadSignature(L,Z);
  version=ezgetc(L,Z);
  if (version>VERSION)
-  luaL_verror(L,"`%.255s' too new:\n"
+  luaO_verror(L,"`%.255s' too new:\n"
 	"  read version %d.%d; expected at most %d.%d",
 	ZNAME(Z),V(version),V(VERSION));
  if (version<VERSION0)			/* check last major change */
-  luaL_verror(L,"`%.255s' too old:\n"
+  luaO_verror(L,"`%.255s' too old:\n"
 	"  read version %d.%d; expected at least %d.%d",
 	ZNAME(Z),V(version),V(VERSION));
  swap=(luaU_endianess()!=ezgetc(L,Z));	/* need to swap bytes? */
@@ -205,7 +204,7 @@ static int LoadHeader (lua_State* L, ZIO* Z)
  TESTSIZE(sizeof(Number));
  f=LoadNumber(L,Z,swap);
  if ((long)f!=(long)tf)		/* disregard errors in last bit of fraction */
-  luaL_verror(L,"unknown number format in `%.255s':\n"
+  luaO_verror(L,"unknown number format in `%.255s':\n"
       "  read " NUMBER_FMT "; expected " NUMBER_FMT,
       ZNAME(Z),f,tf);
  return swap;
@@ -226,7 +225,7 @@ Proto* luaU_undump (lua_State* L, ZIO* Z)
  if (c==ID_CHUNK)
   return LoadChunk(L,Z);
  else if (c!=EOZ)
-  luaL_verror(L,"`%.255s' is not a precompiled Lua chunk",ZNAME(Z));
+  luaO_verror(L,"`%.255s' is not a precompiled Lua chunk",ZNAME(Z));
  return NULL;
 }
 

+ 29 - 38
makefile

@@ -1,5 +1,5 @@
 #
-## $Id: makefile,v 1.25 2000/04/24 21:05:11 roberto Exp roberto $
+## $Id: makefile,v 1.26 2000/08/09 19:16:57 roberto Exp roberto $
 ## Makefile
 ## See Copyright Notice in lua.h
 #
@@ -25,13 +25,13 @@
 # are passed as arguments 
 # define LUA_DEPRECATETFUNCS to include obsolete functions
 
-CONFIG = -DPOPEN -D_POSIX_SOURCE -DDEBUG
+CONFIG = -DPOPEN -D_POSIX_SOURCE
 #CONFIG = -DOLD_ANSI -DDEBUG -DLUA_COMPAT_READPATTERN -DLUA_COMPAT_ARGRET
 # -DLUA_DEPRECATETFUNCS
 
 
 # Compilation parameters
-CC = g++
+CC = gcc
 CWARNS = -Wall -W -pedantic \
 	-Waggregate-return \
 	-Wcast-align \
@@ -57,10 +57,7 @@ ARFLAGS	= rvl
 # Aplication modules
 LUAOBJS = \
 	lstate.o \
-	lref.o \
 	lapi.o \
-	lauxlib.o \
-	lbuiltin.o \
 	lmem.o \
 	lstring.o \
 	ltable.o \
@@ -68,7 +65,6 @@ LUAOBJS = \
 	lvm.o \
 	ldo.o \
 	lobject.o \
-	lbuffer.o \
 	lfunc.o \
 	lgc.o \
 	lcode.o \
@@ -80,6 +76,8 @@ LUAOBJS = \
 	ltests.o
 
 LIBOBJS = 	\
+	lauxlib.o \
+	lbaselib.o \
 	liolib.o \
 	lmathlib.o \
 	lstrlib.o \
@@ -113,57 +111,50 @@ clear	:
 	co $(CO_OPTIONS) $@
 
 
-lapi.o: lapi.c lua.h lapi.h lobject.h llimits.h lauxlib.h ldo.h \
- lstate.h luadebug.h lfunc.h lgc.h lmem.h lref.h lstring.h ltable.h \
- ltm.h lvm.h
+lapi.o: lapi.c lua.h lapi.h lobject.h llimits.h ldo.h lstate.h \
+ luadebug.h lfunc.h lgc.h lmem.h lstring.h ltable.h ltm.h lvm.h
 lauxlib.o: lauxlib.c lua.h lauxlib.h luadebug.h
-lbuffer.o: lbuffer.c lua.h lauxlib.h lmem.h llimits.h lstate.h \
- lobject.h luadebug.h
-lbuiltin.o: lbuiltin.c lua.h lapi.h lobject.h llimits.h lauxlib.h \
- lbuiltin.h ldo.h lstate.h luadebug.h lfunc.h lmem.h lstring.h \
- ltable.h ltm.h lundump.h lzio.h lvm.h
+lbaselib.o: lbaselib.c lua.h lauxlib.h lualib.h
 lcode.o: lcode.c /usr/include/stdlib.h lua.h lcode.h llex.h lobject.h \
  llimits.h lzio.h lopcodes.h lparser.h ldo.h lstate.h luadebug.h \
  lmem.h
 ldblib.o: ldblib.c lua.h lauxlib.h luadebug.h lualib.h
-ldebug.o: ldebug.c lua.h lapi.h lobject.h llimits.h lauxlib.h lcode.h \
- llex.h lzio.h lopcodes.h lparser.h ldebug.h lstate.h luadebug.h ldo.h \
- lfunc.h ltable.h ltm.h
-ldo.o: ldo.c lua.h lauxlib.h ldebug.h lstate.h lobject.h llimits.h \
- luadebug.h ldo.h lgc.h lmem.h lparser.h lzio.h lstring.h ltable.h \
- ltm.h lundump.h lvm.h
+ldebug.o: ldebug.c lua.h lapi.h lobject.h llimits.h lcode.h llex.h \
+ lzio.h lopcodes.h lparser.h ldebug.h lstate.h luadebug.h ldo.h \
+ lfunc.h lstring.h ltable.h ltm.h
+ldo.o: ldo.c lua.h ldebug.h lstate.h lobject.h llimits.h luadebug.h \
+ ldo.h lgc.h lmem.h lparser.h lzio.h lstring.h ltable.h ltm.h \
+ lundump.h lvm.h
 lfunc.o: lfunc.c lua.h lfunc.h lobject.h llimits.h lmem.h lstate.h \
  luadebug.h
 lgc.o: lgc.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
- lfunc.h lgc.h lmem.h lref.h lstring.h ltable.h ltm.h
+ lfunc.h lgc.h lmem.h lstring.h ltable.h ltm.h
 liolib.o: liolib.c lua.h lauxlib.h luadebug.h lualib.h
-llex.o: llex.c lua.h lauxlib.h llex.h lobject.h llimits.h lzio.h \
- lmem.h lparser.h lstate.h luadebug.h lstring.h ltable.h
+llex.o: llex.c lua.h llex.h lobject.h llimits.h lzio.h lmem.h \
+ lparser.h lstate.h luadebug.h lstring.h ltable.h
 lmathlib.o: lmathlib.c lua.h lauxlib.h lualib.h
 lmem.o: lmem.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
  lmem.h
-lobject.o: lobject.c lua.h lobject.h llimits.h
+lobject.o: lobject.c lua.h lmem.h llimits.h lobject.h lstate.h \
+ luadebug.h
 lparser.o: lparser.c lua.h lcode.h llex.h lobject.h llimits.h lzio.h \
  lopcodes.h lparser.h lfunc.h lmem.h lstate.h luadebug.h lstring.h
-lref.o: lref.c lua.h lapi.h lobject.h llimits.h lmem.h lref.h lstate.h \
- luadebug.h
-lstate.o: lstate.c lua.h lauxlib.h lbuiltin.h ldo.h lobject.h \
- llimits.h lstate.h luadebug.h lgc.h llex.h lzio.h lmem.h lref.h \
- lstring.h ltable.h ltm.h
+lstate.o: lstate.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
+ lgc.h llex.h lzio.h lmem.h lstring.h ltable.h ltm.h
 lstring.o: lstring.c lua.h lmem.h llimits.h lobject.h lstate.h \
  luadebug.h lstring.h
 lstrlib.o: lstrlib.c lua.h lauxlib.h lualib.h
-ltable.o: ltable.c lua.h lauxlib.h lmem.h llimits.h lobject.h lstate.h \
+ltable.o: ltable.c lua.h lmem.h llimits.h lobject.h lstate.h \
  luadebug.h lstring.h ltable.h
 ltests.o: ltests.c lua.h lapi.h lobject.h llimits.h lauxlib.h lcode.h \
  llex.h lzio.h lopcodes.h lparser.h ldebug.h lstate.h luadebug.h ldo.h \
  lfunc.h lmem.h lstring.h ltable.h
-ltm.o: ltm.c lua.h lauxlib.h lmem.h llimits.h lobject.h lstate.h \
- luadebug.h ltm.h
+ltm.o: ltm.c lua.h ldo.h lobject.h llimits.h lstate.h luadebug.h \
+ lmem.h ltm.h
 lua.o: lua.c lua.h luadebug.h lualib.h
-lundump.o: lundump.c lua.h lauxlib.h lfunc.h lobject.h llimits.h \
- lmem.h lopcodes.h lstring.h lstate.h luadebug.h lundump.h lzio.h
-lvm.o: lvm.c lua.h lapi.h lobject.h llimits.h lauxlib.h ldebug.h \
- lstate.h luadebug.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h \
- ltm.h lvm.h
+lundump.o: lundump.c lfunc.h lobject.h llimits.h lua.h lmem.h \
+ lopcodes.h lstring.h lstate.h luadebug.h lundump.h lzio.h
+lvm.o: lvm.c lua.h lapi.h lobject.h llimits.h ldebug.h lstate.h \
+ luadebug.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h ltable.h ltm.h \
+ lvm.h
 lzio.o: lzio.c lua.h lzio.h