Mozilla сворачивает сервисы Firefox Send и Firefox Notes

Компания Mozilla приняла решение закрыть сервисы Firefox Send и Firefox Notes. Firefox Send официально прекратил свою работу начиная с сегодняшнего дня (на деле доступ был закрыт ещё в июле), а Firefox Notes будет выведен из строя 1 ноября. Высвободившиеся ресурсы планируется направить на развитие сервисов Mozilla VPN, Firefox Monitor и Firefox Private Network.

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

Напомним, что Firefox Send позволял загрузить в хранилище на серверах Mozilla файл, размером до 1 Гб в анонимном режиме и 2.5 Гб при создании зарегистрированной учётной записи. На стороне браузера файл шифровался и передавался на сервер уже в зашифрованном виде. После загрузки файла пользователю предоставлялась ссылка, которая генерировалась на стороне клиента и включала идентификатор и ключ для расшифровки. При помощи предоставленной ссылки получатель мог загрузить файл и расшифровать на своей стороне. Отправитель имел возможность определить число загрузок, после исчерпания которых файл удалялся из хранилища Mozilla, а также время жизни файла (от одного часа до 7 дней).

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

Источник: [ссылка]

ARM начинает поддерживать свободный драйвер Panfrost

На конференции XDC2020 (X.Org Developers Conference) объявлено о присоединении компании ARM к процессу разработки проекта Panfrost, развивающего открытый драйвер для видеоядер Mali. Компания ARM выразила готовность предоставить разработчикам драйвера необходимую информацию и документацию для более полного понимания оборудования и фокусирования внимания на разработке, без траты время на разгадывание загадок в процессе обратного инжиниринга бинарных драйверов. Ранее подобное произошло с подключением компании Qualcomm к работе над проектом Freedreno, развивающим свободный драйвер для GPU Qualcomm Adreno.

Участие компании ARM поможет довести стабильность реализации до готовности к повсеместному использованию и обеспечить более полную поддержку специфичных для GPU Mali внутренних инструкций за счёт предоставления информации об архитектуре чипов из первых рук. Доступность внутренней документации также позволит добиться максимальной производительности, полного соответствия со спецификациями и охвата всех доступных возможностей GPU Midgard и Bifrost.

Первые изменения, подготовленные на основе сведений, полученных от ARM, уже переданы в кодовую базу драйвера. В частности, выполнена работа по приведению к каноническому виду операций упаковки инструкций и полной переработке дизассемблера, для более точного отражения архитектуры набора команд GPU Bifrost и соответствия принятой в ARM терминологии.

Драйвер Panfrost был основан в 2018 году Алисой Розенцвейг (Alyssa Rosenzweig), работающей в компании Collabora, и до сих пор развивался на основе обратного инжиниринга оригинальных драйверов от компании ARM. В настоящее время драйвер поддерживает работу с чипами на базе микроархитектур Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) и Bifrost (Mali G3x, G5x, G7x). Для GPU Mali 400/450, применяемых во многих старых чипах на основе архитектуры ARM, отдельно развивается драйвер Lima.

Источник: [ссылка]

Проект Genode опубликовал выпуск ОС общего назначения Sculpt 20.08

Представлен выпуск операционной системы Sculpt 20.08, в рамках которой на базе технологий Genode OS Framework развивается операционная система общего назначения, которая сможет быть использована обычными пользователями для выполнения повседневных задач. Исходные тексты проекта распространяются под лицензией AGPLv3. Для загрузки предлагается LiveUSB-образ, размером 26 Мб. Поддерживается работа на системах с процессорами и графической подсистемой Intel с включенными расширениями VT-d и VT-x.

Новый выпуск примечателен переработкой низкоуровневого графического стека и обеспечением совместимости с браузерами на базе движка Chromium. Первым реализована возможность запуска web-браузера Falkon, использующего движок Chromium, без применения виртуальной машины с Linux. Добавлена возможность интерактивной привязки компонентов к определённым ядрам CPU (CPU-affinity).

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

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

В любой момент пользователь может переключиться в консольный режим управления, который предоставляет большую гибкость в управлении. Традиционный рабочий стол может быть получен при помощи запуска дистрибутива TinyCore Linux в виртуальной машине с Linux. В данном окружении доступны браузеры Firefox и Aurora, текстовый редактор на базе Qt и различные приложения. Для запуска утилит командной строки предлагается окружение noux.

Напомним, что Genode предоставляет унифицированную инфраструктуру для создания пользовательских приложений, работающих поверх ядра Linux (32 и 64 бит) или микроядер NOVA (x86 с виртуализацией), seL4 (x86_32, x86_64, ARM), Muen (x86_64), Fiasco.OC (x86_32, x86_64, ARM), L4ka::Pistachio (IA32, PowerPC), OKL4, L4/Fiasco (IA32, AMD64, ARM) и выполняющегося напрямую ядра для платформ ARM и RISC-V. Входящее в состав паравиртуализированное Linux-ядро L4Linux, работающее поверх микроядра Fiasco.OC, позволяет выполнять в Genode обычные Linux программы. Ядро L4Linux не работает с оборудованием напрямую, а использует сервисы Genode через набор виртуальных драйверов.

Для Genode осуществлено портирование различных Linux и BSD компонентов, обеспечена поддержка Gallium3D, осуществлена интеграция Qt, GCC и WebKit, реализована возможность организации гибридных Linux/Genode программных окружений. Подготовлен порт VirtualBox, работающий поверх микроядра NOVA. Большое число приложений адаптировано для запуска напрямую поверх микроядра и окружения Noux, обеспечивающего виртуализацию на уровне ОС. Для запуска не портированных программ предусмотрена возможность задействования механизма создания виртуальных окружений уровня отдельных приложений, позволяющих запускать программы в виртуальном Linux-окружении с использованием паравиртуализации.

Источник: [ссылка]

Реализация контроллера домена в Samba оказалась подвержена уязвимости ZeroLogin

Разработчики проекта Samba предупредили пользователей, что недавно выявленная в Windows уязвимость ZeroLogin (CVE-2020-1472) проявляется и в реализации контроллера домена на базе Samba. Уязвимость вызвана недоработками в протоколе MS-NRPC и криптоалгоритме AES-CFB8, и при успешной эксплуатации позволяет злоумышленнику получить доступ администратора в контроллере домена.

Суть уязвимости в том, что протокол MS-NRPC (Netlogon Remote Protocol) позволяет при обмене данными аутентификации откатиться на использование RPC-соединения без шифрования. После этого атакующий может использовать брешь в алгоритме AES-CFB8 для подделки (спуфинга) успешного входа в систему. Для входа с правами администратора в среднем требуется около 256 попыток спуфинга. Для совершения атаки не требуется наличие рабочей учётной записи в контроллере домена — попытки спуфинга можно совершать с использованием неверного пароля. Запрос аутентификации через NTLM будет перенаправлен на контроллер домена, который вернёт отказ доступа, но атакующий может подменить данный ответ, и атакуемая система посчитает вход успешным.

В Samba уязвимость проявляется только в системах, не использующих настройку «server schannel = yes», которая начиная с Samba 4.8 выставлена по умолчанию. В частности скомпрометированы могут быть системы с настройками «server schannel = no» и «server schannel = auto», которые позволяют в Samba использовать те же недоработки в алгоритме AES-CFB8, что и в Windows.

При использовании подготовленного для Windows эталонного прототипа эксплоита, в Samba срабатывает только вызов ServerAuthenticate3, а операция ServerPasswordSet2 заканчивается сбоем (эксплоит требует адаптации для Samba). Про работоспособность альтернативных эксплоитов (1, 2, 3, 4) ничего не сообщается. Отследить попытки атаки на системы можно через анализ наличия записей с упоминанием ServerAuthenticate3 и ServerPasswordSet в логах аудита Samba.

Источник: [ссылка]

Microsoft реализовал поддержку корневого окружения для Hyper-V на базе Linux

Компания Microsoft представила для обсуждения в списке рассылки разработчиков ядра Linux серию патчей, обеспечивающих работу гипервизора Hyper-V с корневым окружением на базе Linux, имеющим прямой доступ к оборудованию и применяемым для запуска гостевых систем (аналог Dom0 в Xen). До сих пор Hyper-V (Microsoft Hypervisor) поддерживал Linux лишь в гостевых окружениях, но сам гипервизор управлялся из окружения на базе Windows. Теперь компания Microsoft намерена создать полный стек виртуализации с Linux и Hyper-V.

Организация работы гиперивизора в ядре Linux и Windows заметно отличается, поэтому в реализации Hyper-V для Linux применяются иной подход к настройке подсистем и организации гипервызовов. Код для маппинга прерываний с использованием IOMMU переделан по аналогии с аналогичным кодом поддержки Xen в Linux (Xen и Hyper-V имеют похожую архитектуру и базируются на использовании привилегированного корневого/Dom0 окружения для управления).

Патчи включают минимально необходимую для работы реализацию, которая предложена как начальный прототип для обсуждения и критики. Для управления гипервизором предлагается устройство /dev/mshv при помощи которого приложения из пространства пользователя могут создавать и запускать виртуальные машины. Также предложен порт высокоуровневого гипервизора Cloud Hypervisor, позволяющий загружать виртуальные машины поверх Hyper-V вместо KVM.

В 2018 году число гостевых систем с Linux в облачном сервисе Azure превысило окружения на базе Windows, доля которых неуклонно снижается, в основном благодаря росту популярности devops-платформ и Kubernetes, завязанных на Linux. Использование единого стека на базе Linux потенциально позволит упростить сопровождение и повысить производительность серверов Hyper-V, обслуживающих гостевые системы с Linux.

Источник: [ссылка]

Выпуск пользовательского окружения GNOME 3.38

После шести месяцев разработки представлен выпуск десктоп-окружения GNOME 3.38. По сравнению с прошлым выпуском было внесено около 28 тысяч изменений, в реализации которых принял участие 901 разработчик. Для быстрой оценки возможностей GNOME 3.38 подготовлены специализированные Live-сборки на основе openSUSE и Ubuntu. GNOME 3.38 также включён в состав предварительных сборок Fedora 33.

Начиная с выпуска GNOME 3.38 проект начал формирование собственного установочного образа, подготовленного в рамках инициативы GNOME OS. Образ предназначен для установки в виртуальных машинах под управлением GNOME Boxes 3.38 и нацелен главным образом на тестирование и отладку развиваемых возможностей и приложений, а также проведение экспериментов с интерфейсом пользователя.

Для следующего выпуска GNOME решено использовать номер 40.0 вместо 3.40 чтобы избавиться от первой цифры «3», которая при текущем процессе разработки потеряла актуальность. Версию 4.0 для GNOME было решено не использовать для того чтобы избежать путаницы и пересечений с GTK 4.0. Промежуточные корректирующие выпуски будут поставляться под номерами 40.1, 40.2, 40.3… Каждые шесть месяцев будет формироваться новый значительный релиз, увеличивающий номер на 1. Т.е. следом за GNOME 40 осенью 2021 года выйдет GNOME 41, а весной 2022 года — GNOME 42. Использование нечётных номеров для экспериментальных выпусков будет упразднено, вместо них предлагаемые тестовые выпуски будут предлагаться как 40.alpha, GNOME 40.beta и GNOME 40.rc.

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

  • Предлагавшиеся ранее раздельные разделы со всеми и часто используемыми приложениями заменены на сводное представление, позволяющее перегруппировывать приложения и распределять их по создаваемым пользователем папкам. Перетаскивание приложений осуществляется через перемещение мышью с удержанием кнопки для клика.
  • Предложен вводный интерфейс (Welcome Tour), показываемый при первом входе пользователя после завершения начальной настройки. В интерфейсе обобщены сведения об основных возможностях рабочего стола и предложен ознакомительный тур с пояснением принципов работы. Приложение написано на языке Rust.
  • В конфигураторе в разделе управления пользователями появилась возможность настройки родительского контроля для обычных учётных записей. Для заданного пользователя можно запретить показ в списках приложений тех или иных установленных программ. Родительский контроль также интегрирован в менеджер установки приложений и позволяет разрешить установку только выбранных программ.
  • В конфигураторе предложен новый интерфейс для сканирования отпечатков пальцев для аутентификации при помощи сенсоров отпечатков пальцев.
  • Добавлена опция для блокирования активации неавторизированных USB-устройств, подключенных во время блокировки экрана.
  • Предоставлена возможность отображения индикатора заряда аккумулятора в системном меню.
  • Средства для записи содержимого экрана (screencasting) в GNOME Shell переработаны для использования мультимедийного сервера PipeWire и API ядра Linux, что позволило снизить потребление ресурсов и повысить отзывчивость во время записи.
  • В мультимониторных конфигурациях при использовании Wayland предоставлена возможность назначения разных частот обновления экрана для каждого монитора.
  • Обновлён браузер GNOME Web (Epiphany), в котором:
    • Включена по умолчанию защита от отслеживания перемещений пользователя между сайтами.
    • В настройки добавлена возможность блокирования хранения сайтами данных в локальных хранилищах.
    • Реализована поддержка импорта паролей и закладок из браузера Google Chrome.
    • Переработан встроенный менеджер паролей.
    • Добавлены кнопки для отключения/включения звука в выбранных вкладках.
    • Переработаны диалоги с настройками и историей посещений.
    • По умолчанию запрещено автоматическое воспроизведение видео со звуком.
    • Добавлена возможность настройки автовоспроизведения видео в привязке к отдельным сайтам.

  • Программа для работы с картами GNOME Maps адаптирована для использования на смартфонах. В режиме просмотра спутниковых снимков обеспечена возможность отображения меток. Добавлена поддержка включения просмотра карт в ночном режиме.
  • Переработан диалог добавления мировых часов, показывающих время с учётом часового пояса в заданном месте. В будильнике добавлена возможность настройки продолжительности сигнала и времени между повторными сигналами.
  • В GNOME Games результаты поиска теперь отображаются в обзорном режиме, позволяющем сразу запустить искомую игру. Игры можно группировать по коллекциям или использовать предопределённые коллекции с избранными или недавно запущенными играми. Добавлена поддержка запуска игр для приставок Nintendo 64. Повышена надёжность работы — игры теперь запускаются в отдельном процессе и в случае краха игры основное приложение не страдает.
  • Модернизирован интерфейс приложений для создания скриншотов и записи звука.
  • В GNOME Boxes, менеджер виртуальных машин и удалённых рабочих столов, добавлена поддержка редактирования XML-файлов виртуальных машин для изменения расширенных настроек libvirt, которые отсутствуют в штатном пользовательском интерфейсе. При создании новой виртуальной машины Boxes теперь позволяет вручную выбрать операционную систему, если её не удалось определить автоматически.
  • В калькуляторе, программе для работы с web-камерой Cheese, играх Tali, Sudoku, Robots, Quadrapassel и Nibbles предложены новые пиктограммы.
  • В эмуляторе терминала обновлена цветовая схема для текста. Новые цвета обеспечивают более высокую констрастность и упрощают чтение текста.
  • В GNOME Photos добавлен новый фильтр изображений Trencin, напоминающий фильтр Clarendon в Instagram (делает более светлыми светлые области и более тёмными — тёмные).
  • В системное меню добавлена опция Restart, которую также можно использовать для перехода в меню управления загрузчиком (при клике с нажатой клавишей Alt).
  • Добавлена новая редакция поискового движка Tracker 3, на который переведено большинство основных приложений GNOME. В новой версии внесены изменения, позволяющие добиться повышения безопасности изоляции приложений, поставляемых в формате Flatpak, благодаря возможности явно контролировать то, какие данные приложения могут быть запрошены и проиндексированы для поиска. Вместо централизованной БД задействована распределённая модель, позволяющая разработчикам приложений хранить данные для трекера в локальной БД самого приложения. Индекс системной ФС, обрабатываемый в Tracker Miner FS, теперь подключается в режиме только для чтения. Добавлена полная поддержка языка запросов SPARQL 1.1, включая выражения SERVICE {}, что позволяет из одной БД формировать запросы к другой.
  • Во Fractal, клиенте децентрализованной коммуникационной платформы Matrix, улучшено воспроизведение видео при просмотре истории обмена сообщениями — миниатюры для предпросмотра видео теперь показываются непосредственно в истории сообщений и раскрываются в полное видео при клике. Во встроенном звуковом проигрывателе появилась возможность изменения позиции в файле. Сообщения теперь можно редактировать по месту с отображением соответствующего индикатора, что сообщение было отредактировано.
  • До версии 1.0 обновлена библиотека libhandy, предлагающая набор виджетов и объектов для создания интерфейса пользователя для мобильных устройств. В новой версии добавлены новые виджеты, такие как HdyDeck и HdyWindow.
  • В библиотеки GLib, libsoup и pango интегрирована поддержка трассировки при помощи sysprof.

Источник: [ссылка]

Компания IBM открыла наработки, связанные с процессором A2O POWER

Компания IBM объявила о передаче сообществу OpenPOWER процессорного ядра A2O POWER и FPGА-окружения для симуляции работы эталонного процессора на его основе. Связанные с A2O POWER документация, схемы и описания аппаратных блоков на языках Verilog и VHDL опубликованы на GitHub под лицензией CC-BY 4.0.

Дополнительно сообщается о передаче сообществу OpenPOWER инструментария Open-CE (Open Cognitive Environment), основанного на IBM PowerAI. Open-CE предлагает коллекцию настроек, рецептов и скриптов для упрощения создания и развёртывания систем машинного обучения на базе таких фреймворков, как TensorFlow и PyTorch, через формирование готовых пакетов или образов контейнеров для запуска под управлением платформы Kubernetes. До этого в руки сообщества OpenPOWER была передана архитектура набора команд (ISA) Power и спецификации, связанные с процессором A2I POWER.

Процессорное ядро A2O POWER разработано для встраиваемого применения в системах на чипе (SoC), поддерживает неупорядоченное выполнение команд и диспетчеризацию, обеспечивает многопоточность (2 потока SMT), имеет GSHARE-подобные средства предсказания ветвления и предоставляет 64-разрядную архитектуру набора команд Power 2.07 Book III-E. A2O продолжает развитие ранее открытого ядра A2I в области оптимизации производительности отдельных потоков и использует аналогичный модульный дизайн и структуру взаимодействия узлов.

Модульный дизайн подразумевает наличие MMU, движка выполнения микрокода и интерфейса подключения акселераторов AXU (Auxiliary Execution Unit), позволяющего создавать специализированные решения на базе A2O, оптимизированные для различных видов нагрузки, например, для ускорения операций машинного обучения.

Источник: [ссылка]

Выпуск новой стабильной ветки Tor 0.4.4

Представлен выпуск инструментария Tor 0.4.4.5, используемого для организации работы анонимной сети Tor. Версия Tor 0.4.4.5 признана первым стабильным выпуском ветки 0.4.4, которая развивалась последние пять месяцев. Ветка 0.4.4 будет сопровождаться в рамках штатного цикла сопровождения — выпуск обновлений будет прекращён через 9 месяцев (в июне 2021 года) или через 3 месяца после релиза ветки 0.4.5.x. Длительный цикл поддержки (LTS) обеспечен для ветки 0.3.5, обновления для которой будут выпускаться до 1 февраля 2022 года. Поддержка веток 0.4.0.x, 0.2.9.x и 0.4.2.x прекращена. Поддержка ветки 0.4.1.x будет прекращена 20 мая, а 0.4.3 — 15 февраля 2021 года.

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

  • Улучшен алгоритм выбора сторожевых узлов (guard), в котором решена проблема с балансировкой нагрузки, а также повышена производительность и безопасность. В новом алгоритме недавно выбранный сторожевой узел не может получить статус первичного, за исключением ситуации, когда все ранее выбранные сторожевые узлами недостижимы.
  • Реализована возможность балансировки нагрузки для onion-сервисов. Сервис на базе третьей версии протокола теперь можно выполнять роль бэкенда OnionBalance, настраиваемого при помощи опции HiddenServiceOnionBalanceInstance.
  • Актуализирован список запасных серверов директорий, который не обновлялся с прошлого года и из 148 серверов рабочими остались 105 (новый список включает 144 записи, сгенерированные в июле).
  • На релеях разрешена работа с ячейками EXTEND2, доступными только по адресу IPv6, а также разрешено совершение операции расширения цепочек поверх IPv6, если клиент и релей поддерживают IPv6. Если при расширении цепочек узлов ячейка достижима одновременно по IPv4 и IPv6, то адрес IPv4 или IPv6 выбирается случайным образом. Для расширения цепочки разрешено использование существующего соединения IPv6. Запрещено использование внутренних адресов IPv4 и IPv6.
  • Расширен объём кода, который может быть отключён при запуске Tor без поддержки релея.

Источник: [ссылка]

Прекращение разработки библиотеки Moment.js, имеющей 12 млн загрузок в неделю

Разработчики JavaScript-библиотеки Moment.js объявили о прекращении разработки и переводе проекта в режим сопровождения, подразумевающем остановку расширения функциональности, заморозку API и ограничение активности исправлением серьёзны ошибок, отражением изменений из базы часовых поясов и поддержанием инфраструктуры для существующих пользователей. Для новых проектов Moment.js применять не рекомендуется.

Библиотека Moment.js предоставляет функции для манипуляцией со временем и датами, и является стандартом де-факто в своей области. Еженедельно библиотеку загружают около 12 млн раз. Причиной принятого решения стало осознание, что проект устарел и не укладывается в современные парадигмы разработки на JavaScript. Из недостатков упоминается относительно большой размер библиотеки (329KB без сжатия, 70КБ со сжатием) и использование изменяемых объектов (mutable, изменении копии объекта moment приводит к изменению оригинала).

В обзорах также упоминаются такие проблемы Moment.js, как низкая производительность, запутанность API, отсутствие поддержки Tree_shaking (урезание неиспользуемого кода для сокращения размера web-приложения) и трудоёмкость отладки. Судя по всему, последней каплей, подтолкнувшей разработчиков к решению о переводе Moment.js в режим сопровождения, стало изменение в системе аудита web-страниц Lighthouse, встроенной в инструменты для web-разработчиков Chrome — несколько дней назад Lighthouse стал выдавать предупреждение об излишней раздутости кода Moment.js и предлагать альтернативы для замены.

Современные браузеры предоставляют встроенный API Intl для работы с локалями и часовыми поясами. Данный API используется в библиотеке Luxon, созданной одним из участников разработки Moment.js и преподносимой как следующий шаг эволюции Moment.js. Кроме Luxon в качестве вариантов для замены упоминаются библиотеки Day.js (минималистичный вариант Moment.js с похожим API, занимает около 7КБ без плагинов), date-fns, js-joda (порт java.time) и штатные JavaScript-объекты Date и Intl, а также находящийся в состоянии черновика API Temporal.

Источник: [ссылка]

Gentoo начал распространение универсальных сборок ядра Linux

Разработчики Gentoo Linux объявили о готовности универсальных сборок с ядром Linux, созданных в рамках проекта Gentoo Distribution Kernel для упрощения процесса сопровождения ядра Linux в дистрибутиве. Проектом предоставлена возможность как установки готовых бинарных сборок с ядром, так и использования унифицированного ebuild для сборки, настройки и установки ядра при помощи пакетного менеджера, по аналогии с другими пакетами.

Ключевыми отличиями предложенных готовых сборок от ручного формирования ядра является возможность автоматического обновления при установке регулярных обновлений системы пакетным менеджером (emerge —update @world) и предопределённый набор опций по умолчанию, гарантирующий работоспособность после обновления (при ручном конфигурировании, если ядро не загрузится или возникнет сбой, не ясно, связана ли проблема с некорректным выставлением параметров или с ошибкой в самом ядре).

Для установки ядра Linux сформировано три пакета, которые можно установить вместе с остальными пакетами системы и после этого обновлять всю систему вместе с ядром одной командой, не прибегая к отдельной сборке ядра.

  • sys-kernel/gentoo-kernel — ядро с типовым набором патчей genpatches, специфичных для Gentoo. Сборка осуществляется при помощи пакетного менеджера с использованием настроек по умолчанию или заданием собственной конфигурации.
  • sys-kernel/gentoo-kernel-bin — уже собранные бинарные сборки gentoo-kernel, которые можно использовать для быстрой установки ядра без его компиляции на своей системе.
  • sys-kernel/vanilla-kernel — ebuild c ванильным ядром Linux, предлагаемым в виде, распространяемом на сайте kernel.org.

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

Источник: [ссылка]

Выпуск Java SE 15

После шести месяцев разработки компания Oracle выпустила платформу Java SE 15 (Java Platform, Standard Edition 15), в качестве эталонной реализации которой используется открытый проект OpenJDK. В Java SE 15 сохранена обратная совместимость с прошлыми выпусками платформы Java, все ранее написанные Java-проекты без изменений будут работоспособны при запуске под управлением новой версии. Готовые для установки сборки Java SE 15 (JDK, JRE и Server JRE) подготовлены для Linux (x86_64), Windows и macOS. Разработанная в рамках проекта OpenJDK эталонная реализация Java 15 полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с коммерческими продуктами.

Java SE 15 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 11, обновления для которого будут выпускаться до 2026 года. Прошлая LTS-ветка Java 8 будет поддерживаться до декабря 2020 года. Следующий LTS-релиз намечен на сентябрь 2021 года. Напомним, что начиная с выпуска Java 10 проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков.

Из новшеств Java 15 можно отметить:

  • Встроена поддержка алгоритма создания цифровой подписи EdDSA (Edwards-Curve Digital Signature Algorithm RFC 8032). Предложенная реализация EdDSA не зависит от аппаратных платформ, защищена от атак по сторонним каналам (обеспечено постоянное время всех вычислений) и по производительности опережает существующую реализацию ECDSA, написанную на языке Си, при том же уровне защиты. Например, EdDSA при использовании эллиптической кривой со 126-битным ключом демонстрирует производительность аналогичную ECDSA с эллиптической кривой secp256r1 и 128-битным ключом.
  • Добавлена экспериментальная поддержка запечатанных («sealed») классов и интерфейсов, которые не могут использоваться другими классами и интерфейсами для наследования, расширения или переопределения реализации. Запечатанные классы также предоставляют более декларативный способ ограничения использования суперкласса, чем модификаторы доступа, основанный на явном перечислении подклассов, разрешённых для расширения.
         package com.example.geometry;       public sealed class Shape          permits com.example.polar.Circle,                  com.example.quad.Rectangle,                  com.example.quad.simple.Square {...}  
  • Добавлена поддержка скрытых классов, которые не могут быть использованы напрямую байткодом других классов. Ключевым назначением скрытых классов является использование во фреймворках, динамически генерирующих классы во время выполнения и использующих их косвенно, через отражение. Подобные классы обычно имеют ограниченный жизненный цикл, поэтому их поддержание для доступа из статически сгенерированных классов не оправдано и приведёт лишь к увеличению потребления памяти. Скрытые классы также позволяют обойтись без нестандартного API sun.misc.Unsafe::defineAnonymousClass, который намечен на удаление в будущем.
  • Стабилизирован и признан готовым для повсеместного использования сборщик мусора ZGC (Z Garbage Collector). ZGC работает в пассивном режиме, насколько это возможно минимизирует задержки из-за сборки мусора (время остановки при использовании ZGC не превышает 10 мс.) и может работать как с небольшими, так и с огромными кучами, размером от нескольких сотен мегабайт до многих терабайт.
  • Стабилизирован и признан готовым для повсеместного использования сборщик мусора Shenandoah, работающий с минимальными приостановками (Low-Pause-Time Garbage Collector). Shenandoah разработан компанией Red Hat и примечателен использованием алгоритма, сокращающего время остановок во время сборки мусора за счёт проведения чистки параллельно с выполнением Java-приложений. Размер вносимых сборщиком мусора задержек предсказуем и не зависит от размера кучи, т.е. для куч в 200 MB и 200 GB задержки будут идентичны (не выходят за пределы 50 мс и обычно укладываются в 10 мс);
  • Стабилизирована и введена в язык поддержка текстовых блоков — новой формы строковых литералов, позволяющих включать в исходный код многострочные текстовые данные без применения в них экранирования символов и сохраняя исходное форматирования текста в блоке. Обрамление блока осуществляется тремя двойными кавычками. Например, вместо кода
         String html = "‹HTML›" +     "nt" + "‹BODY›" +     "ntt" + "‹H1›"Java 15 is here!"‹/H1›" +     "nt" + "‹/BODY›" +     "n" + "‹/HTML›";  

    можно указать:

         String html = """     ‹HTML›       ‹BODY›         ‹H1›"Java 15   is here!"‹/H1›       ‹/BODY›     ‹/HTML›""";  
  • Переработан API Legacy DatagramSocket. Старые реализации java.net.DatagramSocket и java.net.MulticastSocket, заменены на современную реализацию, более простую для отладки и сопровождения, а также совместимую с виртуальными потоками, развиваемыми в рамках проекта Loom. На случай возможного нарушения совместимости с существующим кодом старая реализация не удалена и может быть активирована при помощи опции jdk.net.usePlainDatagramSocketImpl.
  • Предложена вторая экспериментальная реализация сопоставления c образцом в операторе «instanceof», которая позволяет сразу определить локальную переменную для обращения к проверенному значению. Например, можно сразу писать «if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}» без явного определения «String s = (String) obj».
    Было:
         if (obj instanceof Group) {       Group group = (Group) obj;       var entries = group.getEntries();     }  

    Теперь можно обойтись без определения «Group group = (Group) obj»:

         if (obj instanceof Group group) {       var entries = group.getEntries();     }  
  • Предложена вторая экспериментальная реализация ключевого слова «record«, предоставляющего компактную форму для определения классов, позволяющую обойтись без явного определения различных низкоуровневых методов, таких как equals(), hashCode() и toString(), в случаях, когда данные сохраняются только в полях, поведение работы с которыми не меняется. Когда в классе используются типовые реализации методов equals(), hashCode() и toString(), в нём можно обойтись без их явного определения:
         public record BankTransaction(LocalDate date,                                double amount,                                String description) {}  

    Данное объявление приведёт к автоматическому добавлению реализаций методов equals(), hashCode() и toString() в дополнение к конструктору и методам, контролирующим изменение данных (getter).

  • Предложен второй предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
  • Отключена и объявлена устаревшей техника оптмизации Biased Locking, применявшаяся в HotSpot JVM для сокращения накладных расходов из-за блокировок. Данная техника потеряла актуальность на системах с атомарными инструкциями, предоставляемыми современными CPU, и слишком трудоёмка для сопровождения из-за своей сложности.
  • Объявлен устаревшим механизм RMI Activation, который будет удалён в одном из следующих выпусков. Отмечается, что RMI Activation устарел, переведён в разряд опции ещё в Java 8 и почти не применяется в современной практике.
  • Удалён JavaScript-движок Nashorn, который был объявлен устаревшим в Java SE 11.
  • Удалены порты для ОС Solaris и процессоров SPARC (Solaris/SPARC, Solaris/x64 и Linux/SPARC). Удаление указанных портов позволит сообществу ускорить разработку новых возможностей OpenJDK, не тратя время на поддержание особенностей, специфичных для Solaris и SPARC.

Источник: [ссылка]

В ядре Linux из текстовой консоли удалили поддержку прокрутки текста

Из поставляемой в составе ядра Linux реализации текстовой консоли удалён код, обеспечивающий возможность прокрутки текста назад (CONFIG_VGACON_SOFT_SCROLLBACK). Код удалён в связи с наличием ошибок, которых оказалось некому устранить из-за отсутствия мэйнтейнера, курирующего разработку vgacon.

Летом в vgacon была выявлена и устранена уязвимость (CVE-2020-14331), способная привести к переполнению буфера из-за отсутствия должных проверок наличия доступной памяти в буфере прокрутки. Уязвимость привлекла внимание разработчиков, которые организовали fuzzing-тестирование кода vgacon в syzbot.

Дополнительные проверки выявили ещё несколько похожих проблем в коде vgacon, а также проблемы в программной реализации прокрутки в драйвере fbcon. К сожалению, проблемный код давно остаётся без сопровождения, предположительно из-за того, что разработчики перешли на использование графических консолей и текстовые консоли вышли из обихода (люди продолжают пользоваться консолями vgacon и fbcon, но они уже десятилетия не являются основным интерфейсом ядра и такие расширенные возможности, как встроенная в драйвер прокрутка (Shift+PageUp/PageDown), предположительно, мало востребованы).

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

Источник: [ссылка]