From 67a968f94e0b268c11d05aac79b9efd6fa018e10 Mon Sep 17 00:00:00 2001 From: daurnimator Date: Sun, 4 Mar 2018 23:12:29 +1100 Subject: README.md: formatting --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 78c12ca..3acdadd 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ However it is rare to use this repository directly. Once you've loaded fengari, you can use the JS API: -```javascript +```js const luaconf = fengari.luaconf; const lua = fengari.lua; const lauxlib = fengari.lauxlib; @@ -48,14 +48,17 @@ Lua strings are 8-bits clean and can embed `\0`. Which means that invalid UTF-8/ To address that issue, Fengari uses [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array) objects containing the raw bytes to implement lua strings. To push a JS string on the stack you can use `lua_pushliteral` which will convert it to an array of bytes before pushing it. To get a Lua string on the stack as a JS string you can use `lua_tojsstring` which will attempt to convert it to a UTF-16 JS string. The latter won't give you what you expect if the Lua string is not a valid UTF-16 sequence. You can also convert strings with `luastring_of`, `to_luastring`, `to_jsstring` and `to_uristring`. + ### Integers The JS number type is always a double, and hence cannot accurately represent integers with more than 53 bits. As such, we've taken the route of a rarely used define (`LUA_INT_TYPE=LUA_INT_LONG`) in the PUC-Rio sources, where floats are doubles, but integers are 32 bits. + ### `require` and `package.loadlib` In the browser `require` and `package.loadlib` try to find a file by making synchronous XHR requests. + ### _Missing_ features - `lua_gc`/`collectgarbage`: Fengari relies on the JS garbage collector and does not implement its own. @@ -78,6 +81,7 @@ In the browser `require` and `package.loadlib` try to find a file by making sync - `luaL_execresult` takes an extra argument: an error object. The error object should have a fields `status`, `signal` and `errno`. - `luaL_fileresult` takes an extra argument: an error object. The error object should have a field `errno`. + ## Extensions ### `dv = lua_todataview(L, idx)` @@ -120,6 +124,7 @@ var p = lua_toproxy(L, 1); p(L); ```` + ## NYI - `io.input()`: partially implemented @@ -134,6 +139,7 @@ p(L); - `file:setvbuf()` - `file:__gc()` + ## References - [Source code for Lua 5.3](lua.org/source/5.3/) -- cgit v1.2.3-70-g09d2