GSOC:
В рамках Google Summer of Code для FreeBSD студентами было выполнено 18 проектов, из которых можно отметить:
- Создание распространяемой под лицензией BSD библиотеки iconv, основанной на наработках из проекта NetBSD;
- Замена стандартных GNU утилит для обработки текстовых данных на аналоги, распространяемые под лицензией BSD. BSD-вариант утилиты grep доведен до рабочего состояния, но еще требуется проведение оптимизации производительности и реализации недостающий функций в библиотеке для обработки регулярных выражений. С нуля переписана утилита sort. Утилиты bc/dc портированы из OpenBSD;
- Ведется работа по улучшению поддержки файловой системы Ext2fs и переписыванию частей кода, распространяемых под лицензией GPL. Из планов можно отметить оптимизацию Ext2 для многопроцессорных систем и реализацию возможностей Ext4;
- Разработка библиотеки libnetstat с реализацией API для выполнения функций сетевого мониторинга, оперирующих статистикой сокетов, сетевых интерфейсов, mbuf, bpf, данными о маршрутизации и т.п. Для наглядной оценки трафика подготовлена top-подобная утилита nettop;
- Создана шифрованная файловая система pefs, подробности можно почерпнуть из опубликованного на прошлой неделе анонса.
Проекты:
- В рамках проекта BSD# ведется портирование Mono с реализацией технологии .NET. В настоящее время Mono 2.2 помещен в дерево портов (lang/mono). Для организации хостинга ASP.NET приложений подготовлены порты www/xsp и www/mod_mono, язык CLI можно установить из порта lang/boo, Visual Basic .NET Framework для Mono размещен как lang/mono-basic, а среда разработки MonoDevelop представлена как devel/monodevelop;
- Совместно с разработчиками LLVM продолжается адаптация компилятора clang для сборки базовой системы FreeBSD. Разработка ведется в рамках специально выделенной ветки ClangBSD. В настоящий момент успешно собираются и запускаются ядра FreeBSD для архитектур i386 и amd64, а также 99% всех исходных текстов базовой системы. В будущем планируется использовать в качестве системного компилятора Clang, вместо GCC;
- Ведется работа по созданию фреймвора для устройств с мультиплексированием с разделением времени (TDM - Time Division Multiplexing). В настоящий момент обеспечена поддержка голосовых карт на базе Marvell RD-88F6281, Marvell Kirkwood, Discovery SoC, создан SLIC драйвер для Si3215 и DAA драйвер для Si3050. В будущем ожидается интеграция созданных драйверов с пакетом Zaptel/DAHDI;
- Под FreeBSD портирована технология центральной диспетчеризации (GCD - Grand Central Dispatch), исходные тексты которой были открыты компанией Apple в сентябре. GCD позволяет без модификации приложения адаптировать его для многопоточного выполнения на многоядерных системах. В будущем планируется рассмотреть вопрос перевода на libdispatch некоторых стандартных приложений из состава FreeBSD. Сейчас библиотека libdispatch доступна в дереве прртов, но начиная с FreeBSD 8.1-RELEASE будет интегрирована в базовую систему;
- Подготовлена библиотека libprocstat с API для просмотра детальной информации о процессах, включая данные о используемых файловых дескрипторах, нитях, мапинге памяти и т.п. В дальнейшем планируется перевести утилиты подобные lsof, fstat и fuser на работу поверх данной библиотеки;
- Ведется работа над новым отладчиком, распространяемым в рамках лицензии BSD и поддерживающим протокол удаленной отладки GDB. В качестве языка программирования для разработки отладчика используется язык D;
- В дополнение к поддержке POSIX.1e ACL для файловых систем UFS и ZFS в дерево исходных текстов FreeBSD включен код с поддержкой NFSv4 ACL. Изменения затронули утилиты setfacl(1)/getfacl, libc API и ядро. Из нерешенных проблем остается поддержка NFSv4 ACL в BSD tar и решение некоторых проблем с UFS;
- Реализован новый консольный драйвер newcons, с поддержкой многобайтовых кодировок в консоли через ремапинг Unicode символов в представление стандартных VGA шрифтов.
- В дерево портов (emulators/virtualbo) добавлена система виртуализации VirtualBox, обеспечивающая возможность использования FreeBSD в качестве хост-системы для запуска гостевых ОС. В настоящий момент реализована поддержка механизма аппаратной виртуализации VT-x, поддержка сетевого бриджинга, ACPI, доступа к DVD/CD, поддержка SMP и т.д.
- Ведется работа по усовершенствованию TCP/IP стека FreeBSD. В частности, во FreeBSD 8.0 будет добавлена реализация поддержки RFC 3465 (Appropriate Byte Counting). Продолжается работа по интеграции SIFTR утилиты для анализа трафика и улучшению работы кода пересборки TCP-пакетов.
- Возможность подключения через плагины различных алгоритмов для контроля перегрузки (Congestion Control) в TCP. Реализован модуль с поддержкой алгоритма CUBIC в дополнение к ранее созданным NewReno и H-TCP. В ближайшее время код планируют добавить в FreeBSD-CURRENT и бэкпортировать в 8.1-RELEASE;
- Работа по интеграции виртуального сетевого стека (vimage). Введение виртуального сетевого стека позволит значительно расширить сетевую функциональность подсистемы jail. Так, например, появится возможность иметь для каждого jail индивидуальные настройки фаервола, маршрутизации, IPSec и обеспечить возможность их автономного администрирования. Экспериментальный прототип vimage будет включен в релиз 8.0 и достигнет готового для промышленного использования состояния к релизу 8.2;
- Поддержка файловой системы ZFS во FreeBSD объявлена готовой к промышленной эксплуатации. Ведется работа по портированию ZFS версии v19;
- Ведется работа по интеграции поддержки hwpmc (Performance Counter, позволяет задействовать для выявления узких мест, отладки и профилирования специальных "PERFMON" регистров CPU) для архитектуры MIPS;
- Значительный прогресс в развитии FreeBSD/sparc64, добавлена поддержка нового оборудования, исправлены ошибки;
- Число потов достигло 20700. Бинарные пакеты в настоящее время собираются для архитектур amd64-6, amd64-7, amd64-8, i386-6, i386-7, i386-8, sparc64-7 и sparc64-8.
- рамках проекта FreeBSD Gecko создан репозиторий со сборками программ на базе технологий Mozilla. Ведется работа по добавлению в порты Firefox 3.6 (Alpha 2), Thunderbird 3.0 (Beta 4), libxul 1.9.1.3 и Seamonkey 2.0 (Beta 2). Скоро будут удалены устаревшие порты mozilla, xulrunner и firefox2;
- Ищется финансирование для продолжения работы над утилитой для управления портами portmaster;
- В порты FreeBSD добавлена последняя версия (3.5.0) системы для выявления ошибок с распределением памяти Valgrind.