Checklist For SQLite

  1. Compiler warning checks.
    1. Linux GCC -Wall -Wextra (the tool/warnings.sh script)
    2. Mac GCC -Wall -Wextra (the tool/warnings.sh script)
    3. OpenBSD GCC using options -Wall
    4. Windows MSVC Win32 /W3
    5. Windows MSVC Win64 /W3
    6. sh tool/warnings-clang.sh

  2. Source code change review. "fossil diff --from release --to trunk"
    1. No stray changes
    2. All significant changes are mentioned in the "changes" log of the documentation
    3. New code complies with style guidelines
    4. New code complies with design rules
    5. Comments have been updated to reflect code changes
    6. Variables and functions have been renamed to reflect changes in their use
    7. Check all calls to sqlite3OsRead() and sqlite3OsWrite() to ensure that offset computations are 64-bit clean.
    8. Check all calls to memory allocation routines to ensure that size computations are 64-bit clean. Suggested regular expression for search: /(Re|M)alloc[FORZa-z]*(/
    9. Verify that source code contains no tabs and that surplus whitespace has been removed.
    10. Verify that the list of APIs exposed via the extension header is up-to-date (sqlite3ext.h)

  3. Tests for platform Linux x86_64:
    1. tclsh th3make cov.rc (verify 100% branch test coverage)
    2. tclsh th3make cov.rc -DHAVE_MALLOC_H -DHAVE_MALLOC_USABLE_SIZE (verify 100% branch test coverage)
    3. tclsh th3make cov.rc -DSQLITE_ENABLE_STAT4 (verify 100% branch test coverage)
    4. tclsh releasetest.tcl
    5. tclsh fulltest.tcl fast.rc test.rc
    6. tclsh th3make memdebug.rc
    7. tclsh th3make test-ex.rc
    8. tclsh th3make test.rc CC=clang
    9. tclsh th3make fast.rc CC=clang
    10. ./mptester x.db mptest/crash01.test
    11. ./mptester x.db mptest/multiwrite01.test

  4. Tests for 32-bit x86 Linux
    1. tclsh th3make test.rc -m32
    2. tclsh th3make test.rc CC=clang -m32
    3. tclsh th3make quick.rc -m32

  5. Tests for platform Linux ARM (BeagleBoard)
    1. tclsh th3make min.rc

  6. Tests for platform Android:
    1. th3make quick.rc

  7. Other test performed on any available platform:
    1. th3make test.rc -DSQLITE_THREADSAFE=0
    2. th3make test.rc -ftrapv
    3. OPTS=-DSQLITE_SMALL_STACK make sqlite3.c; th3make test.rc -DSQLITE_SMALL_STACK
    4. th3make test.rc CC=clang -fsanitize=undefined
    5. th3make quick.rc -DTH3_LOWMEM -DTH3_OMIT_MISUSE; valgrind ./th3
    6. th3make quick.rc -funsigned-char
    7. th3make quick.rc -fsigned-char
    8. th3make quick.rc -DSQLITE_TEST_REALLOC_STRESS
    9. ./configure; make fulltest

  8. Exported symbol checks: tool/symbols.sh
    1. No private symbols exported. (This is also checked by releasetest.tcl)
    2. No undesirable library dependencies

  9. Firefox recompiled using lastest SQLite.
    1. No SQLite compiler warnings
    2. Active use with no issues noted

  10. Run performance tests comparing the new SQLite release against the 3.8.6 release. Document and justify any performance decrease.
    1. The speedtest1 program
    2. ./speedtest1 --nosync --size 25 --trace 2>x.txt
      time ./sqlite3 x.db <x.txt >/dev/null

  11. Compute the size of a standard build (gcc -Os -c sqlite3.c) and and record the size change in the comments
    1. Versus the 3.8.6 release