Отчёт о состоянии развития FreeBSD за первый квартал 2012 года
14 мая 2012 года
Представлен отчёт о развитии проекта FreeBSD с января по март 2012 года. После выхода 13 января FreeBSD 9.0 в первые месяцы 2012 года основные усилия разработчиков были направлены на подготовку релиза FreeBSD 8.3, который был выпущен в середине апреля и кроме поддержки нового оборудования включал результаты бэкпортирования некоторых возможностей из FreeBSD 9.
Основные достижения:
- Система
- В базовую систему FreeBSD 10.0-CURRENT и 9.0-STABLE по умолчанию установлен распространяемый под лицензией BSD компилятор Clang 3.0. Во FreeBSD 10.0-RELEASE принято решение задействовать Clang в качестве системного компилятора по умолчанию, GCC будет оставлен в качестве опции. В настоящее время, как минимум для FreeBSD 10.0-CURRENT обеспечена полноценная пересборка базовой системы и ядра в конфигурации GENERIC без предупреждений при сборке с опцией "-Werror" (для изменённых конфигураций ядра предупреждения пока могут наблюдаться).
В src.conf добавлена опция WITH_CLANG_IS_CC, при установке которой Clang по умолчанию будет установлен в качестве базового системного компилятора, т.е. заменит собой /usr/bin/cc, /usr/bin/c++ и /usr/bin/cpp. GCC пока остаётся в системе - даже при использовании опции WITHOUT_GCC, gcc будет доступен как /usr/bin/gcc, /usr/bin/g++ и /usr/bin/gcpp. Кроме того, в src.conf добавлена опция WITH_CLANG_EXTRAS, которая позволяет задействовать при сборке несколько дополнительных инструментов, созданных в рамках проектов LLVM и Clang, таких как 'llc' и 'opt'. Подобные утилиты могут оказаться полезными для работы с биткодом LLVM (.bc) и ассемблерными файлами LLVM (.ll).
В настоящее время все усилия разработчиков направлены на обеспечение сборки и запуска всей системы FreeBSD с использованием Clang, в том числе на проверку работы как можно большего числа приложений, включая порты. Пользователи могут существенно помочь в этом начинании, приняв участие в тестировании и сообщая о наблюдаемых проблемах. Что касается сборки портов с использованием Clang, то в это области также отмечается значительный прогресс: многие мэйнтейнеры уже адаптировали свои порты для работы с Clang, налажен процесс автоматической периодической проверки сборки портов с использованием Clang. Тем не менее в портах ещё можно встретить приложения, которые не могут быть собраны с Clang, как правило это очень старые программы, которые часто не собираются и с новыми версиями GCC.
Из планов упоминается работа по импортированию в систему нового снапшота Clang, на базе которого будет сформирован релиз LLVM/Clang 3.1 (релиз ожидается в ближайшие дни). В Clang 3.1 ожидается улучшение поддержки кросс-компиляции, что поможет форсировать процесс обеспечения кросс-компиляции ядра и базовой системы FreeBSD для архитектур ARM и MIPS.
- Продолжается работа по созданию для FreeBSD полноценного С++ стека, целиком распространяемого под лицензией BSD и независящего от кода проекта GNU. Проведено расширенное тестирование и добавлены новые возможности, например, поддержка ARM EABI, в библиотеки: libc++ (реализация элементов, определённых в стандарте C++11) и libcxxrt (реализация спецификации C++ ABI). Использование предварительной версии Clang 3.1 совместно с данными библиотеками демонстрирует полное прохождение тестов на совместимость со стандартом C++11. По умолчанию библиотеки пока не используются, так как библиотека libc++ не совместима с поставляемым в базовой системе gcc и может работать только с clang. Переход на новый C++ стек ожидается во FreeBSD 10, одновременно с задействованием по умолчанию Clang.
Реализация расширенных функций для работы с локалью (xlocale), от которых зависит развиваемая проектом LLVM библиотека libc++, протестирована c множеством портов, изначально написанных для реализации xlocale от проекта Darwin. Выявленные в процессе тестирования ошибки исправлены, код библиотеки планируется выпустить в составе FreeBSD 9.1.
Во FreeBSD-CURRENT сборка libsupc++ теперь осуществлена в виде разделяемой библиотеки, что позволяет упростить замену данной библиотеки на libcxxrt от проекта LLVM. Выбор какие из библиотек использовать, GNU libsupc++ или BSD libcxxrt, осуществляется через изменение настроек в libmap.conf. Если в качестве libstdc++ используется libcxxrt, пользователь имеет возможность связывания с обоими библиотеками, использующими libstdc++ и libc++, что значительно упрощает миграцию.
Из открытых задач остаётся создание замены для некоторых частей libgcc_s и системы динамического связывания, проведение тестирования сборки портов с libc++ (большинство портов без проблем собираются, но остаются такие, которые жестко привязаны к libstdc++ или требуют патчей), переход на сборку и использование libc++ и libcxxrt по умолчанию (когда clang станет компилятором по умолчанию в базовой системе); удаление libstdc++ из базовой системы и помещение в порты для обеспечения обратной совместимости;
- Возобновлена работа над проектом FSC (FreeBSD Services Control), в рамках которого развиваются похожие на Solaris SMF и daemontools инструменты для управления и мониторинга работой системных сервисов. Для контроля за работой сервисов используется фоновый процесс fscd, сервисы добавляются при помощи утилиты fscadm. В случае аварийного завершения работы сервиса, fscd распознает падение процесса и запускает сервис вновь. По сравнению со сторонними пакетами, такими как daemontools, система FSC имеет несколько преимуществ, например fscd использует push-нотификацию вместо поллинга (отправляет уведомления, не требуя периодического опроса состояния). Кроме того, fscd является внутренней подсистемой, легко интегрируемой в rc.d-инфраструктуру FreeBSD и полностью поддерживаемой разработчиками (daemontools является неподконтрольным портом для которого можно лишь поддерживать набор патчей). В настоящее время подготовлена новая версия FSC, поддерживающая большее число опций, добавляющая новый файл конфигурации fscd.conf, поддерживающая отладочный режим и поставляемая с обновлённым rc.d-скриптом для запуска fscd. Обновлён порт со вспомогательными утилитами для FSC;
- Достигла стабильного состояния распространяемая под лицензией BSD утилита sort, написанная с целью замены GNU sort. Отмечается, что производительность BSD sort находится на уровне GNU sort и поддерживаются все возможности присутствующие в GNU sort 5.3.0 (данная версия поставляется во FreeBSD). Кроме того в BSD sort реализован ряд дополнительных возможностей, например, корректно поддерживаются многобайтовые кодировки, в то время как GNU sort 5.3 в этой области испытывает проблемы. Из планов на будущее отмечается интеграция новой утилиты во FreeBSD-HEAD в качестве альтернативы, устанавливаемой под именем bsdsort (после того как будет ясно, что всё работает как задумано, утилита GNU sort будет удалена, а bsdsort переименована в sort). Также планируется интеграция в BSD sort поддержки многопоточной сортировки и реализация некоторых возможностей, которые присутствуют в последней версии GNU sort 8.15;
- Ведётся
Источники править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.