data types. The new typed entries have the form , where T is a one-letter type code. For example, an NSValue of boolean YES is represented as and NSDate objects are represented as <*DYYYY-MM-DD HH:MM:SS +ZZZZ>. Binary data can also use the more efficient base64 format as . The 8-bit problem is implicitly solved as well, as most deployments use UTF-8. All in all, brings the expressiveness and compactness of the human-readable textual format on par with Apple's XML format. GNUstep also has its own binary format, , implemented in . This format is defined recursively like the textual formats, with a single-byte type marker preceding some data. A form of string interning is supported via a GS-extension switch. Two relative independent plist handlers are found in GNUstep: the in (CoreFoundation), and the in (Foundation Kit). Both support the binary and XML forms used by macOS to some degree, but the latter is a lot more complete. For example, the two GNUstep-specific formats are only handled in the latter. GNUstep provides a set of plist command-line tools based on , including a version of and . macOS While macOS can also read the NeXTSTEP format, Apple sets it aside in favor of two new formats of its own, one XML-based and the other binary. Apple also has a partially-compatible JSON format (). History In Mac OS X 10.0, the NeXTSTEP format was deprecated, and a new XML format was introduced, with a public DTD defined by Apple. The XML format supports non-ASCII characters and storing NSValue objects (which, unlike GNUstep's ASCII property list format, Apple's ASCII property list format does not support). Since XML files, however, are not the most space-efficient means of storage, Mac OS X 10.2 introduced a new format where property list files are stored as binary files. Starting with Mac OS X 10.4, this is the default format for preference files. In Mac OS X 10.7, support for reading and writing files in JSON format was introduced. JSON and property lists are not fully compatible with each other, though. For example, property lists have native date and data types, which the JSON format does not support. Conversely, JSON permits null values while property lists do not support explicit nulls. Tooling The old tool from NeXTSTEP remains available. The command provides an interactive plist editor. It can also be scripted. The utility (introduced in Mac OS X