The OpenNET Project / Index page

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

·11.10.2025 MicroPythonOS - ОС с графическим интерфейсом для микроконтроллеров (9 +3)
  Опубликован выпуск проекта MicroPythonOS 0.0.11, разрабатывающего операционную систему для микроконтроллеров, таких как ESP32, написанную с использованием инструментария MicroPython. Операционная система оснащена графическим интерфейсом, развиваемым с оглядкой на Android и iOS, и поддерживающим управления через сенсорные экраны. Из областей применения MicroPythonOS упоминаются устройства интернета вещей (IoT), системы управления домашней автоматизацией, интерактивные панели, роботы и умные носимые устройства с управлением экранными жестами. Проект также может применяться для быстрой разработки прототипов новых устройств. Код написан на языках Си и Python и распространяется под лицензий MIT.

Архитектура MicroPythonOS основана на использовании минимальной базовой системы, отвечающей за инициализацию и взаимодействие с аппаратным обеспечением, монтирование накопителей, многозадачность и интерфейс пользователя. Вся остальная функциональность, такая как настройка Wi-Fi и установка обновлений, вынесена в приложения. Для приложений предлагается использовать язык MicroPython и подмножество библиотек Python.

Ключевые особенности MicroPythonOS:

  • Возможность быстрого написания приложений и драйверов с использованием инструментария MicroPython (редакция Python 3 для микроконтроллеров, поставляемая c урезанным набором библиотек).
  • Поддержка запуска как на платах с микроконтроллерами ESP32, так и на обычных ПК или платах с Linux, таких как Raspberry Pi c Raspbian.
  • Графический интерфейс с управлением экранными жестами.
  • Набор встроенных приложений (меню приложений, конфигуратор, виджет для настройки Wi-Fi, программа установки и обновления приложений).
  • Поддержка установки внешних приложений, распространяемых через централизованный каталог App Store (например, просмотрщик изображений и программа для работы с камерой).
  • Установка и доставка обновлений по сети в режиме OTA (over-the-air).
  • Поддержка Wi-Fi, Blutooth, датчиков IMU (Inertial Measurement Unit) и камер.
  • Оптимизация системы для выполнения на устройствах с ограниченными ресурсами. Очень быстрая загрузка.

  1. OpenNews: Реализована загрузка ядра Linux на плате ESP32
  2. OpenNews: Проект Tilck развивает упрощённое Linux-совместимое ядро
  3. OpenNews: Доступен PikaScript 1.8, вариант языка Python для микроконтроллеров
  4. OpenNews: Выпуск Mongoose OS 2.20, платформы для IoT-устройств
  5. OpenNews: Обеспечена возможность запуска MicroPython в web-браузере
Обсуждение (9 +3) | Тип: Программы |
·10.10.2025 Доступен язык программирования OCaml 5.4.0 (21 +5)
  Опубликован релиз языка программирования OCaml 5.4.0, промышленного функционального языка программирования с акцентом на выразительность и безопасность разрабатываемого программного обеспечения. В OCaml сочетается функциональное ядро, императивные возможности, объектная система и модульная система. Код инструментария для языка OCaml распространяется под лицензией LGPL.

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

Основные изменения и улучшения в OCaml 5.4.0:

  • Именованные кортежи (Labelled tuples), позволяющие давать имена членам кортежа и затем использовать эти имена для обращения к ним.
    
           let point = ~x:1, ~y:2
           (* val point : x:int * y:int = (~x:1, ~y:2)  *)
    
           let ( * ) (x,~dx) (y, ~dx:dy) =
             x*.y, ~dx:(x *. dy +. y *. dx )
    
           (* val ( * ) : float * dx:float -> float * dx:float -> float * dx:float *)
    
           let mult_dx x y =
             let ~dx, .. = x * y in
             dx
    
  • Неизменяемые массивы и единый синтаксис для "_ array", "_ iarray" и "floatarray".
    
           [|1; 2; 3|]
    
           ([|1; 2; 3|] : _ iarray)
    
           ([|1.; 2.; 3.|] : floatarray)
    
  • Встроенный атрибут "atomic" для полей записей, требующий использования атомарных операций для работы над ними.
    
           type 'a mpsc_list = { mutable head:'a list; mutable tail: 'a list [@atomic] }
    
           let rec push t x =
             let before = Atomic.Loc.get [%atomic.loc t.tail] in
             let after = x :: before in
             if not (Atomic.Loc.compare_and_set [%atomic.loc t.tail] before after) then
               push t x
             ...
    
  • Новые модули в стандартной библиотеке: Pair, Pqueue, Repr, Iarray.
    • Модуль Pair для работы с парами;
      
                 let ones = Pair.map_fst succ (0,1)
      
    • Модуль Pqueue - очередь с приоритетом;
           
                 module Int_pqueue = Pqueue.MakeMin(Int)
                 let q = Int_pqueue.of_list [4;0;5;7]
                 let some_zero = Int_pqueue.pop_min q
      
    • Модуль Repr содержит функции физического и структурного сравнения;
      
                 let f = Repr.phys_equal (ref 0) (ref 0)
      
    • Модуль Iarray для работы с неизменяемыми массивами;
      
                 let a = Iarray.init 10 Fun.id
                 let b = Iarray.map succ a
      
  • Восстановлен режим “очистки памяти при выходе”. Этот режим позволяет многократно запускать среду выполнения OCaml в программах на языке C, которые используют библиотеки OCaml. Он также полезен для уменьшения шума при отслеживании утечек памяти в коде C, выполняемого в среде OCaml. Чтобы избежать проблем с "cancellation", все домены объединяются перед выходом из среды выполнения OCaml.
  • Новый раздел в документации по профилированию OCaml-программ в среде Linux и MacOS.
  • Множественные улучшению среды выполнения, кодогенерации, около тридцати новых функций в стандартной библиотеке, почти дюжина улучшенных сообщений об ошибках, более пятидесяти исправлений ошибок.

  1. OpenNews: Выпуск языка программирования OCaml 4.14.2
Обсуждение (21 +5) | Автор: ocamlportal.ru | Тип: Программы |
·10.10.2025 Выпуск языка программирования Julia 1.12 (10 +3)
  Опубликован релиз языка программирования Julia 1.12, сочетающего такие качества как высокая производительность, поддержка динамической типизации и встроенные средства для параллельного программирования. Синтаксис Julia близок к MATLAB с заимствованием некоторых элементов из Ruby и Lisp. Метод манипуляции строками напоминает Perl. Код проекта распространяется под лицензией MIT.

Ключевые особенности языка:

  • Высокая производительность: одной из ключевых целей проекта является достижение производительности близкой к программам на языке Си. Компилятор Julia основан на наработках проекта LLVM и генерирует эффективный нативный машинный код для многих целевых платформ;
  • Поддержка различных парадигм программирования, включая элементы объектно-ориентированного и функционального программирования. Стандартная библиотека предоставляет в том числе функции для асинхронного ввода/вывода, управления процессами, ведения логов, профилирования и управления пакетами;
  • Динамическая типизация: язык не требует явного определения типов для переменных по аналогии со скриптовыми языками программирования. Поддерживается интерактивный режим работы;
  • Опциональная возможность явного указания типов;
  • Синтаксис, превосходно подходящий для численных вычислений, научных расчётов, систем машинного обучения и визуализации данных. Поддержка многих числовых типов данных и средств для распараллеливания вычислений.
  • Возможность прямого вызова функций из библиотек на языке Си без дополнительных прослоек.



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

  • Новые возможности языка
    • Экспериментальный параметр "--trim", позволяющий создавать более компактные бинарные файлы за счёт удаления кода, который не достижим из указанных точек входа. Точки входа можно помечать с помощью "Base.Experimental.entrypoint". С этой опцией может работать не весь код.
    • Переопределение констант теперь чётко определено и следует семантике "world age". Допустимы дополнительные переопределения (например, типов).
    • В функцию "names" добавлен новый параметр "usings::Bool", заставляющий функцию вернуть все имена, видимые через "using".
    • Семейство макросов "@atomic" теперь поддерживает синтаксис присваивания ссылок, например: "@atomic :monotonic v[3] += 4", который атомарно изменяет "v[3]" с семантикой монотонного упорядочения. Поддерживаемый синтаксис включает:
      • атомарное чтение ("x = @atomic v[3]"),
      • атомарное присваивание ("@atomic v[3] = 4"),
      • атомарное изменение ("@atomic v[3] += 2"),
      • атомарное однократное присваивание ("@atomiconce v[3] = 2"),
      • атомарный обмен ("x = @atomicswap v[3] = 2"),
      • атомарную замену ("x = @atomicreplace v[3] 2=>5").
    • Новый параметр "--task-metrics=yes", включающий сбор информации о времени выполнения каждой задачи, который можно включать/выключать и во время работы через "Base.Experimental.task_metrics(::Bool)". Доступные метрики:
      • фактическое время выполнения задачи, включая компиляцию и сбор мусора ("Base.Experimental.task_running_time_ns"),
      • время от момента, когда задача начала выполняться до завершения("Base.Experimental.task_wall_time_ns").
    • Поддержка Unicode 16.
    • "Threads.@spawn" теперь принимает аргумент ":samepool" для указания того же пула потоков, что и вызывающий код. "Threads.@spawn :samepool foo()" — сокращение для "Threads.@spawn Threads.threadpool() foo()".
    • Макрос "@ccall" теперь может принимать аргумент "gc_safe". Если он равен true, то во время вызова "ccall" рантайм может осуществлять сборку мусора параллельно.
  • Изменения языка
    • При замене метода эквивалентным по сигнатуре, существующий метод не удаляется. Вместо этого новый метод становится приоритетным. Если новый метод будет удалён, старый метод снова начнёт работать. Это полезно, например, в фреймворках тестирования с подменой (SparseArrays, Pluto, Mocking и др.), так как не нужно явно восстанавливать старый метод. В настоящее время для этой ситуации требуется повторная компиляция, но возможно в будущем удастся переиспользовать старые результаты.
    • Развертывание макросов больше не будет сразу рекурсивно входить в выражения "Expr(:toplevel)" из макросов. Вместо этого развёртывание ":toplevel" будет отложено до времени выполнения. Это позволяет более поздним выражениям в том же ":toplevel" использовать макросы, определённые ранее.
    • Тривиальные бесконечные циклы (такие как "while true; end") больше не считаются неопределённым поведением. Бесконечные циклы, в которых что-то происходит (например, с побочными эффектами или sleep), никогда не были и не являются неопределённым поведением.
    • Одновременная пометка идентификатора как "public" и "export" теперь является ошибкой.
    • Ошибки во время выполнения "getfield" теперь порождают новый тип исключений "FieldError" вместо общего "ErrorException".
    • Макросы в позиции объявления функций теперь не требуют круглых скобок. Например, допустимо "function @main(args) ... end", тогда как ранее требовалось "function (@main)(args) ... end".
    • Вызов "using" по имени пакета внутри самого пакета (особенно актуально для вложенных модулей) теперь явно использует этот пакет без просмотра Manifest и окружения, так же, как "..Name". Это лучше соответствует ожидаемому поведению.
  • Улучшения компилятора/рантайма
    • Сгенерированный LLVM промежуточный код (IR) теперь использует типы указателей вместо передачи указателей в форме целых чисел. Это касается "llvmcall": встроенный LLVM IR следует обновить, заменив "i32"/"i64" на "i8*" или "ptr" и убрав ненужные конверсии "ptrtoint"/"inttoptr". Для совместимости IR с целочисленными указателями всё ещё поддерживается, но выдаёт предупреждение.
  • Изменения параметров командной строки
    • Флаг "-m/--module" можно передать для запуска функции "main" внутри пакета с набором аргументов. Эта функция должна быть объявлена через "@main", указывая, что это точка входа.
    • Включение/отключение цветового вывода в Julia теперь можно контролировать с помощью переменных окружения "NO_COLOR" и "FORCE_COLOR". Эти переменные также учитываются системой сборки Julia.
    • "--project=@temp" запускает Julia с временным окружением.
    • Новый параметр "--trace-compile-timing" выводит время компиляции каждого метода, который выводится "--trace-compile", в миллисекундах.
    • "--trace-compile" теперь выводит перекомпилированные методы жёлтым цветом или добавляет комментарий, если цвет недоступен.
    • Новый параметр "--trace-dispatch" выводит методы, которые динамически распределяются.
  • Изменения многопоточности
    • Julia теперь по умолчанию использует 1 «интерактивный» поток, в дополнение к 1 основному «рабочему» потоку, т.е. "-t1,1". Это означает, что основная задача и REPL (в интерактивном режиме), которые оба работают в потоке 1, теперь выполняются в интерактивном пуле. Цикл ввода-вывода libuv тоже работает в потоке 1, что обеспечивает эффективное использование рабочего пула, используемого "Threads.@spawn". Запрос ровно 1 потока ("-t1"/"JULIA_NUM_THREADS=1") или 0 интерактивных потоков отключает интерактивный поток: "-t1,0", "JULIA_NUM_THREADS=1,0" или "-tauto,0". Запрос более 1 потока включает интерактивный поток; например, "-t2" эквивалентно "-t2,1". Напоминаем: буферы не следует привязывать к "threadid()".
    • Определены новые типы для шаблона кода, который должен выполняться один раз на процесс — тип "OncePerProcess{T}" позволяет определить функцию, которая выполнится ровно один раз, когда её впервые вызовут, а затем будет всегда возвращать одно и то же значение типа "T" при последующих вызовах. Также существуют типы "OncePerThread{T}" и "OncePerTask{T}" для аналогичного использования с потоками или задачами.
  • Изменения системы сборки
    • Добавлены новые файлы Makefile для сборки Julia и LLVM с использованием BOLT (Binary Optimization and Layout Tool). См. "contrib/bolt" и "contrib/pgo-lto-bolt".
  • Новые библиотечные функции
    • "logrange(start, stop; length)" создаёт диапазон с постоянным коэффициентом (ratio), а не постоянным шагом.
    • Новая функция "isfull(c::Channel)" проверяет, будет ли блокироваться "put!(c, some_value)".
    • "waitany(tasks; throw=false)" и "waitall(tasks; failfast=false, throw=false)" ждёт завершения нескольких задач одновременно.
    • "uuid7()" создаёт UUID версии 7, соответствующий RFC 9562.
    • "insertdims(array; dims)" вставляет одноэлементные размерности в массив — операция, обратная "dropdims".
    • Новый тип "Fix" обобщает "Fix1/Fix2" для фиксации одного аргумента.
    • "Sys.detectwsl()" проверяет, выполняется ли Julia внутри WSL в runtime.
  • Новые возможности библиотек
    • "escape_string" принимает дополнительные параметры "ascii=true" (для экранирования всех не-ASCII символов) и "fullhex=true" (для использования полного 4/8-значного hex-формата в u/U-экранировке, например для совместимости с C).
    • "tempname" теперь может принимать строку суффикса, чтобы имя файла включало этот суффикс и он учитывался при уникальности.
    • Объекты "RegexMatch" теперь можно использовать для создания "NamedTuple" и "Dict".
    • "Lockable" теперь экспортируется.
    • "Base.require_one_based_indexing" и "Base.has_offset_axes" теперь публичные.
    • Добавлены новые функции "ltruncate", "rtruncate" и "ctruncate" для усечения строк до ширины текста, учитывая ширину символов.
    • Функция "isless" (а значит, и "cmp", сортировка и т.д.) теперь поддерживается для нулемерных "AbstractArray".
    • "invoke" теперь позволяет передавать "Method" вместо сигнатуры типа.
    • "invoke" теперь принимает "CodeInstance" вместо типа, что может ускорить некоторые рабочие процессы плагинов компилятора.
    • "Timer(f, ...)" теперь наследует "липкость" (stickiness) родительской задачи при создании задач таймера, что можно переопределить новым аргументом "spawn". Это решает проблему, когда липкие порождённые задачи ("@async") делали родителя липким.
    • "Timer" теперь имеет читаемые свойства "timeout" и "interval", а также более описательный метод "show".
    • "sort" теперь поддерживает кортежи "NTuple".
    • "map!(f, A)" теперь сохраняет результаты в "A", как "map!(f, A, A)" или "A .= f.(A)".
    • "setprecision" с аргументом-функцией (обычно через блок "do") теперь потокобезопасен. Другие формы следует избегать, и типы должны перейти к реализации, использующей "ScopedValue".
  • Изменения стандартной библиотеки
    • "gcdx(0, 0)" теперь возвращает "(0, 0, 0)" вместо "(0, 1, 0)".
    • "fd" возвращает "RawFD" вместо "Int".
    • Пакет JuliaSyntaxHighlighting
      • Новый стандартный пакет для применения подсветки синтаксиса к коду Julia, использующий "JuliaSyntax" и "StyledStrings" для реализации функции "highlight", которая создаёт "AnnotatedString" с применённой подсветкой.
    • Пакет LinearAlgebra.
      • "rank" теперь может принимать матрицу "QRPivoted" для оценки ранга через QR-факторизацию.
      • Добавлен ключевой параметр "alg" для "eigen", "eigen!", "eigvals" и "eigvals!" для типов самосопряжённых матриц (типовое объединение "RealHermSymComplexHerm"), позволяющий переключаться между различными алгоритмами извлечения собственных значений.
      • Добавлена общая версия неблокированного разложения Холецкого с выборкой поворотов (вызывается через "cholesky[!](A, RowMaximum())").
      • Количество потоков BLAS по умолчанию теперь учитывает привязку процессов (process affinity), а не просто количество логических потоков системы.
      • Добавлена функция "zeroslike", которая возвращает нулевые элементы для матриц с ленточным хранением. Пользовательские типы массивов могут специализировать эту функцию для правильного результата.
      • Перемножение матриц "A * B" теперь вызывает "matprod_dest(A, B, T::Type)" для генерации приемника. Эта функция теперь публичная.
      • Функция "haszero(T::Type)" используется для проверки, имеет ли тип "T" уникальный нулевой элемент, определённый как "zero(T)". Теперь она публичная.
      • Добавлена функция "diagview", возвращающая представление (view) на конкретную диагональ матрицы "AbstractMatrix".
    • Пакет Profile
      • "Profile.take_heap_snapshot" теперь принимает новый параметр "redact_data::Bool", по умолчанию "true". Если разрешено, то содержимое объектов Julia (например, строк) не включается в снимок памяти.
      • "Profile.print()" теперь окрашивает модули Base/Core/Package так же, как это делается в трассировках стека, а также пути (даже обрезанные) теперь кликабельны в терминалах, которые поддерживают ссылки URI и позволяют открыть указанный файл и строку в редакторе, заданном "JULIA_EDITOR".
    • REPL
      • Используя новую возможность "usings=true" в функции "names()", автодополнение в REPL может дополнять имена, видимые через "using".
      • Автодополнение REPL теперь может завершать строки вида "[import|using] Mod: xxx|", например, завершать "using Base.Experimental: @op" до "using Base.Experimental: @opaque".
      • REPL теперь выдаёт предупреждение, если имя обращается через модуль, который его не определяет (и не имеет подмодуля, который его определяет), и имя не является публичным в этом модуле. Например, "map" определён в Base, и выполнение "LinearAlgebra.map" в REPL теперь выдаст предупреждение при первом таком обращении.
      • При выводе результата ввода в REPL вывод теперь обрезается до 20 KiB. Это не влияет на ручные вызовы "show", "print" и т.д.
      • Автодополнение по символу "\" теперь выводит соответствующий символ или эмоджи рядом с каждым соответствующим кодовым словом.
    • Пакет Test
      • Если набор тестов "DefaultTestSet" завершается с ошибкой, на экран выводится генератор случайных чисел (RNG) этого набора, чтобы помочь воспроизвести стохастическую ошибку, зависящую только от состояния RNG. Также можно задать RNG для набора тестов, передав параметр "rng" в макрос "@testset":
        
          julia
          using Test, Random
          @testset rng=Xoshiro(0x2e026445595ed28e, 0x07bb81ac4c54926d, 0x83d7d70843e8bad6, 0xdbef927d150af80b, 0xdbf91ddf2534f850) begin
              @test rand() == 0.559472630416976
          end
        
    • Пакет InteractiveUtils
      • Новые макросы "@trace_compile" и "@trace_dispatch" для выполнения выражений с параметрами "--trace-compile=stderr --trace-compile-timing" и "--trace-dispatch=stderr" соответственно.
  • Внешние зависимости
    • База данных terminal info ("terminfo") теперь входит в поставку Julia по умолчанию, что улучшает работу REPL, когда "terminfo" недоступен в системе. Julia можно собрать без встраивания базы, используя параметр Makefile "WITH_TERMINFO=0".
  • Улучшения инструментов
    • Доступен профилировщик "wall-time" для пользователей, которым нужен профилировщик с выборкой, захватывающий задачи независимо от их состояния (запланированы/выполняются). Такой профилировщик позволяет профилировать задачи с интенсивным вводом-выводом и помогает обнаружить области сильной конкуренции в системе.

  1. OpenNews: Опубликован язык программирования Julia 1.11
Обсуждение (10 +3) | Тип: Программы |
·10.10.2025 Атака, использующая GitHub Copilot для извлечения данных из приватных репозиториев (28 +23)
  Исследователи из компании Legit Security разработали технику атаки на GitHub Copilot, позволяющую извлечь содержимое из приватных репозиториев при использовании чатбота для анализа присылаемых pull-запросов. В качестве примера продемонстрирована возможность определения хранимых в приватном репозитории ключей для доступа к облачному окружению AWS.

Атака основывается на способности GitHub Copilot загружать внешние изображения в зависимости от обрабатываемого содержимого и возможности подставлять в pull-запросы скрытые комментарии, которые невидны в интерфейсе GitHub, но учитываются при анализе чатботом. Для организации утечки атакующий на своём сервере создаёт набор однопиксельных прозрачных изображений, каждое из которых соответствуют спецсимволу, цифре или букве алфавита. Далее жертве отправляется pull-запрос, в котором помимо предлагаемого изменения указывается скрытый комментарий с инструкцией для чатбота, оформленный в блоке "<!-- комментарий -->", не показываемом при выводе текста в формате Markdown.

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

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

Для обхода защиты CSP (Content Security Policy), допускающей загрузку в GitHub Copilot картинок только с серверов GitHub, в качестве прокси задействован сервис GitHub Camo. Данный прокси используется в GitHub как промежуточное звено для загрузки внешних изображений, например, встраиваемых на страницу README. Для задействования Camo в таблице сопоставления символов указываются не прямые ссылки, а ссылки на сам прокси, оформленные как "https://camo.githubusercontent.com/хэш_картинки". До этого через GitHub REST API в Camo добавляются и заверяются необходимые пути для перенаправления загрузки изображений. Компания GitHub уже блокировала описанный метод атаки через запрет отрисовки изображений в чате с Copilot.

  1. OpenNews: SnailLoad - атака по определению открываемых сайтов через анализ задержек доставки пакетов
  2. OpenNews: ArtPrompt - атака на AI-системы, позволяющая обойти фильтры при помощи ASCII-картинок
  3. OpenNews: В репозитории Hugging Face выявлены вредоносные AI-модели, выполняющие код
  4. OpenNews: Исследование влияния AI-ассистентов, подобных GitHub Copilot, на безопасность кода
  5. OpenNews: Техника атаки на системы, использующие алгоритмы машинного обучения
Обсуждение (28 +23) | Тип: Проблемы безопасности |
·10.10.2025 Оценка изменения производительности CPython за последние 5 лет (118 +14)
  Мигель Гринбе (Miguel Grinberg), автор нескольких книг по Python-фреймворкам SQLAlchemy и Flask, опубликовал результаты тестирования производительности веток CPython с 3.9 по 3.14. Дополнительно аналогичные тесты проведены для Pypy 3.11 (реализация Python с JIT-компилятором), Node.js 24 и Rust 1.90. Для выпусков CPython 3.13 и 3.14 дополнительно измерена производительность при включении JIT-компилятора и режима сборки Free-threading без глобальной блокировки.

Для изменения производительности использовались скрипты для вычисления чисел Фибоначчи (глубокая рекурсия) и пузырьковой сортировки случайно генерируемых чисел, запускаемые в однопоточном режиме и с разделением на 4 потока. Тесты запускались в Ubuntu 24.04 на ноутбуке с CPU Intel Core i5 и macOS Sequoia на ноутбуке с SoC Apple M2.

В большинстве тестов CPython 3.14 оказался быстрее ветки 3.13 примерно на 20%, при том, что в некоторых тестах ветки 3.11 и 3.12 оказались быстрее 3.13. Отрыв 3.14 от веток 3.9 и 3.10 составил примерно два раза. Pypy, Node.js и Rust обогнали CPython 3.14 в первом тесте в 4.93, 4.88 и 69.82 раз, а во втором тесте в 18.14, 6.64 и 36.15 раз, соответственно (сравнивались только однопоточные режимы).







Режим без глобальной блокировки в CPython 3.14 позволил в два раза ускорить многопоточное выполнение. Включение режима с JIT в CPython не привело к существенному росту производительности, а в тесте ветки 3.14 в macOS даже замедлило выполнение.



В однопоточных тестах режим без глобальной блокировки заметно замедлил выполнение задач, а режим с JIT почти не повлиял на производительность.



  1. OpenNews: Сравнение производительности сетевого драйвера в вариантах на 10 языках программирования
  2. OpenNews: Оценка производительности 14 серверов приложений на языке Python
  3. OpenNews: Оценка типичных проблем с безопасностью для различных языков программирования
  4. OpenNews: Оценка популярности грязных хаков у разработчиков на различных языках программирования
  5. OpenNews: Опубликованы тесты простейших приложений на различных языках программирования.
Обсуждение (118 +14) | Тип: Обобщение |
·09.10.2025 Релиз Ubuntu 25.10 (214 +6)
  Опубликован дистрибутив Ubuntu 25.10 "Questing Quokka", который отнесён к промежуточным выпускам, обновления для которых формируются в течение 9 месяцев. Готовые установочные образы созданы для Ubuntu, Ubuntu Server, Lubuntu, Kubuntu, Ubuntu Mate, Ubuntu Budgie, Ubuntu Studio, Xubuntu, UbuntuKylin (редакция для Китая), Ubuntu Unity, Edubuntu и Ubuntu Cinnamon.

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

  • Рабочий стол обновлён до выпуска GNOME 49. Прекращена поддержка сеанса GNOME на базе X11 и оставлен только сеанс на базе Wayland, в котором для запуска X11-приложений применяется XWayland. Пакеты с компонентами X.org и альтернативными десктоп-окружениями, использующими X11, продолжают поставляться в репозитории.
  • В конфигуратор добавлен интерфейс для управления автозапуском приложений (Settings → Apps).
  • Параметры дробного масштабирования в GNOME оптимизированы для минимизации размытия.
  • Размер моноширинного шрифта, применяемого в эмуляторе терминала, уменьшен и теперь соответствует размеру шрифта, применяемого по умолчанию в интерфейсе пользователя.
  • Вместо просмотрщика изображений Eye of GNOME по умолчанию задействовано приложение Loupe, предоставляющее легковесный интерфейс и оптимизированное для быстрого просмотра изображений. Для декодирования изображений задействована библиотека glycin, использующая sandbox-изоляцию и написанная на Rust. Среди возможностей: плавный переход от одного изображения к другому, визуальные эффекты при масштабировании и повороте картинки, боковая панель со свойствами, кнопки для быстрого копирования и удаления, инструменты для редактирования (кадрирование, поворот, отражение).
  • Вместо эмулятора терминала GNOME Terminal задействовано приложение Ptyxis, предоставляющее дополнительные возможности для работы с контейнерами при помощи инструментариев Toolbox, Distrobox, Podman и JHBuild. Ptyxis также отличается расширенными настройками, обзорным режимом для наглядной навигации по открытым сеансам и очень высокой скоростью отрисовки за счёт задействования Vulkan и OpenGL.
  • В композитном сервере Mutter улучшена поддержка HDR и расширены функции управления цветом. Задействован механизм VRR (Variable Refresh Rate), позволяющий адаптивно менять частоту обновления монитора для обеспечения плавности и отсутствия разрывов во время игр и показа видео.
  • Улучшена поддержка Wayland на системах с GPU NVIDIA.
  • В качестве минимально поддерживаемого варианта архитектуры RISC-V заявлен профиль RVA23 (RISC-V Application), в который включены расширения для векторных операций и гипервизоров. В настоящее время лишь ограниченное число плат RISC-V поддерживают векторные расширения профиля RVA23, а большинство доступных на рынке устройств соответствуют профилю RVA20.
  • Для систем на базе архитектуры RISC-V предоставлен полнофункциональный десктоп-сеанс, поддерживающий такие приложения, как Firefox и Thunderbird.
  • Стабилизирована поддержка полнодискового шифрования, не требующего ввода пароля разблокировки диска при загрузке, благодаря хранению информации для расшифровки ключей в TPM (Trusted Platform Module). Реализованы возможности для восстановления ключей, применяемых при полнодисковом шифровании на базе TPM.
  • Продолжена работа над системой вывода запросов полномочий, требующих у пользователя подтверждения доступа, например, при обращении из snap-пакетов к файлам в домашнем каталоге. Динамическое предоставление доступа организовано с использованием механизма AppArmor. Улучшена интеграция запроса полномочий с GNOME Shell.
  • В инсталлятор интегрирована поддержка Landscape, системы управления группой рабочих станций и серверов. Изменение позволит администраторам предприятий загружать файлы с настройками автоматической установки напрямую из платформы Landscape.
  • При выводе уведомления о наличии обновлений теперь предлагаются опции для открытия приложения Software Updater или установки предложенных обновлений. Если уведомление было пропущено в системном лотке появляется соответствующий индикатор, через который также можно инициировать установку обновлений.
  • Утилиты GNU Coreutils заменены в базовой поставке на инструментарий Rust Coreutils (uutils), а приложение sudo заменено на sudo-rs. Замена системных компонентов производится в рамках инициативы по повышению качества системного окружения через поставку программ, изначально разрабатываемых с оглядкой на безопасность, надёжность и корректность. Поставка утилит, написанных на языке Rust, даст возможность снизить риск появления ошибок при работе с памятью, таких как обращение к области памяти после её освобождения и выход за границы буфера.
  • По умолчанию для синхронизации точного времени задействован проект Chrony. Ранее используемый сервис systemd-timesyncd решено заменить на Chrony из-за желания задействовать протокол NTS (Network Time Security) для криптографической защиты синхронизации времени. Chrony предоставляет независимую реализацию клиента и сервера NTP и применяется для синхронизации точного времени в Fedora, SUSE/openSUSE и RHEL.
  • Для формирования образов начального RAM-диска (initrd) вместо пакета initramfs-tools по умолчанию задействован инструментарий Dracut. Переход на Dracut позволит решить такие проблемы, как невозможность использования systemd в initrd, отсутствие поддержки NVMe over Fabric (NVM-oF), обилие кода на shell в initrd, сложность сопровождения из-за раздельной работы с initrd и корневой ФС.
  • Пакет intel-compute-runtime пересобран с флагом NEO_DISABLE_MITIGATIONS, отключающим защиту от атак класса Spectre. По оценке разработчиков наличие подобной защиты приводило к снижению производительности пакета примерно на 20%, при том, что в подобной защите на уровне пакета нет необходимости, так как для блокирования атак класса Spectre достаточно защиты на уровне ядра.
  • Задействована новая ветка пакетного менеджера APT 3 (3.1.6), в которой переработан интерфейс пользователя, активирован движок разрешения зависимостей Solver3, добавлена поддержка снапшотов, прекращено использования утилиты apt-key, добавлен крипто-бэкенд для библиотеки OpenSSL и реализована команда 'dist-clean'.
  • Ядро Linux обновлено до ветки 6.17. Объявлены устаревшими пакеты linux-modules-extra-* - все модули ядра теперь поставляются в пакетах linux-modules--.
  • Обновлены версии пакетов, включая systemd 257.9, GCC 15.2, binutils 2.45, glibc 2.42, Python 3.13.7, LLVM 20, Ruby 3.3, Rust 1.85, Go 1.24, OpenJDK 25, PHP 8.4.11, .NET 10, Pipewire 1.4.5, BlueZ 5.83, Netplan 1.1.2, Firefox 142, LibreOffice 25.8, Qt 6.9.2, VLC 3.0.21, cloud-init 25.3, Django 5.2, Dovecot 2.4, libvirt 11.6.0, PostgreSQL 17, MySQL 8.4, QEMU 10.1, Samba 4.22, Valkey (форк Redis) 8.1.1, Mesa 25.2.3, OpenSSL 3.5.3, nginx 1.26.3, OpenLDAP 2.6.10, OpenSSH 10.0, GRUB 2.14-beta.
  • Вместо Ubuntu Report интегрирована новая система накопления и отправки телеметрии Ubuntu Insights, через которую реализован периодический сбор метрик. Система является опциональной и включается по желанию пользователя в мастере начальной настройки (GNOME Initial Setup).
  • Включён сервис nvidia-powerd, обеспечивающий поддержку механизма NVIDIA Dynamic Boost, позволяющего балансировать энергопотребление между CPU и GPU для повышения производительности.
  • На системах с проприетарными драйверами NVIDIA реализована корректная поддержка перехода в спящий режим.
  • Изменён состав редакции Ubuntu Server. Из набора пакетов ubuntu-server удалены утилиты screen, wget, byobu, cloud-guest-utils и dirmngr, которые доступны для установки из репозитория или в составе зависимостей (например, screen в числе зависимостей к ubuntu-release-upgrader, cloud-guest-utils - cloud-init, а dirmngr - gnupg и vanilla-gnome-desktop).
  • В authd, сервис для интеграции с облачными системами аутентификации, добавлена поддержка регистрации устройства с использованием EntraID. В состав включена утилита authctl для управления authd.
  • Добавлена полная поддержка интегрированных GPU Intel Core Ultra Xe3 и дискретных видеокарт Intel Arc Pro B50 и B60 "Battlemage".
  • В Kubuntu задействованы выпуски KDE Plasma 6.4, KDE Gear 25.08, Qt 6.8 и KDE Frameworks 6.17.0. В базовом окружении Kubuntu прекращена поставка сеанса KDE на основе X-сервера. Для использования сеанса на базе X-сервер в репозитории имеется пакет "plasma-session-x11".
  • В Lubuntu включён выпуск среды рабочего стола LXQt 2.2.
  • В Ubuntu Cinnamon предложена версия рабочего стола Cinnamon 6.4.12 (в прошлой версии был 6.4.8). Обновлена тема оформления Yaru-Cinnamon.
  • В Ubuntu Studio задействован рабочий стол KDE Plasma 6.4. Добавлен опциональный вариант оформления интерфейса в стиле macOS c нижней панелью и глобальным меню. В конфигуратор Ubuntu Studio Audio Configuraiton добавлены дополнительные настройки звука, многие настройки разрешено менять без получения root-доступа. Добавлен пакет JackTrip с графическим интерфейсом для передачи звука по сети. Обновлены версии Qtractor 1.5.8, Audacity 3.7.5, digiKam 8.7.0, Kdenlive 25.08.1, Krita 5.2.11 и GIMP 3.0.4.
  • В Xubuntu продолжает поставляться Xfce 4.20.

  1. OpenNews: Ubuntu прекращает поддержку сеанса X11 в GNOME
  2. OpenNews: Ubuntu 25.10 переходит по умолчанию на Chrony вместо systemd-timesyncd
  3. OpenNews: В Ubuntu 25.10 заменят эмулятор терминала и просмотрщик изображений
  4. OpenNews: В Ubuntu 25.10 решено задействовать аналог sudo, написанный на Rust
  5. OpenNews: Доступен дистрибутив Ubuntu 25.04
Обсуждение (214 +6) | Тип: Программы |
·09.10.2025 Система сжатия OpenZL, опережающая Zstd и XZ по скорости и уровню сжатия структурированных данных (82 +37)
  Компания Meta* представила инструментарий для сжатия и распаковки данных OpenZL, по сравнению с форматами Zstd и XZ демонстрирующий более высокий уровень сжатия и скорость работы. OpenZL разработан для эффективного сжатия структурированных наборов данных, например, применяемых при машинном обучении, а также хранилищ, содержащих поля с различными повторяющимися типами информации. Код OpenZL написан на C/C++ и открыт под лицензией BSD.

При сжатии БД с астрономическим каталогом звёзд SAO, инструментарий OpenZL позволил сократить размер данных в 2.06 раза, в то время как алгоритм zstd сжал информацию в 1.31 раза, а XZ в 1.64 раза. При этом по скорости сжатия OpenZL опередил zstd в два раза (203 MB/s против 115 MB/s), а XZ - в 65 раз (203 MB/s против 3.1 MB/s). Распаковка в OpenZL оказалась незначительно медленнее zstd (822 MB/s против 890 MB/s) и в 27 быстрее XZ.

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

Упаковка и распаковка осуществляется при помощи одной утилиты "zli" или библиотеки libopenzl. Структура данных описывается в виде профилей. В состав уже входит набор предопределённых профилей, описывающих типовые форматы хранения. Например, профиль для формата CSV или данных, хранимых в форме массива 64-разрядных чисел. Сжатие сводится к выбору профиля командой "zli list-profiles" и запуску процесса упаковки командой "zli compress --profile имя_профиля". Для распаковки достаточно запустить "zli decompress".

Для специфичных форматов требуется сформировать собственный профиль, используя команду "zli train", которая выявляет закономерности в данных и формирует профиль с оптимальным уровнем сжатия. Используя опцию "--pareto-frontier" созданный профиль можно модернизировать в сторону ускорения упаковки или распаковки, ценой снижения уровня сжатия. Для описания сложных форматов со вложенными структурами и определения раскладки форматов данных в структурах может применяться язык SDDL (Simple Data Description Language).

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

  1. OpenNews: Facebook опубликовал реализацию алгоритма сжатия Zstandard 1.0
  2. OpenNews: Компания Apple открыла реализацию алгоритма сжатия без потерь LZFSE
  3. OpenNews: Компания Google открыла код Draco, библиотеки для эффективного сжатия 3D-графики
  4. OpenNews: Библиотеки сжатия LZHAM и Crunch переведены в общественное достояние
  5. OpenNews: Автор LZ4 представил новый быстрый и эффективный алгоритм сжатия ZSTD
Обсуждение (82 +37) | Тип: К сведению | Интересно
·09.10.2025 Выпуск сетевого анализатора Wireshark 4.6.0 (33 +24)
  После года разработки опубликован релиз новой стабильной ветки сетевого анализатора Wireshark 4.6. Программа поддерживает более тысячи сетевых протоколов и несколько десятков форматов захвата трафика. Предоставляется графический интерфейс для создания фильтров, захвата трафика, анализа сохранённых дампов и инспектирования пакетов. Поддерживаются такие расширенные возможности, как пересборка порядка следования пакетов, выделение и сохранение содержимого файлов, передаваемых с использованием разных протоколов, воспроизведение VoIP и RTP-потоков, расшифровка IPsec, ISAKMP, Kerberos, SNMPv3, SSL/TLS, WEP и WPA/WPA2. Код проекта распространяется под лицензией GPLv2.

Ключевые новшества Wireshark 4.6.0:

  • В меню "Statistics" в секцию графиков добавлен режим "Plots". В отличие от ранее доступного режима "I/O Graphs" вместо гистограмм, отражающих изменение усреднённых данных во времени, в режиме "Plots" статистика визуализирует распределение фактических значений, что делает более заметными повторяющиеся закономерности.
  • Графики "I/O Graph" оптимизированы для показа на экранах с низким разрешением.
  • Добавлена поддержка сжатия захватываемых потоков трафика во время записи, а не во время ротации уже записанного файла. Для работы с сжимаемыми на лету потоками в TShark можно использовать опцию "--compress".
  • Добавлена возможность копирования списка пакетов в формате HTML (в меню добавлен пункт "Edit > Copy > as HTML").
  • В меню "View" добавлена опция для ручного повторного разбора пакетов (Redissect Packets), который можно использовать в случае изменения ключа шифрования или DNS-хоста, связанного с IP-адресом.
  • Реализована возможность экспорта сертификатов X.509, используя меню "File > Export Objects" в Wireshark и опцию "--export-objects" в TShark.
  • Добавлена поддержка дешифровки NTP-пакетов, передаваемых с использованием протокола NTS (Network Time Security).
  • При декодировании пакетов MACsec предоставлена возможность использования модуля разбора (dissector) MKA.
  • В модулях разбора трафика HTTP и HTTP/2 добавлена поддержка содержимого, сжатого с использованием алгоритма Zstandard.
  • В диалог "Follow Stream" добавлена возможность отслеживания идентификаторов потоков MPEG 2 (Transport Stream PID) для извлечения звука и видео для последующего воспроизведения.
  • В диалогах "Conversations" и "Endpoints table" добавлена поддержка протокола DNP 3 (Distributed Network Protocol 3).
  • Добавлена поддержка пометки потоков HTTP2, передаваемых в сеансах 3GPP поверх сетевых интерфейсов 5G.
  • На платформе Linux предоставлена возможность использования для захвата трафика BPF-расширений "inbound", "outbound" и "ifindex", скомпилированных через диалог "Compiled Filter".
  • В Lua API добавлена поддержка функций Libgcrypt для симметричного шифрования.
  • Добавлена поддержка декодирования форматов файлов RIFF (Resource Interchange File Format) и TTL.
  • Добавлена поддержка протоколов и форматов:
    • Asymmetric Key Packages (AKP),
    • Binary HTTP,
    • BIST TotalView-ITCH (BIST-ITCH),
    • BIST TotalView-OUCH (BIST-OUCH),
    • Bluetooth Android HCI (HCI ANDROID),
    • Bluetooth Intel HCI (HCI INTEL),
    • BPSec COSE Context,
    • BPSec Default SC,
    • Commsignia Capture Protocol (C2P),
    • DECT NR+ (DECT-2020 New Radio),
    • DLMS/COSEM,
    • Ephemeral Diffie-Hellman Over COSE,
    • Identifier-Locator Network Protocol (ILNP),
    • LDA Neo Device trailer (LDA_NEO_TRAILER),
    • Lenbrook Service Discovery Protocol (LSDP),
    • LLC V1,
    • Navitrol (мессенджер),
    • Network Time Security Key Establishment Protocol (NTS-KE),
    • Ouster VLP-16,
    • Private Line Emulation (PLE),
    • RC V3,
    • RCG,
    • Roughtime,
    • SBAS L5 Navigation Message,
    • SGP.22 GSMA Remote SIM Provisioning (SGP.22),
    • SGP.32 GSMA Remote SIM Provisioning (SGP.32),
    • SICK CoLA,
    • Silabs Debug Channel,
    • Universal Measurement and Calibration Protocol (XCP),
    • USB Picture Transfer Protocol (USB-PTP),
    • VLP-16,
    • vSomeIP Internal Protocol (vSomeIP).
  • Для macOS вместо отдельных пакетов для архитектур Arm и Intel подготовлены универсальные сборки.
  • В сборках для macOS и Windows реализована возможность принудительного включения тёмного или светлого режима, независимо от системных настроек. Библиотека Qt в сборках для Windows и macOS обновлена до версии 6.9.3 (ранее поставлялся выпуск 6.5.3). Прекращена поддержка AirPcap и WinPcap, вместо которых следует использовать Npcap.
  • В число обязательных зависимостей включена библиотека libxml2.

  1. OpenNews: Выпуск сетевых анализаторов Wireshark 4.4.0 и Zeek 7.0.0
  2. OpenNews: Доступен SELKS 10, дистрибутив для создания систем обнаружения вторжений
  3. OpenNews: Выпуск системы индексации сетевого трафика Arkime 5.0
  4. OpenNews: Google опубликовал OSV-Scanner, сканер уязвимостей, учитывающий зависимости
  5. OpenNews: Доступны анализатор трафика Zeek 8.0 и сетевой сканер Nmap 7.98
Обсуждение (33 +24) | Тип: Программы |
·09.10.2025 Уязвимости в Redis и Valkey, позволяющие выполнить код на сервере при наличии доступа к БД (123 +12)
  Исследователи из компании Wiz выявили в СУБД Redis уязвимость (CVE-2025-49844), позволяющую добиться удалённого выполнения кода (RCE) на сервере. Проблеме присвоен наивысший уровень опасности (CVSS score 10 из 10), при этом для эксплуатации уязвимости атакующий должен иметь возможность отправки запросов к СУБД Redis, допускающей выполнение пользовательских Lua-скриптов.

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

Уязвимость вызвана обращением к уже освобождённой памяти (use-after-free), проявляющимся при манипуляции сборщиком мусора из специально оформленного Lua-скрипта. Проблема позволяет обойти sandbox-изоляцию Lua-окружения в Redis и выполнить код в основной системе с правами пользователя, под которым выполняется СУБД. Примечательно, что ошибка оставалась незамеченной на протяжении 13 лет. Выявившие проблему исследователи продемонстрировали рабочий эксплоит, но детали эксплуатации пока не раскрываются, чтобы дать время на установку обновлений.

Уязвимость также проявляется в проекте Valkey, развивающем форк Redis, поставляемый в большинстве дистрибутивов Linux, включая RedHat Enterprise Linux 10. Уязвимость устранена в выпусках Redis 8.2.2, 8.0.4, 7.4.6, 7.2.11 и 6.2.20, а также в Valkey 8.1.4, 8.0.6 и 7.2.11. Проверить состояние новой версии пакета или подготовки исправления в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo, Arch, FreeBSD, OpenBSD и NetBSD. В качестве обходного пути защиты в СУБД можно отключить выполнение Lua-скриптов, запретив команды EVAL и EVALSHA через ACL.

Дополнительно можно отметить ещё три уязвимости, эксплуатируемые через Lua-скрипты и устранённые в последних версиях Redis и Valkey. Для обходной защиты от данных уязвимостей через ACL можно запретить семейства команд EVAL и FUNCTION.

  • CVE-2025-46817 - целочисленное переполнение в библиотечных Lua-функциях, потенциально позволяющее добиться выполнения своего кода на стороне сервера при запуске специально оформленных Lua-скриптов.
  • CVE-2025-46819 - ошибка, приводящая к чтению данных из области за пределами буфера при выполнении специально оформленного Lua-скрипта. Уязвимость может использоваться для аварийного завершения серверного процесса Redis.
  • CVE-2025-46818 - возможность выполнения команд в контексте другого пользователя СУБД при манипуляции LUA-объектами из специально оформленного Lua-скрипта.

  1. OpenNews: Выпуск СУБД Redis 8.2
  2. OpenNews: Уязвимости в СУБД Redis и Valkey
  3. OpenNews: Сравнение производительности СУБД Valkey и Redis
  4. OpenNews: На соревновании Pwn2Own в Берлине продемонстрированы взломы RHEL, Firefox, Redis и VirtualBox
  5. OpenNews: Опубликован Valkey 8.1, форк СУБД Redis от Amazon, Google, Oracle и Ericsson
Обсуждение (123 +12) | Автор: Асен Тотин | Тип: Проблемы безопасности |
·08.10.2025 Выпуск языка программирования Python 3.14 (326 +30)
  После года разработки опубликован значительный выпуск языка программирования Python 3.14. Новая ветка будет поддерживаться в течение полутора лет, после чего ещё три с половиной года для неё будут формироваться исправления с устранением уязвимостей.

Среди новшеств, добавленных в Python 3.14 (1, 2, 3):

  • Реализована официальная поддержка сборки CPython без глобальной блокировки интерпретатора (GIL, Global Interpreter Lock). Сборка без GIL позволяет избавиться от проблемы с распараллеливанием операций на многоядерных системах, вызванной тем, что глобальная блокировка не допускает параллельное обращение к разделяемым объектам из разных потоков. Отключение GIL приводит к дополнительным накладным расходам, вызванным изменениями в сборщике мусора, системе управления памятью и примитивах для организации блокировок. Например, из-за использования подсчёта ссылок для изоляции потоков наблюдается снижение производительности однопоточных сценариев примерно на 10%. При этом подобные накладные расходы могут компенсироваться распараллеливанием операций.
  • Добавлена поддержка t-строк (литералы с префиксом 't') позволяющих использовать синтаксис, похожий на f-строки, для создания собственных обработчиков шаблонов в строках. В отличие от f-строк t-строки возвращают объект, раздельно хранящий статические строковые данные и подставляемые значения. Раздельное хранение позволяет привязывать собственные обработчики, влияющие только на подставляемые значения. Например, можно подключить обработчик для перевода подставляемого значения в верхний регистр или для экранирования спецсимволов при подстановке в строку внешних данных.
    
       variety = 'Stilton'
       template = t'Try some {variety} cheese!'
       print(list(template))
       print(lower_upper(template))
    
          ['Try some ', Interpolation('Stilton', 'variety', None, ''), ' cheese!']
          Try some STILTON cheese!
    
       attributes = {'src': 'limburger.jpg', 'alt': 'lovely cheese'}
       template = t'<img {attributes}>'
       print (html(template))
    
          <img src="limburger.jpg" alt="lovely cheese" />
    
    
  • В стандартную библиотеку добавлен модуль concurrent.interpreters, позволяющий одновременно выполнять в одном процессе несколько изолированных друг от друга копий Python-интерпретатора. Ранее данная возможность была доступна только через C-API. Одновременное выполнение нескольких интерпретаторов может использоваться для распаралелливания операций по аналогии с запуском нескольких параллельно выполняемых процессов, но в отличие от многопроцессной модели расходует меньше ресурсов. На уровне приложений для разделения операций по интерпретаторам могут использоваться модель акторов и CSP (взаимодействие последовательных процессов).
  • В CPython реализован новый тип интерпретатора, использующий хвостовые вызовы между C‑функциями, реализующими отдельные байткоды Python, вместо одной большой функции с выражением switch/case. При сборке в Clang 19 новый интерпретатор демонстрирует повышение производительности на 3-5% при выполнении тестов pyperformance. Новый интерпретатор пока доступен в качестве опции для архитектур x86-64 и AArch64, и требует для сборки как минимум версии Clang 19 (поддержку GCC обещают позднее).
  • Обеспечена отложенная обработка аннотаций для функций, классов и модулей. Аннотации теперь не обрабатываются сразу, а сохраняются в форме специализированных функций и вычисляются при возникновении необходимости. Новое поведение позволяет упростить работу с аннотациями и снизить накладные расходы на обработку аннотация во время выполнения. Для инспектирования отложенных аннотаций предложен модуль annotationlib.
  • В стандартную библиотеку добавлен пакет compression, предоставляющий функции для сжатия и распаковки данных при помощи различных алгоритмов. Помимо модулей compression.lzma, compression.bz2, compression.gzip и compression.zlib, предоставляющих доступ к функциональности, ранее доступной в модулях lzma, bz2, gzip и zlib, добавлен новый модуль compression.zstd с реализацией алгоритма ZSTD (Zstandard).
  • В выражениях "except" и "except*" разрешено не помещать содержимое в скобки, если в выражении указывается несколько типов исключений и не используется ключевое слово "as".
    
       try:
           connect_to_server()
       except TimeoutError, ConnectionRefusedError:
           print('The network has ceased to be!')
    
  • В интерактивной оболочке PyREPL реализована подсветка синтаксиса. Включён цветной вывод в CLI-утилитах из модулей unittest, argparse, json и calendar.
  • Добавлен интерфейс для подключения внешних отладчиков и профилировщиков к уже работающим процессам CPython, не требующий остановки и перезапуска, и не влияющий на производительность.
  • В модуль pdb добавлена поддержка удалённого подсоединения к работающим Python-процессам. Например, для подключения к процессу с номером 1234 можно использовать команду "python -m pdb -p 1234".
  • В модуль uuid добавлены функции uuid6(), uuid7() и uuid8() с реализацией 6, 7 и 8 версий UUID-идентификаторов.
  • Добавлен вывод предупреждения при использовании выражений "return", "break" и "continue" для выхода из блока "finally".
  • Добавлен C API PyInitConfig для настройки инициализации Python без привязки с структурам на языке Си, дающий возможность вносить изменения, не нарушающие ABI. Предоставляются функции Add PyConfig_Get() и PyConfig_Set() для получения и выставления конфигурации, а также функция PyInitConfig_AddModule() для добавления модуля с расширением.
  • Улучшены сообщения об ошибках. Добавлены рекомендации по устранению ошибок при опечатках в ключевых словах.
  • В состав интегрированы результаты работы по замене в Python реализаций криптографических алгоритмов, предлагаемых в модулях hashlib и hmac, на варианты с математическим (формальным) доказательством надёжности, подготовленные проектом "HACL*". Все предоставляемые по умолчанию в Python хэш-функции и HMAC заменены на варианты, для которых предоставлено формальное доказательство соответствия (формальная верификация). Среди прочего, добавлена реализация HMAC-BLAKE2, использующая SIMD-инструкции AVX2 для ускорения вычислений.
  • Добавлен новый интерфейс командной строки ("python -m asyncio ps PID" и "python -m asyncio pstree PID") для инспектирования запущенных Python-процессов с асинхронными задачами (asyncio).
  • В состав готовых сборок для macOS и Windows включён экспериментальный JIT-компилятор. Инсталлятор для Windows заменён на менеджер установок.
  • Для верификации целостности сборок вместо PGP-подписей задействована система криптографической верификации кода Sigstore.
  • Предоставлены официальные бинарные сборки для платформы Android.

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

  1. OpenNews: В Python задействованы криптофункции с математическим доказательством надёжности
  2. OpenNews: Выпуск языка программирования Python 3.13
  3. OpenNews: Один из ключевых разработчиков Python отстранён на три месяца из-за нарушения кодекса поведения
  4. OpenNews: Проект PyXL развивает процессор для выполнения байт-кода Python
  5. OpenNews: Достижение выполнения кода при контроле над текстом комментария в Python-скрипте
Обсуждение (326 +30) | Тип: Программы | Интересно
·08.10.2025 Компания Cisco выпустила антивирусный пакет ClamAV 1.5.0 (62 +12)
  После более года разработки компания Cisco опубликовала выпуск свободного антивирусного пакета ClamAV 1.5.0. Проект перешёл в руки Cisco в 2013 году после покупки компании Sourcefire, развивающей ClamAV и Snort. Код проекта распространяется под лицензией GPLv2. Ветка 1.5.0 отнесена к категории обычных (не LTS), обновления к которым публикуются как минимум в течение 4 месяцев после выхода первого релиза следующей ветки. Возможность загрузки базы сигнатур для не-LTS веток также обеспечивается как минимум ещё 4 месяца после выпуска следующей ветки.

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

  • Добавлена проверка, определяющая зашифрованные документы Microsoft Office.
  • Добавлена возможность извлечения ссылок, присутствующих в обрабатываемых HTML- и PDF-файлах. Ссылки выводятся в формате JSON при активном режиме генерации метаданных JSON. Функция может быть отключена через опции командной строки ClamScan "--json-store-html-uris=no" и "--json-store-pdf-uris=no", директивы "JsonStoreHTMLURIs no" и "JsonStorePDFURIs no" в clamd.conf или переменные окружения CL_SCAN_GENERAL_STORE_HTML_URIS и CL_SCAN_GENERAL_STORE_PDF_URIS.
  • В настройке "OnAccessExcludePath" разрешено задание масок исключения файловых путей при помощи регулярных выражений.
  • Добавлена поддержка верификации и заверения цифровой подписью архивов БД сигнатур (CVD) и изменений к БД (CDIFF) с использованием внешних файлов с расширением ".sign", которые автоматически загружаются утилитой Freshclam вместе с cvd-базами и cdiff-патчами. Для проверки и генерации подписей можно использовать команды "sigtool verify" и "sigtool sign". Используемые сертификаты устанавливаются по умолчанию в каталог "<prefix>/etc/certs", который может быть изменён при сборке через опцию "-D CVD_CERTS_DIRECTORY=PATH", настройку CVDCertsDirectory, переменную окружения CVD_CERTS_DIR или параметр командной строки "--cvdcertsdir PATH".
  • В программы Freshclam, ClamD, ClamScan и Sigtool добавлена возможность отключения ненадёжных алгоритмов хэширования MD5 и SHA1 при верификации по цифровой подписи и проверке ложных срабатываний для заслуживающих доверия файлов. Отключение MD5 и SHA1 осуществляется через настройку "FIPSCryptoHashLimits" или опцию "--fips-limits"
  • В реализации кэша проверенных файлов вместо MD5 задействован алгоритм SHA2-256.
  • В Clamd добавлены настройки EnableShutdownCommand, EnableReloadCommand, EnableStatsCommand и EnableVersionCommand для отключения обработки команд завершения работы, перезапуска, вывода статистики и показа версии.
  • В libclamav добавлены дополнительные функции для операций сканирования, расширенные функции для работы с хэшами, опции для управления рекурсивным обходом каталога с временными файлами. Для каждого сканируемого объекта задействован уникальный идентификатор объекта.
  • В утилите ClamScan повышена точность счётчиков с размером прочитанных и просканированных данных. Добавлена возможность вывода размера в гигабайтах, мегабайтах, килобайтах или байтах.
  • В ClamScan добавлены новые опции командной строки: "--hash-hint", "--log-hash", "--file-type-hint" и "--log-file-type".
  • Максимальное значение настройки max-recursion в файле конфигурации ограничено 100 для защиты от сбоев при обработке файлов с глубокой рекурсией.
  • Повышено качество кода в модуле работы с ZIP-архивами. Улучшена поддержка извлечения данных из некорректных zip-архивов.
  • Реализовано определение типов файлов с AI-моделями.
  • Разрешено указание комментария в конце строки с активной опцией (например, "LogVerbose yes #no")
  • На платформе Windows улучшена поддержка имён файлов с символами UTF-8, не отмеченными в кодовых страницах ANSI и OEM.
  • Улучшена поддержка сборки для платформ GNU/Hurd, Solaris и AIX.

  1. OpenNews: Обновление антивирусного пакета ClamAV 1.4.3 и 1.0.9 с устранением уязвимостей
  2. OpenNews: Обновление антивирусного пакета ClamAV 1.4.2 и 1.0.8 с устранением уязвимости
  3. OpenNews: Компания Cisco выпустила антивирусный пакет ClamAV 1.4.0
  4. OpenNews: Уязвимости в ClamAV, приводящие к удалённому выполнению кода и утечке системных файлов
  5. OpenNews: Большинство антивирусов оказались подвержены атаке через символические ссылки
Обсуждение (62 +12) | Тип: Программы |
·07.10.2025 Qualcomm поглощает Arduino. Представлены плата Arduino UNO Q и среда разработки Arduino App Lab (162 +11)
  Компания Arduino, занимающаяся проектированием и разработкой открытых плат на базе микроконтроллеров, объявила о продаже бизнеса компании Qualcomm Technologies. Сумма сделки не разглашается. Отмечается, что присоединение к Qualcomm позволит расширить возможности Arduino по продвижению открытых аппаратных устройств по всему миру.

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

Одновременно представлены два новых продукта Arduino:

  • Плата UNO Q, сочетающая в себе процессор Qualcomm Dragonwing QRB2210 и микроконтроллер STM32U585. Процессор QRB2210 имеет 4 ядра Cortex-A53 (2.0 GHz), оснащён GPU Adreno 702 (с поддержкой OpenGL ES 3.1, Vulkan 1.1 и OpenCL 2.0 и аппаратными декодировщиками H.264, H.265 и VP9) и двухядерным DSP c функциями ускорителя выполнения AI-моделей и обработки звука. В качестве операционной системы предлагается запускать Debian GNU/Linux. Производительности процессора достаточно для использования в робототехнике и решения задач машинного зрения.

    Микроконтроллер STM32U585 включает ядро Arm Cortex-M33 160 MHz с поддержкой технологии TrustZone, DSP и FPU, и может использоваться для управления дополнительным оборудование в режиме реального времени. Плата оснащена 16 ГБ eMMC (впаян), 2/4 ГБ ОЗУ, USB-C, Wi-fi 2.4/5 GHz, Bluetooth 5.1. Форм-фактор платы, коннекторы и поддержка периферийных устройств аналогичны модели Arduino Uno. Поступление в продажу намечено на 26 октября по цене 47 евро для варианта с 2 ГБ ОЗУ.



  • Интегрированная среда разработки Arduino App Lab, поддерживающая создание приложений для платы Arduino UNO Q с использованием методов визуального проектирования. При разработке приложений можно использовать как визуальную компоновку из готовых блоков, так и традиционный код на C++ и Python. Arduino App Lab также интегрирована с платформой Edge Impulse и предоставляет оптимизированные модели машинного обучения, которые можно использовать для таких задач, как идентификации объектов, определения аномалий, классификация изображений и распознавания звука. Код Arduino App Lab распространяется под лицензией GPLv3.

    1. OpenNews: Сообщества Arduino.org и Arduino.cc объявили о воссоединении после раскола
    2. OpenNews: Разногласия основателей Arduino привели к искам и появлению двух проектов Arduino
    3. OpenNews: Intel прекращает выпуск модуля Curie и плат Arduino 101
    4. OpenNews: Новая версия среды разработки Arduino IDE 2.3
Обсуждение (162 +11) | Тип: К сведению |
·07.10.2025 Отстранённые мэйнтейнеры RubyGems.org основали альтернативный репозиторий Gem Cooperative (29 +13)
  Пять бывших сопровождающих проекты RubyGems.org, RubyGems и Bundler, среди которых владелец торговой марки Bundler, объявили о создании альтернативного проекта - Gem Cooperative, который подконтролен сообществу и использует открытую модель управления, созданную с оглядкой на проект Homebrew. На текущем этапе проектом запущен gem-cервер gem.coop, содержащий все пакеты из каталога RubyGems.org и синхронизированный с ним. Заявлена полная совместимость с системой управления пакетами RubyGems и менеджером зависимостей Bundler.

Сервер пока работает в режиме зеркала RubyGems.org, а функциональность для публикации пакетов планируют добавить в ближайшие месяцы. Для переключения на альтернативный сервер достаточно заменить в gemfile значение параметра source с "https://rubygems.org" на "https://gem.coop".

Основавшие Gem Cooperative мэйнтейнеры были отстранены от работы после инцидента с некоммерческой компанией Ruby Central, курирующей проведение конференций RubyConf и отвечавшей за поддержание инфраструктуры для работы сервиса RubyGems.org. В сентябре компания Ruby Central получила полный контроль над GitHub-репозиториями, в которых ведётся разработка RubyGems, rubygems.org и Bundler, и приняла решение исключить всех внешних мэйнтейнеров. Кроме того, внешним мэйнтейнерам был закрыт доступ к gem-пакетам bundler и rubygems-update.

Удаление не работающих по контракту с Ruby Central мэйнтейнеров произведено после консультации с юристами и на основе результатов проведённого аудита безопасности инфраструктуры. В качестве причины сосредоточения управления в одних руках упоминалась забота о безопасности и защита от атак класса "supply chain". Ruby Central пытается минимализировать доступ к репозиториям и исключить наличие полного привилегированного доступа к репозиториям лиц, не подотчётных и не несущих прямую ответственность.

Помимо принудительно исключённых мэйнтейнров в числе основателей альтернативного сервиса Gem Cooperative присутствует Элен Даш (Ellen Dash), которая в сентябре уволилась из компании Ruby Central и сложила с себя обязанности мэйнтейнера в знак протеста против действий Ruby Central, которые Элен характеризовала как враждебное поглощение проекта. По мнению Элен действия Ruby Central были несправедливыми и доступа лишились заслуженные люди, делом заработавшие свою репутацию и более десяти лет занимавшиеся сопровождением RubyGems и Bundler.

Джоэл Драппер (Joel Drapper), мэйнтейнер gem-пакетов Phlex и Literal, и бывший сотрудник компании Shopify, ключевого спонсора Ruby Central, также считает действия Ruby Central захватом GitHub-репозиториев, раннее контролируемых сообществом. По его мнению у компании Ruby Central, обеспечивающей работу сервиса RubyGems.org, не было необходимости в присвоении репозиториев github.com/rubygems, так как она полостью контролировала то, какой код использовать для организации работы сервиса RubyGems.org. Присвоение прав на репозитории с кодом, который используется для запуска сервиса, сравнивается с присвоением прав на библиотеку функций на основании того, что она используется в приложении.

Тем временем, в сообществе разработчиков Ruby назревает ещё один конфликт - опубликовано открытое письмо с призывом создать форк фреймворка Ruby on Rails, независимый от его создателя, Давида Хейнемейера Ханссона (David Heinemeier Hansson). Давиду вменяют расистские и трансфобные высказывания, недостойные лидера сообщества (например, расистские высказывания сводятся к тому, что в одной из заметок Давид упомянул, что Лондон уже не полон коренных британцев). Открытое письмо уже подписало более 140 участников. Среди подписавших Тим Брэй (соавтор спецификации XML), Джефф Этвуд (сооснователь Stack Overflow и Discourse) и Евгений Рочко (создатель социальной сети Mastodon).

  1. OpenNews: Rubygems.org подвергся взлому
  2. OpenNews: В RubyGems выявлена удалённо эксплуатируемая уязвимость
  3. OpenNews: В RubyGems выявлено 724 вредоносных пакета
  4. OpenNews: Уязвимость в RubyGems.org, позволяющая подменить чужие пакеты
  5. OpenNews: Бывший техдиректор NPM развивает распределённый репозиторий пакетов Entropic
Обсуждение (29 +13) | Тип: К сведению | Интересно
·06.10.2025 Релиз OpenSSH 10.1 (79 +27)
  Опубликован релиз OpenSSH 10.1, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP.

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

  • Устранена проблема с безопасностью (CVE-2025-61984), позволяющая атакующему подставить shell-команды через манипуляции со спецсимволами в имени пользователя или URI, которые могли быть выполнены при запуске команды, указанной через настройку "ProxyCommand" и содержащей подстановку "%u". Проблема затрагивает только системы, допускающие при запуске ssh подстановку имён пользователей или URI, полученных из незаслуживающих доверия источников.

    Для блокирования подобных атак запрещено использование управляющих символов в именах пользователей, указываемых при запуске в командной строке или подставляемых в настройки через %-последовательности. Также запрещено использование нулевого символа ("\0") в URI ssh://. Исключение сделано только для имён, заданных в файле конфигурации (подразумевается, что данные файле конфигурации заслуживают доверия).

  • В утилиты ssh и ssh-agent добавлена поддержка ключей ed25519, хранимых в токенах PKCS#11.
  • В файл конфигурации ssh_config добавлена настройка RefuseConnection, при обработке которой в активной секции осуществляется завершение работы процесса с выводом сообщения об ошибке без попытки установки соединения.
    
       Match host foo
         RefuseConnection "хост foo уже не используется, подключайтесь к хосту bar"
    
  • В ssh и sshd добавлены обработчики сигнала SIGINFO для вывода в лог информации о сеансе и активном канале.
  • В sshd в случае отклонения аутентификации пользователя по сертификату обеспечен вывод в лог не только причины блокировки входа, но и исчерпывающей информации для идентификации проблемного сертификата.
  • В sshd добавлена проверка номера дисплея X11, относительно смещения, указанного в директиве X11DisplayOffset.
  • В набор unit-тестов добавлены возможности измерения производительности, активируемые при запуске "make UNITTEST_BENCHMARK=yes" в OpenBSD или "make unit-bench" в остальных системах.

Изменения, потенциально нарушающие обратную совместимость:

  • В ssh добавлен вывод предупреждения при установке соединения с использованием алгоритма согласования ключей, не стойкого к подбору на квантовом компьютере. Предупреждение добавлено из-за риска осуществления атак в будущем, используя ранее сохранённые дампы трафика. Для отключения предупреждения в ssh_config добавлена опция WarnWeakCrypto.
    
       Match host unsafe.example.com
           WarnWeakCrypto no
    
  • В ssh и sshd значительно изменена обработка параметров качества обслуживания DSCP (IPQoS). Для интерактивного трафика теперь по умолчанию выставляется класс EF (Expedited Forwarding) для более приоритетной обработки в беспроводных сетях. Для не интерактивного трафика выставляется класс, по умолчанию используемых в операционной системе. Класс трафика можно изменить при помощи настройки IPQoS в ssh_config и sshd_config. Параметры ToS (type-of-service) для IPv4 в директиве IPQoS объявлены устаревшими (на мену ToS пришёл DSCP).
  • В ssh-add при добавлении сертификата в ssh-agent реализовано выставление времени жизни сертификата в значение, на 5 минут большее, чем срок действия сертификата (для автоматического удаления просроченного сертификата). Для отключения данного поведения в ssh-add добавлена опция "-N".
  • Удалена поддержка ключей XMSS, которая была помечена как экспериментальная и никогда по умолчанию не включалась.
  • Unix-сокеты, создаваемые процессами ssh-agent и sshd, перенесены из каталога /tmp в ~/.ssh/agent, что гарантирует невозможность обращения через данные сокеты из изолированных процессов, для которых ограничен доступ к файловой системе, но открыт доступ к /tmp.

В будущих выпусках будут объявлены устаревшими DNS-записи SHA1 SSHFP из-за проблем с надёжностью хэш-функции SHA1. Данные записи будут игнорироваться, а команда "ssh-keygen -r" будет генерировать только записи SHA256 SSHFP.

  1. OpenNews: Релиз OpenSSH 10.0
  2. OpenNews: Компания Cloudflare опубликовала opkssh для аутентификации в SSH через OpenID Connect
  3. OpenNews: Уязвимость в поставляемом во FreeBSD варианте OpenSSH, допускающая удалённое выполнение кода
  4. OpenNews: Использование SSH поверх UNIX-сокета вместо sudo для избавления от suid-файлов
  5. OpenNews: Mayhem - атака, искажающая биты в памяти для обхода аутентификации в sudo и OpenSSH
Обсуждение (79 +27) | Тип: Программы |
·06.10.2025 Опубликован открытый USB-стек TinyUSB 0.19 (55 +38)
  Доступен выпуск проекта TinyUSB 0.19, развивающего кроссплатформенный USB-стек для встраиваемых систем. Предоставляются компоненты USB-стека для USB-хостов (USB Host) и для подключаемых устройств (USB Device). Код проекта написан на языке Си и распространяется под лицензией MIT.

Для повышения безопасности в TinyUSB не применяются операции динамического выделения памяти. Поддерживается использование в многопоточных приложениях. Для безопасной многопоточной работы все события, связанные с возникновением прерываний, не обрабатываются сразу при поступлении ISR (Interrupt Service Request), а помещаются в очередь, которая разбирается и обрабатывается в контексте выполнения приложения, а не обработчика прерываний. При доступе к совместно используемым ресурсам, таким как FIFO CDC (Communication Device Class), применяются семафоры и мьютексы.

Стек абстрагирован от операционной системы и может использоваться как самодостаточный компонент, не привязанных к функциональности операционных систем. При этом доступны модули для интеграции TinyUSB с ОС FreeRTOS, RT-Thread и Apache Mynewt. Поддерживаются возможности снижения энергопотребления, такие как переход в спящий режим и пробуждение при появлении активности. Имеется начальная реализация протокола PD 3.0 (Power Delivery) для управления передачей электроэнергии через USB Type-C.

TinyUSB позволяет добавлять поддержку собственных классов USB-устройств и хостов без модификации USB-стека. Среди уже поддерживаемых в TinyUSB классов устройств:

  • UAC2 - Audio Class 2.0;
  • BTH HCI - Bluetooth Host Controller Interface;
  • CDC - Communication Device Class;
  • DFU - Device Firmware Update;
  • HID - Human Interface Device (клавиатура, мышь, геймпад);
  • MSC - Mass Storage Class (включая накопители с несколькими логическими устройствами);
  • MIDI - Musical Instrument Digital Interface;
  • MTP/PTP - Media Transfer Protocol;
  • RNDIS, ECM (Ethernet Control Model) и NCM (Network Control Model) - сетевое взаимодействие через USB;
  • USBTMC - Test and Measurement Class;
  • UVC - Video class 1.5;
  • WebUSB.

Поддерживаемые классы USB-хостов:

  • HID - Human Interface Device;
  • MSC - Mass Storage Class;
  • CDC-ACM - Communication Device Class;
  • FTDI, CP210x, CH34x, PL2303 - проброс последовательного порт поверх USB;
  • USB Hub.

В новом выпуске расширен API для устройств и хостов. В реализации USB-хоста появилась поддержка устройств с несколькими конфигурациями. Добавлена поддержка микроконтроллеров и плат:

  • ESP32-H4, ESP32-C5, ESP32-C61;
  • STM32U0, STM32WBA, STM32N6;
  • AT32F405, AT32F403A, AT32F415, AT32F423;
  • CH32V305 и CH32V20x (USB host);
  • MCXA156 SDK 2.16 и FRDM-MCXA156.

  1. OpenNews: Выпуск Ventoy 1.1.07, инструментария для загрузки произвольных систем с USB-носителей
  2. OpenNews: Intel реализовал поддержку eUSB2V2 для ядра Linux
  3. OpenNews: Уязвимость в подсистеме Linux-ядра USB Gadget, потенциально позволяющая выполнить код
  4. OpenNews: Атака на заблокированный ПК через USB
  5. OpenNews: В USB-драйверах из состава ядра Linux выявлено 15 уязвимостей
Обсуждение (55 +38) | Тип: Программы |
Следующая страница (раньше) >>



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

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