diff --git a/doc/ext_ffi_semantics.html b/doc/ext_ffi_semantics.html
index 4a1b6c11..9b7cac70 100644
--- a/doc/ext_ffi_semantics.html
+++ b/doc/ext_ffi_semantics.html
@@ -128,13 +128,13 @@ TODO
Garbage Collection of cdata Objects
-All explicitly (ffi.new() etc.) or implicitly (accessors)
-created cdata objects are garbage collected. You need to ensure to
-retain valid references to cdata objects somewhere on a Lua stack, an
-upvalue or in a Lua table while they are still in use. Once the last
-reference to a cdata object is gone, the garbage collector will
-automatically free the memory used by it (at the end of the next GC
-cycle).
+All explicitly (ffi.new(), ffi.cast() etc.) or
+implicitly (accessors) created cdata objects are garbage collected.
+You need to ensure to retain valid references to cdata objects
+somewhere on a Lua stack, an upvalue or in a Lua table while they are
+still in use. Once the last reference to a cdata object is gone, the
+garbage collector will automatically free the memory used by it (at
+the end of the next GC cycle).
Please note that pointers themselves are cdata objects, however they
@@ -176,12 +176,85 @@ ffi.C.printf("integer value: %d\n", ffi.new("int", x)) -- Current Status
+
+The initial release of the FFI library has some limitations and is
+missing some features. Most of these will be fixed in future releases.
+
+
+C language support is
+currently incomplete:
+
+
+- C declarations are not passed through a C pre-processor,
+yet.
+- The C parser is able to evaluate most constant expressions
+commonly found in C header files. However it doesn't handle the
+full range of C expression semantics and may fail for some
+obscure constructs.
+- static const declarations only work for integer types
+up to 32 bits. Neither declaring string constants nor
+floating-point constants is supported.
+- The long double C type is parsed correctly, but
+there's no support for the related conversions, accesses or
+arithmetic operations.
+- Packed struct bitfields that cross container boundaries
+are not implemented.
+- Native vector types may be defined with the GCC mode and
+vector_size attributes. But no operations other than loading,
+storing and initializing them are supported, yet.
+- The volatile type qualifier is currently ignored by
+compiled code.
+- ffi.cdef silently ignores
+all redeclarations.
+
+
+The JIT compiler already handles a large subset of all FFI operations.
+It automatically falls back to the interpreter for unimplemented
+operations (you can check for this with the
+-jv command line option).
+The following operations are currently not compiled and may exhibit
+suboptimal performance, especially when used in inner loops:
+
+
+- Array/struct copies and bulk initializations.
+- Bitfield accesses and initializations.
+- Vector operations.
+- Lua tables as compound initializers.
+- Initialization of nested struct/union types.
+- Allocations of variable-length arrays or structs.
+- Allocations of C types with a size > 64 bytes or an
+alignment > 8 bytes.
+- Conversions from lightuserdata to void *.
+- Pointer differences for element sizes that are not a power of
+two.
+- Calls to non-cdecl or vararg C functions.
+- Calls to C functions with aggregates passed or returned by
+value.
+- Calls to C functions with 64 bit arguments or return values
+on 32 bit CPUs.
+- tostring() for cdata types.
+- The following ffi.* API functions:
+ffi.sizeof(), ffi.alignof(), ffi.offsetof().
+
+
+Other missing features:
+
+
+- Bit operations for 64 bit types.
+- Arithmetic for complex numbers.
+- User-defined metamethods for C types.
+- Callbacks from C code to Lua functions.
+- Atomic handling of errno.
+- Passing structs by value to vararg C functions.
+- C++ exception interoperability
+does not extend to C functions called via the FFI.
+