Documentation for a newer release is available. View Latest

Изменения в Fedora 41 для разработчиков

Python 3.13

Fedora 41 предоставляет Python 3.13 — последний крупный выпуск языка Python. Список изменений в этом выпуске см. в документации вышестоящего проекта, особенно в разделе Портирование на Python 3.13.

Кроме того, Python теперь собирается с флагом компилятора -03 в Fedora, что соответствует подходу вышестоящего проекта и обеспечивает заметное улучшение производительности (например, среднегеометрическое значение pyperformance становится быстрее в 1,04 раза). Это влияет только на интерпретатор и стандартную библиотеку Python, но не на сторонние модули расширения, собранные как RPM или в системах разработчиков.

Примечания по миграции пакетов pip, установленных пользователем

При обновлении с Fedora 40 до Fedora 41 основная версия интерпретатора Python изменяется с 3.12 на 3.13. Если у вас установлены какие-либо пакеты Python с помощью pip, необходимо выполнить следующую процедуру для их миграции на новую версию:

  1. Установите предыдущую основную версию Python:

    sudo dnf install python3.12
  2. Получите pip для предыдущей основной версии Python:

    python3.12 -m ensurepip --user
  3. Посмотрите установленные пакеты:

    python3.12 -m pip list
  4. Сохраните список с конкретными версиями:

    python3.12 -m pip freeze > installed.txt
  5. Установите те же пакеты для текущей версии по умолчанию:

    python3 -m pip install --user -r installed.txt
  6. Удалите пакеты, установленные пользователем для 3.12; это обеспечивает корректное удаление файлов в ~/.local/bin:

    python3.12 -m pip uninstall $(python3.12 -m pip list --user --format freeze | cut -d= -f1)
  7. При необходимости очистите теперь пустую структуру каталогов:

    rm -rf ~/.local/lib/python3.12/
  8. При необходимости удалите ненужную версию Python:

    sudo dnf remove python3.12

Кроме того, если у вас есть пакеты pip, установленные с помощью sudo, выполните следующие команды перед выполнением последнего шага выше, который удаляет `python3.12`, или временно установите его снова:

  1. Получите pip для предыдущей основной версии Python для root:

    sudo python3.12 -m ensurepip
  2. Посмотрите системные установленные пакеты:

    sudo python3.12 -m pip list
  3. Удалите установленные пакеты для 3.12; это обеспечивает корректное удаление файлов в /usr/local/bin:

    sudo python3.12 -m pip uninstall $(python3.12 -m pip list | cut -d" " -f1)
  4. При необходимости очистите теперь пустую структуру каталогов:

    sudo rm -rf /usr/local/lib*/python3.12/

Если вы следовали первой процедуре, пакеты уже установлены для вашей учётной записи, что является предпочтительным вариантом. Избегайте использования sudo pip в будущем; эти инструкции предназначены только для восстановления пользователей, которые уже использовали sudo pip в прошлом.

Pytest 8

Pytest — это фреймворк для тестирования проектов на Python. С помощью Pytest вы можете писать простые и масштабируемые тестовые сценарии для своего кода. Теперь доступен Pytest 8, который удаляет множество устаревших функций и вносит некоторые критические изменения. Примечательные обновления включают:

  • Улучшенные различия, которые pytest выводит при сбое проверки.

  • Внутренний метод FixtureManager.getfixtureclosure был изменён. Плагины, использующие этот метод или создающие подкласс компонента FixtureManager и переопределяющие FixtureManager.getfixtureclosure, потребуют адаптации.

  • Внутренне теперь используются обёртки хуков new-style.

  • Улучшена обработка параметра по умолчанию при определении параметров конфигурации.

  • Некоторые пакеты, вероятно, не соберутся.

Для получения более подробной информации см. примечания к выпуску вышестоящего проекта.

PyTorch 2.4

Fedora 41 предоставляет PyTorch версии 2.4 — последнюю версию вышестоящего проекта этой популярной библиотеки Python для глубокого обучения с использованием CPU и GPU.

Для получения дополнительной информации см. объявление о выпуске вышестоящего проекта и примечания к выпуску.

ROCm 6.2

ROCm 6.2 — это последняя итерация вычислительных библиотек AMD, которые работают с ядром Linux, позволяя пользователям выполнять вычислительные задачи на своих GPU. Включена поддержка максимально возможного числа GPU, чтобы открытое ускорение было доступно и просто для максимально широкой аудитории. Он также интегрирован с PyTorch в Fedora 41. Подробности см. в примечаниях к выпуску вышестоящего проекта.

Python 2 выведен из эксплуатации

Пакет python2.7 был выведен из эксплуатации без замены в Fedora Linux 41. В Fedora 41 и более поздних версиях не будет Python 2, кроме PyPy. Пакеты, требующие python2.7 во время выполнения или сборки, должны быть обновлены для использования Python 3 или также будут выведены из эксплуатации.

Golang 1.23

Последний стабильный выпуск этого языка программирования теперь доступен в Fedora 41. Примечательные изменения включают:

  • Предложение range в цикле for-range принимает функции-итераторы в качестве выражений диапазона. Поддерживаемые типы функций-итераторов:

    • func(func() bool)

    • func(func(K) bool)

    • func(func(K, V) bool)

    Вызовы функции-аргумента итератора создают значения итерации для цикла for-range.

  • Цепочка инструментов Go может собирать статистику использования и сбоев. Это называется «телеметрией Go» и представляет собой систему с согласием, управляемую командой go telemetry.

  • Переменная среды GOROOT_FINAL больше не работает. Создайте символическую ссылку вместо перемещения или копирования двоичного файла go, если ваш дистрибутив устанавливает команду go в расположение, отличное от $GOROOT/bin/go.

  • Сообщение трассировки, выводимое средой выполнения после фатальной ошибки, теперь добавляет отступ в виде одной табуляции ко второй и последующим строкам сообщения.

  • Значительные изменения в реализации типов time.Timer и time.Ticker.

Для получения более подробной информации см. примечания к выпуску вышестоящего проекта.

Perl 5.40

Последний стабильный выпуск этого языка программирования теперь доступен в Fedora 41. Примечательные изменения включают:

  • Новое ключевое слово CLASS

  • Атрибут :reader для переменных полей. Он запрашивает автоматическое создание метода доступа, который возвращает значение переменной поля из данного экземпляра.

  • При обработке параметров командной строки Perl допускает пробел между ключом -M и именем модуля после него.

  • Функции inf и nan (экспериментальные) добавлены в пространство имён builtin. Они действуют как константы, возвращающие соответственно бесконечность с плавающей запятой и значение «не число».

  • Вызов метода import неизвестного пакета вызывает предупреждение.

  • Синтаксис оператора return теперь отклоняет косвенные объекты.

  • Использование goto для перехода из внешней области видимости во внутреннюю объявлено устаревшим и будет полностью удалено в Perl 5.42.

Для получения более подробной информации см. примечания к выпуску вышестоящего проекта.

NodeJS 22.0

Fedora 41 теперь поставляется с Node.js 22.x в качестве движка JavaScript на стороне сервера по умолчанию. Если ваши приложения ещё не готовы к этой новой версии, их необходимо изменить, чтобы они зависели от пакета совместимости nodejs20 и использовали /usr/bin/node20 вместо /usr/bin/node для работы.

Haskell GHC 9.6 и Stackage LTS 22

Для Fedora 41 основной пакет компилятора Haskell GHC был обновлён с версии 9.4.5 до последнего стабильного выпуска 9.6.6 (перебазирование пакета ghc из пакета ghc9.6). Вместе с этим пакеты Haskell в Stackage (стабильный дистрибутив исходных пакетов Haskell) обновлены с версий в LTS 21 до последнего выпуска LTS 22. Пакеты Haskell, отсутствующие в Stackage, обновлены до последней подходящей версии в репозитории пакетов Hackage вышестоящего проекта.

Обновление инструментария GNU

Инструментарий GNU в Fedora 41 обновлён до:

  • Компилятор GNU C (gcc) 14.1+

  • Двоичные утилиты GNU (binutils) 2.42+

  • Библиотека GNU C (glibc) 2.40

  • Отладчик GNU (gdb) 14+

См. также примечания к выпуску вышестоящих проектов для GCC, Binutils, GLibC NEWS и GDB NEWS.

LLVM 19

Подпроекты LLVM в Fedora обновлены до версии 19.

Добавлены пакеты совместимости clang18, llvm18, lld18, compiler-rt18 и libomp18, чтобы обеспечить продолжение работы пакетов, которые в настоящее время зависят от библиотек clang и llvm версии 18. Предыдущие пакеты совместимости, присутствовавшие в Fedora 40, такие как llvm17, clang17 и другие, выведены из эксплуатации.

Дополнительную информацию об этом выпуске см. в примечаниях к выпуску LLVM 19.