The OpenNET Project / Index page

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

·17.02.2025 Опубликована AI-модель синтеза речи Zonos, поддерживающая клонирование голоса (30 +3)
  Компания Zyphra опубликовала под лицензией Apache 2.0 первый бета-выпуск AI-модели для синтеза речи Zonos. Предлагаемый вместе с моделью инструментарий поддерживает функцию клонирования голоса, позволяющую синтезировать речь желаемым голосом, для воспроизведения которого модели достаточно предоставить 30-секундную эталонную запись речи говорящего. Поддерживается синтез на английском, японском, китайском, французском и немецком языках.

Модель охватывает 1.6 млрд параметров и обучена на 200 тысячах часов аудиозаписей. Поддерживается синтез монотонной (как в аудиокнигах) и эмоциональной речи (как в живом разговоре), а также синтез на основе заданного префикса (приводится аудиозапись с началом речи, на основе которой модель синтезирует продолжение по указанному тексту, воспроизводя исходные характеристики речи, например, продолжая говорить шёпотом).

На выходе генерируется звук с частотой дискретизации 44kHz. Поддерживается подстановка синтезируемых вставок для симуляции выступлений с несколькими говорящими или построения интерактивных диалогов, а также добавление меток для управления скоростью речи, тональностью и выражением эмоций, таких как радость, страх, печаль и гнев.

По заявлению разработчиков, по качеству генерируемой речи модель не уступает или превосходит все публично доступные открытые и коммерческие системы синтеза (в тестах приводится сравнение с ElevenLabs, Cartesia и FishSpeech). Из недостатков отмечается более высокая концентрация звуковых артефактов, таких как кашель, звук дыхания или скрипы, в начале или в конце формируемого звукового материала.

  • Zonos:
  • ElevenLabs:
  • Cartesia:
  • Fish Speech v1.5:

Для использования модели на своей системе подготовлен готовый к работе образ для системы Docker, в состав которого входит web-интерфейс для управления синтезом, основанный на платформе Gradio. Для начала работы достаточно установить образ командой "git clone https://github.com/Zyphra/Zonos.git; cd Zonos; docker compose up" и открыть в браузере страницу "http://localhost:7860". Для работы рекомендуется наличие GPU NVIDIA как минимум серии 3000 с 6 Гб видеопамяти. Производительность работы на системе с GPU RTX 4090 в два раза превышает возможности, необходимые для синтеза в режиме реального времени.

  1. OpenNews: Опубликована AI-модель ChatTTS для синтеза речи
  2. OpenNews: Новый выпуск системы синтеза речи Silero
  3. OpenNews: Выпуск синтезатора речи RHVoice 1.8.0
  4. OpenNews: Компания Mozilla представила систему синтеза речи LPCNet
  5. OpenNews: Открыт код системы распознавания и перевода речи Whisper
Обсуждение (30 +3) | Тип: К сведению |
·16.02.2025 В PostgreSQL устранена уязвимость, использованная при атаке на BeyondTrust (16 +10 )
  Сформированы корректирующие обновления для всех поддерживаемых веток PostgreSQL 17.3, 16.7, 15.11, 14.16 и 13.19, в которых исправлено более 70 ошибок и устранена уязвимость (CVE-2025-1094), в конце декабря задействованная в атаке на компанию BeyondTrust и Министерство финансов США. Проблема в PostgreSQL выявлена при анализе удалённой уязвимости (CVE-2024-12356) в сервисах BeyondTrust PRA (Privileged Remote Access) и BeyondTrust RS (Remote Support), при эксплуатации которой дополнительно была задействована ранее неизвестная (0-day) уязвимость в libpq.

В результате атаки злоумышленникам удалось получить ключ для доступа к API, применяемому для удалённого оказания услуг технической поддержки клиентам SaaS-сервисов BeyondTrust. Данный API был использован для сброса пароля и компрометации инфраструктуры Министерства финансов США, пользующегося продуктами BeyondTrust. В ходе атаки злоумышленники смогли загрузить конфиденциальные документы и получили доступ к рабочим станциям сотрудников министерства.

Уязвимость проявляется в библиотеке libpq, предоставляющей API для взаимодействия с СУБД из программ на языке Си (поверх библиотеки также реализованы библиотеки-обвязки для C++, Perl, PHP и Python). Проблема затрагивает приложения, использующие для экранирования спецсимволов и нейтрализации кавычек функции PQescapeLiteral(), PQescapeIdentifier(), PQescapeString() или PQescapeStringConn().

Атакующий может добиться подстановки своего SQL-кода, если получаемый извне текст перед использованием внутри SQL-запроса экранируется при помощи вышеотмеченных функций libpq. В приложениях BeyondTrust экранированные подобным образом запросы передавались через утилиту командной строки psql. Уязвимость вызвана отсутствием проверки корректности Unicode-символов в функциях экранирования, что позволяет обойти нормализацию кавычек через указание некорректных многобайтовых последовательностей UTF-8.

Для эксплуатации уязвимость можно использовать некорректный UTF-8 символ, состоящий из байт 0xC0 и 0x27 ("└'"). Байт 0x27 в ASCII-кодировке соответствует одинарной кавычке ("'"), подлежащей экранированию. В коде экранирования сочетание байтов 0xC0 и 0x27 обрабатывается как один Unicode-символ. Соответственно, байт 0x27 в такой последовательности остаётся не экранирован, при том, что при обработке SQL-запроса в утилите psql он обрабатывается как кавычка.

При запуске SQL-запросов при помощи утилиты psql для организации выполнения произвольного кода можно использовать подстановку в строку команды "\!", предназначенной в psql для запуска произвольных программ. Например, для запуска на сервере утилиты "id" можно передать значение "hax\xC0'; \! id #". В примере ниже для экранирования вызывается PHP-скрипт dbquote, использующий PHP-функцию pg_escape_string, работающую поверх функции PQescapeString из libpq:


   $ echo -e "hello \xC0'world'" | ./dbquote  
   'hello └'world'''

   $ quoted=$(echo -e "hax\xC0'; \! id # " | ./dbquote)

   $ echo "SELECT COUNT(1) FROM gw_sessions WHERE session_key = $quoted AND session_type = 'sdcust' AND (expiration IS NULL OR expiration>NOW())" | psql -e

   SELECT COUNT(1) FROM gw_sessions WHERE session_key = 'hax└';
   ERROR:  invalid byte sequence for encoding "UTF8": 0xc0 0x27

   uid=1000(myexamplecompany) gid=1000(myexamplecompany) 

Дополнение: Внесённое в libpq исправление привело к появлению регрессии (функция PQescapeIdentifier перестала учитывать поле с размером). Для устранения регрессии 20 февраля планируют опубликовать внеплановое обновление.

  1. OpenNews: Уязвимость в PostgreSQL, позволяющая выполнить код с правами рабочего процесса
  2. OpenNews: Релиз СУБД PostgreSQL 17
  3. OpenNews: Уязвимость в PostgreSQL, позволяющая выполнить SQL-код с правами пользователя, запускающего pg_dump
  4. OpenNews: В CVE опубликованы отчёты о ложных уязвимостях в curl, PostgreSQL и других проектах
  5. OpenNews: Оценка изменения производительности СУБД PostgreSQL за последние 15 лет
Обсуждение (16 +10 ) | Тип: Проблемы безопасности |
·15.02.2025 Мэйнтейнер драйвера Nouveau сложил полномочия из-за проблем с инклюзивностью в сообществе (308 +32)
  Следом за Гектором Мартином о снятии с себя обязанностей мэйнтейнера и прекращении участия в рецензировании патчей объявил Карол Хербст (Karol Herbst), сопровождавший драйвер Nouveau и механизм трассировки MMIO (MMIOTRACE), работающий в компании Red Hat. После ухода в ядре останутся ещё два мэйнтейнера, поддерживающие драйвер Nouveau, которые, по мнению Карола, прекрасно справляются со своей работой.

В качестве причины ухода упоминается отсутствие атмосферы инклюзивности в среде разработчиков ядра. Карол убеждён, что в сообществе, занимающемся разработкой открытого ПО, работа должна вестись с уважением, на равных и без заигрывания властью. По словам Карола последней каплей стало сообщение Теодора Тс'о, в котором он сравнил мэйнтейнеров с "тонкой синей линией" (отождествляется с правоохранительными органами и символизирует грань между порядком и анархией), добивающейся, чтобы принимаемый в ядро код был поддерживаемым и качественным.

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

Теодор Тс'о привёл сравнение с тонкой синей линией в процессе обсуждения сопротивления старых разработчиков продвижению Rust в ядро. Он написал, что власть мэйнтейнеров ограничена и они не могут влиять на продолжение разработки уже принятых изменений, так как не имеют возможности приказать людям заниматься доработками и улучшением инфраструктуры тестирования. Единственным инструментом обеспечения качества является способность мэйнтейнеров помешать включению в ядро сырых и вызывающих сомнение изменений. Как только код принят, мэйнтейнеры теряют рычаги воздействия на разработчиков и становятся лично ответственными за этот код.

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

От некоторых поступают обвинения в двойных стандартах, из-за того, что код одних разработчиков принимается почти сразу, а код других долго перемалывается. В этом вопросе важно установившееся доверие и заслуженная репутация. Если разработчик уже показал свою способность отвечать за переданные изменения - согласования проходят быстро. Для новичков приём изменений может затянутся, так как сопровождающий должен понять, сможет ли участник отвечать за свой код. Поэтому, участникам, особенно пытающимся продвигать радикальные изменения, требуется потратить много времени, чтобы стать частью сообщества. Например, на интеграцию изменений для сборки ядра компилятором Clang потребовалось 10 лет.

  1. OpenNews: Лидер Asahi Linux покинул проект после проблем с продвижением Rust в ядро Linux
  2. OpenNews: Кризис в продвижении Rust в ядро из-за опасений усложнения сопровождения
  3. OpenNews: Препятствия при продвижении Rust в ядро Linux
  4. OpenNews: Заметки Теодора Тс'о о ядре Linux, кодексе поведения, ext4, btrfs и ZFS
  5. OpenNews: NVK и Zink существенно улучшили ситуацию с открытыми драйверами для GPU NVIDIA
Обсуждение (308 +32) | Тип: Тема для размышления |
·14.02.2025 Уязвимость в Musl, эксплуатируемая при перекодировании текста в кодировке EUC-KR (109 +9)
  В стандартной Си-библиотеке Musl выявлена уязвимость (CVE-2024-2961), приводящая к переполнению буфера при преобразовании специально оформленного текста из кодировки EUC-KR в UTF-8 при помощи функции iconv(). Уязвимость проявляется начиная с версии musl 0.9.13 и будет исправлена в готовящемся к публикации выпуске 1.2.6 (до публикации обновления следует использовать патч). Уязвимость выявлена сопровождающим библиотеку libxml2 в процессе fuzzing-тестирования.

Уязвимость может использоваться для совершения атак на приложения, собранные с библиотекой Musl и выполняющие перекодирование текста, получаемого из внешних источников. Эксплуатация уязвимости возможна при вызове в приложении функции iconv_open() c указанием исходной кодировки EUC-KR и целевой кодировки UTF-8. В качестве примера потенциально уязвимых приложений упоминаются программы, перекодирующие XML, HTML и почтовые сообщения на основании кодировки, указанной в заголовке с MIME-типом (например, "text/plain; charset=EUC-KR"). Например, подобное перекодирования выполняют программы, использующие библиотеку libxml2.

Уязвимость вызвана комбинацией из двух ошибок. Первая ошибка связана с отсутствием должной проверки некорректных многобайтовых последовательностей в декодировщике EUC-KR. Вторая ошибка присутствует в кодировщике UTF-8, который не был рассчитан на то, что декодировщик входных данных может вернуть недопустимые скалярные значения Unicodе. В итоге, обработка последовательностей вида "\xc8\x41" приводит к записи значений в область за границей выделенного буфера.

  1. OpenNews: Уязвимость в Glibc ld.so, позволяющая получить права root в большинстве дистрибутивов Linux
  2. OpenNews: Применение невидимых unicode-символов для скрытия действий в JavaScript-коде
  3. OpenNews: В системной библиотеке Musl устранена удалённая уязвимость
  4. OpenNews: Уязвимость в Glibc, эксплуатируемая через скрипты на PHP
  5. OpenNews: Выпуск системной библиотеки Glibc 2.33 с устранением уязвимости в iconv
·14.02.2025 Проекту Fedora пригрозили иском из-за поставки сбойного flatpak-пакета с OBS Studio (315 +59)
  Разработчики системы потокового видеовещания OBS Studio предъявили проекту Fedora претензию, связанную с поставкой некорректно работающего неофициального flatpak-пакета в форме, создающей у пользователей впечатление, что они используют официальный пакет. Проблема в том, что разработчики OBS Studio распространяют через каталог Flathub собственный flatpak-пакет, но вместо него пользователям Fedora предоставляется другой вариант flatpak-пакета, сопровождаемый разработчиками Fedora и при установке являющийся более приоритетным.

Из-за этого пользователи Fedora направляют разработчикам OBS Studio претензии, считая, что проблемы присутствуют в официальном flatpak-пакете. Разработчики OBS Studio попросили пометить предлагаемый в Fedora пакет как неофициальный или удалить его в пользу доступного на Flathub официального пакета. Уведомление о проблеме было направлено три недели назад через системы отслеживания ошибок репозитория fedora-flatpaks, GNOME Software и fedora-workstation.

Так как конструктивного обсуждения вопроса добиться не удалось и дискуссия скатилась к личным нападкам, разработчики OBS Studio официально потребовали прекратить использование в дистрибутиве Fedora любых элементов бренда OBS Studio, включая имя и логотип. Для исполнения требования предоставлена одна неделя (до 21 февраля). В случае игнорирования требования разработчики OBS Studio намерены привлечь юристов для подачи судебного иска.

В ответ мэйнтейнер пакета заполнил заявку на удаление flatpak-пакета obs-studio из репозиториев Fedora. Проблемы во flatpak-пакете от проекта Fedora возникали из-за поставки версии Qt, в которой присутствуют неисправленные регрессивные изменения. В официальном flatpak-пакете от OBS Studio в обход flatpak-runtime поставляется старая версия Qt, в которой данные регрессии не проявляются. Так как срок сопровождения лишённой регрессий старой версии Qt истёк, в Fedora собирался свой вариант flatpak-пакета с актуальным выпуском Qt.

  1. OpenNews: Выпуск системы потокового видеовещания OBS Studio 31.0
  2. OpenNews: Debian перешёл на поставку урезанного варианта менеджера паролей KeePassXC
  3. OpenNews: В TikTok Live Studio выявлено заимствование кода OBS, нарушающее лицензию GPL
  4. OpenNews: Конфликт из-за поставки устаревшей версии XScreenSaver в Debian
  5. OpenNews: Нарушение авторского права в хранителе экрана GNOME и производных проектах
Обсуждение (315 +59) | Тип: К сведению |
·13.02.2025 Лидер Asahi Linux покинул проект после проблем с продвижением Rust в ядро Linux (343 +58)
  Гектор Мартин (Hector Martin), основатель проекта Asahi Linux, занимающегося портированием Linux для работы на компьютерах Mac с ARM-чипами Apple Silicon, объявил о снятии с себя полномочий лидера и прекращению разработки. Участники Asahi Linux сформировали управляющий совет, в который вошли 7 разработчиков. Совет будет коллегиально принимать решения и совместно координировать работу проекта.

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

Переломным моментом, после которого исчезла мотивация продолжать работу, стало сопротивление продвижению в ядро Linux наработок "Rust for Linux" и создание враждебной атмосферы для участников данного проекта. Для Asahi Linux включение поддержки языка Rust в ядро Linux является важным, так как данный язык использован для разработки трёх драйверов (по словам Гектора, успех в разработке драйвера drm-asahi обусловлен выбором для него языка Rust). На поддержание ветки ядра с собственными изменениями тратится много ресурсов и по мере увеличения не принятого в основной состав ядра кода сопровождение всё больше усложняется.

Гектор считает, что следовало форсировать продвижение Rust в состав ядра и оказать его участникам активную поддержку, но Линус Торвальдс занял позицию бездействующего наблюдателя, не вмешивающегося в злоупотребления некоторых мэйнтейнеров, тормозящих интеграцию компонентов для поддержки Rust. Также отмечается, что веру в сообщество разработчиков ядра подорвало лицемерие некоторых участников, которые при личном общении поддерживали Гектора, а за его спиной высказывали недовольство. Кроме того упоминается общий упадок сообщества разработчиков ядра, в котором не осталось былых энтузиастов, а всем заправляют работники корпораций.

На прошлой неделе Гектор ушёл с поста мэйнтейнера платформы ARM/Apple в ядре Linux после замечания Линуса Торвальдса о его излишней самоуверенности в желании реформировать процесс разработки ядра и привлечении социальных сетей для раздувания внутренних разбирательств. Судя по всему, Гектор излишне эмоционально реагирует на возникающие трудности и принимает близко к сердцу то, что ему кажется несправедливостью, и при этом не готов учитывать интересы других людей, находить компромиссные решения, вникать в мотивы чужих поступков и допускать, что его мнение может не быть единственным правильным.

  1. OpenNews: Кризис в продвижении Rust в ядро из-за опасений усложнения сопровождения
  2. OpenNews: Инициатива по поддержке чипа Apple M1 в Linux
  3. OpenNews: Продвижение кода на языке Rust в ядро Linux происходит медленнее, чем ожидалось
  4. OpenNews: Препятствия при продвижении Rust в ядро Linux
  5. OpenNews: Заметки Теодора Тс'о о ядре Linux, кодексе поведения, ext4, btrfs и ZFS
Обсуждение (343 +58) | Тип: Тема для размышления |
·13.02.2025 Релиз СУБД DuckDB 1.2.0 (44 +10)
  Опубликован выпуск СУБД DuckDB 1.2.0, ориентированной на выполнение аналитических запросов и концептуально напоминающей SQLite. DuckDB сочетает такие свойства SQLite, как компактность, подключение в форме встраиваемой библиотеки, хранение БД в одном файле и CLI-интерфейс, с возможностями и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, например, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц. Код проекта написан на языке C++ и распространяется под лицензией MIT.

DuckDB предоставляет расширенный диалект языка SQL, включающий дополнительные возможности для обработки очень сложных и длительно выполняемых запросов. Возможно использование сложных типов (массивы, структуры, объединения), а также выполнение произвольных и вложенных коррелирующих подзапросов. Поддерживается одновременное выполнение нескольких запросов, выполнение запросов напрямую из файлов в форматах CSV и Parquet. Доступна поддержка импорта из СУБД PostgreSQL.

Проектом используется оболочка из SQLite, парсер из PostgreSQL, компонент Date Math из MonetDB, своя реализация оконных функций (на базе алгоритма Segment Tree Aggregation), обработчик регулярных выражений на основе библиотеки RE2, собственные оптимизатор запросов, MVCC-механизм управления одновременным выполнением заданий (Multi-Version Concurrency Control), а также векторизованный движок выполнения запросов на базе алгоритма Hyper-Pipelining Query Execution, позволяющий в одной операции разом обрабатывать большие наборы значений.

В новой версии:

  • Реализована поддержка новых методов сжатия, которые не включены по умолчанию для сохранения совместимости БД-файлов с прошлыми версиями DuckDB. Для использования улучшенного формата БД-файлов предложена возможность привязки БД к номеру версии - при открытии файла при помощи параметра "STORAGE_VERSION" теперь можно задать минимально поддерживаемую версию БД ("ATTACH 'file.db' (STORAGE_VERSION 'v1.2.0');"). Для преобразования нового формата в старый можно использовать SQL-команду COPY, например:
    
       ATTACH 'file1.db';
       ATTACH 'converted_file.db' (STORAGE_VERSION 'v1.0.0');
       COPY FROM DATABASE file1 TO converted_file;
    
  • Добавлена поддержка SQL-команды "ALTER TABLE ... ADD PRIMARY KEY" для добавления первичного ключа к существующей таблице.
  • Убрано ограничение, не позволявшее повторно добавлять идентификаторы, для которых присутствует индекс отслеживания уникальности, если данные идентификаторы были удалены в текущей транзакции. Например, нижеприведённый SQL-код теперь не приводит к ошибке:
    
       CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR);
       INSERT INTO students VALUES (1, 'John Doe');
    
       BEGIN;
          DELETE FROM students WHERE id = 1;
          INSERT INTO students VALUES (1, 'Jane Doe');
    
  • Добавлена поддержка загрузки CSV-файлов в кодировках Latin-1 и UTF-16 (ранее поддерживалась только кодировка UTF-8).
    
       FROM read_csv('cities-latin-1.csv', encoding = 'latin-1');
    
  • Добавлена поддержка использования в CSV-файлах многобайтовых разделителей (до 4 байт), что позволяет указывать emoji в качестве разделителя столбцов.
      
       a🦆b
       hello🦆world
    
       FROM read_csv('example.dsv', sep = '🦆');
    
  • По умолчанию включён строгий режим разбора файлов CSV ("strict_mode = true"), проверяющий соответствие форматирования спецификации RFC 4180. В строгом режиме допускается использование только одного символа для разделения строк, что приведёт к ошибке при попытке разбора файлов, для разделения строк в которых используется не только символ перевода строки, но и символ возврата каретки ("\r\n").
  • В парсере CSV задействован новый алгоритм определения новой строки, поддерживающий распараллеливание операций. Использование нового алгоритма ускорило разбор CSV примерно на 15%.
  • Убрано ограничение на размер строки в CSV файлах (ранее строка не должна была превышать 8 МБ).
  • При экспорте данных в формате Parquet реализована поддержка хэшей (словарей) и индексов на базе фильтра Блума. Реализован метод сжатия DELTA_BINARY_PACKED, позволяющий существенно сократить размер Parquet-файлов.
  • В интерфейс командной строки добавлен безопасный режим, активируемый при помощи опции "-safe" или команды ".safe_mode". В данном режиме разрешается доступ только к изначально указанному файлу БД, а попытка открытия других файлов приведёт к выводу ошибки.
  • В интерфейсе командной строки улучшено автодополнение ввода. Код для автодополнения переведён на использование PEG (Parsing Expression Grammar).
  • При выполнение команд в интерфейсе командной строки реализовано наглядное отображение больших чисел, например, при отображении числа 100000000, будет дополнительно приписано "(100 миллионов)".
  • В SQL добавлена поддержка синтаксиса, при котором сокращённые наименования таблиц и выражений можно указывать до значений на которые они указывают (вместо использования синтаксиса "выражение AS наименование"):
    
       SELECT 
           e1: some_long_and_winding_expression,
           e2: t2.a_column_name 
       FROM
           t1: long_schema.some_long_table_name,
           t2: short_s.tbl;
    
  • В команде "SELECT" реализована поддержка операции "RENAME" для переименования полей, выводимых при указании выражения "*":
    
       SELECT * RENAME (col1 AS new_col1) FROM integers;
    
  • В команде "SELECT" разрешено использование операций "LIKE" и "SIMILAR TO" при выводе через "*" :
    
       SELECT * LIKE 'val%' FROM key_val;
    
  • Повышено качество генерации псевдослучайных чисел.
  • Модернизирован оптимизатор запросов. Производительность при прохождении теста TPC-H SF100 увеличилась на 13%.
  • Предложен новый Си-подобный API для разработки дополнений, который можно использовать, например, для создания новых агрегатных или табличных функций.
  • Добавлена поддержка систем со стандартной Си-библиотекой Musl.

  1. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
  2. OpenNews: Разработчики SQLite развивают бэкенд HC-tree с поддержкой параллельных операций записи
  3. OpenNews: Проекты CBS и sqld развивают облачный и серверный варианты SQLite
  4. OpenNews: Проект Redka развивает реализацию протокола и API Redis поверх SQLite
  5. OpenNews: Google использовал большую языковую модель для выявления уязвимости в SQLite
Обсуждение (44 +10) | Тип: Программы |
·12.02.2025 Для systemd развивается возможность загрузки системных образов по HTTP (204 –6)
  Леннарт Поттеринг (Lennart Poettering) предложил включить в системный менеджер systemd изменение, позволяющие загружать систему с использованием образа корневой ФС, получаемого c внешнего хоста по протоколу HTTP. Изменение сводится к расширению systemd возможностью не только скачивать дисковый образ по HTTP на начальной стадии загрузки, но и распаковывать загруженный образ, связывать с блочным устройством в loopback-режиме, монтировать блочное устройство как /sysroot и загружать с него систему.

Поддержка скачивания дисковых образов во время загрузки системы при помощи systemd-import-generator уже включена в состав systemd 257. Остальная функциональности пока находится на стадии рабочего прототипа, требующего доработки. В реализации пока не поддерживается полный цикл загрузки, но в дальнейшем функциональность планируют довести до загрузки через UEFI HTTP Boot универсальных образов ядра UKI (Unified Kernel Image), объединяющих в одном файле загрузчик для UEFI (UEFI boot stub), образ ядра Linux и загружаемое в память системное окружение initrd.

URL для загрузки системного образа планируют вычислять на основании URL, заданного для EFI-образа в настройках UEFI HTTP Boot (например, при загрузке через EFI HTTP Boot "http://example.com/somedir/myimage.efi", присутствующий в UKI initrd-обработчик загрузит образ rootfs как "http://example.com/somedir/myimage.raw.xz"). В дальнейшем помимо HTTP в качестве транспорта для получения образа планируется добавить поддержку технологии NVMe-over-TCP, позволяющей обращаться к NVMe-накопителям по сети (NVM Express over Fabrics), используя протокол TCP.

Предполагается, что загрузка с образов, получаемых с внешнего хоста, упростит организацию тестирования современных неизменяемых ("immutable") операционных систем на реальном оборудовании. Разработчик может на своём компьютере сформировать образ с системным окружением утилитой mkosi и сделать его доступным через HTTP командой "mkosi -f serve". На компьютере, на котором требуется протестировать работу системы, достаточно включить в EFI загрузку по HTTP и добавить URL загружаемого образа командой:


   kernel-bootcfg --add-uri=http://192.168.47.11:8081/image.efi --title=testloop --boot-order=0

После чего можно просто перезагрузить компьютер, и он загрузит типовой образ ядра UKI, который затем загрузит подготовленный разработчиком дисковый образ с корневой ФС. До отключения в EFI загрузки по HTTP каждая последующая перезагрузка компьютера будет приводить к загрузке свежего системного образа. При подобном тестировании никак не затрагиваются локальные диски.

  1. OpenNews: Леннарт Поттеринг предложил новую архитектуру верифицированной загрузки Linux
  2. OpenNews: Представлен systemd-homed для управления переносимыми домашними каталогами
  3. OpenNews: Леннарт Поттеринг предложил модернизировать разбивку загрузочных разделов
  4. OpenNews: перезагрузки
  5. OpenNews: Инициатива по сокращению зависимостей у libsystemd
Обсуждение (204 –6) | Тип: К сведению |
·12.02.2025 Выпуск языка программирования Go 1.24 (262 +18)
  После шести месяцев разработки представлен релиз языка программирования Go 1.24, развиваемого компанией Google при участии сообщества. Язык сочетает высокую производительность, свойственную компилируемым языкам, с такими достоинствами скриптовых языков, как простота написания кода, высокая скорость разработки и защита от ошибок. Код проекта распространяется под лицензией BSD.

Синтаксис Go основан на привычных элементах языка Си с отдельными заимствованиями из языка Оберон. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно, без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Среди изменений в новом выпуске:

  • Обеспечена полная поддержка обобщённых псеводонимов типов (generic type alias) - псевдоним типа может быть параметризирован, как и впервые определяемый тип (при определении псевдонима типа теперь допускается указание параметров типа).
    
       type set[P comparable] = map[P]bool
    
  • Внесены оптимизации в runtime, которые привели к снижению нагрузки на процессор на 2-3% при проведении типовых тестов производительности. Среди внесённых оптимизаций: новая встроенная реализация операции "map", основанная на использовании хэш-таблиц Swiss Table; повышение эффективности использования памяти при размещении мелких объектов; новая реализация mutex, встроенная в runtime.
  • В команду "go" для Go-модулей добавлен механизм отслеживания исполняемых зависимостей (вспомогательных инструментов, написанных на языке Go и используемых при разработке модуля, например, linter-ов или утилит для форматирования кода). Определение утилит в файле go.mod производится через директиву "tool", для добавления которой в текущий модуль предложена команда "go get -tool" (например, "go get -tool golang.org/x/tools/cmd/stringer"). Для запуска утилиты, указанной в директиве "tool", добавлена команда "go tool имя_утилиты".
  • В команды "go build" и "go install" добавлена опция "-json" для вывода в формате JSON.
  • Добавлена переменная окружения GOAUTH для задания параметров аутентификации, необходимых для извлечения модулей, доступ к которым ограничен.
  • В команде "go vet" реализован новый анализатор тестов (test analyzer), выявляющий типовые ошибки при включении тестов, fuzzing-инструментов, утилит проверки производительности и примеров приложений.
  • В стандартную библиотеку включены реализации криптоалгоритмов, одобренных в стандарте безопасности FIPS 140-3.
  • В пакет testing добавлен метод B.Loop для выполнения тестов производительности. Применение "for b.Loop() { ... }" вместо обычных циклов позволяет исключить выполнение компилятором полной оптимизации тела цикла и вынести из цикла стадии настройки и очистки теста.
  • Добавлен тип os.Root, позволяющий изолировать операции с файловой системой заданным каталогом.
  • В runtime добавлен новый механизм финализации runtime.AddCleanup, более гибкий и эффективный чем runtime.SetFinalizer.
  • Добавлен пакет weak c реализацией слабых указателей, которые не владеют объектом, не увеличивают счётчик ссылок и не препятствуют освобождению объекта.
  • Добавлены пакеты: crypto/mlkem с реализацией криптоалгортимов ML-KEM-768 и ML-KEM-1024 (Kyber), стойких для подбора на квантовом компьютере; crypto/hkdf c реализацией функции формирования ключа на базе HMAC (RFC 5869); crypto/pbkdf2 c реализацией функции формирования ключа на базе пароля (PBKDF2, RFC 8018); crypto/sha3 c реализацией хэшей SHA-3.
  • Добавлен экспериментальный пакет testing/synctest с функциями для тестирования многопоточности.
  • Улучшена поддержка WebAssembly. Добавлена возможность сборки Go-приложений в форме библиотеки или обработчика WASI (WebAssembly System Interface). Реализована директива go:wasmexport для экспорта функций для использования в WebAssembly.
  • В утилиту objdump добавлена поддержка дизассемблирования для архитектур LoongArch (GOARCH=loong64), RISC-V (GOARCH=riscv64) и S390X (GOARCH=s390x).

  1. OpenNews: Выпуск языка программирования Go 1.23 с поддержкой телеметрии
  2. OpenNews: Лидер проекта Go принял решение покинуть пост
  3. OpenNews: В инструментарий для языка Go добавлена возможность отслеживания уязвимостей в модулях
  4. OpenNews: Оценка популярности открытых лицензий в зависимости от языка программирования
  5. OpenNews: Google намерен добавить телеметрию в инструментарий для языка Go
Обсуждение (262 +18) | Тип: Программы |
·11.02.2025 Опубликован свободный звуковой кодек FLAC 1.5 (240 +41)
  Сообщество Xiph.Org опубликовало обновление свободного звукового кодека FLAC 1.5.0, позволяющего сжимать звук без потери качества. FLAC использует только методы кодирования без отбрасывания данных (lossless), что гарантирует полную сохранность изначального качества звукового потока и его идентичность с эталонным вариантом, подвергнутым кодированию. При этом используемые методы сжатия без потерь позволяют уменьшить размер исходного звукового потока на 50-60%. FLAC является полностью свободным потоковым форматом, подразумевающим не только открытость библиотек с реализацией функций кодирования и декодирования, но и отсутствие ограничений по использованию спецификаций и созданию производных вариантов. Код библиотек распространяется под лицензией BSD.

Среди изменений в новой версии:

  • Обеспечена работа кодировщика в многопоточном режиме. Многопоточный кодировщик можно использовать через libFLAC или через утилиту командной строки flac.
  • Добавлена возможность декодирования связанных (chained) Ogg-файлов, в которых в один файл упаковано несколько независимых аудиопотоков FLAC.
  • В libFLAC, libFLAC++ и metaflac реализована поддержка записи в новый файл при изменении метаданных, вместо перезаписи существующего файла. В libFLAC при изменении метаданных добавлена проверка указания символической ссылки в качестве входного файла и реализована защита от записи в подобные файлы при замене файла по месту.
  • Расширен API библиотек libFLAC и libFLAC++.
  • Адаптирована для многопоточной работы реализация режима LMS (Loose Mid-Side), раздельно кодирующего общую для стерео каналов информацию и разницу между левым и правым каналами.
  • Реализована поддержка компиляции в представление WebAssembly компилятором Emscripten.
  • Спецификация на формат FLAC зафиксирована в RFC 9639.
  • В утилите flac при перекодировании существующего FLAC-файла добавлена проверка совпадения MD5-хэшей. В режиме тестирования "flac -t" теперь разбираются все блоки метаданных и выводятся предупреждения при обнаружении метаданных ID3v1. Улучшена встроенная подсказка по доступным опциям. Документирован формат для хранения внешних метаданных, используемых утилитой flac.
  • Лицензия на документацию GFDL (GNU Free Documentation License) обновлена до версии 1.3 (была версия 1.2).

  1. OpenNews: Формат сжатия FLAC официально закреплён в RFC 9639
  2. OpenNews: Опубликован свободный звуковой кодек FLAC 1.4
  3. OpenNews: Предпринята попытка создания патентного пула для свободного звукового кодека Opus
  4. OpenNews: Разработчики кодека AV1 представили формат IAMF для объёмного звука
  5. OpenNews: Основатель QEMU и FFmpeg опубликовал звуковой кодек TSAC
Обсуждение (240 +41) | Тип: К сведению |
·11.02.2025 Релиз среды рабочего стола KDE Plasma 6.3 (186 +46)
  После четырёх месяцев разработки опубликован релиз среды рабочего стола KDE Plasma 6.3. Для оценки работы новых выпусков KDE можно воспользоваться сборками от проектов KDE Neon и openSUSE (Argon, основанный на openSUSE Leap, и Krypton, основанный на openSUSE Tumbleweed).

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

  • В композитном менеджере KWin переработана поддержка дробного масштабирования. Для сокращения размытости и повышения чёткости при увеличении масштаба обеспечена привязка к пиксельной сетке экрана.
  • Модернизирован эффект приближения, который при значительном изменении масштаба теперь показывает сетку для наглядного разделения отдельных пикселей.


  • В режиме ночной подсветки повышена точность отображения цветов, независимо от использования ICC-профилей. В KWin добавлен параметр для настройки точности отображения цветов.
  • Включена лёгкая прозрачность для виджетов, размещаемых на рабочем столе, и для всплывающих окон элементов панели.
  • В виджете, показывающем список открытых окон в панели (Task Manager), реализована возможность показа обычных текстовых всплывающих подсказок, в случае отключения в настройках показа эскизов содержимого окна.
  • Переработан интерфейс настройки графического планшета - содержимое страницы в конфигураторе разделено на три отдельные вкладки (Display, Pen и Pad). Реализована более привычная матрица калибровки графического планшета. При тестировании работы стилуса показана информация о наклоне и давлении. Добавлена возможность сопоставления поверхности графического планшета со всем экраном. Добавлены настройки диапазона давления стилуса, например, для игнорирования слишком лёгких или слишком сильных касаний. Добавлена опция, выделяющая цветом изменения настроек.


  • Добавлена настройка, автоматически отключающая тачпад при подсоединении мыши.
  • В настройках точки доступа обеспечена генерация случайного пароля для подключения к создаваемой беспроводной сети.
  • В главное меню добавлена новая категория "Help" и удалён раздел с настройками "Settings", который объединён с разделом "System".
  • В меню приложений Kickoff (Application Launcher) переключение категорий теперь производится только при явном щелчке мышью (как в боковых панелях). В настройки добавлена опция для возвращения старого поведения, при котором для переключения категории достаточно наведения курсора мыши.
  • В виджете "Часы" включено отображение всех предстоящих событий сегодняшнего дня, а не только первых пяти.
  • После выхода из режима "не беспокоить", обеспечен показ числа пропущенных уведомлений вместо показа разом всех накопившихся уведомлений.
  • При перемещении мышью файла из окна, частично перекрытого другими окнами, данное окно теперь не переносится на передний план, так как оно может закрыть собой содержимое, куда пользователь пытался переместить файл.
  • В контекстное меню, показываемое при щелчке правой кнопкой мыши на ярлыке с символической ссылкой, добавлена кнопка для показа файла, на который указывает ссылка.
  • В конфигуратор панели, вызываемый через контекстное меню при щелчке правой кнопкой мыши на панели, добавлена кнопка "Clone Panel", позволяющая клонировать выбранную панель, например, для дублирования нижней панели в верхней части экрана.

  • Предоставлена возможность отключения символьных пиктограмм в меню Kickoff, используя редактор меню (приложение KMenuEdit).
  • При попытке редактирования файлов с расширением ".desktop" через меню "Edit Application…" теперь запускается приложение KMenuEdit вместо диалога со свойствами файла.
  • В Widget Explorer предоставлена возможность удаления всех экземпляров виджета, включая те, что потеряны или привязаны к отключённым экранам.
  • При запуске приложений, которым предоставлены полномочия захвата устройств ввода и экрана, теперь выводится уведомление с подсказкой, как отключить захват и вернуть себе управление.
  • Сокращено потребление памяти при хранении большой истории работы с буфером обмена.
  • В конфигураторе на странице с настройками KWin предоставлена возможность временного отключения правил с переопределением атрибутов окон приложений (KWin Window Rules). Ранее для прекращения действия подобных правил их можно было только удалить.
  • В виджете "Power and Battery" реализован вывод уведомления о низком заряде аккумулятора беспроводных наушников, предоставляющих корректную информацию о состоянии аккумулятора.
  • В приложении System Monitor повышена точность отслеживания нагрузки на CPU, а также снижено потребление ресурсов при работе данного приложения. Добавлена поддержка сбора статистики о работе GPU во FreeBSD. В центре информации о системе (Info Center) предоставлены дополнительные сведения о всех GPU и показаны счётчики циклов зарядки аккумуляторов.
  • Упрощено отслеживание состояния принтеров - в виджете для каждого принтера теперь показывается очередь печати и индикатор, указывающий через какой принтер в данный момент осуществляется вывод на печать.
  • Добавлен сервис, определяющий, когда ядро принудительно завершает приложение из-за нехватки памяти в системе, и выводящий соответствующее уведомление.
  • В менеджере приложений Discover разбивка на больших экранах ограничена двумя столбцами. Обеспечено выделение цветом изменений полномочий в новых версиях программ. Специальными индикаторами выделены пакеты, подготовленные разработчиками основного проекта или верифицированные уполномоченным лицом.
  • В KRunner добавлена возможность переключения между категориями при помощи комбинаций клавиш Page Up/Page Down и Ctrl+Up/Ctrl+Down. В полях поиска на базе KRunner доступна возможность преобразования единиц измерения длины.

  1. OpenNews: Превращение сборки Fedora c KDE в базовую редакцию дистрибутива
  2. OpenNews: Выпуск KDE Gear 24.12, набора приложений от проекта KDE
  3. OpenNews: Проект KDE развивает собственный дистрибутив KDE Linux
  4. OpenNews: Релиз среды рабочего стола KDE Plasma 6.2
  5. OpenNews: Релиз десктоп-окружения Trinity R14.1.3, продолжающего развитие KDE 3.5
Обсуждение (186 +46) | Тип: Программы |
·10.02.2025 Опубликована распределённая СУБД Citus 13.0 (60 +9)
  Компания Citus Data, принадлежащая Microsoft, опубликовала распределённую СУБД Citus 13.0, реализованную в форме расширения к PostgreSQL 17. Citus обеспечивает горизонтальное масштабирование PostgreSQL в кластере на базе типового оборудования и позволяет разносить данные по узлам при помощи шардинга (sharding) с настройкой разделения на уровне столбцов и схемы хранения. Для приложений кластер Citus выглядит как один большой сервер PostgreSQL, объединяющий ресурсы образующих его узлов. Код написан на языке Си и распространяется под лицензией AGPLv3.

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

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

В качестве типовых примеров использования Citus отмечается выполнение аналитических запросов и обработка больших массивов данных в форме временного ряда (например, логи или опрос состояния датчиков). Citus также подходит для модернизации имеющейся инфраструктуры на базе одиночного сервера PostgreSQL, производительности и накопителей на котором перестало хватать из-за увеличения нагрузки или объёма поступающих данных. При помощи инструментария Patroni можно создавать отказоустойчивые конфигурации с реплицированными запасными узлами, способными в случае сбоя занять место основных узлов.

Изменения в выпуске Citus 13.0:

  • Переход на использование ветки PostgreSQL 17.
  • Возможность использования в распределённых запросах функции JSON_TABLE() для преобразования данных из формата JSON в реляционное представление, с которым можно работать как с обычными таблицами PostgreSQL.
  • Поддержка синтаксиса "MERGE ... WHEN NOT MATCHED BY SOURCE".
  • Возможность определения метода доступа для распределённых секционированных таблиц при помощи выражения "CREATE TABLE ... USING", а также изменения метода доступа через "ALTER TABLE ... SET ACCESS METHOD".
  • Добавлена поддержка указания в распределённых секционированных таблицах автоматически генерируемых столбцов идентификации.
  • Разрешено применение ограничений-исключений в распределённых секционированных таблицах.
  • Решены проблемы с синхронизацией ролей между узлами.
  • Улучшено распределение данных для шардинга при добавлении новых узлов в кластер.
  • В команду "EXPLAIN" добавлены опции "MEMORY" и "SERIALIZE", при помощи которых можно определить размер использованной памяти и время, потраченное на преобразование данных для передачи по сети.

  1. OpenNews: Microsoft поглотил компанию Citus, развивающую СУБД на базе PostgreSQL
  2. OpenNews: Доступны IvorySQL 4.0 и SynchDB 1.0, надстройки к PostgreSQL для взаимодействия с другими СУБД
  3. OpenNews: Проект Cloudberry, развивающий форк СУБД Greenplum, принят в инкубатор Apache
  4. OpenNews: Microsoft открыл код СУБД DocumentDB, основанной на PostgreSQL
  5. OpenNews: Релиз открытой СУБД VoltDB 3.0, развиваемой одним из основателей Ingres и PostgreSQL
Обсуждение (60 +9) | Тип: Программы |
·09.02.2025 Первый выпуск платформы виртуализации SEAPATH (82 +18)
  После пяти лет разработки организация Linux Foundation представила релиз платформы виртуализации SEAPATH 1.0, разработанной с учётом требований к информационным системам для цифровых подстанций в энергосетях. Платформа учитывает специфику энергосетей, но может применяться и в других областях, в которых требуется высокая надёжность. Код платформы опубликован под лицензией Apache 2.0. Выпуск SEAPATH 1.0 признан готовым для промышленного применения и использования в критически важных системах (mission-critical). Платформа уже задействована в рабочей инфраструктуре энергетической компании RTE и проходит тестовое внедрение в компаниях GE Vernova, Alliander, ABB, Red Hat и Enedis. В разработке платформы принимают участие компании RTE, Alliander, GE Vernova, Savoir-faire Linux, Welotec и Red Hat.

Для мониторинга, автоматизации, сопровождения и управления распределением энергопотоков на цифровых подстанциях в современных энергосетях задействованы специализированные приложения от различных поставщиков, которые предлагается запускать в отдельных изолированных виртуальных машинах. SEAPATH реализует платформу для организации работы подобных виртуальных машин, виртуализированные приложения (vPAC - Virtualized Protection, Automation and Control) в которых могут выполняться в режиме реального времени.

Для развёртывания узлов с хост-окружением SEAPATH предоставляется два дистрибутива на базе Debian GNU/Linux 12 и Yocto Scarthgap. Платформа не привязана к какому-то определённому оборудованию, не зависит от отдельных поставщиков и может использоваться на различных типах серверов и аппаратных архитектур. Допускается выполнение приложений для электроподстанций, поддерживающих стандарт МЭК-61850.

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

Платформа построена с использованием уже существующих открытых проектов, для проверки надёжности которых подготовлен тестовый набор, включающий более 700 unit-тестов. Виртуализация реализована с использованием гипервизора KVM и ядра Linux, собранного с опцией PREEMPT_RT для работы в режиме реального времени. В качестве распределённого хранилища, охватывающего весь кластер, используется Ceph. Для виртуализации устройств применяется QEMU, а для виртуализации сети - Open vSwitch. Для управления виртуальными окружениями задействован инструментарий Libvirt. Для управления ресурсами в кластере, обеспечения отказоустойчивости и организации взаимодействия между узлами применяются Pacemaker и Corosync. Централизованное управление инфраструктурой и оркестровка виртуальных машин реализована при помощи Ansible.

  1. OpenNews: Открыт код реализации протокола DNP3, который будет развиваться сообществом Total Grid
  2. OpenNews: Компания Siemens выпустила гипервизор Jailhouse 0.12
  3. OpenNews: Linux Foundation развивает новый гипервизор ACRN для встраиваемых устройств
  4. OpenNews: Microsoft открыл код гипервизора OpenVMM и платформы паравиртуализации OpenHCL
  5. OpenNews: Для процессоров MIPS представлен первый открытый гипервизор
Обсуждение (82 +18) | Тип: Программы |
·08.02.2025 Проект TuxTape для развёртывания инфраструктуры live-патчей к ядру Linux (64 +13)
  Страховая компания GEICO опубликовала предварительный выпуск инструментария TuxTape, позволяющего развернуть собственную инфраструктуру для создания, сборки и доставки live-патчей для ядра Linux. Live-патчи позволяет применять исправления к ядру Linux на лету, без перезагрузки и остановки системы. Код проекта написан на языке Rust и распространяется под лицензией Apache 2.0.

Live-патчи с устранением уязвимостей предоставляют для своих дистрибутивов такие компании, как Red Hat, Oracle, Canonical и SUSE, но открытым у них является лишь низкоуровневый инструментарий для работы с патчами, а сами патчи формируются за закрытыми дверями. Дистрибутивы Gentoo и Debian пытались развивать открытые проекты elivepatch и linux-livepatching, но первый уже 6 лет находится в заброшенном состоянии, а второй затормозил на стадии создания тестового прототипа.

TuxTape нацелен на организацию работы собственной системы для создания и доставки live-патчей, не зависящей от сторонних поставщиков и адаптируемой для любых ядер Linux, а не только для пакетов с ядром конкретных дистрибутивов. TuxTape может формировать live-патчи, совместимые с инструментарием kpatch, разработанным компанией Red Hat (помимо kpatch существуют похожие инструменты: kGraft от SUSE, Ksplice от Oracle и универсальный livepatch). Патчи формируются в виде загружаемых модулей ядра, которые заменяют функции в ядре, используя подсистему ftrace для перенаправления на новые функции, включённые в модуль.

TuxTape может отслеживать информацию об исправлении уязвимостей в ядре Linux, публикуемую в списке рассылки linux-cve-announce и в Git-репозитории, ранжировать уязвимости по степени опасности, определять применимость к обслуживаемым ядрам Linux и генерировать live-патчи на основе обычных патчей к LTS-веткам ядра. Применимость исходных патчей оценивается через профилирование сборок ядра. Патчи с не затрагивающими целевое ядро уязвимостями игнорируются.

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

Разработка находится на стадии экспериментального прототипа. Для начального тестирована предложены: tuxtape-cve-parser для разбора информации об уязвимостях и построения БД с патчами; tuxtape-server c реализацией интерфейса gRPC для сервисов генерирующих патчи; tuxtape-kernel-builder для сборки ядра в заданной конфигурации и формирования профиля сборки; tuxtape-dashboard - консольный интерфейс для рецензирования и создания live-патчей на основе исходных патчей, полученных из tuxtape-server.

  1. OpenNews: Компания Red Hat открыла код kpatch для организации обновления на лету ядра Linux
  2. OpenNews: Компания SUSE открыла код kGraft, системы для обновления ядра Linux без перезагрузки
  3. OpenNews: Для ядра Linux предложен livepatch, механизм обновления без перезагрузки
  4. OpenNews: Red Hat и SUSE объединили усилия в продвижении механизмов обновления ядра без перезагрузки
  5. OpenNews: Oracle поглотил компанию Ksplice, развивающую технологию обновления Linux-ядра без перезагрузки
Обсуждение (64 +13) | Тип: Программы |
·08.02.2025 Выпуск компилятора ISPC 1.26, развиваемого Intel для языка Си с расширениями SPMD (32 +10)
  Компания Intel опубликовала компилятор ISPC 1.26 (Implicit SPMD Program Compiler), предназначенный для сборки кода на языке Си с расширениями параллельного программирования SPMD (Single Program, Multiple Data), позволяющими добиться параллельного выполнения нескольких экземпляров одной программы с разными наборами входных данных. Код проекта написан на языке С++ и распространяется под лицензией BSD. Поддерживается работа в Linux, Windows, macOS и FreeBSD.

Си-программы с расширениями SPMD компилируются для выполнения на вычислительных блоках SIMD, предоставляемых CPU и GPU, что позволяет задействовать механизмы векторизации SIMD без низкоуровневых оптимизаций и явного применения в коде SIMD-инструкций. Для написания распараллеливаемых функций используется привычный синтаксис и идиомы языка Си - SPMD-функции напрямую взаимодействуют с функциями и структурами, написанными на C/C++. Для отладки программ могут применяться существующие отладчики.

В качестве бэкенда для генерации кода и оптимизации в ISPC используется инфраструктура LLVM. Поддерживаются векторные инструкции x86 (SSE2, SSE4, AVX, AVX2, AVX512) и ARM (NEON), а также вынос вычислений на сторону GPU (Intel Gen9 и Xe). На архитектурах с векторными блоками SSE, обрабатывающими по 4 элемента за раз, применение ISPC даёт возможность добиться ускорения выполнения программы в 3 или более раз, а на архитектурах с векторными блоками AVX, обрабатывающими по 8 элементов за раз, ускорение может достигать 5-6 раз. При этом помимо размера векторного блока, масштабирование также обеспечивается за счёт выполнения на разных процессорных ядрах.

Основные новшества, добавленные в версии ISPC 1.26:

  • Улучшена поддержка архитектуры ARM:
    • Изменено поведение флага "--arch=arm", который теперь связан с архитектурой ARMv8 (32-bit), а не ARMv7 (для ARMv8 в 64-разрядном режиме как и раньше следует использовать флаг "--arch=aarch64").
    • Прекращена поддержка процессоров ARMv7 Cortex-a9 и Cortex-a15.
    • Добавлена поддержка процессоров Cortex-a55, Cortex-a78, Cortex-a510, Cortex-a520, а также новых ARM-процессоров Apple.
    • Добавлены новые сборочные цели: neon-i16x16 и neon-i8x32.
    • Добавлена поддержка операций на базе векторных инструкций ARM SDOT и UDOT.
    • Проведена оптимизация, производительность для ARMv8 в среднем увеличилась на 13%.
  • Добавлен новый вид сборочных целей - "generic", позволивший оптимизировать внутреннюю архитектуру компилятора и упростить добавление новых сборочных целей. Идея в том, чтобы поддерживать базовые цели для специфичных аппаратных возможностей, поверх которых легко можно создавать цели с частными оптимизациями. На использование generic-целей переведена поддержка архитектуры ARM.
  • В генераторе кода проведена корректировка развёртывания циклов и функций для сокращения размера результирующего кода в режиме оптимизации "-O1". Улучшена генерация кода для встроенных функций count_leading_zeros и count_trailing_zeros, а также при возвращении структур из функций и при сохранении или загрузки данных с типами int8/int16.
  • Расширена поддержка встроенных функций (intrinsics) LLVM, активируемая при указании флага "--enable-llvm-intrinsics".
  • Инструментарий LLVM обновлён до версии 18.1.8 с патчами. Добавлен макрос для определения используемой в ISPC версии LLVM.
  • Разрешено применение атрибута "__attribute__((deprecated))" к функциям для вывода предупреждения при вызове функции.
  • Удалена сборочная цель avx512knl-x16 (KNL).
  • Добавлена опция "--darwin-version-min" для указания минимально поддерживаемой версии целевой платформы для macOS и iOS.

  1. OpenNews: Выпуск компилятора ISPC 1.25, развиваемого Intel для языка Си с расширениями SPMD
  2. OpenNews: Доступен Vcc, C/C++ компилятор для Vulkan
  3. OpenNews: Cheerp 3.0, компилятор C/C++ в JavaScript, переведён на лицензии Apache 2.0 и LLVM
  4. OpenNews: Intel представил nGraph, компилятор для систем машинного обучения
  5. OpenNews: Linux ядро адаптировано для сборки компилятором Intel C/C++
Обсуждение (32 +10) | Тип: Программы |
Следующая страница (раньше) >>



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

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