После четырёх c половиной лет разработки представлен релиз свободной системы управления web-контентом Drupal 8, подходящей для создания различных категорий web-проектов, от блогов и персональных страниц, до крупных новостных порталов и социальных сетей. По данным W3Techs на базе Drupal работает около 2.1% из 10 млн крупнейших сайтов в сети, среди которых такие ресурсы, как whitehouse.gov и The Economist. По информации от разработчиков Drupal, в выборке из 100 тысяч крупнейших сайтов Drupal занимает лидирующие позиции среди CMS.
Выпуск распределенной системы управления исходными текстами Git 2.5.0
Представлен релиз распределенной системы управления исходными текстами Git 2.5.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, LibreOffice, Systemd, X.Org, Wayland, Mesa, Gstreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse,GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Xen, Minix.
По сравнению с прошлым выпуском в новую версию принято 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. Инициатива по портированию KDE-приложений для Android
Представлен выпуск платформы 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)".
JavaScript-платформа Node 4.0.0 ознаменовала слияние проектов Node.js и io.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 месяцев).
Обновление SSH-клиента PuTTY 0.65
Представлен релиз популярного SSH-клиента для Unix и Windows - PuTTY 0.65, исходные тексты которого доступны под лицензией MIT. Новый выпуск в основном имеет корректирующий характер, кроме устранения ошибок в новой версии обеспечено отображение в логе источника входящих соединений к локально пробрасываемым портам и идентификатора процесса, которому перенаправляются запросы в режиме совместного использования соединений. Проведены оптимизации производительности - 64-разрядные сборки для Unix-систем, собранные при помощи gcc или clang, демонстрируют двукратный прирост производительности криптографических алгоритмов RSA и DSA.
Выход Firefox Developer Edition 40 c поддержкой многопроцессного режима
Сформирован выпуск Firefox Developer Edition 40, который заменил собой aurora-ветку, в рамках которой проводится оценка готовности тех или иных новшеств для последующего бета-выпуска. В отличие от выпусков aurora, Developer Edition адаптирован для обособленного использования, запускается с использованием отдельного профиля и отличается изменением оформления - задействована отдельная тёмная тема оформления, в панель вынесены кнопки для быстрого доступа к инструментам для web-разработчиков, изменены некоторые настройки по умолчанию, в состав включены дополнения ADB Helper иValence (бывший Firefox Tools Adapter). Загрузить Firefox Developer Edition можно на странице с тестовыми выпусками.