GNUstep Objective-C Runtime 1.6

Автор Zhek@Ch, 27 Ноября 2011, 00:45

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Zhek@Ch

Представлен выпуск свободной библиотеки GNUstep Objective-C Runtime 1.6 (libobjc2), в которой реализовано подмножество функциональности runtime-компонентов, используемых в Mac OS X 10.7 и iOS 5. Библиотека позволяет разработчикам ПО использовать данные компоненты в своих проектах на языках Objective-C и Objective-C++ на любых свободных платформах.

Из аппаратных архитектур поддерживаются ARM, x86 и x86-64, поддержку других архитектур планируется реализовать в будущих выпусках. Библиотека полностью обратно совместима с GCC 4.2.1 Objective-C ABI, а также поддерживает расширенный ABI, используемый в таких проектах, как Clang и Etoile LanguageKit. Кроме Apple Objective-C Runtime API, библиотека также поддерживает часть GCC API с целью обеспечения совместимости со старыми приложениями.

Некоторые особенности GNUstep Objective-C Runtime 1.6:

  • Совместимость с новым runtime API, представленным в Mac OS X 10.7 и iOS 5;
  • Поддержка маленьких объектов (Small Objects). На 32-разрядных системах runtime допускает один small object класс, на 64-разрядных - 4;
  • Поддержка ориентации объектов в prototype-стиле (объектная модель JavaScript). Можно добавлять методы и связанные ссылки к отдельным объектам и клонировать их;
  • Поддержка совместимых с продуктами Apple функций objc_msgSend() для платформ x86, x86-64 и ARM. Использование данных функций примерно в два раза сокращает затраты ресурсов на отправку сообщений, что в результате приводит к уменьшению размера бинарных данных на 10%;
  • Обеспечение использования соответствующих POSIX файлов сборки Makefile;
  • Улучшение производительности, благодаря задействования дополнительных оптимизаций LLVM. Тестирование на системе с CPU Xeon 2.8GHz цикла из 200 млн классов на отправку сообщений было потрачено 0.8 секунды при включении всех оптимизаций, при использовании только опции "-Os" на выполнение теста ушло 2 сек., при включении явного кэширования IMP в коде - 1.2 сек. Для сравнения тот же тест при использовании GCC Objective-C runtime выполняется за 11 секунд при сборке с Clang/LLVM или GCC.