Cygwin currently does not support named pipes/FIFOs. refdbd uses these to implement a child->parent messaging after the application server has forked. On Cygwin, this messaging is emulated with a temporary file. This is a bit slower (and a lot kludgier and error-prone) than a named pipe and almost certainly is a security hole.
Note: As of this writing, support for named pipes appears to be implemented as an experimental feature in Cygwin. It does not work as expected yet, so as of this writing refdb still emulates named pipes on Cygwin.
Cygwin currently does not implement the detection of pending data on stdin. Therefore, data that you send to stdin of a client will not be read unless you use the -f stdin
command line option.
The Cygwin port of SQLite has a problem working with absolute paths. The safest way is to start refdbd from the root directory (the start script refdbctl does this by default) and use a relative path to the database directory (i.e. leave away the leading slash).
As the Cygwin library has to translate all calls to Unix system functions to native Windows function calls, there is a small performance penalty in comparison to native Windows or Linux/Unix applications. My general impression however is that this does not affect the overall performance as most time seems to be spent inside the database server. You may gain some milliseconds by running the application server on a Linux/Unix box, though.
Of course a major problem is the lack of support for more platforms. RefDB may work on a variety of platforms besides those mentioned above, but unless you tell me so, I'll never know!