In the macOS, iOS, NeXTSTEP, and GNUstep programming frameworks, property list files are files that store serialized objects. Property list files use the filename extension .plist, and thus are often referred to as p-list files. Property list files are often used to store a user's settings. They are also used to store information about bundles and applications, a task served by the resource fork in the old Mac OS. Property lists are also used for localization strings for development. These files use the .strings or .stringsdict extensions. The former is a "reduced" old-style plist containing only one dictionary without the braces (see ), while the latter is a fully-fledged plist. Xcode also uses a .pbxproj extension for old-style plists used as project files. Representations Since the data represented by property lists is somewhat abstract, the underlying file format can be implemented many ways. Namely, NeXTSTEP used one format to represent a property list, and the subsequent GNUstep and macOS frameworks introduced differing formats. NeXTSTEP Under NeXTSTEP, property lists were designed to be human-readable and edited by hand, serialized to ASCII in a syntax somewhat like a programming language. This same format was used by OPENSTEP. Strings are represented in C literal style: ; simpler, unquoted strings are allowed as long as they consist of alphanumericals and one of . Binary data are represented as: < [hexadecimal codes in ASCII] >. Spaces and comments between paired hex-codes are ignored. Arrays are represented as: . Trailing commas are tolerated. Dictionaries are represented as: . The left-hand side must be a string, but it can be unquoted. Comments are allowed as: and . As in C, whitespace are generally insignificant to syntax. Value statements terminate by a semicolon. One limitation of the original NeXT property list format is that it could not represent an NSValue (number, boolean, etc.) object. As a result, these values would have to be converted to string, and "fuzzily" recovered by the application. Another limitation is that there is no official 8-bit encoding defined. The defaults utility, introduced in OPENSTEP (1996), can be used to manipulate plist files used for storage of preferences (known as defaults in NeXTSTEP, hence the name) on the command line via their preferences domain, and this utility can be used to edit arbitrary plist files. This utility superseded three older commands. GNUstep GNUstep adopts the NeXTSTEP format, with additions for representing NSValue and NSDate