You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Support for the WINE REGISTRY Version 2 format. This includes Wine's global options (e.g., #arch=win32), key-level options (e.g., #link), and string values written as "name"=str:"data".
Support for addenda after key names (e.g., [foo] 123). Regedit ignores this, but Wine uses it to store the modified time.
error::Deserialize::Unparsable, Registry::format, Format::raw, and KeyName::raw,
Fixed:
Extra backslashes in key paths are now ignored and normalized.
Quotes and semicolons in key names no longer corrupt the deserialization.
Empty string values are now preserved when deserializing.
Parsing performance would degrade as the size of the input increased. On each key/value insert, the library would iterate through all keys/values found so far to check for a potential case-insensitive match. Now, the library caches the case-normalized form on insert, so that later lookups are O(1).
Changed:
Parsing is now much faster due to moving away from regular expressions. In release mode, the library can parse a 520 MB full registry export in 5 seconds, which would have taken 20 seconds previously (even with the key lookup fix mentioned above).
Key is now a struct instead of an enum.
Values serialized as hexadecimal bytes (e.g., Kind::Binary) are now split onto multiple lines when they're long enough.
Renamed Registry::update to Registry::insert, Key::update to Key::insert, and added underscores to the Format string constants.
Removed:
Registry::keys_mut because it would interfere with the case-normalized lookup optimizations.
Dependency on once_cell, using std::sync::LazyLock instead.