... in many places where the function call will later need to be between
modules (or libraries, or the executable) and the annotation will be a necessity
to keep the linkage working on Windows.
That's all that this sweeping commit does.
... Which will be needed for various reasons for Windows builds of certain
modularizations, which will otherwise complain that they can no longer
generate them as inlines.
In one case, deleted copies require explicitly defaulted moves, but they will
work as generated inline.
... not assuming that it is invoked from cmake-proxies/CMakeLists.txt
This will allow modules to use lib-src libraries, and even for a module to be
the sole user of one of them.
So addlib lines may be moved out of cmake-proxies/CMakeLists.txt, when no
longer needed to build the reduced executable without the modules.
... So mod-foo defines FOO_API properly on the command line, for use in its
public header files; on Windows, appropriately expanding one way when compiling
the library, another way when compiling other code that uses it, so that all
will link correctly.
... Because it depends on having visited various lib-src directories, which I
want to delay until visiting various of the modules, and I also want to visit
src before the modules, because that's bottom-up dependency ordering.
So the step should not be done in src.
This update contains to important features:
1. Improved performance of WAL mode locking primitives in cases where there are hundreds of connections all accessing the same database file at once
2. In WAL mode, if a writer crashes and leaves the shm file in an inconsistent state, subsequent transactions are now able to recover the shm file even if there are active read transactions. Before this enhancement, shm file recovery that scenario would result in an SQLITE_PROTOCOL error.
... and eliminate the possibility of the error of omitting the header, when
moving code to other files. The mistake sometimes caused subtle, unintended
changes of behavior.
... This makes it impossible to forget to include the EXPERIMENTAL definitions
(such as when cutting and pasting code) and so get unintended quiet changes of
behavior.
The EXPERIMENTAL flags are now specified instead in new file Experimental.cmake
It was defined as taking a size_t paramater when it was written,
so the declarations used to call it should also use a size_t parameter
to ensure the call is correct.