From time to time someone posts on the list suggesting that Wine move away from the flat-text-file registries to some other format: BDB, XML, native Windows, ReactOS's format... AlexandreJulliard basically says "it ain't broke, so I won't fix it", and no outside code has been produced. Wine's registry is actually on its second version, and wine has supported reading native Windows registry files as well.
When the Wine server starts, it reads and parses $WINEPREFIX/user.reg, $WINEPREFIX/userdef.reg and $WINEPREFIX/system.reg. It builds in-memory data structures, which might get paged back out to disk if not used, and writes the registry out again when all programs quit.
XML wouldn't be any improvement from an overhead standpoint, and would make really basic Wine functionality dependent on proper XML parsing.
Is the ReactOS format documented on the Web somewhere?
There are a number of DBM libraries out there: ndbm, gdbm, ... and Perl has one too. There shouldn't be too many problems with locking, concurrency, etc., if registry access is kept in wineserver. Probably the biggest problem is allaying concerns about the license of whatever database is selected.
At WineConf2005 Andrew Tridgell mentioned a TDB database-engine that had been useful in SAMBA code. This might be useful for the Wine registry.
