diff --git a/BUILD.gn b/BUILD.gn
new file mode 100644
index 0000000..c600c92
--- /dev/null
+++ b/BUILD.gn
@@ -0,0 +1,79 @@
+# Copyright 2016 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+source_set("lua_core") {
+  sources = [
+    "src/lapi.c",
+    "src/lcode.c",
+    "src/lctype.c",
+    "src/ldebug.c",
+    "src/ldo.c",
+    "src/ldump.c",
+    "src/lfunc.c",
+    "src/lgc.c",
+    "src/llex.c",
+    "src/lmem.c",
+    "src/lobject.c",
+    "src/lopcodes.c",
+    "src/lparser.c",
+    "src/lstate.c",
+    "src/lstring.c",
+    "src/ltable.c",
+    "src/ltm.c",
+    "src/lundump.c",
+    "src/lvm.c",
+    "src/lzio.c",
+  ]
+}
+
+source_set("lua_lib") {
+  sources = [
+    "src/lauxlib.c",
+    "src/lbaselib.c",
+    "src/lbitlib.c",
+    "src/lcorolib.c",
+    "src/ldblib.c",
+    "src/liolib.c",
+    "src/lmathlib.c",
+    "src/loslib.c",
+    "src/lstrlib.c",
+    "src/ltablib.c",
+    "src/lutf8lib.c",
+    "src/loadlib.c",
+    "src/linit.c",
+  ]
+}
+
+static_library("liblua") {
+  deps = [
+    ":lua_core",
+    ":lua_lib",
+  ]
+}
+
+executable("lua") {
+  sources = [
+    "src/lua.c",
+  ]
+
+  deps = [
+    ":liblua",
+    "//third_party/linenoise",
+  ]
+
+  defines = [
+    "LUA_USE_POSIX",
+    "LUA_USE_LINENOISE",
+  ]
+}
+
+executable("luac") {
+  sources = [
+    "src/luac.c",
+  ]
+
+  deps = [ ":liblua" ]
+
+  defines = [ "LUA_USE_POSIX" ]
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..9b4e37c
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,18 @@
+Copyright © 1994–2016 Lua.org, PUC-Rio.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README b/OLD_README
similarity index 100%
rename from README
rename to OLD_README
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..937926f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,39 @@
+# Lua 5.3.3
+
+This is a fork of Lua 5.3.3, released on 30 May 2016. This project makes the
+smallest number of modifications to support running Lua as part of the
+[Fuchsia](https://fuchsia.googlesource.com/) repository.
+
+For installation instructions, license details, and
+further information about Lua, see doc/readme.html.
+
+Please refer to the [Lua website](http://www.lua.org/about.html) for information
+about the Lua project.
+
+# Support status
+
+The following is a list of builtin library functions that don't work due to
+missing features in Fuchsia (e.g. unimplemented libc functions):
+
+## io
+
+  * **io.popen**: Returns not supported
+  * **io.tmpfile**: Crashes with due to unsupported syscall (tmpfile)
+  * **io.read**: Reading from stdin doesn't block. Reading from regular files is OK.
+
+## os
+
+  * **os.time**: Returns the same thing as os.clock, which is incorrect
+  * **os.date**: Unsupported syscall: localtime, gmtime, localtime_r, gmtime_r (#257)
+  * **os.execute**: Unsupported syscall: sigaction (#13)
+  * **os.getenv**: Unsupported syscall: sigaction (#13)
+  * **os.rename**: Returns "nil     Function not Implemented38"
+  * **os.tmpname**: Unsupported syscall: tmpnam (#262)
+
+## package
+
+  * **package.cpath**: Need to configure this away from the default cpath on
+    Fuchsia?
+  * **package.loadlib**: Returns *"Dynamic libraries not enabled"*, which is
+    probably what we want right now.
+  * **package.path**: Need to map this to something meaningful.
diff --git a/src/lua.c b/src/lua.c
index 545d23d..9342081 100644
--- a/src/lua.c
+++ b/src/lua.c
@@ -82,6 +82,21 @@
 #define lua_readline(L,b,p)	((void)L, ((b)=readline(p)) != NULL)
 #define lua_saveline(L,line)	((void)L, add_history(line))
 #define lua_freeline(L,b)	((void)L, free(b))
+#define lua_loadhistory()	/* no-op */
+
+#elif defined(LUA_USE_LINENOISE)/* }{ */
+
+#include <linenoise.h>
+#define HISTORY_FILE		"/tmp/lua-history.txt"
+#define lua_readline(L,b,p)	((void)L, ((b)=linenoise(p)) != NULL)
+#define lua_saveline(L,line)	\
+do { \
+	(void)L; \
+	linenoiseHistoryAdd(line); \
+	linenoiseHistorySave(HISTORY_FILE); \
+} while(0);
+#define lua_freeline(L,b)	((void)L, linenoiseFree(b))
+#define lua_loadhistory()	linenoiseHistoryLoad(HISTORY_FILE)
 
 #else				/* }{ */
 
@@ -90,6 +105,7 @@
         fgets(b, LUA_MAXINPUT, stdin) != NULL)  /* get line */
 #define lua_saveline(L,line)	{ (void)L; (void)line; }
 #define lua_freeline(L,b)	{ (void)L; (void)b; }
+#define lua_loadhistory()	/* no-op */
 
 #endif				/* } */
 
@@ -102,6 +118,7 @@
 
 static const char *progname = LUA_PROGNAME;
 
+#ifndef __Fuchsia__
 
 /*
 ** Hook set by signal function to stop the interpreter.
@@ -124,6 +141,8 @@
   lua_sethook(globalL, lstop, LUA_MASKCALL | LUA_MASKRET | LUA_MASKCOUNT, 1);
 }
 
+#endif
+
 
 static void print_usage (const char *badoption) {
   lua_writestringerror("%s: ", progname);
@@ -199,9 +218,13 @@
   lua_pushcfunction(L, msghandler);  /* push message handler */
   lua_insert(L, base);  /* put it under function and args */
   globalL = L;  /* to be available to 'laction' */
+#ifndef __Fuchsia__
   signal(SIGINT, laction);  /* set C-signal handler */
+#endif
   status = lua_pcall(L, narg, nres, base);
+#ifndef __Fuchsia__
   signal(SIGINT, SIG_DFL); /* reset C-signal handler */
+#endif
   lua_remove(L, base);  /* remove message handler from the stack */
   return status;
 }
@@ -559,6 +582,7 @@
     print_usage(argv[script]);  /* 'script' has index of bad arg. */
     return 0;
   }
+  lua_loadhistory();
   if (args & has_v)  /* option '-v'? */
     print_version();
   if (args & has_E) {  /* option '-E'? */
