The SQLite CIF storage engine requires SQLite 3.6.19 or later, compiled with foreign key and trigger support. The system will detect whether suitable support is available in the SQLite library, and fail gracefully in the event that it is not. The source is largely compliant with ISO C90, but it leans slightly on one implementation-dependent limit. Specifically, it contains one string literal that exceeds the least length (509 chars) that compliant compilers are required to support. As of this writing, that literal is 788 chars long, and all C90-compliant compilers known to the author in fact support string literals of that length. The source also relies on a handful of common library functions that are not standardized by C90, but are standardized by C99. For example, memcpy(). The built-in CIF parser depends on the platform's default char type to be able to represent at least 256 distinct values. That is not required of C implementations, though it is true for all C90 (or later) implementations known to the author. This contraint arises from use of ICU's Unicode Converter API, which handles encoded character data as sequences of default chars. By that token, however, this restriction is probably moot because it is unlikely that ICU can be implemented correctly on any platform that does not meet the requirement. If you want to analyze performance then you can configure with profiling support. Currently, only gprof profiling is supported. If you do enable profiling then you probably also want to configure with --disable-shared, as the GNU profiling system doesn't seem to collect profiling data from shared libraries. The "cif2_syncheck" example program may be useful for profiling the combination of parser and SQLite storage engine.