Разрешение зависимостей предложили считать задачей для решателя, а не перебором. SMTpip переводит ограничения пакетов и
Что получилось на замерах авторов:
🔘 в среднем по всем наборам ускорение в 6,9 раза против
🔘 на наборе HG2.9K те же 1668 случаев: 433,68 секунды против 2165,20 у
🔘 доля проектов, которые после установки реально запустились: 87,1% против 75,4% у
Оговорки авторы приводят сами. Это препринт первой версии; время меряли только для разрешения зависимостей, без скачивания и установки пакетов; из конкурентов брали классический solver Conda, libmamba оставили за рамками. Успешный запуск здесь означает, что программа стартовала, а не что она работает правильно.
@zen_of_python
Requires-Python в формулу и отдаёт её weighted Max-SMT, который за один заход выбирает и версии библиотек, и версию интерпретатора. pip вместо этого перебирает кандидатов с откатами.Что получилось на замерах авторов:
pip, в 9,6 против классического решателя Conda, в 3,2 против smartPip и в 4 против PyEGo;pip, ускорение в 4,9 раза;pip, а на 3081 ноутбуке 39,92% против 20%.Оговорки авторы приводят сами. Это препринт первой версии; время меряли только для разрешения зависимостей, без скачивания и установки пакетов; из конкурентов брали классический solver Conda, libmamba оставили за рамками. Успешный запуск здесь означает, что программа стартовала, а не что она работает правильно.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Почему str.lower() иногда ломает проверку имён доменов
Регистр символа в Python зависит от версии Unicode интерпретатора. Сейчас
Поэтому
В контексте безопасности не зовите
Seth Larson разбирает уязвимость и показывает, как это выглядит на практике.
Регистр символа в Python зависит от версии Unicode интерпретатора. Сейчас
unicodedata.unidata_version — 17.0.0, а протокол подготовки строк stringprep, который лежит в основе международных доменных имён, зафиксирован на Unicode 3.2.Поэтому
str.lower() и str.encode('idna') в разных версиях Python могут считать разные строки одинаковыми. В обычном коде это проходит незамеченным, а в проверке доменов или авторизации получается обход валидации.В контексте безопасности не зовите
str.lower() напрямую. Берите пакет idna: он реализует стандарт IDNA 2008 и не использует встроенные таблицы Unicode.Seth Larson разбирает уязвимость и показывает, как это выглядит на практике.
✍4
Django переходит на один релиз в год. Steering Council принял DEP 20: с января 2028-го выходит один feature-релиз в год, версии называются по году — Django 2028, Django 2029.
🔘 каждый релиз получает три года поддержки: год обычных исправлений и два года security и data-loss fixes; отдельная метка LTS уходит, потому что каждая версия теперь LTS;
🔘 версия поддерживает три последних Python на момент выхода и подхватывает новый Python в первый год; поддержка Django заканчивается вместе с самым старым из них;
🔘 в любой момент поддерживаются три версии, и обновляться можно по одной в год без прыжка через два года изменений;
🔘 политика депрекаций не меняется, в календарных днях сроки только удлиняются.
Переход: Django 6.1 вышел в августе, 6.2 LTS выйдет в апреле 2027-го, Django 2028 — в январе 2028-го. Обязательства по 5.2 LTS и 6.2 LTS остаются как объявлены.
@zen_of_python
Переход: Django 6.1 вышел в августе, 6.2 LTS выйдет в апреле 2027-го, Django 2028 — в январе 2028-го. Обязательства по 5.2 LTS и 6.2 LTS остаются как объявлены.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🌭1