Основные новшества
Система
— Проведена (http://svnweb.freebsd.org/base?view=revision&revision=233599) оптимизация работы планировщика задач sched_ule для более эффективной балансировки на процессорах, поддерживающих технологию одновременной многопоточности (http://ru.wikipedia.org/wiki/Simultaneous_multithreading) (SMT, Simultaneous MultiThreading), например, Intel Core i7. В ситуации, когда число число нитей меньше числа логических CPU внесённые изменения позволили добиться повышения производительности на 10-15%. Позитивный эффект от изменений в планировщике также наблюдается и для систем на базе процессоров без поддержки SMT;
— В libthr, реализации pthread-библиотеки для создания многопоточных приложений, переработан механизм работы с блокировками, что позволило добиться заметного повышения производительности. В некоторых ситуациях, производительность многопоточных приложений возросла до 10 раз;
— В утилиту boot0cfg (http://www.freebsd.org/cgi/man.cgi?query=boot0cfg&sektion=8&…) добавлена возможность инициирования через boot0 загрузки по умолчанию с использованием PXE. Для активации PXE-загрузки следует использовать в качестве аргумента опции «-s» номер слайса 6 или ключевое слово PXE;
— Произведена интеграция наработок проекта по созданию для FreeBSD полноценного С++ стека, целиком распространяемого под лицензией BSD и независящего от кода проекта GNU. В состав включены библиотеки libc++ (http://libcxx.llvm.org/) (реализация элементов, определённых в стандарте C++11) и libcxxrt (https://github.com/pathscale/libcxxrt ссылка недоступна/) (реализация спецификации C++ ABI), развиваемые проектом LLVM и компанией PathScale в качестве альтернативы используемой в GCC библиотеке GNU libsupc++. Использование Clang 3.1 (http://www.opennet.ru/opennews/art.shtml?num=33915) совместно с данными библиотеками демонстрирует полное прохождение тестов на совместимость со стандартом C++11 (в ветку FreeBSD-HEAD на днях интегрирован (http://lists.freebsd.org/pipermail/freebsd-current/2012-Dece…) clang 3.2). Библиотека libc++ обеспечивает минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти. По умолчанию библиотеки пока не используются, так как библиотека libc++ не совместима с поставляемым в базовой системе gcc и может работать только с clang. Переход на новый C++ стек будет осуществлён в ветке FreeBSD 10, одновременно с задействованием по умолчанию Clang;
— В системной библиотеке обеспечена поддержка xlocale API (http://www.freebsd.org/cgi/man.cgi?query=xlocale&sektion=3&m…), позволяющий устанавливать свою локаль для отдельных потоков. Код был поритирован из проекта Apple Darwin и позволил задействовать библиотеку libc++ от проекта LLVM, которая изначально была создана для Darwin и поэтому завязана на расширенные функции для работы с локалью (xlocale);