GCC переходит на Git и другие новости.

Наконец-то, GCC начал переход на Git с Subversion! Вот этого реально давно ждали!

Из других новостей - наш коллега, инженер Red Hat, Carlos O'Donell, объявил о выходе Glibc 2.22 (уже перевели на русский). К сожалению, после прочтения анонса складывается впечатление, что после Glibc 2.20, где объявили о слиянии с Eglibc (прощай, Eglibc, нам будет не хватать веселья), народ не очень желает "пиарить" процесс разработки. Непонятно, то ли subversion являлся одной из характерных черт этого закрыто-открытого процесса, но ведь и правда о новостях Glibc / GCC слышно как-то немного. На линукс-сайтах пишут по результатам пресс-релизов, а на пульсе проекта руку никто вроде бы и не держит. А новинок там навалом!

Мы периодически пишем о больших новинках базовых компонентов, например, про offloading в GCC, но нашей энергии хватает лишь на те новости, что прямо или косвенно касаются нас или сделаны нашими коллегами. Этого, конечно, мало. Мы всегда призывали участников других коммьюнити читать не только (микро)блоги, но и GitHub, списки рассылок, баг-трекеры, IRC/XMPP-чаты разработчиков - там самая движуха и "эксклюзивные" новости. Например, навскидку про Glibc / GCC за последние полгода:

  • Идет работа по включению в базовые утилиты поддержки архитектур с не-8битным байтом
  • В GDB появилась поддержка контейнеров
  • В GCC появились unit-тесты
  • Обсуждается инициатива по добавлению в Glibc врапперов для всего API ядра
  • GCC JIT стал в 5 раз быстрее
  • Из malloc в Glibc удаляли атомарные операции
  • Постоянно ведется работа по увеличению соответствия Glibc стандартам (еще вопрос, какие конкурирующие открытые решения могут побить Glibc по количеству реализованных стандартов)
  • В Glibc заметно ускорялись базовые математические примитивы
  • Улучшается ситуация с потокобезопасным кодом в Glibc (мы уже мельком упоминали о проводящейся работе)
  • В GCC 5 реализовано огромное количество оптимизаций времени сборки и линковки


Вообще, несмотря на необходимую осторожность, количество изменений в базовые компоненты не снижается, и в т.ч. в их инфраструктуру. Самым главным улучшением является удобная VCS (т.е. Git) и тестирование. В GCC тесты уже включают, в Glibc с тестированием не все так однозначно (например, почитайте транскрипт выступления нашего коллеги, бывшего инженера Red Hat, Roland McGrath). Одна из проблем тестирования базовых компонентов, таких, как ядро или Libc, это то, что они слишком уж низкоуровневые. Непросто не только написать юнит-тесты, но и тестировать установленную копию. Изолироваться тут не получается, кроме как в виртуальной машине. А там может быть непросто воспроизвести ситуацию, приводящую к ошибке (но, кстати, тем ценнее инструкции по тому, как тестировать с помощью systemtap наживую).

Ну и из изменений в Fedora - наконец-то локали в Glibc будут упакованы отдельно (померяйте размер /usr/lib/locale, если кто-то сомневается, зачем это нужно). Раньше для этого, как вариант, приходилось указывать флаги для rpm где-нибудь в /etc/rpm/macros.locales. Вторая новость, это расставание Fedora с давно устаревшей библиотекой librtkaio.

И наконец, не совсем про базовые компоненты (хотя кому как) - Vim тоже перешел на GitHub (и на Git с Mercurial). Все-таки как хорошо, что Google Code закрывается!

shot0002
Пользователь Mercurial недоволен переходом GCC на Git и отказом Vim от Mercurial