Extend Lua with custom C functions using Clang
Here is a boilerplate for extending Lua with custom C functions. This requires Clang and Lua 5.1 to be installed. GCC can be used instead of Clang, but the Makefile will need to be modified.
nativefunc.c
#include <lua.h> #include <lauxlib.h> static int l_mult50(lua_State *L) { double number = luaL_checknumber(L, 1); lua_pushnumber(L, number * 50); return 1; } int luaopen_nativefunc(lua_State *L) { static const struct luaL_Reg nativeFuncLib[] = { {"mult50", l_mult50}, {NULL, NULL} }; luaL_register(L, "nativelib", nativeFuncLib); return 1; }
main.lua
require "nativefunc" print(nativelib.mult50(50))
Makefile
CC = clang CFLAGS = INCLUDES = `pkg-config lua5.1 --cflags-only-I` all: $(CC) -shared -o nativefunc.so -fPIC nativefunc.c $(CFLAGS) $(INCLUDES) clean: rm *.so
Other notes
- Extract lines from a file with sed
- Sane defaults for tmux with more visible statusbar
- Bulk thumbnails
- plan9 Take a screenshot in Plan9
- Parse RSS feeds with Lua
- Development environments with Nix
- plan9 Run 9front in Qemu
- c Sending signals to C programs
- c Write and read structs to/from files in C
- Grep to Less that maintain colors
- dcss Sane default for Dungeon Crawl Stone Soup Online edition
- Execute not blocking async shell command in C#
- dcss Make DCSS playable on 4k displays
- c Embedding resources into binary with C
- plan9 My brand new Plan9/9front desktop