Skip to content

Instantly share code, notes, and snippets.

View malkia's full-sized avatar

Dimiter 'malkia' Stanev malkia

View GitHub Profile
@malkia
malkia / luajit.lib.build
Created March 20, 2012 15:50
build script
+ffi="Enable he FFI extension. Disabling it would reduce the size of the LuaJIT executable. But please consider that the FFI library is compiled-in, but NOT loaded by default. It only allocates any memory, if you actually make use of it"
-lua52compat="Enable some upwards-compatible features from Lua 5.2 that are unlikely to break existing code (e.g. __pairs). Note that this does not provide"
+jit="Enable the JIT compiler, disabling it would turn LuaJIT into a pure interpreter"
+sse2="x86 only: use SSE2 instead of x87 instructions in the interpreter"
+cmov="Enable the use of CMOV and FCOMI*/FUCOMI* instructions in the interpreter. Disable it only if you intend to use REALLY ANCIENT CPUs (before Pentium Pro, or on the VIA C3). This generally slows down the interpreter. Don't bother if your OS wouldn't run on them, anyway."
+nummode1="Some architectures (e.g. PPC) can use either single-number (+nummode1) or dual-number (+nummode2) mode. Please see LJ_ARCH_NUMMODE in lj_arch.h for details."
+nummode2=-nummode1
-s
@malkia
malkia / bolo-stack.md
Created February 28, 2012 01:52
bolo stack

BOLO runtime stack.

  • luajit
  • Some windowing lib (SDL, GLFW, SFML, etc.)
  • pixman
  • cairo
  • freetype2
  • zlib
  • bz2
  • png
@malkia
malkia / bo-tools.md
Created February 3, 2012 06:57
bo tools

BO should come with certain unix related tools

Candidates: Busybox: - One executable. There is a w32 port, trying it out now on OSX It's also good candidate for library

Alternative: Apache Apr - not the same - it's "portable library", but not executables

@malkia
malkia / bo.faq
Created February 3, 2012 05:28
bo faq
Q1: What is BO?
A1: BO is a luajit distribution targeting desktop computers and mobile devices.
Q2: Why BO?
A2: With BO you can edit and run lua code straight on the target.
Q3: Batteries included?
A3: Yes. BO comes with ffi bindings for several popular libraries and frameworks.
Q4: What is ffi?
@malkia
malkia / platforms.txt
Created January 21, 2012 05:07
Platforms: Hosts and Targets, Tools and SDKs
Terminology
===========
1. Platform - The combination of Operating System, Kernel, Tools and Runtime, and/or specific hardware device.
2. Desktop Platform - Typical computer with mouse & keyboard
3. Mobile Platform - Cell Phone, Touch Pad or other similar portable device
4. Host Platform - The platform on which the product is built.
5. Target Platform - The platform on which the product runs.
6. Target Runtime Library - The main "C" library for which the product is compiled.
@malkia
malkia / cdef-sample.lua
Created January 12, 2012 20:23
idea: extend luajit's ffi.cdef so that it can return introspection information
-- Something like (ZeroMQ in this case)
return {
typedefs = {
functions = {
zmq_free_fn = { "void", "data", "hint" },
},
structs = {
zmq_pollitem_t = "zmq_pollitem_t"
},
@malkia
malkia / fileinfo.c
Created December 16, 2011 18:54
Win32: Reading directory in one kernel call
// Not sure whether it's faster than FindFirstFile, etc. - but it does it in one kernel call
#include <windows.h>
#include <stdio.h>
// to compile:
// cl fileinfo.c setargv.obj
void fileinfo(const char*name);
int main( int argc, const char* argv[] )
@malkia
malkia / maglev.c
Created October 3, 2011 17:14
maglev - malkia's GL extension vectors - a very tiny (and not full) glee/gl3w/glew/etc. replacement
// maglev -- malkia's GL extension vectors
// For more complete options, look at:
// GL3W, GLEW and GLEE
//
// Dimiter "malkia" Stanev
// [email protected]
//
// To use it, just compile it like "cl -c maglev.c", and then link the .obj file with your stuff
//
#define WIN32_LEAN_AND_MEAN 1
@malkia
malkia / chess.txt
Created August 23, 2011 01:43
chess
8x8
1K
1Q
2r
2k
2b
8p
1+1+2+2+2+8
@malkia
malkia / fileinfo.c
Created August 15, 2011 22:41
Low level directory reading on Windows
#include <windows.h>
#include <stdio.h>
// to compile:
// cl fileinfo.c setargv.obj
void fileinfo(const char*name);
int main( int argc, const char* argv[] )
{
int i;