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