- the core API is fully decapsulated (i.e. entirely open, fast,
flexible and delicate) while the patchwork API is as encapsulated
as possible providing only a single dispatcher function.
All functions of core are in the public interface core.h
- shared library support is dropped
because they are not needed (thus no -fPIC, no -init...)
- we don't build libraries at all,
rather every module creating a binary compiles all objects from
../core/*.c by including ../core/core.mk and so on
so you always have up-to-date objects compiled with the proper flags
- the semi-modifiable type Rec is replaced by the immutable Fld array
(sometimes called Rec) and the fully dynamic List;
standard embedded records are modelled as valid Fld arrays.
The List itself resembles much a masterfile/pointerfile pair,
especially the field data buffer is strictly append only.
- the List is the universal data type, serving also as general purpose
string buffer and output stream (backed by some flusher function).
Thus 98% of mallocs should ask for list blocks, which can be managed
efficiently in free block lists for some powers of 2 starting from 8K.
- options are usually packed in one field instead of several.
There is a getopt-style function vGet
- error code/loglevel handling is simplified using 0..-15
- the system file interface is used for seekable disk files only,
not for stream-like ressources like sockets. It's therefore much simpler
and the file type does no longer carry various flags,
but rather is a true system file descriptor.
- the former "Session" now is an Env carrying only the generally needed
attributes. Only the server may want to bind environments to sessions
or threads and therefore should do its own maintenance as required.
All other applications will use the single constant Env model.
- the db supports text masterfiles only.
- the L-B-Tree index is much unchanged, but access is unified to a single
xLoop function using a callback for every key with all its values
at once (unless they span blocks). Compiling the values into lists
of terms or hits withj or w/o position and applying AND,OR,NEAR
all is left to the callback, which will be implemented in the patchwork's
term, search and query handlers.