The OpenNET Project / Index page

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

·10.06.2024 Компания Mozilla начала блокировать доступ из РФ к дополнениям для обхода блокировок (35 –21)
  Пользователи Firefox столкнулись с невозможностью загрузить из каталога addons.mozilla.org (AMO) дополнения, позволяющие обойти блокировки Роскомнадзора. На страницах четырёх популярных дополнений, обеспечивавших обход блокировок, при попытке открытия из РФ теперь показывается страница с информацией о запрете доступа к странице из региона пользователя. Разработчик одного из заблокированных дополнений попросил представителей Mozilla назвать причину блокировки, при том, что формально дополнение не нарушает никаких правил каталога AMO. Представители Mozilla пока не указали причин блокировки, но, вероятно, они сделали это после получения требований от Роскомнадзора.

При этом блокировки дополнений, нарушающих законы отдельных стран, не новы, например, в 2022 году Mozilla заблокировала доступ к дополнениям uBlock Origin, AdGuard, AdNauseam и AdBlock из Китая, что было сделано после возникновения угрозы блокировки всего каталога addons.mozilla.org в Китае. Примечательно, что подобные блокировки явно расходятся с принципами, определёнными в манифесте Mozilla, а также идут в разрез с общей политикой компании, в соответствии с которой два года назад сервисы Yandex и Mail.ru были удалены из списка доступных поисковых систем с указанием в качестве мотива преобладания в поисковой выдаче материалов, отражающих предвзятую точку зрения.

Заблокированные для РФ дополнения не могут быть названы в новости из-за действующего с 1 марта запрета на популяризацию средств обхода блокировок. Первое дополнение нацелено на общий обход ограничений, действующих в России, Украине, Беларуси, Казахстане, Кыргызстане, Узбекистане и других странах. Второе дополнение специально рассчитано на обход блокировок из Единого реестра запрещённых сайтов РФ, при этом не проксируя остальные ресурсы. Третье дополнение обеспечивает работу VPN-сервиса, не осуществляющего блокировку по спискам Роскомнадзора для пользователей из РФ. Четвёртое дополнение выборочно включает использование прокси для сайтов, заблокированных Роскомнадзором.

  1. OpenNews: Обновление Firefox 98.0.1 с удалением поисковых систем Yandex и Mail.ru
  2. OpenNews: Mozilla внедрила в Firefox показ навязчивой всплывающей рекламы VPN
  3. OpenNews: Mozilla использует Google Analytics в менеджере дополнений Firefox
  4. OpenNews: Mozilla развивает механизм передачи телеметрии рекламным сетям
  5. OpenNews: Mozilla воспользовалась push-уведомлениями для распространения политической рекламы в Firefox
Обсуждение (35 –21) | Тип: Тема для размышления |
·10.06.2024 Доступен язык программирования Perl 5.40.0 (63 +13)
  После 11 месяцев разработки опубликован релиз новой стабильной ветки языка программирования Perl - 5.40. При подготовке нового выпуска было изменено около 160 тыс. строк кода (без документации и автоматически сгенерированного кода - 110 тысяч), изменения затронули 1500 файлов, в разработке приняли участие 75 разработчиков.

Ветка 5.40 выпущена в соответствии с утверждённым одиннадцать лет назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов - раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.40.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.40.0. Одновременно с выходом Perl 5.40 прекращена поддержка ветки 5.36, для которой обновления могут быть выпущены в будущем только в случае выявления критических проблем с безопасностью. 20 июня начнётся процесс разработки экспериментальной ветки 5.41, на базе которой в мае или июне 2025 года будет сформирован стабильный релиз Perl 5.42, если не будет принято решение перейти к нумерации 7.x.

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

  • Расширены возможности, связанные с появившемся в прошлой версии экспериментальным синтаксисом для создания классов. Добавлено новое ключевое слово "__CLASS__", которое при вызове из методов, блоков ADJUST или при инициализации полей возвращает имя текущего класса по аналогии с тем как ключевое слово __PACKAGE__ возвращает имя пакета. В отличие от выражения ref($self) ключевое слово __CLASS__ может применяться при инициализации полей для доступа к методам класса на этапе до завершения создания экземпляра класса. Для базового класса значение __CLASS__ идентично значению __PACKAGE__, но будет отличаться при создании подклассов.
    
       use feature 'class';
       class Example1 {
           field $f = __CLASS__->default_f;
           sub default_f { 10 }
       }
    
  • Для определяемых внутри класса полей реализован атрибут ":reader", применяемый для автоматического создания метода, возвращающего значение переменной из поля в текущем экземпляре класса. Например, указание ":reader" после определения поля "field $s;" эквивалентно созданию метода "method s () { return $s; }". При необходимости можно задать не совпадающее имя метода при помощи конструкции вида "field $name :reader(get_name);".
  • Объявлен стабильным синтаксис обработки исключений try/catch, который можно использовать вместо неочевидных манипуляций с "eval". Блок "try" включает блок с выполняемым кодом, а блок "catch" с кодом для обработки любого исключения, которое может возникнуть при выполнении первого блока. В "catch" определяется переменная, содержащая данные, переданные при формировании исключения (например, при срабатывании исключения на вызов "die" будет передана указанная в качестве аргумента строка). Внутри блоков "try" и "catch" разрешены операторы переходов, включая return, goto, next, last и redo.
    
       try {
           my $x = call_a_function();
           $x < 100 or die "Too big";
           send_output($x);
       }
       catch ($e) {
           warn "Unable to output a value; $e";
       }
       print "Finished\n";
    
  • Стабилизирован синтаксис "for my (VAR, VAR) (LIST)" и "foreach my (VAR, VAR) (LIST)", применяемый для перебора списков с единовременным извлечением сразу нескольких значений в одной итерации цикла. Например, теперь можно указывать:
    
       foreach my ($key, $value) (%hash) { ... }
       for my ($left, $right, $gripping) (@moties) { ... }
    
  • Объявлен стабильным модуль builtin, включающий всегда доступные функции, встроенные в интерпретатор. В настоящее время в модуле предложены функции true, false, weaken, unweaken, is_weak, blessed, refaddr, reftype, ceil, floor, is_tainted, trim и indexed.
  • Добавлены новые экспериментальные встроенные функции inf и nan, доступные в пространстве имён "builtin::" ("builtin::inf" и "builtin::nan"). Данные функции можно использовать в качестве констант, определяющих бесконечность и нечисловое значение.
  • Добавлен новый логический оператор "^^", соответствующий операции XOR и дополняющий битовый оператор "^" (в Perl предоставляет три базовых битовых оператора "&", "|" и "^", соответствующих операциям AND, OR и XOR, но для логических операций до сих пор были доступны только варианты AND ("&&") и OR ("||")). Логическое выражение "$x ^^ $y" вернёт TRUE, когда либо "x", либо "y" имеют значение TRUE, но не одновременно.
  • Прекращена поддержка симуляции версий до 5.11. Использование директивы "use номер_версии", отключающей дополнительные возможности, добавленные в интерпретаторе после указанной версии, с номером версии меньше 5.11 (например, "use v5.8") теперь будет приводить к выводу ошибки, а не предупреждения. Аналогично добавлен вывод предупреждения при использовании в "use" версии меньше 5.39 (предупреждения будут заменены на ошибку в выпуске 5.44).
  • Разрешено использование пробела между опцией командной строки "-M" и именем модуля, например "perl -M Data::Dumper=Dumper -E 'say Dumper [1,2,3]'" (раньше нужно было писать "perl -MData::Dumper...").
  • Объявлено устаревшим использование оператора "goto" для перехода из внешней области видимости во внутреннюю. Поддержка данной возможности будет прекращена в версии Perl 5.42.
  • В основной состав включены модули Term::Table и Test2::Suite, предназначенные для создания unit-тестов. Обновлены версии модулей Archive::Tar, Compress::Raw::Bzip2, Compress::Raw::Zlib, Data::Dumper, DB_File, File::Compare, File::Find, Getopt::Long, Hash::Util, HTTP::Tiny, IO, Math::BigInt, PerlIO::encoding, Tie::File, Time::HiRes и т.п.
  • Добавлена поддержка операционной системы Serenity OS.
  • Устранены две уязвимости:
    • CVE-2023-47038 - запись за границу буфера при обработке некорректных Unicode-свойств, определённых пользователем. Проблема может привести к переполнению буфера на 1 байт при обработке специально оформленных регулярных выражений.
    • CVE-2023-47039 - возможность подмены исполняемого файла на платформе Windows из-за поиска cmd.exe в путях с использованием переменной окружения PATH, в которой текущий рабочий каталог является более приоритетным, чем системный каталог с исполняемым файлом cmd.exe.

  1. OpenNews: Доступен язык программирования Perl 5.38.0 с поддержкой классов
  2. OpenNews: Анализ рисков при воплощении в жизнь инициативы Perl 7
  3. OpenNews: Perl 7 плавно продолжит развитие Perl 5 без нарушения обратной совместимости
  4. OpenNews: Язык Perl 6 переименован в Raku
  5. OpenNews: Опубликован разбор инцидента с потерей контроля над доменом perl.com
Обсуждение (63 +13) | Тип: Программы |
·09.06.2024 Оценка числа разработчиков на различных языках программирования (265 +17)
  Компания SlashData, специализирующаяся на проведении опросов разработчиков, опубликовала отчёт с результатами оценки востребованности языков программирования и прогнозирования размеров сообществ, связанных с языками программирования. Предполагается, что наиболее крупное сообщество, насчитывающее 25.2 млн участников, сформировалось вокруг языка JavaScript. На втором месте (18.2 млн) - сообщество, использующее язык Python, на третьем (17.7 млн) - Java. Язык C++ занимает четвёртое место (11.6 млн), а C - восьмое (6.5 млн).

Сообщество разработчиков на языке Rust оценено в 4 млн разработчиков, при этом данное сообщество признано наиболее быстрорастущим - за последний год число участников в нём выросло на 30%, а за два года удвоилось (в 1 квартале 2022 года размер сообщества для языка Rust был оценён в 2 млн разработчиков). В качестве одной из возможных причин роста упоминается пылкий энтузиазм участников сообщества, которые активно проповедуют сильные стороны Rust, такие как средства для безопасной работы с памятью и возможности по созданию высокопроизводительных приложений.

Заметный рост отмечается и в сообществе JavaScript, размер которого за год увеличился на 17%, что в абсолютных показателях соответствует 4 млн разработчиков. При этом отмеченный темп роста примерно соответствует общему увеличению числа разработчиков в мире.

Интересно также то, что при опросе разработчики с опытом менее трёх лет в меньшем числе случаев отмечали язык JavaScript, чем разработчики с опытом от трёх лет. Подобное объясняется тем, что часто опытные разработчики добавляют JavaScript в список используемых языков так как им время от времени приходится с ним сталкиваться, а не из-за того, что у них он является первичным языком для разработки. Похожее расхождение также наблюдается для языков C# и PHP, но в данном случае оно объясняется потерей спроса среди новых разработчиков (данные языки держатся за счёт старых разработчиков и проектов).

Продолжается рост популярности языка Python, который по сравнению с прошлым годом поднялся на второе место, вытеснив на третье место сообщество разработчиков на языке Java. За год сообщество Python выросло на 2.1 млн разработчиков (рост 13%), в то время как сообщество Java увеличилось на 1.2 млн разработчиков (рост 7%).

Ещё одним растущим сообществом называется сообщество Go, которое с 1 квартала 2022 года увеличилось с 3 до 4.7 млн разработчиков. Рост сообщества Go за два года составил 55%, но за последний год снизился до 10%. При этом роста Go оказалось достаточно для того, чтобы сместить с 10 места в рейтинге язык Swift.

Наиболее заметный спад популярности затрагивает язык Objective-C, число разработчиков на котором за последние два года держится на отметке примерно 2.5 млн. За два года Objective-C опустился в рейтинге с 12 на 14 место, уступив 12 и 13 места языкам Rust и Dart.

Данные о размерах сообществ экстраполированы путём использования данных о языках программирования, полученных в результате опроса более 10 тысяч разработчиков из 135 стран, и расчётов, показывающих что в мире насчитывается около 43 млн активных разработчиков.

  1. OpenNews: Рейтинг популярности СУБД. PostgreSQL назван СУБД 2023 года
  2. OpenNews: Оценка популярности открытых лицензий в зависимости от языка программирования
  3. OpenNews: Рейтинг языков программирования от издания IEEE Spectrum
  4. OpenNews: Рейтинг языков программирования TIOBE за январь 2024 года
Обсуждение (265 +17) | Тип: К сведению |
·08.06.2024 Анализ распространённости дистрибутивов Linux в корпоративных сетях (236 +15)
  Компания Lansweeper в преддверии окончания цикла сопровождения CentOS 7, который истекает 30 июня, проанализировала дистрибутивы, используемые на 200 тысячах просканированных Linux-систем (как именно выбирались системы для проверки не уточняется, вероятно, статистика собрана по системам в сетях корпоративных клиентов, использующих платформу инвентаризации Lansweeper). Наиболее популярным дистрибутивом стал Ubuntu, доля которого составила 32.24%. На втором месте оказался CentOS - 26.05%, а на третьем Red Hat Enterprise Linux - 20.11%. Доля Debian оказалась 7.05%, а Fedora Linux - 2.5%.

Достаточно большой процент присутствия оказался у дистрибутива Raspbian (4.35%), используемого на платах Raspberry Pi. Rocky Linux использовался на 1.34% систем, а Oracle Linux - на 3.87%. Доля SUSE Linux Enterprise составила 1.25%, а openSUSE - 0.07%. Linux Mint оказался установлен на 0.69% систем, а Astra Linux - 0.02%. Несмотря на то, что исследование было ориентировано на Linux в статистике также оказалась ОС FreeBSD (0.46%).

  1. OpenNews: 8.2% наиболее популярных загрузок в NPM приходится на устаревшие пакеты
  2. OpenNews: Рейтинг популярности СУБД. PostgreSQL назван СУБД 2023 года
  3. OpenNews: Оценка популярности IPv6 в трафике Cloudflare
  4. OpenNews: Оценка популярности открытых лицензий в зависимости от языка программирования
  5. OpenNews: Доля десктоп-дистрибутивов Linux достигла 4% по данным сервиса StatCounter
Обсуждение (236 +15) | Тип: К сведению |
·08.06.2024 В Fedora 41 предложено перевести инсталлятор на Wayland и удалить X11-пакеты из сборок с GNOME (179 +1)
  В выпуске Fedora 41 предложено перевести инсталлятор Anaconda на использование протокола Wayland. В настоящее время Anaconda использует протокол X11, что не позволяет избавиться в установочных носителях от зависимостей, обеспечивающих поддержку X11. Так как миграция Anaconda на Wayland не является тривиальной задачей, предполагается, что изменение повлияет на возможности инсталлятора.

Например, потребуется переработать процесс удалённой установки, который сейчас базируется на VNC-клиенте TigerVNC, завязанном на X11. Вместо TigerVNC предлагается использовать приложение grd (Gnome Remote Desktop) на основе протокола RDP. Вторым заметным изменением станет переработка процессов управления клавиатурой и переключения раскладок. В настоящее время в Anaconda для настройки раскладки клавиатуры применяется библиотека libXklavier, поддержка которой будет прекращена в GNOME Shell, а пакет libxklavier намерены удалить из Fedora.

Из-за привязки к libXklavier в инсталляторе, используемом в Live-сборах на базе Wayland, отключена возможность переключения раскладок клавиатуры. Так как в Wayland не предоставляется универсальный механизм управления клавиатурой, решено вместо libXklavier для изменения раскладок задействовать сервис systemd-localed, обращаясь к нему через D-Bus.

Помимо миграции инсталлятора на Wayland одновременно предложено полностью прекратить поставку связанных с X11 пакетов GNOME в сборках Fedora Workstation. Подобные пакеты планируют оставить в репозитории, но больше не включать в состав установочных и Live-носителей, построенных на базе GNOME.

Предложения пока не утверждены комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива Fedora. При этом ранее комитет уже утвердил удаление из базовой поставки Fedora 41 сеанса X11 для GNOME. Основной причиной прекращения поддержки X11 в Fedora является перевод X.Org-сервера в RHEL 9 в категорию устаревших и решение полностью удалить его в будущем значительном выпуске RHEL 10.

Среди факторов, способствующих оставлению только поддержки Wayland, также упоминается появление поддержки Wayland в проприетарных драйверах NVIDIA и выполненная в Fedora 36 замена драйверов fbdev на драйвер simpledrm, корректно работающий с Wayland. Прекращение поддержки сеанса с X11 существенно снизит трудозатраты на сопровождение и высвободит ресурсы, которые можно будет направить на улучшения качества работы современного графического стека.

  1. OpenNews: В Fedora 41 намечено удаление из базовой поставки сеанса X11 для GNOME
  2. OpenNews: В Fedora 40 утверждено прекращение поддержки сеанса KDE на базе X11
  3. OpenNews: В Fedora 40 планируют прекратить поддержу X11 в окружении KDE
  4. OpenNews: В Fedora одобрена поставка в пакете asahi-installer исполняемых файлов для macOS
  5. OpenNews: В Fedora 41 намерены удалить network-scripts и разрешить обновление атомарных редакций без пароля
Обсуждение (179 +1) | Тип: Программы |
·07.06.2024 Уязвимость в PHP, позволяющая выполнить код при работе в режиме CGI (64 +14 )
  В PHP выявлена уязвимость (CVE-2024-4577), позволяющая добиться выполнения своего кода на сервере или просмотра исходного кода PHP-скрипта в случае использования PHP в режиме CGI на платформе Windows (конфигурации с mod_php, php-fpm и FastCGI уязвимости не подвержены). Проблема устранена в выпусках PHP 8.3.8, 8.2.20 и 8.1.29.

Уязвимость является частным случаем исправленной в 2012 году проблемы CVE-2012-1823, добавленной для которой защиты оказалось недостаточно для блокирования атаки на платформе Windows. Метод атаки сводится к возможности подстановки аргумента командной строки при запуске интерпретатора PHP через манипуляцию с параметрами запроса к PHP-скрипту.

В старой уязвимости CVE-2012-1823 для эксплуатации достаточно было указать опции командной строки вместо параметров запроса, например, "http://localhost/index.php?-s" для показа исходного кода скрипта. Новая уязвимость основывается на том, что платформа Windows обеспечивает автоматическое преобразование символов, что позволяет для обхода ранее добавленной защиты указывать символы, присутствующие в некоторых кодировках и заменяемые на символ "-" (например, короткий дефис с шестнадцатеричным кодом "AD" заменяется на обычный дефис с кодом "2D", т.е. для атаки можно использовать запрос вида http://localhost/index.php?%ads).

Уязвимость подтверждена в конфигурациях с локалями для традиционного китайского (cp950), упрощённого китайского (cp936) и японского (cp932) языков, но не исключено её проявление и с другими локалями. Проблема проявляется в конфигурации по умолчанию в наборе XAMPP (Apache + MariaDB + PHP + Perl), а также в любых конфигурациях Apache, в которых php-cgi выставлен в качестве обработчика CGI-скриптов при помощи настройки 'Action cgi-script "/cgi-bin/php-cgi.exe"' или 'Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"', или при непосредственном размещении интерпретатора php в "/cgi-bin" и любых других каталогах, в которых разрешено выполнение CGI-скриптов через директиву ScriptAlias.

Кроме того в обновлениях PHP 8.3.8, 8.2.20 и 8.1.29 устранены ещё три уязвимости:

  • CVE-2024-5458 - возможность обхода фильтра FILTER_VALIDATE_URL, используемого при вызове функции filter_var.
  • CVE-2024-5585 - альтернативный вектор атаки на уязвимость CVE-2024-1874, позволяющий обойти ранее добавленную защиту и осуществить подстановку команд при вызове bat- и cmd-файлов через функцию proc_open на платформе Windows (уязвимость BatBadBut).
  • Подверженность функции openssl_private_decrypt атаке Marvin.

Дополнение: Опубликован пример эксплоита для запуска своего PHP-кода на сервере, для выполнения которого применяется набор параметров "-d allow_url_include=1 -d auto_prepend_file=php://input" и передача кода скрипта в теле POST-запроса:


   POST /test.php?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input HTTP/1.1
   Host: {{host}}
   User-Agent: curl/8.3.0
   Accept: */*
   Content-Length: 23
   Content-Type: application/x-www-form-urlencoded
   Connection: keep-alive

   <?php
   phpinfo();
   ?>

  1. OpenNews: Уязвимость BatBadBut, затрагивающая стандартные библиотеки различных языков программирования
  2. OpenNews: Уязвимость php-fpm, позволяющая удалённо выполнить код на сервере
  3. OpenNews: Уязвимость в PHP, позволяющая обойти ограничения, заданные в php.ini
  4. OpenNews: Локальная root-уязвимость в PHP-FPM
  5. OpenNews: Уязвимость в Glibc, эксплуатируемая через скрипты на PHP
Обсуждение (64 +14 ) | Тип: Проблемы безопасности |
·07.06.2024 В OpenSSH добавлена встроенная защита от атак по подбору паролей (98 +30)
  В кодовую базу OpenSSH добавлена встроенная защита от автоматизированных атак по подбору паролей, в ходе которых боты пытаются угадать пароль пользователя, перебирая различные типовые комбинации. Для блокирования подобных атак в файл конфигурации sshd_config добавлен параметр PerSourcePenalties, позволяющий определить порог блокировки, срабатывающий при большом числе неудачных попыток соединений с одного IP-адреса. Новый механизм защиты войдёт в состав следующего выпуска OpenSSH и будет включён по умолчанию в OpenBSD 7.6.

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

Через параметр PerSourcePenalties задаётся минимальный порог аномальных событий, после превышения которого IP-адрес, для которого зафиксирована подозрительная активность, будет заблокирован. При помощи параметра PerSourceNetBlockSize дополнительно можно определить маску подсети для блокирования всей подсети, к которой принадлежит проблемный IP.

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

  1. OpenNews: Проект OpenSSH разделяет sshd на несколько исполняемых файлов
  2. OpenNews: Релиз OpenSSH 9.7
  3. OpenNews: Terrapin - уязвимость в протоколе SSH, позволяющая снизить защиту соединения
  4. OpenNews: Mayhem - атака, искажающая биты в памяти для обхода аутентификации в sudo и OpenSSH
  5. OpenNews: Представлен SSH3, вариант протокола SSH, использующий HTTP/3
Обсуждение (98 +30) | Тип: К сведению |
·06.06.2024 Началось формирование сборок CentOS Stream 10 (46 –2)
  Разработчики из компании Red Hat приступили к формированию сборок CentOS Stream 10 и создали репозиторий с пакетами, заверенными цифровой подписью. Представленная ветка используется для разработки будущего значительного выпуска Red Hat Enterprise Linux 10. CentOS Stream позволяет раньше получить доступ к возможностям будущей ветки RHEL, но включает ещё не полностью стабилизированные пакеты. Сборки CentOS Stream 10 формируются для архитектур x86_64, Aarch64, ppc64le и s390x в форме установочных iso-файлов и образов для изолированных контейнеров.

В соответствии с новой политикой компании Red Hat репозиторий CentOS Stream является единственным публично доступным источником исходных текстов пакетов к Red Hat Enterprise Linux. CentOS Stream можно рассматривать как upstream-проект для RHEL, выступающий основой для его разработки. При помощи CentOS Stream сторонние участники из сообщества могут принять участие в разработке новой ветки RHEL, контролировать подготовку пакетов для RHEL, предлагать свои изменения и влиять на принимаемые решения.

До создания CentOS Stream в качестве основы для новой ветки RHEL использовался снапшот одного из выпусков Fedora, который дорабатывался и стабилизировался за закрытыми дверями, без возможности контролировать ход разработки и принимаемые решения. Новый процесс разработки подразумевает вынос ранее закрытого этапа подготовки RHEL в CentOS Stream - на основе снапшота Fedora при участии сообщества формируется новая ветка CentOS Stream, после готовности которой RHEL пересобирается на основе CentOS Stream.

  1. OpenNews: Изменения в подготовке промежуточных выпусков Red Hat Enterprise Linux
  2. OpenNews: CentOS Stream станет единственным публичным источником кода пакетов RHEL
  3. OpenNews: Анализ проблем с GPL у бизнес-модели Red Hat
  4. OpenNews: Red Hat ответил на критику изменений в распространении кода пакетов RHEL
  5. OpenNews: Red Hat объясняет трансформацию CentOS желанием сделать более открытой разработку RHEL
Обсуждение (46 –2) | Тип: К сведению |
·06.06.2024 Релиз дистрибутива blendOS 4, поддерживающего пакеты из Arch, Fedora, Debian, CentOS и Ubuntu (37 +8)
  Представлен релиз дистрибутива blendOS 4, использующего контейнерную изоляцию для обеспечения сосуществования в одной системе пакетов из различных дистрибутивов Linux. Помимо пакетов из дистрибутива Arch Linux, который задействован в базовом окружении, и универсальных пакетов в формате Flatpak, предоставляется возможность установки пакетов из Fedora 39, Debian 13 (ветка testing), CentOS Stream и Ubuntu 22.04 (пакеты устанавливаются в основанных на данных дистрибутивах контейнерах). Кроме того, в blendOS предоставляется окружение для установки и запуска Android-приложений из каталогов Google Play и F-Droid. На выбор предоставляются среды рабочего стола GNOME, KDE, Xfce, MATE, Budgie, Cinnamon и LXQt. Размер установочного образа 2.2 ГБ.

Базовое системное окружение не меняется в процессе работы (immutable) и обновляется в атомарном режиме с использованием заменяющих друг друга корневых разделов. В качестве источника получения обновлений используются более новые iso-образы, содержимое которых синхронизируется с базовым окружением при помощи zsync (размер загружаемых данных при обновлении составляет в среднем от 10 до 100 МБ). При появлении новой сборки iso-образа, на её основе в системе формируется вторая корневая ФС, которая при следующей перезагрузке становится рабочей корневой ФС, а старая остаётся для установки следующего обновления.

Для установки дистрибутива используется собственный бэкенд инсталлятора с интерфейсом на основе Jade-GUI из Crystal Linux. Поддерживается создание сценариев для тиражирования одинаковых установок на разных компьютерах - настройки рабочего стола, список развёрнутых контейнеров и перечень установленных в них пакетов могут быть сохранены в YAML-файле, который может быть импортирован на другой системе.

Новый выпуск примечателен переходом на декларативное описание начинки, размещаемое в одном файле "/system.yaml". Пользователь может определить в данном файле необходимые для установки поверх базовой системы пакеты, десктоп-окружения, версии ядра Linux и драйверы, доступные в репозитории Arch Linux. При этом атомарный характер базовой системы сохраняется, а все дополнительные пакеты расширяют его.

В отдельных контейнерах, активируемых через системный конфигуратор или инструментарий командной строки, могут быть установлены пакеты из репозиториев Fedora, Debian, CentOS Stream и Ubuntu. Попытка открытия пакетов в форматах DEB, RPM и APK также приводит к автоматическому созданию контейнера с необходимым для данного пакета дистрибутивом. При установке в разных контейнерах одинаковых приложений решение какой именно вариант приложения будет запущен принимается на основании выставленного приоритета.

Приложения из контейнеров интегрируются с основной системой, используя инструментарий, напоминающий Distrobox (первый выпуск blendOS представлял собой обёртку вокруг Distrobox, но затем она была заменена на свою редакцию инструментария, также использующую для управления контейнерами платформу Podman). Инструментарий выполняет монтирование домашнего каталога пользователя в контейнеры, настраивает доступ к серверу X11 и Wayland для выполнения из контейнера графических приложений, организует вывод звука и производит интеграцию на уровне D-Bus и udev.

Поддержка Android реализована при помощи пакета WayDroid, позволяющего в типовом Linux-дистрибутиве сформировать изолированное окружение для загрузки полного системного образа платформы Android. Запуск Android-приложений поддерживается только в графических окружениях на базе Walyand (GNOME и KDE Plasma).

  1. OpenNews: Доступен дистрибутив blendOS 3, поддерживающий пакеты из других дистрибутивов
  2. OpenNews: Выпуск атомарно обновляемого дистрибутива Endless OS 6.0
  3. OpenNews: Первый стабильный выпуск дистрибутива Vanilla OS
  4. OpenNews: Выпуск атомарно обновляемого дистрибутива carbonOS 2022.3
  5. OpenNews: Выпуск Distrobox 1.7, инструментария для вложенного запуска дистрибутивов
Обсуждение (37 +8) | Тип: Программы |
·06.06.2024 Стабильный выпуск СУБД MariaDB 11.4 (45 +3)
  Опубликован выпуск СУБД MariaDB 11.4.2, который отмечен как первый стабильный релиз ветки 11.4. Ветка MariaDB 11.4 отнесена к категории выпусков с длительным сроком поддержки и будет сопровождаться как минимум 5 лет. Одновременно доступен выпуск MariaDB 11.5.1, имеющий статус кандидата в релизы, и сформирована ветка 11.6, в которой будет развиваться новая функциональность.

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

Среди изменений в ветке MariaDB 11.4 по сравнению с прошлым LTS-выпуском 10.11:

  • Значительно улучшен оптимизатор запросов, переведённый на новую весовую модель (cost model), обеспечивающую более точное предсказание весов каждого плана выполнения запроса. Ранее используемая модель хорошо подходила для нахождения оптимального индекса, но имела проблемы с применимостью операций сканирования таблицы, сканирования индекса или выборки по диапазонам. В новой модели данный недостаток устранён за счёт изменения базового веса операций, связанных с движком хранения. Например, для операций с хранилищем, таких как последовательное сканирование записей, теперь предполагается, что данные хранятся на быстром SSD-накопителе. Дополнительно проведён тюнинг и других весовых параметров оптимизатора, что, например, позволило реализовать возможность использования индексов для операций "ORDER BY/GROUP BY" в подзапросах и ускорить работу с очень маленькими таблицами.
  • Значительно ускорена обработка подзапрсов в выражениях UPDATE и DELETE, ограниченных одной таблицей.
  • Обеспечено использование индексов в запросах, в которых функции DATE и YEAR сравниваются с константой, например, "SELECT * FROM t2 WHERE YEAR(a) = 2024" или "SELECT * FROM t2 WHERE DATE(a) <= '2024-06-06'", а также в запросах с функцией UCASE(varchar_col). Для оптимизации функций MIN() и MAX() реализована возможность использования индексов, сгруппированных в режиме "DESC".
  • На сервере и клиенте по умолчанию включено обязательное SSL-шифрование обмена данными. Поддержка шифрования не требует настройки, так как задействован самоподписанный сертификат. Клиент может верифицировать самоподписанный серверный сертификат при использовании настройки mysql_native_password или аутентификации на основе ed25519. В клиент также добавлены опции "--tls-fp" и "--tls-fplist" для ручной оценки сертификата по его наглядному слепку. Для отключения шифрования и проверки сертификата предусмотрены опции "--disable-ssl" и "--disable-ssl-verify-server-cert".
  • В операции "ALTER TABLE … EXCHANGE PARTITION" и "ALTER TABLE … CONVERT TABLE … TO" добавлена поддержка выражений "WITH VALIDATION" и "WITHOUT VALIDATION".
  • Добавлено новое системное представление "sys.privileges_by_table_by_level", показывающее привилегии текущего пользователя в привязке к таблицам.
  • Добавлена переменная redirect_url, реализующая возможность перенаправления клиента на другой сервер (например, для балансировки нагрузки или в процессе миграции инфраструктуры).
  • Добавлена поддержка приведения типов INET4 к типам INET6, что позволяет, например, сравнивать значения INET4 и INET6, а также сохранять значения INET4 в столбцах с типом INET6.
  • Добавлена новая привилегия "SHOW CREATE ROUTINE", позволяющая просматривать определения чужих подпрограмм.
  • В движке InnoDB реализована переменная "innodb_truncate_temporary_tablespace_now", включающая возможность усечения файлов (shrink) временных таблиц без перезапуска. При запуске обеспечено возвращение места на диске, которое перестало использоваться в системных таблицах.
  • Добавлены новые JSON-функции JSON_OBJECT_FILTER_KEYS, JSON_OBJECT_TO_ARRAY, JSON_SCHEMA_VALID и JSON_ARRAY_INTERSEC.
  • В движок хранения Spider, реализующий систему шардинга, позволяющую разносить большие таблицы на несколько серверов, добавлена поддержка определения параметров в специальной таблице "options", вместо их кодирования в строках COMMENT/CONNECTION.
  • Добавлена функция KDF для генерации ключей шифрования для AES_ENCRYPT.
  • Добавлена функция FORMAT_PICO_TIME для наглядного представления времени, заданного с пикосекундной точностью.
  • Повышена скорость записи лога за счёт выноса операции вычисления контрольных сумм за пределы кода, для которого выставляется глобальная блокировка.
  • Добавлена системная переменная max_binlog_total_size, определяющая размер, при достижении которого бинарный лог будет очищен. Также добавлена переменная slave_connections_needed_for_purge, приостанавливающая очистку бинарного лога до достижения определённого числа соединений от slave-серверов.
  • Добавлен новый режим формирования содержимого бинарного лога, включаемый через переменную binlog_row_image, - FULL_NODUP, который отличается от режима FULL исключением дубликатов данных (включаются только столбцы, изменившиеся при выполнении операции UPDATE). Новый режим также поддерживается в команде "mariadb-binlog --flashback".
  • В утилиту mariadb-dump добавлена опция "-j" ("--parallel") для установки числа параллельно выполняемых работ по сбросу дампов таблиц. В утилиту mariadb-import добавлена опций "--use-threads" с аналогичным назначением.
  • Добавлена возможность использования пакетов (CREATE PACKAGE) вне режима совместимости с ORACLE.
  • В функциях AES_ENCRYPT() и AES_DECRYPT() добавлена поддержка указания вектора инициализации и выбора алгоритма шифрования.
  • В утилите mariadb-dump реализовано добавление команды "sandbox" в начало каждого файла с дампом БД. Команда "sandbox" включает режим изоляции, в котором до завершения сеанса с СУБД отключается обработка команд интерактивной оболочки.

  1. OpenNews: Доступна СУБД MySQL 8.4.0 LTS
  2. OpenNews: Стабильный релиз СУБД MySQL 8.0
  3. OpenNews: MariaDB существенно меняет график выпусков
  4. OpenNews: Представлена новая значительная ветка СУБД MariaDB 11
  5. OpenNews: Стабильный выпуск СУБД MariaDB 10.11
Обсуждение (45 +3) | Тип: Программы |
·06.06.2024 Уязвимость в эталонных реализациях кодеков AV1 и VP8/VP9 (113 +19)
  В развиваемой альянсом Open Media (AOMedia) библиотеке libaom, предоставляющей эталонную реализацию формата кодирования видео AV1, выявлена критическая уязвимость (CVE-2024-5171), приводящая к целочисленному переполнению и записи в область вне границ буфера при обработке слишком больших значений в некоторых параметрах. Аналогичная уязвимость (CVE-2024-5197) выявлена в библиотеке libvpx с реализацией кодеков VP8 и VP9. Проблемы устранены в обновлениях libaom 3.9.0 и libvpx 1.14.1. В дистрибутивах уязвимости пока остаются неисправленными (Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD).

Уязвимости в libaom присвоен максимальный уровень опасности (10 из 10), подразумевающий возможность эксплуатации при обработке в приложениях, использующих данную библиотеку, специально оформленного контента. В libvpx уровень опасности выставлен в 5.9 из 10, что соответствует ограниченным условиям эксплуатации. Основная опасность уязвимостей в libaom и libvpx вызвана тем, что эти библиотеки используется в web-браузерах, медиапроигрывателях и сервисах, осуществляющих перекодирование видео.

Уязвимость проявляется в libaom при вызове функций aom_img_alloc(), aom_img_wrap() или om_img_alloc_with_border() с большими значениями в параметрах d_w, d_h и align, которые приводят к целочисленному переполнению при расчёте смещений и размеров буферов. Аналогичное переполнение возникает в функциях vpx_img_alloc() и vpx_img_wrap(). Указанные функции используется при кодировании видео.

Наибольшую опасность уязвимость представляет из-за потенциально возможности атаки на браузеры, в которых прошлые похожие уязвимости могли быть эксплуатированы через открытие в браузере специально оформленной страницы, вызывающей JavaScript-функции для кодирования видео, или через манипуляции с WebRTC. По заявлению представителей Google уязвимость не затрагивает движок Chromium, так как в функции aom_img_alloc(), aom_img_wrap(), vpx_img_alloc() и vpx_img_wrap() передавались только проверенные значения аргументов d_w и d_h. В Firefox для декодирования AV1 используется библиотека dav1d, но для кодирования применяется libaom. Подвержен ли Firefox проблеме пока не ясно, так как информация о том, как уязвимость затрагивает конкретные продукты, пока не опубликована.

  1. OpenNews: 0-day уязвимость в Chrome и libvpx, затрагивающая кодировщик видео VP8
  2. OpenNews: Увидел свет первый выпуск открытого видеокодека нового поколения AV1
  3. OpenNews: Разработчики кодека AV1 представили формат IAMF для объёмного звука
  4. OpenNews: Критическая 0-day уязвимость в Chrome и libwebp, эксплуатируемая через изображения WebP
  5. OpenNews: Уязвимость в libcue, приводящая к выполнению кода при загрузке файлов в GNOME
Обсуждение (113 +19) | Тип: Проблемы безопасности |
·05.06.2024 Представлен новый видеодрайвер для чипа Apple M1, поддерживающий Vulkan 1.3 (103 +19)
  Алиса Розенцвейг (Alyssa Rosenzweig) из компании Collabora, развивающая OpenGL-драйверы Panfrost для GPU Mali и Asahi для GPU Apple AGX, представила новый Vulkan-драйвер Honeykrisp для графического процессора, поставляемого в чипах Apple M1. Несмотря на то, что драйвер разрабатывается всего месяц, он уже признан консорциумом Khronos, как полностью реализующий спецификацию Vulkan 1.3 на оборудовании Apple c чипом M1. Honeykrisp стал первым драйвером для чипов Apple, имеющим сертифицированную поддержку графического API Vulkan.

Высокая скорость разработки нового драйвера объясняется использованием в качестве основы Vulkan-драйвера NVK, развиваемого для GPU NVIDIA, который был портирован для GPU Apple, с использованием наработок из OpenGL-драйвера Asahi. При создании драйвера NVK его разработчики изначально проектировали его с оглядкой на создание нового эталонного Vulkan-драйвера для Mesa, код которого можно заимствовать при создании других драйверов.

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

Что касается недостающей функциональности, то драйвер планируется довести до состояния, поддерживающего все дополнительные расширения, такие как VK_EXT_transform_feedback, необходимые для реализации поверх него графического API Direct3D, используя прослойки DXVK и vkd3d-proton. Поддержка DXVK и vkd3d-proton позволит использовать драйвер Honeykrisp в Asahi Linux на оборудовании с ARM-чипами Apple для запуска Windows-игр при помощи Wine и эмулятора архитектуры x86.

  1. OpenNews: NVK и Zink существенно улучшили ситуацию с открытыми драйверами для GPU NVIDIA
  2. OpenNews: В Mesa принят OpenGL-драйвер с начальной поддержкой чипов Apple M1
  3. OpenNews: Релиз Mesa 24.1, свободной реализации OpenGL и Vulkan
  4. OpenNews: Опубликован графический стандарт Vulkan 1.3
  5. OpenNews: В открытом драйвере Asahi сертифицирована поддержка OpenGL 4.6 для чипов Apple M1 и M2
Обсуждение (103 +19) | Тип: К сведению |
·05.06.2024 Google опубликовал GWPSan, инструмент для выявления ошибок на стадии выполнения приложений (18 +13)
  Компания Google опубликовала исходные тексты инструментария GWPSan, предназначенного для выявления ошибок на этапе выполнения приложений, собранных для архитектур x86-64 и ARM64. GWPSan собирается в виде разделяемой библиотеки, которая связывается при запуске приложения при помощи LD_PRELOAD и использует для анализа работы программы доступные в ядре Linux механизмы остановки (PERF_TYPE_BREAKPOINT) и сэмплинга процессов. Код написан на языке С++ и распространяется под лицензией Apache 2.0.

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

В настоящее время доступно три детектора:

  • UAR (Use-after-return) - выявляет ошибки, вызванные использованием объекта в стеке после выхода из функции, в которой этот объект был определён. Защита организована через перехват точек входа и выхода для функции - при входе осуществляется подмена стека на копию для использования во время выполнения функции, а при выходе возвращается старое состояние стека.
  • TSan (Thread Sanitizer) - определяет состояния гонки между потоками (Data-race), возникающее когда разные одновременно выполняемые потоки могут читать или изменять общие области памяти, не используя при этом примитивы для синхронизации работы. Защита построена на использовании аппаратных точек останова, привязываемых к совместным областям памяти. Срабатывающий обработчик на небольшой промежуток времени приостанавливает выполнение потока при обращении к памяти и во время этой приостановки проверяет не было ли срабатывания точки останова для другого потока.
  • LMSan (Lightweight Memory Sanitizer) - определяет использование неинициализированных данных в памяти. Детектор отмечен как экспериментальный и не рекомендованный для использования.

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

  1. OpenNews: Проект Openwall подготовил модуль для защиты от эксплуатации уязвимостей в ядре Linux
  2. OpenNews: Выпуск cppcheck 2.12, статического анализатора кода для языков C++ и С
  3. OpenNews: Открыт код статического анализатора Code Climate
  4. OpenNews: Facebook открыл RacerD, статический анализатор для многопоточного кода на Java
  5. OpenNews: Релиз свободного статического анализатора кода frama-clang 0.0.5
Обсуждение (18 +13) | Тип: Программы |
·04.06.2024 Выявлена возможность управления модемами миллионов абонентов ISP Cox без аутентификации (44 +26)
  Клиент Cox Communications, третьего по величине провайдера кабельного телевидения в США и одного из крупнейших операторов широкополосного доступа, насчитывающего 6.5 млн абонентов, опубликовал результаты экспериментов с используемым провайдером внутренним Web API, доступным для внешних запросов и применяемым, среди прочего, для доступа к абонентским модемам и базе пользователей сервиса Cox Business. Оказалось, что, зная лишь MAC-адрес абонентского устройства, можно получить полный контроль над модемом, позволяющий изменять настройки и выполнять любые команды на модеме. По сути, любой атакующий мог получить доступ к модему, аналогичный инженерному доступу, который получает служба поддержки оператора связи. Компания Cox была уведомлена о проблеме 3 апреля и устранила уязвимость на следующий день.

Примечательно, что MAC-адрес абонентского устройства можно было узнать через обращение к публичному Web API без прохождения аутентификации, используя функцию поиска абонентов, например, через выборку по email или по номеру учётной записи (перебирая номера можно последовательно выгрузить данные о клиентах). Помимо MAC-адреса выводились и другие сведения об абоненте, включая адрес, телефон, ФИО и email. Вся информация была доступна для запросов из внешней сети без аутентификации. При этом информацию можно было не только получить, но и изменить.

Всего публично доступный API насчитывал более 700 обработчиков, среди которых многие реализовывали операции по администрированию. Обращение к API осуществлялось через хост myaccount-business.cox.com, связанный с сервисом Xox Business, который среди прочего позволяет пользователям удалённо управлять устройствами, настраивать межсетевой экран и выполнять мониторинг трафика. Непосредственно управление модемом выполнялось провайдерским сервисом через протокол TR-069 (принимает соединения через сетевой порт 7547), предназначенный для удалённой диагностики и управления оборудованием.

Для верификации передачи команд и настроек на модемы пользователей использовался зашифрованный параметр, но функции для шифрования были найдены в одном из скриптов на языке JavaScript, отдаваемых сайтом webcdn-business.cox.com. Ключ для шифрования удалось определить установив в JavaScript-отладчике браузера точку останова на эти функции во время регистрации на сайте myaccount-business.cox.com. Ключ для шифрования формировался с использованием MAC-адреса, идентификатора устройства и номера учётной записи пользователя, а также нескольких вспомогательных параметров, таких как модель устройства и вид доступа.

Сценарий атаки сводится к поиску жертвы через публичный Web API, используя запрос по имени, номеру телефона, email или номеру учётной записи. Далее атакующий обращается к Web API для выгрузки полного набора персональных данных абонента, используя UUID, полученный при поиске на первом этапе. Используя MAC-адрес модема, указанный среди данных об абоненте, атакующий мог посмотреть список подключённых к модему устройств, поменять любые параметры на модеме, запросить пароль, используемый для подключения к Wi-Fi, и выполнить любые команды на устройстве, что можно применить, например, для организации анализа или перенаправления трафика пользователя.

  1. OpenNews: Атака на провайдера, выведшая из строя 659 тысяч домашних маршрутизаторов
  2. OpenNews: Фишинг-атака на платёжную систему Trezor, вероятно проведённая с использованием BGP
  3. OpenNews: Атака на регистраторов доменов привела к перенаправлению крупнейших сайтов
  4. OpenNews: Интернет-регистратор APNIC по ошибке опубликовал хэши паролей Whois-сервиса
  5. OpenNews: Утечка хэшей паролей Whois-сервиса интернет-регистратора APNIC
Обсуждение (44 +26) | Тип: Проблемы безопасности |
·04.06.2024 Первый стабильный релиз СУБД DuckDB (27 +20)
  После шести лет разработки представлен выпуск СУБД DuckDB 1.0, позиционируемой как вариант SQLite для аналитических запросов. DuckDB сочетает такие свойства SQLite, как компактность, возможность подключения в форме встраиваемой библиотеки, хранение БД в одном файле и удобный CLI-интерфейс, со средствами и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, например, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц. Код проекта написан на языке C++ и распространяется под лицензией MIT.

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

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

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

  1. OpenNews: Выпуск СУБД SQLite 3.46
  2. OpenNews: Проект Redka развивает реализацию протокола и API Redis поверх SQLite
  3. OpenNews: Проекты CBS и sqld развивают облачный и серверный варианты SQLite
  4. OpenNews: Опубликован проект Litestream, реализующий систему репликации для SQLite
  5. OpenNews: Проект libSQL начал развитие форка СУБД SQLite
Обсуждение (27 +20) | Тип: Программы |
Следующая страница (раньше) >>



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

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