Да. Весь код plist является частью CoreFoundation, которая является открытым исходным кодом. CoreFoundation может быть непосредственно собран и запущен в Linux и Windows, поэтому вы можете написать инструмент CF с использованием обычных API, которые вы использовали бы в Mac OS X, но собрать и запустить его на других платформах.
Конкретный API, на который вы хотите посмотреть, это CFPropertyListWriteToStream () . Код для CoreFoundation доступен от Apple ( tarball ), среди других мест.
Наконец, в зависимости от того, как часто вы обновляете файл, сколько процессоров вам нужно сэкономить на сервере и сколько повторений в ваших данных, может остаться одно существенное улучшение, которое вы можете сделать. По умолчанию некоторые элементы в бинарных списках являются незаполненными (например, строки). Других элементов нет (таких как массивы и словари). Бинарный формат plist позволяет им быть уникальными, проблема в том, что обходить и обходиться уникальными массивами и словарями дорого. Если в вашем контенте много идентичных массивов или кодов, вы можете заметить значительное уменьшение их размера. Вы можете включить это, взломав _flattenPlist () в CFBinaryPlist.c .
Если вы сделаете это, убедитесь, что вы проверили его очень тщательно, и не делали никаких файлов, которые вы не можете обновить по сети, на случай, если в будущем выпуске произойдут какие-либо оптимизации, которые сломают это. Кроме того, убедитесь, что вы готовы отключить его в любой момент.