Отчёт о состоянии развития 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;
  • Ведётся

Источники править

 
 
Creative Commons
Эта статья содержит материалы из статьи «Отчёт о состоянии развития FreeBSD за первый квартал 2012 года», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.