Cocotron, свежие новости с фронта Objective-C
Cocotron — это реализация runtime для Objective-C, похожего на рантайм Apple — Cocoa. Он достаточно сильно отличается от другого популярного открытого рантайма — GNUstep, как в целях, так и в реализации.
Cocotron отлично подходит для портирования кода с платформы OSX на Win32. Конечно реализация API далека до идеала, но, как показывает практика, разработчики всегда быстро решают проблемы.
Изначально Cocotron использовался только при кросс-сборке на базе XCode и mingw-toolchain. При кросс-сборке доступно развертывание на Windows, Linux и Solaris.
Конечно такой подход оставлял в цепочке разработки самый сложный и дорогой этап — OSX (оптимально — на оригинальном железе). Возможность Cocotron, как платформы, не могла быть полностью раскрыта из-за этой зависимости.
Cocotron не может работать с оригинальным GCC, где используется другой runtime Objective-C. По этой причине GCC необходимо собрать с патчами Apple, которые, помимо всего прочего, немного расширяют язык от того, что есть в vanilla GCC.
Процесс установки GCC вполне традиционен, для начала необходимо скачать дерево исходных кодов:
и потом скомпилировать его:
здесь я испльзую префикс /opt/objc для GCC и Cocotron.
Как вариант — можно использовать собранный deb пакет, который любезно предоставил новоприбывший хабровчанин pfactum.
Теперь можно перейти к конкретно сборке Cocotron. На данный момент нативная сборка поддерживается для Linux, OpenBSD (и, вероятно, FreeBSD) и Darwin (т.е. OSX). Для сборки необходимо забрать форк официального дерева с github:
(кстати ветка master автоматически синхронизируется с официальным svn, так что если кто-то хочет «поковырять» исходники и предпочитает git — милости прошу).
Система сборки основана на CMake, причем не моложе 2.6:
пока что она собирает только Foundation, работа над скриптами сборки AppKit в процессе.
Собранную библиотеку можно протестировать:
Я надеюсь, что развитие Cocotron привлечет к нему новых разработчиков и повысит популярность Objective-C, очень интересного языка программирования.
Cocotron отлично подходит для портирования кода с платформы OSX на Win32. Конечно реализация API далека до идеала, но, как показывает практика, разработчики всегда быстро решают проблемы.
Изначально Cocotron использовался только при кросс-сборке на базе XCode и mingw-toolchain. При кросс-сборке доступно развертывание на Windows, Linux и Solaris.
Конечно такой подход оставлял в цепочке разработки самый сложный и дорогой этап — OSX (оптимально — на оригинальном железе). Возможность Cocotron, как платформы, не могла быть полностью раскрыта из-за этой зависимости.
Cocotron не может работать с оригинальным GCC, где используется другой runtime Objective-C. По этой причине GCC необходимо собрать с патчами Apple, которые, помимо всего прочего, немного расширяют язык от того, что есть в vanilla GCC.
Процесс установки GCC вполне традиционен, для начала необходимо скачать дерево исходных кодов:
svn checkout http://cocotron-tools-gpl3.googlecode.com/svn/trunk/gcc cocotron-gcc
и потом скомпилировать его:
mkdir gcc-build cd gcc-build ../cocotron-gcc/configure --prefix=/opt/objc --with-gnu-as --with-gnu-ld --without-newlib --disable-multilib \ --disable-libssp --disable-nls --disable-libobjc --enable-libffi --enable-objc-gc \ --enable-languages=c,objc,c++,obj-c++ --enable-checking=release make -j2 sudo make install
здесь я испльзую префикс /opt/objc для GCC и Cocotron.
Как вариант — можно использовать собранный deb пакет, который любезно предоставил новоприбывший хабровчанин pfactum.
Теперь можно перейти к конкретно сборке Cocotron. На данный момент нативная сборка поддерживается для Linux, OpenBSD (и, вероятно, FreeBSD) и Darwin (т.е. OSX). Для сборки необходимо забрать форк официального дерева с github:
git clone git://github.com/farcaller/cocotron.git cd cocotron git checkout origin/native-build -b native-build
(кстати ветка master автоматически синхронизируется с официальным svn, так что если кто-то хочет «поковырять» исходники и предпочитает git — милости прошу).
Система сборки основана на CMake, причем не моложе 2.6:
mkdir build cd build cmake -DCMAKE_C_COMPILER=/opt/objc/bin/gcc \ -DCMAKE_CXX_COMPILER=/opt/objc/bin/g++ \ -DCMAKE_INSTALL_PREFIX=/opt/objc .. make sudo make install
пока что она собирает только Foundation, работа над скриптами сборки AppKit в процессе.
Собранную библиотеку можно протестировать:
cat > test.m <<EOF #import <Foundation/Foundation.h> int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Hello, Objective-C World!"); [pool drain]; return 0; } EOF
/opt/objc/bin/gcc test.m -o test -I/opt/objc/include -L/opt/objc/lib \ -lFoundation -lpthread -ldl
Я надеюсь, что развитие Cocotron привлечет к нему новых разработчиков и повысит популярность Objective-C, очень интересного языка программирования.