Введение
Интерфейс программирования приложений на языке C в Mac OS X
Core Foundation (также называемый CF) — это интерфейс программирования приложений на языке C (API), разработанный Apple Inc. для своих операционных систем, представляющий собой сочетание низкоуровневых процедур и функций-обёрток. Большинство процедур Core Foundation следуют определённой конвенции именования, связанной с непрозрачными объектами, например, CFDictionaryRef для функций, имена которых начинаются с CFDictionary, и эти объекты часто используют подсчёт ссылок (вручную) через CFRetain и CFRelease. Внутри Core Foundation формирует основу типов в стандартной библиотеке Objective-C и API Carbon. Наиболее часто Core Foundation используется для передачи собственных примитивных типов данных, включая необработанные байты, строки Unicode, числа, календарные даты и UUID, а также коллекций, таких как массивы, множества и словари, в многочисленные процедуры macOS на языке C, в основном те, которые связаны с графическим интерфейсом пользователя. На уровне операционной системы Core Foundation также обеспечивает стандартизированное управление настройками приложений через CFPropertyList, обработку пакетов, циклы событий, межпроцессное взаимодействие через CFMachPort и CFNotificationCenter, а также базовый диалог сообщений графического интерфейса пользователя через CFUserNotification. Другие части API включают в себя служебные процедуры и обёртки вокруг существующих API для удобства использования. Служебные процедуры выполняют такие действия, как ввод-вывод файловой системы и сети через CFReadStream, CFWriteStream и CFURL, а также преобразование порядка байтов (утилиты порядка байтов). Некоторые примеры обёрточных процедур включают в себя обёртки Core Foundation для Unix-сокетов, API CFSocket. Некоторые типы в Core Foundation «свободно сопоставимы» или взаимозаменяемы с помощью простого приведения с соответствующими типами Foundation Kit. Например, можно создать тип CFDictionaryRef в Core Foundation, а затем просто использовать стандартное приведение в C для преобразования его в аналог Objective-C, NSDictionary *, и затем использовать нужные методы Objective-C для этого объекта, как обычно. Core Foundation имеет модель плагинов, основанную на Microsoft Component Object Model.
Доступность открытого исходного кода
Apple ранее выпускала большую часть Core Foundation как проект с открытым исходным кодом под названием CFLite, который можно использовать для разработки кроссплатформенных приложений для macOS, Linux и Windows. Сторонний проект с открытым исходным кодом OpenCFLite расширяет Apple CFLite для работы в 32-битных средах Windows и Linux. Он поддерживается одним из разработчиков WebKit, но его разработка была приостановлена к 2015 году. Платформа для караоке KJams поддерживает ответвление с 2017 года. Эта версия, разработанная программистом Дэвидом М. Коттером, поддерживает 64-битные системы и включает реализацию CFNetwork с TLS на основе LibreSSL. В 2021 году Грант Эриксон (первоначальный соавтор Брента Фулгема в версии SourceForge) создал ответвление OpenCFLite с сопутствующим портом части CFHost из CFNetwork под названием OpenCFNetwork. Swift Corelib Foundation, резервная версия Foundation Kit для языка программирования Swift для не-Apple платформ, содержит почти полную версию Core Foundation, выпущенную под лицензией Apache 2.0. GNUstep включает в себя версию Core Foundation под названием "libs corebase".