Изменения в 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, необходимо выполнить следующую процедуру для их миграции на новую версию:
-
Установите предыдущую основную версию Python:
sudo dnf install python3.12 -
Получите
pipдля предыдущей основной версии Python:python3.12 -m ensurepip --user -
Посмотрите установленные пакеты:
python3.12 -m pip list
-
Сохраните список с конкретными версиями:
python3.12 -m pip freeze > installed.txt -
Установите те же пакеты для текущей версии по умолчанию:
python3 -m pip install --user -r installed.txt -
Удалите пакеты, установленные пользователем для 3.12; это обеспечивает корректное удаление файлов в
~/.local/bin:python3.12 -m pip uninstall $(python3.12 -m pip list --user --format freeze | cut -d= -f1) -
При необходимости очистите теперь пустую структуру каталогов:
rm -rf ~/.local/lib/python3.12/ -
При необходимости удалите ненужную версию Python:
sudo dnf remove python3.12
Кроме того, если у вас есть пакеты pip, установленные с помощью sudo, выполните следующие команды перед выполнением последнего шага выше, который удаляет `python3.12`, или временно установите его снова:
-
Получите
pipдля предыдущей основной версии Python дляroot:sudo python3.12 -m ensurepip -
Посмотрите системные установленные пакеты:
sudo python3.12 -m pip list -
Удалите установленные пакеты для 3.12; это обеспечивает корректное удаление файлов в
/usr/local/bin:sudo python3.12 -m pip uninstall $(python3.12 -m pip list | cut -d" " -f1) -
При необходимости очистите теперь пустую структуру каталогов:
sudo rm -rf /usr/local/lib*/python3.12/
|
Если вы следовали первой процедуре, пакеты уже установлены для вашей учётной записи, что является предпочтительным вариантом. Избегайте использования |
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.
Want to help? Learn how to contribute to Fedora Docs ›