All C code calling into Python and all C code called by Python uses vectorcall / fastcall (see PEP 590) which reduces the overhead of passing and receiving positional and keyword arguments. (APSW issue 477 APSW issue 446):
-
Conversion of arguments from Python values to C values drops generic PyArg_ParseTupleAndKeywords in favour of direct processing which is more efficient and allows better exception messages.
-
Running speedtest with a VFS that inherits all methods went from being 17% slower than pure SQLite to 2% slower.
-
A virtual table benchmark takes 35% less time. (Remember that benchmarks are best case!)
The shell JSON output modes have been fixed. Mode 'json' outputs a json array, while mode 'jsonl' does newline delimited json objects, aka json lines. (APSW issue 483)