После года разработки представлена новая стабильная ветка языка программирования Perl - 5.20. При подготовке нового выпуска было изменено около 470 тыс. строк кода, изменения затронули 2900 файлов, в разработке приняли участие 124 разработчика.
Ветка 5.20 выпущена в соответствии с утверждённым четыре года назад фиксированным графиком разработки, подразумевающим выпуск новых стабильных веток раз в год и корректирующих релизов - раз в три месяца. Примерно через месяц планируется выпустить первый корректирующий релиз Perl 5.20.1, в котором будут исправлены наиболее значительные ошибки, выявленные в процессе внедрения Perl 5.20.0. Одновременно с выходом Perl 5.20 прекращена поддержка ветки 5.16, для которой в будущем могут быть выпущены обновления только в случае выявления критических проблем с безопасностью. Также начался процесс разработки экспериментальной ветки 5.21, на базе которой в мае 2015 года будет сформирован стабильный релиз Perl 5.22.
Экспериментальная поддержка сигнатур функций, позволяющих явно определить перечень переменных, используемых в функции и автоматизировать операции проверки и присвоения значений из массива входящих параметров. Для активации поддержки сигнатур функций необходимо указать директиву "use feature 'signatures'"; Например, ранее используемый код:
при использовании сигнатур может быть заменён на:
При вызове foo с числом аргументов, отличным от двух, интерпретатор выведет ошибку. Синтаксис сигнатур также позволяет указывать необязательные аргументы и задавать значения, используемые по умолчанию в случае отсутствия аргумента. Например, указав "sub foo ($left, $right = 0)" второй аргумент становится необязательным и при его отсутствии передаётся значение 0. В операции присваивания можно указать произвольное выражения, в том числе с использованием других переменных из списка или глобальных переменных. Указание вместо переменной хэша или массива (например, "sub foo ($left, @right)") приведёт к возможности передачи одного и более аргументов.
В списке также поддерживается специальная переменная "$", которая позволяет игнорировать часть аргументов, например, "sub foo ($left, $, $right)" позволит выполнить копирование в переменные только первого и третьего аргумента, при этом в функцию необходимо передать ровно три аргумента. Возможность обращения к параметрам через массив "@_" сохраняется, поэтому второй аргумент можно получить как значение "$_[1]";
Для определения прототипов функций, предоставляющих средства для проверки аргументов на этапе компиляции, а не в процессе выполнения, обеспечена поддержка атрибута ":prototype", например, теперь можно указать "sub foo :prototype($$);" вместо "sub foo ($$);". "$$" подразумевает вызов с двумя аргументами. Для определения типа аргумента могут использоваться такие символы, как "$" (переменная), "@" (массив), "+" (ссылка на массив или хэш), "*" (файловый десктиптор). Для отделения обязательных аргументов от опциональных используется знак ";". Для прототипов функций допускается указание сигнатур, например, "sub foo :prototype($$) ($left, $right)";
Функция rand() переведена на использование для всех платформ более качественного последовательного генератора псевдослучайных чисел drand48(). Ранее 48-битовый генератор псевдослучайных чисел использовался только для POSIX-систем, таких как Linux, а в Windows применялась менее безопасная 15-битная реализация;
Новый синтаксис для операции выделения части хэшей и массивов (slice) - %hash{...} и %array[...], при использовании которого (например, "%subset = %hash{'foo', 'bar'};" или "@list = %a[3,4,6];") возвращается список из пар ключ/значение или индекс/значение;
Добавлена экспериментальная операция постфиксного разыменования (postderef). Например, операция "$sref->$*" эквивалентна "${ $sref }", "$aref->@*" аналогична "@{ $aref }", а "$href->%{ ... }" можно использовать вместо "%$href{ ... }". Для активации поддержки необходимо указать директиву "use feature 'postderef_qq'";
Поддержка Unicode 6.3. Для регулярных выражений добавлена поддержка маски "\p{Unicode}", которая является синонимом "\p{Any}" и срабатывает для кодов символов в диапазоне 0 - 0x10FFFF.
Директива "use locale" теперь может применяться с локалями UTF-8 (ранее с "use locale" поддерживались только однобайтные локали), а также на системах без локали. Обеспечена возможность отката на локаль "C" в случае возникновения проблем с инициализацией выбранной локали. Добавлена опция "-DL" для отслеживания настроек локали в процессе запуска интерпретатора;
Специальные переменные $a и $b включены в список исключений при выводе предупреждений, что позволяет создавать функции, оперирующие переменными $a и $b, по аналогии с функцией sort;
Улучшена работа на 64-разрядных платформах. Внутренние функции работы с массивами переведены на использование 64-разрядных смещений, что позволяет создавать массивы, содержащие более 2^31 элементов. Движок регулярных выражений теперь может работать со строками длиннее 2^31 символов. Функции PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt и PerlIO_set_ptrcnt переведены с типа int на тип SSize_t;
Объявлены устаревшими и скоро будут исключены из базовой поставки модули CGI и Module::Build, а также связанные с ним модули иерархии CGI::* и Module::Build::*. Данные модули нужно будет устанавливать из архива CPAN. В будущем также ожидается удаление утилит find2perl, s2p и a2p;
Многопоточность средствами интерпретатора ("use threads") переведена в разряд не рекомендованных возможностей из-за усложнённой, недостаточно быстрой и легко приводящей к ошибкам реализации. Удаление текущей реализации пока не планируется, но при появлении более оптимальных альтернатив она будет переведена в разряд устаревших;
Активирован новый copy-on-write механизм копирования строк, при котором непосредственное копирование в новый буфер производится при попытке изменить строку, но не при назначении переменных, что заметно увеличивает эффективность работы со строками и избавляет от необходимости передачи строки в форме указателя. Добавлены дополнительные оптимизации в код сопоставления масок в движке регулярных выражений и реализацию массивов и хэшей;
В поставку добавлен новый модуль IO::Socket::IP, предоставляющий универсальную поддержку сокетов, работа с которыми не отличается для IPv4 и IPv6. >>> Подробнее
Автор Pale Moon, популярной альтернативной сборки Firefox, сообщил, что не намерен включать поддержку API Encrypted Media Extensions и механизмов DRM для обеспечения доступа к защищённому контенту. Также в Pale Moon будет сохранено прежнее оформление интерфейса, без перехода к интегрированному в Firefox 29 интерфейсу Australis. Сборки Pale Moon формируются для Windows и Linux, в форме в 32- и 64-разрядных пакетов.
Pale Moon позиционируется как открытый web-браузер на основе Firefox, обладающий более высокой эффективностью работы, отзывчивым интерфейсом и меньшим потреблением памяти, что достигается за счёт удаления излишней функциональности и включения дополнительных оптимизаций. При этом, браузер сохраняет полную совместимость с Firefox на уровне поддержки базовых web-технологий, дополнений и тем оформления. В частности, удалена поддержка Social API, WebRTC, PDF-просмотрщика, crashreporter, кода для сбора статистики, интерфейса группировки вкладок Panorama, средств для родительского контроля и людей с ограниченными возможностями. Добавлена поддержка инструкций SSE2, внесены оптимизации для процессоров Atom, обеспечено формирование 64-разрядных сборок.
Браузер также предоставляет более широкие средства настройки и придерживается классической организации интерфейса. Например, по умолчанию отображаются панель закладок и статусная строка, в адресной строке показываются пиктограммы сайтов (favicons) и присутствует индикатор RSS, доступен обзорный режим активных вкладок ("All Tabs"), более наглядно отображаются области прозрачности при просмотре отдельных изображений, доступны разные варианты восстановления сеанса после краха, в настойках можно отключить загрузку изображений.
После шести месяцев разработки компания Digia представила релиз кроссплатформенного фреймворка Qt 5.3, продолжившего развитием ветки Qt 5.x. Выпуск Qt 5.3 в основном ориентирован на повышение стабильности и производительности, а также на упрощение использования новичками и улучшению работы возможностей, представленных в в прошлых выпусках Qt 5. Одновременно отмечается рост популярности Qt, в частности, прошлая ветка Qt 5.2 была загружена более миллиона раз.
Улучшена интеграция между компонентами Qt Widgets и Qt Quick. Добавлен класс QQuickWidget, позволяющий бесшовно интегрировать части пользовательского интерфейса, созданные с использованием Qt Quick, с приложениями на базе Qt Widget. Новый класс значительно упрощает использование обеих технологий построения интерфейса и позволяет сочетать их в одном приложении, а также упрощает проведение миграции с Qt Widgets на Qt Quick;
В состав Qt Enterprise включён экспериментальный компилятор Qt Quick Compiler, позволяющий скомпилировать QML-файлы в нативный машинный код, демонстрирующий более высокую производительность, рост которой особенно заметен на платформах, для которых не поддерживается JIT-компиляция QML, например, в iOS и WinRT;
В Qt Network добавлена поддержка протокола SPDY, позволяющего ускорить загрузку web-контента в Qt WebKit или через QNetworkAccessManager;
Добавлен модуль Qt WebSockets с полной поддержкой технологии web socket (RFC 6455) для C++ и QML API. Возможно создание как клиентских, так и серверных компонентов web socket;
В Qt QML и появившийся в ветке 5.2 новый движок QML добавлена поддержка профилирования при помощи компонента QML profiler в среде разработки Qt Creator. Также поддерживается профилирование и отладка нескольких движков QML внутри одного приложения при помощи нового отладочного сервиса EngineControl;
В Qt Quick Controls добавлена форма календаря (Calendar Control), шаблон Dialog с типовыми кнопками и возможность изменения стиля панели с меню;
В Qt для Windows добавлена поддержка переключения между настольным GL и движком ANGLE (Almost Native Graphics Layer Engine);
Для Qt Enterprise и Qt Mobile представлена экспериментальная поддержка Purchasing API, позволяющего непосредственно из Qt-приложения управлять покупкой дополнений через каталоги-магазины Google Play и iOS App Store. В будущих выпусках ожидается поддержка Windows Store, Windows Phone Store и Mac App store, а также включение средств для интеграции с рекламными сетями;
В Qt для Android добавлен модуль с поддержкой Bluetooth. Реализован удобный мастер установки для Android, помогающий установить недостающие сборочные зависимости;
В компоненте Qt Positioning обеспечена полноценная поддержка платформ Android и iOS;
В модуле Qt Print Support улучшены средства поддержки вывода на печать;
В Qt для iOS реализованы расширенные методы ввода, например, для китайского языка;
Начальная поддержка платформ WinRT и Windows Phone, находящаяся в состоянии бета-тестирования. Для данных платформ работоспособны Qt Core, Gui, Network, Widgets, Qml, Quick и Sensors. Поддерживается работа Qt на всех видах ПК и планшетов, работающих под управлением Windows 8.1 с использованием Modern UI, а также ARM-планшетах, таких как Microsoft Surface, смартфонах под управлением Windows Phone 8. Поддержка WinRT и Windows Phone также добавлена в выпущенную месяц назад среду разработки Qt Creator 3.1. Созданные для Windows Runtime приложения могут быть размещены в каталогах-магазинах Windows Store и Windows Phone Store;
Официальная поддержка операционных систем QNX Neutrino 6.6 и QNX 6.5 SP1;
Проведена большая работа над ошибками и учтены многие жалобы и пожелания пользователей. Например, устранена большая порция проблем, связанных с совместимостью с OS X, стабилизирована поддержка iOS и Android, подготовлены бинарные пакеты для Visual Studio 2013 (Visual Studio Add-In 1.2.3), устранены недоработки, выявленные в процессе тестирования удобства установки и первого использования
В ядре Linux обнаружена критическая уязвимость (CVE-2014-0196), позволяющая локальному пользователю получить привилегии пользователя root. Проблему усугубляет публикация прототипа эксплоита в открытом доступе.
Уязвимость присутствует во всех выпусках ядра, начиная с 2.6.31-rc3, включая 3.14.3 и 3.15-rc5. Исправление пока доступно в виде патча. Обновления пакетов с устранением уязвимости уже сформированы для Ubuntu и Fedora. Для Debian, Gentoo, Red Hat Entreprise Linux, CentOS, openSUSE и SUSE обновление ядра пока недоступно и находится на стадии подготовки.
Проблема вызвана ошибкой в функции n_tty_write (drivers/tty/n_tty.c), в которой некорректно обрабатывалась ситуация доступа к виртуальному терминалу при использовании флагов "LECHO & !OPOST", что позволяло локальному пользователю инициировать повреждение областей памяти ядра. Используя условия гонки уязвимость позволяет добиться выполнения привилегированных команд во время выполнения из нескольких потоков одновременных операций чтения и записи длинных строк через псевдотерминал. Успешность эксплуатации является делом случая, при применении эксплоита в 3 из 4 запусков наблюдается крах ядра.
Девятого мая 1950-го года министр иностранных дел Франции Робер Шуман выступил с речью, в которой предложил объединить металлургическую, железорудную и угледобывающую промышленность Франции и Западной Германии. Реализация этого предложения привела к созданию Европейского объединения угля и стали (ЕОУС), предшественника Европейского союза.
День 9 мая, в который Робер Шуман от лица французского правительства обнародовал своё предложение, отмечается ежегодно как День Европы, а сам Шуман считается одним из отцов-основателей Европейского союза.
Время идёт быстро, и уже всё дальше и дальше от нас те события, когда наш народ сделал практически невозможное. Ценой нечеловеческих усилий не только отразил агрессию врага, но и заставил его капитулировать.
9 мая это в первую очередь возможность ещё раз почтить память тех, кто сражался за Родину, как на фронте, так и на заводах, поставляя на фронт всё необходимое. Но, не смотря радость победы на над фашизмом, следует помнить, что сражаясь за победу, наш народ понёс огромные потери. Очень надеюсь, что нынешние лидеры государств сделают всё необходимое, чтобы не допустить подобных событий в будущем.
Представлен выпуск Linux-дистрибутива Pidora 2014, представляющего собой вариант Fedora 20, адаптированный для использования на одноплатном компьютере Raspberry Pi. Pidora позиционируется в качестве альтернативы развиваемого для Raspberry Pi дистрибутива Raspbian, предлагая пользователям более современную начинку. Размер архива системного образа для записи на SD-карту - 586MB.
В отличие от обычных ARMv6-сборок Fedora Linux в Pidora задействован репозиторий с пакетами, собранными с поддержкой "hard float" (armv6hl), вместо штатного для ARMv6 "soft float" (в Raspberry Pi используется ARMv6 с расширениями "hard float", которые формально появились в процессорах с архитектурой ARMv7-A), что позволяет добиться оптимальной производительности. Из особенностей выпуска отмечается проведение оптимизации скорости загрузки, улучшенный режим настройки по сети без подключения монитора (информация об IP может быть озвучена звуком или LED-индикатором), доступность практически всех пакетов из репозиториев Fedora 20, наличие графического мастера для первоначальной настройки, автоматическое создание раздела подкачки, поставка библиотек для поддержки интеграции с внешним оборудованием через интерфейсы GPIO, I2C, SPI.
Компания Epic Games объявила, что будущий выпуск известного шутера от первого лица Unreal Tournament 4 будет полноценно поддерживать платформу Linux, будет доступен разработчикам в исходных текстах и будет поставляться бесплатно. Как и недавно выпущенный движок Unreal Engine 4, код игры будет размещён в закрытом оперативно обновляемом репозитории на GitHub и будет доступен разработчикам по специальной подписке.
Процесс разработки будет совместно координироваться представителями сообщества, работниками компании Epic и разработчиками движка Unreal Engine 4. Любой желающий может бесплатно зарегистрировать аккаунт, который позволит участвовать в обсуждениях разработки и дизайна. После готовности игры, продукт будет распространяться бесплатно, без каких-либо ограничений на число игроков. В качестве источника дохода рассматривается создание каталога-магазина, в котором сторонние разработчики будут продавать контент и моды, а компания Epic получит определённый процент от продаж (бизнес-модель, похожая на Google Play).
Анонсирован первый выпуск пользовательского окружения LXQt (Qt Lightweight Desktop Environment), развиваемого объединённой командой разработчиков проектов LXDE и Razor-qt, к которым недавно также присоединился проект Maui, развивавший окружение Hawaii, построенное на базе Wayland и Qt. LXQt продемонстрировал возможность сообщества не только к созданию форков, но и к объединению усилий, выработки общей стратегии и слиянию близких по духу проектов для более успешного воплощения идеи в жизнь.
LXQt позиционируется как легковесное, модульное, быстрое и удобное продолжение развития рабочих столов Razor-qt и LXDE, вобравшее лучшие черты обеих оболочек. Интерфейс LXQt продолжает следовать идеям классической организации рабочего стола, привнося современное оформление и приёмы, увеличивающие удобство работы. Сообщается, что выпуск LXQt 0.7 можно рассматривать как стабильный и пригодный для повседневного использования. Готовые пакеты сформированы для Ubuntu, Arch Linux и Siduction. В экспериментальном режиме обеспечена поддержка FreeBSD. Код размещён на GitHub и поставляется под лицензиями GPL 2.0+ и LGPL 2.1+.
При формировании нового окружения, в качестве отправной точки использовалась кодовая база Razor-qt, которая была расширена компонентами LXDE, портированными на Qt. По сравнению с выпуском Razor-qt 0.5.2, можно выделить следующие новшества:
Интеграция PCManFM-Qt, варианта файлового менеджера PCManFM, переведённого с библиотеки GTK+ на Qt;
Переход на новую модульную архитектуру, позволяющую пользователям и сопровождающим легко заменять компоненты на сторонние альтернативы;
Улучшение системы настройки, добавление новых конфигураторов для управления параметрами экрана и клавиатуры, новый интерфейс настройки файловых ассоциаций. Улучшенные интерфейсы для настройки курсора и внешнего вида;
Улучшение поддержки систем на базе systemd;
Портирование на Qt 5: несмотря на использование по умолчанию Qt 4, большинство компонентов успешно собираются с Qt 5.
Подготовка к поддержке работы под управлением Wayland. Многие компоненты, в том числе PCManFM-Qt, уже могут быть успешно запущены поверх Wayland при наличии модуля QtWayland;
Новый инструмент obconf-qt для пользователей оконного менеджера Openbox и новый инструмент compton-conf для пользователей композитного менеджера Compton;
Проведение работы по увеличению производительности;
Экспериментальная поддержка Raspberry Pi;
Начальная поддержка работы во FreeBSD.
Из планов по развитию LXQt отмечается более тесное сотрудничество с проектом KDE. В частности, рассматривается возможность использования в LXQt некоторых модулей и библиотек, входящих в состав KDE Frameworks 5. Отдельно сообщается, что поддержка GTK-версии LXDE не будет прекращена в одночасье. Несмотря на переключение некоторых разработчиков на разработку LXQt, сопровождение LXDE будет продолжено до того времени, пока разработчики не потеряют к нему интерес.