Drupal 8

После четырёх c половиной лет разработки представлен релиз свободной системы управления web-контентом Drupal 8, подходящей для создания различных категорий web-проектов, от блогов и персональных страниц, до крупных новостных порталов и социальных сетей. По данным W3Techs на базе Drupal работает около 2.1% из 10 млн крупнейших сайтов в сети, среди которых такие ресурсы, как whitehouse.gov и The Economist. По информации от разработчиков Drupal, в выборке из 100 тысяч крупнейших сайтов Drupal занимает лидирующие позиции среди CMS.

Представлен релиз распределенной системы управления исходными текстами Git 2.5.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро LinuxAndroidLibreOfficeSystemdX.OrgWaylandMesaGstreamerWineDebianDragonFly BSDPerlEclipse,GNOMEKDEQtRuby on RailsPostgreSQLVideoLANPHPXenMinix.

По сравнению с прошлым выпуском в новую версию принято 583 изменения, подготовленные при участии 70 разработчиков, из которых 21 впервые приняли своё участие в разработке. В новом выпуске представлены в основном исправления ошибок и мелкие улучшения, значительные изменения отсутствуют. Основные изменения:

  • Новое сокращение branch@{push}, обозначающее удалённую отслеживаемую ветку, в которую будут помещены push-операции;
  • В команду "git send-email" добавлена поддержка файла /etc/aliases, используемого в sendmail;
  • В низкоуровневые внешние драйверы обеспечения слияния данных от трёх источников, помимо имён трёх временных файлов (%O, %A и %B) теперь передаётся финальный путь (%P);
  • Улучшена эвристика определения ошибок в определении путей в параметрах командной строки, что сняло ограничение на разделение опцией "--" похожих на имена файлов параметров в "git grep" (вместо "git grep строка -- *.c" теперь можно указывать "git grep строка *.c");
  • В скриптах с фильтрами обеспечена возможность завершения работы с выводом ошибки до того, как будут получены все данные от Git (при записи игнорируется EPIPE);
  • В "git diff" добавлена опция "--ws-error-highlight", подсвечивающая завершающие строку символы пробелов при отображении изменений;

  • Команда "git merge FETCH_HEAD" теперь учитывает, что ранее выполненный запрос "git fetch" может привести к множественному слиянию (Octopus merge) и избавляет от необходимости использования синтаксиса "git merge msg HEAD commits" в скриптах git pull;
  • В "git cat-file --batch" добавлена опция "--follow-symlinks", допускающая обход символических ссылок при запросе объекта по хэшу SHA-1. Например, HEAD:RelNotes может быть ссылкой на Documentation/RelNotes/2.5.0.txt и при указании данной опции git будет считать, что на входе Documentation/RelNotes/2.5.0.txt вместо HEAD:RelNotes;
  • Представлена замена для скрипта contrib/workdir/git-new-workdir, не зависящая от символических ссылок и надёжно обеспечивающая совместное использование объектов и ссылок.

Представлен выпуск платформы KDE Frameworks 5.14.0, в рамках которой развивается реструктуризованный и портированный на Qt 5 базовый набор библиотек и runtime-компонентов, лежащих в основе KDE. Фреймворк включает в себя 63 библиотеки, часть которых может работать в качестве самодостаточных надстроек над Qt, а часть формируют программный стек KDE. Подробнее с особенностями KDE Frameworks 5 можно познакомиться ванонсе первого выпуска. Статус подготовки бинарных сборок KDE Frameworks 5.14 можно оценить на данной странице. Протестировать без установки можно через Live-сборку от проекта Kubuntu.

Из изменений можно отметить:

  • Проведена работа по переименованию приватных классов для предотвращения их случайного экспортирования;
  • В Baloo реорганизованы интерфейсы D-Bus, задействованы метаданные JSON в плагине kded и организовано создание по одному экземпляру БД на процесс;
  • В KActivities решены проблемы со сборкой в OS X, переработан интерфейс настройки и представлен новый GUI для создания/удаления/конфигурирования комнат;
  • В KConfig завершено портирование на QCommandLineParser и проведена оптимизация вызова readEntryGui;
  • В прослойке для совместимости с KDELibs 4 выполнен перевод kded-плагина solid-networkstatus на метаданные JSON;
  • В KEmoticons реализовано кэширование экземпляров KEmoticons;
  • В KFileMetaData для PlainTextExtractor обеспечена работа с флагом O_NOATIME;
  • В KIO задействован Q_OS_WIN вместо Q_OS_WINDOWS, kpasswdserver переведён с kded на kiod, удалён устаревший код поддержки очень старых версий kpasswdserver;
  • В kpackagetool из состава Package Framework добавлена возможность удаления пакета и улучшен поиск правильных типов сервисов;
  • В KTextEditor улучшена подсветка синтаксиса для Haskell и ускорена работа интерфейса автодополнения кода;
  • В Plasma Framework реализован подходящий для сенсорных экранов текстовый курсор, добавлена возможность создания секций меню из PlasmaComponents.ModelContextMenu, объявлен вызов __editMenu, переработана реализация EditMenu.

Дополнительно сообщается об успехах по адаптации компонентов KDE Frameworks и отдельных приложений KDE для работы в окружении мобильной платформы Android. Для Android пока доступны только программы Algebra, GCompris и Marble Maps, но изменить сложившуюся ситуацию должно портирование KDE Frameworks 5, создание простой системы сборки и предоставление готового docker-образа с SDK-подобным окружением для разработки.

Python 3.5.0

После 18 месяцев разработки представлен значительный релиз языка программирования Python 3.5.

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

  • Добавлен новый модуль zipapp, предоставляющий API и утилиту командной строки для создания упакованных в один файл приложений, которые можно запустить командой "python приложение.pyz". Для создания исполняемого архива достаточно поместить все файлы программы в отдельную директорию, создать выполняемый по умолчанию скрипт __main__.py и выполнить команду "python -m zipapp имя_директории";
  • Расширено применение операторов распаковки "*" и "**", которые теперь можно использовать для произвольного числа распаковок при вызове функции или при манипуляциях с множествами, кортежами, списками и словарями. (ранее допускалась только одна распаковка). Например, для функции "def fn(a, b, c, d)" можно выполнить fn(**{'a': 1, 'c': 3}, **{'b': 2, 'd': 4})"), а для словаря - "{*range(4), 4, *(5, 6, 7)}";
  • Поддержка использования оператора форматирования вывода "%" для объектов bytes и bytearray по аналогии с тем, как выполняется форматирование строк. Например, выполнение "b'x=%i y=%f' % (1, 2.5)" приведёт к выводу "b'x=1 y=2.500000'";
  • В стандартной библиотеке представлена новая функция os.scandir() для очень быстрого обхода содержимого директорий. Выполнение os.walk() на базе новой функции работает в 3-5 раз быстрее на POSIX-системах и в 7-20 раз быстрее в Windows, за счёт сокращения числа вызовов os.stat();
  • Возможность автоматического повторного выполнения прерванных системных вызовов без установки отдельных обработчиков EINTR или InterruptedError;
  • Представлен модуль typing, который позиционируется в качестве нового стандарта для задания аннотаций типов. При подключении модуля можно предоставить данные о типах аргументов и возвращаемого значения функции, например "def greeting(name: str) -> str";
  • Реализована функция math.isclose() для приблизительного сравнения значений с заданным уровнем точности. Например, "math.isclose(5.0, 4.99998, abs_tol=0.00003)" вернёт True;
  • В обвязке для запуска Python на платформе Windows добавлена поддержка работы в виртуальных окружениях;
  • Искоренена концепция PYO-файлов, использовавшихся для хранения оптимизированного байткода. Для размещения как оптимизированного, так и неоптимизированного байткода теперь применяются единые файлы ".pyc";
  • Новый механизм для загрузки модулей-расширений, обеспечивающий возможность инициализации в несколько стадий;
  • Значительно улучшены средства асинхронного программирования, благодаря поддержке нового async- и await-синтаксиса для определения сопрограмм, асинхронно выполняемых объектов и итераций. Например, для создания и вызова сопрограммы можно указать "async def http_get(domain)" и "data = await db.fetch('SELECT ...')";
  • Возможность изменения обработки исключений StopIteration внутри генераторов;
  • Класс collections.OrderedDict переписан на языке Си, что позволило ускорить его выполнение от 4 до 100 раз. На Си также переписана функцияfunctools.lru_cache();
  • Добавлен новый вызов subprocess.run() для быстрого запуска подпроцессов;
  • В стандартной библиотеке по умолчанию отключена поддержка SSLv3;
  • Добавлен новый оператор "@" для умножения матриц. Например, вместо "S = dot((dot(H, beta) - r).T, dot(inv(dot(dot(H, V), H.T)), dot(H, beta) - r))" теперь можно использовать более понятное представление "S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)".

Node js

Увидел свет релиз Node 4.0.0, платформы для выполнения высокопроизводительных сетевых приложений на языке JavaScript. Выпуск примечателен слиянием с кодовой базой проекта io.js, ранее ответвившегося от Node.js, но вернувшегося к совместной работе над единым унифицированным продуктом.

По функциональности Node 4.0.0 близок к выпуску io.js 3.0 и включает реализованные в рамках проекта io.js новшества, состояние которых признано стабильным. Лежащий в основе Node.js JavaScript-движок V8 обновлён до актуальной версии 4.5 (в Node.js 0.12 использовался V8 3.26, выпущенный год назад). Обновление движка открыло доступ ко многим новым возможностям JavaScript, определённым в спецификации ECMAScript 6.

В частности, добавлена поддержка классов, генераторов, шаблонов строк, новых методов обработки строк, типизированных массивов (в том числе объекта Buffer, реализованного на основе V8 Uint8Array), структур данных Map и Set для работы с коллекциями, механизма Promise, типа Symbols и arrow-функций. Официально реализована полноценная поддержка архитектуры ARM (ARMv6, ARMv7 и ARMv8). Введён в строй кластер для тестирования работы Node.js на различных аппаратных платформах и операционных системах (Linux-дистрибутивы, OS X, Windows, FreeBSD и SmartOS).

Ветке Node.js 4 планируется присвоить статус LTS, обеспечив длительный выпуск обновлений и регулярный цикл подготовки релизов. Ожидается как подготовка корректирующих выпусков со сменой номера в третьей цифре версии (4.0.1, 4.0.2 и т.п.), так и функциональных обновлений, содержащих новые возможности (4.1.x, 4.2.x и т.п.). При этом на протяжении существования ветки 4.x будет гарантировано сохранение обратной совместимости. Новые стабильные ветки планируется формировать раз в 6 месяцев.

В октябре ожидается ответвление ветки 5.x, которая будет развиваться параллельно и содержать новые возможности, обкатываемые для следующей стабильной ветки, в том числе переход на новый выпуск движка V8 и возможно изменения, нарушающие совместимость. Основной цикл LTS-поддержки ветки 4.x продлится 18 месяцев, плюс ещё 12 месяцев будут устраняться критически ошибки и уязвимости (в сумме ветка будет поддерживаться 30 месяцев).

Putty

Представлен релиз популярного SSH-клиента для Unix и Windows - PuTTY 0.65, исходные тексты которого доступны под лицензией MIT. Новый выпуск в основном имеет корректирующий характер, кроме устранения ошибок в новой версии обеспечено отображение в логе источника входящих соединений к локально пробрасываемым портам и идентификатора процесса, которому перенаправляются запросы в режиме совместного использования соединений. Проведены оптимизации производительности - 64-разрядные сборки для Unix-систем, собранные при помощи gcc или clang, демонстрируют двукратный прирост производительности криптографических алгоритмов RSA и DSA. 

 Firefox Developer Edition 40

Сформирован выпуск Firefox Developer Edition 40, который заменил собой aurora-ветку, в рамках которой проводится оценка готовности тех или иных новшеств для последующего бета-выпуска. В отличие от выпусков aurora, Developer Edition адаптирован для обособленного использования, запускается с использованием отдельного профиля и отличается изменением оформления - задействована отдельная тёмная тема оформления, в панель вынесены кнопки для быстрого доступа к инструментам для web-разработчиков, изменены некоторые настройки по умолчанию, в состав включены дополнения ADB Helper иValence (бывший Firefox Tools Adapter). Загрузить Firefox Developer Edition можно на странице с тестовыми выпусками.