Спустя год с выпуска предыдущей версии, анонсирован новый релиз «официального» интерпретатора языка программирования Ruby.
В целом, версия 1.9.3 является логичным эволюционным развитием интерпретатора и не несёт в себе кардинальных изменений, способных сломать совместимость с существующим кодом.
Среди значимых изменений стоит отметить:
вместо GPLv2 + Ruby License используется 2-clause BSD License + Ruby License;
в поставку включен RubyGems версии 1.8.10;
улучшен механизм загрузки кода, что позволяет значительно сократить время загрузки приложений;
библиотека работы с датами переписана на языке Си, что также положительно сказывается на производительности;
включена возможность параллельного выполнения test/unit.
Более подробный перечень нововведений традиционно приведён в файле NEWS.
Кстати, пользователи rvm уже имеют возможность обновиться и радоваться всеми нововведениями Ruby 1.9.3.
Стал доступен 11-ый выпуск Yet Another Perl Podcast, подкаста о Perl на русском языке. Темы выпуска:
День рождения Ларри Уолла :)
Почему Perl?
Производительность пакетов ООП в Perl
Отчет о конференции BlackPerl 2011
Обзор вакансий и интересных CPAN модулей
Новая рубрика «Офтопик»
Пара слов о подкасте. Первый (пилотный) выпуск YAPP был залит на rpod 7 марта 2011. С тех пор подкаст выходит примерно раз в месяц. Четкого графика выпусков нет - все сильно зависит от наличия тем для обсуждения, настроения ведущих и других факторов.
Несмотря на то, что подкаст посвящен языку Perl и ведут его perl-программисты, он может быть интересен широкой аудитории - от системных администраторов, линуксоидов и сочувствующих до профессиональных программистов, использующих в своей работе язык, отличный от Perl.
Portable OpenCL позволит разрабатывать и запускать программы, использующие OpenCL, на его свободной платформонезависимой реализации (до этого существовали SDK, предоставляемые вендорами аппаратуры).
Это свободная (MIT-лицензия), основанная на LLVM реализация стандарта OpenCL, которая может быть легко приспособлена для новых целевых платформ. Одна из задач проекта — улучшение «переносимости производительности» программ на OpenCL, избегая нужды в ручной оптимизации, зависящей от целевой платформы. Цель «native» включена, что позволяет запускать ядра OpenCL на CPU.
Также ведётся работа над реализацией OpenCL поверх драйверов видеокарт из Gallium3D (Clover state tracker), в котором можно отметить некоторый прогресс за лето, произошедший в рамках GSoC.
Проект openSUSE представил первый релиз системы автоматического тестирования дистрибутива openQA.
openQA запускает собранный образ в виртуальной машине, эмулирует нажатия клавиш и движения мыши и сравнивает полученные скриншоты загрузки и установки ОС, а также, работы приложений с эталонными.
Это позволяет полностью автоматизировать тестирование всей операционной системы в целом, а не отдельных приложений, и избавить разработчиков от нудной, рутинной работы.
Результаты тестирования наглядно отображаются через веб-интерфейс.
openQA уже применяется для тестирования openSUSE Factory — будущего релиза openSUSE.
openQA выпущен под свободной лицензией GPL2+ и может быть адаптирован для других дистрибутивов.
ISO продает текст стандарта по 352 швейцарских франка ($386), но можно бесплатно скачать, например, его финальный черновик (практически не отличающийся от конечной версии) с сайта рабочей группы: http://www.open-std.org/jtc1/sc22/wg21/
Состоялся релиз Clojure 1.3, динамического языка для JVM. Clojure можно использовать в проектах любого рода, при этом важной его особенностью является сочетание удобства скриптового языка с эффективностью многопоточного программирования. Как любой динамический язык, Clojure компилируется в байт-код для JVM непосредственно на этапе выполнения. В то же время Clojure является диалектом Lisp, предоставляя вам все преимущества функционального программирования.
Изменения в новой версии:
Монолитная система дополнений clojure-contrib.jar заменена на полностью модульную структуру, что позволяет, во-первых, не включать в готовые приложения код неиспользуемых библиотек, а во-вторых, иметь собственный цикл разработки для каждой отдельной библиотеки. При этом для обновления с Clojure 1.2 рекомендуется сначала обновить библиотеки, а затем уже обновиться до Clojure 1.3;
Опубликован черновой вариант (проект) книги О.В.Цилюрика, в которой в конспективной манере обозначаются те места в практике программиста-разработчика (да, отчасти и пользователя, и администратора), которые, при общности концептуальных понятий, разительно отличаются в Linux от того, что привычно программисту из Windows.
Цель книги (по возможности, насколько это удалось): указать на такие места, чтобы можно было предполагать их наличие, и не приходилось разыскивать наугад ответ на вопрос: «а как это делается в Linux?».
Конечно, отбор таких «изюминок» - вещь сугубо специфическая: кому что больше нравится, и здесь не может не возникнуть перекосов, особенно потому, что предмет обсуждения - безграничен, а объём книги - конечен.
Для загрузки и установки доступен релиз фреймворка для построения веб-приложений rails 3.1.
Основные новшества в этой версии:
Asset Pipeline - фреймворк для сборки и сжатия JS и CSS под управлением Sprockets 2.0. Теперь как генерируются контроллеры, виды и модели для ваших скаффолдов, также будут создаваться и JS и CSS. Это позволяет достичь более удобной архитектуры и разгрести десятки десятки файлов из public/javascript по модулям. Рельсы сами будут заботиться о сборке всех ваших клиентских файлов в один и кешировании. Краткое руководство по Asset Pipeline
HTTP Streaming - позволит начать браузеру скачивать таблицы стилей и javascript'ы ещё до того, как сервер закончит формировать ответ. Результат — заметное увеличение скорости отдачи страниц. Это всего лишь опция, которая требует поддержки от web-сервера. Связка nginx+unicorn уже готова поддерживать эту возможность. Пример и как это работает можно посмотреть на RailsCasts.
jQuery теперь используется по умолчанию. Использовать prototype можно всего лишь поменяв jquery-rails на prototype-rails в Gemfile.
Другие изменения:
DRY миграции, которые знают сами, как себя обратить.
Mountable engines теперь могут быть иметь своё собственное пространство маршрутов и помошников.
Prepared statements - ActiveRecord теперь использует кешированные подготовленные выражения, которые дают большой прирост производительности в PostreSQL и на сложных запросах в MySQL. Вместо формирования запроса и передачи его в БД каждый раз, Rails один раз формирует запрос, а затем использует его специальный токен (подставляя нужные данные), когда нужно сделать похожий. Дает прирост в производительности на 20-30% на простых запросах и 10-кратный прирост по запросам в секунду на сложных запросах.
Rack::Cache включен по умолчанию. Делает возможным использование HTTP-кеширования с условным получением (Conditional Get) как замены для постраничного кеширования. В скором времени постраничное кеширование уберут из стандартной поставки.
ForceSSL - позволяет использовать безопасные соединения намного проще.
Основанный на ролях mass-assignment. attr_protected теперь принимает в качестве параметра роль.
has_secure_password - простое встраивание парольной защиты на BCrypt.
Custom serializers - теперь есть возможность самому указать способ хранения объектов в базе, а не только в формате YAML.
Также можно посмотреть небольшой видео обзор на RailsCasts
Если вы создаёте новое приложение, то лучше используйте Ruby 1.9.2. Rails будут поддерживать 1.8.x вплоть до 4.0, но только для совместимости.
Увидел свет новый выпуск являющегося частью проекта LLVM компилятора Clang с технологией SAFECode.
Данная технология предназначена для отслеживания возможных проблем работы с памятью в разрабатываемом приложении, при этом не изменяет поведение компилятора, когда неактивна. Включить её можно через указание специального ключа командной строки при сборке. Преимуществами по сравнению с таким инструментом как Valgrind являются:
более информативные сообщения об ошибках;
возможность оптимизации некоторых run-time проверок;
отсутствие динамической трансляции как у Valgrind;
более точно определяет структуру программы, так как знает расположение границ отдельного стека и глобальных объектов (для поиска данных границ Valgrind использует эвристические методы).
Сейчас технология позволяет отслеживать разыменования указателей, которые могут спровоцировать переполнение буфера. В дальнейшем планируется внести из проекта SAFECode в Clang:
выявление некорректного доступа к памяти (указатели на несуществующий или удаленный объект);
определение неправильных вызовов функции free(), например, двойное освобождение выделенной памяти;
определение использования неинициализированных указателей;
выявление ошибок при работе с памятью, вызванных неправильным использованием функций стандартной библиотеки;
дополнительные оптимизации, включая удаление проверок корректности типов на этапе загрузки/сохранения и вынос за пределы циклов.
Clang это фронт-энд компиляторов С/С++, Objective-C, который разрабатывается на замену GCC в BSD-системах. Интересен может быть также крупным корпорациям благодаря лицензии BSD. При помощи Clang уже удалось собрать ядро Linux и фреймворк Qt.
Проект App Inventor призван предоставить инструменты графического проектирования программ, причём как алгоритмов, так и графического интерфейса. Разработка приложений здесь происходит при помощи графических компонентов и их соединения между собой. Алгоритмические блоки охватывают как обычные алгоритмические конструкции, так и специфические возможности, предоставляемые мобильными платформами, например GPS, интеграция с социальными сетями, синтез речи.
Разработка программ напоминает сборку головоломки. Готовая схема преобразуется компилятором в программу на языке Kawa (GNU вариант Scheme). Итогом является формирование установочного пакета для Android.
Изначально App Inventor развивался как образовательная инициатива, но после закрытия Google Labs проект повис в воздухе. После этого его разработку продолжил MIT, «предоставляя тем самым возможность людям учиться везде, в любое время и у кого угодно». В дальнейшем планируется более широкое внедрение мобильных технологий в разработку учебных приложений.
LevelDB - быстрое хранилище данных, обеспечивающее упорядоченное отображение текстовых ключей на текстовые значения.
Новинка представляет из себя библиотеку для языка C++, которой можно найти множество применений. Например, она может быть использована веб-браузером для хранения кеша недавно открытых страниц, пакетным менеджером для хранения списка установленных пакетов и их зависимостей, приложениями для хранения настроек и так далее.
LevelDB реализована с минимумом зависимостей и поэтому уже доступна на большинстве платформ. Библиотека распространяется под лицензией в стиле BSD.
Выпущена первая за последние восемь месяцев новая версия средств разработки на функциональном языке FAUST (Functional AUdio STream), предназначенном для физического моделирования и обработки звука.
Язык FAUST пользуется растущей популярностью среди разработчиков свободных эффектов и инструментов, поскольку позволяет создавать достаточно правдоподобные виртуальные копии винтажных синтезаторов и электроорганов. Это связано с тем, что на языке можно с лёгкостью воспроизводить принципиальные схемы.
Изменения затронули практически все части SDK:
улучшен компилятор;
добавлена масса примеров с виртуальными духовыми, клавишными, струнными и перкуссионными инструментами;
добавлены трансляторы в LADSPA, DSSI и SuperCollider;
добавлены новые фильтры, включая ревербераторы на основе сетей задержки отклика.
10 июля стала доступна для загрузки очередная референсная реализация компиляторов языков D1 и D2. Как повелось с предыдущего выпуска, готовы пакеты для Ubuntu, Fedora, и openSUSE, как 32-х, так и 64-хбитные.
Некоторые нововведения:
введены атрибуты @safe, @property, сделан автоматический интерфейс для @safe, pure, nothrow;
В inline assembler добавлена поддержка инструкций SSSE3;
добавлены новые предупреждения о свойствах, подлежащих удалению, часть свойств объявлены удалёнными;
расширены ядро языка и стандартная библиотека, в частности, добавлены core.sys.posix.netdb, td.array.uninitializedArray, std.array.minimallyInitializedArray;
часть функций, в первую очередь в модулях std.string и std.uni, была переименована для соответствия с разработанными правилами именования, старые названия частично сохранены для совместимости, но будут удалены из последующих версий;
добавлена возможность использовать логические переменные в качестве ключей в ассоциативных массивах, ранее с этою целью можно было использовать только целые числа и строки.
Авторы также рапортуют об устранении 127 ошибок различной природы.
Кроссплатформенный менеджер накопления информации MyTetra обновился до версии 1.30. Это знаковый релиз, при подготовке которого нумерация даже «перескочила» через одну версию (предыдущая была 1.28).
В новом релизе MyTetra появилось три долгожданных функции:
Синхронизация через интернет: для синхронизации можно использовать любые системы облачного хранения данных или системы контроля версий. Главное, чтобы эти системы поддерживали атомарность. Автор протестировал и использует Git на GitHub.com.
Шифрование: данные можно шифровать по алгоритму RC5-32/12/16 c CBC-режимом сцепления, ключ генерируется на основе пароля с солью, пропущенного через алгоритм PBKDF2 на 1000 раундов с длиной ключа 160 бит. Для генерации ключа шифрования в 128 бит, от результата берется MD5 сумма. Каждая запись шифруется с уникальным инициализирующим вектором. Как побочный результат реализации шифрования, была создана кроссплатформенная библиотека RC5Simple.
Навигация по истории: в MyTetra появились замечательные кнопочки, которые позволяют быстро перемещаться назад и вперед по истории просматриваемых записей. Так же теперь MyTetra помнит, какую запись вы редактировали в каждой ветке и автоматически выбирает данную запись при переходе в уже посещённую ветку. Так же запоминается позиция курсора в редактируемых записях (настраиваемо).
Выдержка из сообщения Ильи Муравьева, автора проекта Bombono DVD, занявшего 2-е место в злополучном конкурсе: «Внушительную премию, как заявляют организаторы конкурса («Linux Format» при поддержке компаний Intel, PingWin Software, IBM developerWorks и ГНУ/Линуксцентр) мне, как занявшему второе место в номинации «Индивидуальный проект», не отдали. Не отдали не только мне, но и автору GoldenDict, Исакову Константину, занявшему 1 место в той же номинации; и наверняка то же самое подтвердят и остальные победители „конкурса“. А с учетом того, что организаторы уже не отвечают по почте, это значит, что денег не будет (напомню - конкурс завершился в середине декабря 2010).»
ICGA (международная ассоциация компьютерных игр) официально признала Рыбку виновной в плагиате кода из открытых программ Crafty и Fruit. Её автор Васик Райлих навечно забанен на всех прошлых и будущих чемпионатах WCCC и от него требуют вернуть трофеи и призовые деньги. Результаты WCCC 2006, 2007, 2008, 2009 и 2010 где она победила - пересмотрены.
Сегодня вышел восьмой ежегодный релиз Eclipse IDE под номером 3.7 Indigo.
В выпуске данной версии участвовало 49 организаций, 62 команды, 408 контрибьюторов. Сейчас система насчитывает порядка 46 миллионов строк исходного кода, и выпускается официально в десяти редакциях.
Indigo включает важные изменения и нововведения для Java-разработчиков, в технологии моделирования, и улучшения в самой платформе Eclipse.
Новые возможности для Java-разработчиков:
EGit 1.0 - поддержка Git для Java-разработчиков.
WindowBuilder, редактор GUI теперь под патронатом проекта Eclipse и включен в поставку IDE.
Плагин для автоматизированного тестирования GUI для Java и HTML приложений Jubula включен в поставку IDE.
Плагин m2eclipse, который обеспечивает тесную интеграцию Maven и Eclipse, а также позволяет работать в Maven из-под Eclipse, включен в поставку.
Mylyn 3.6 поддерживает наблюдение за процессом сборки через Hudson прямо из Eclipse.
Клиент Eclipse Marketplace теперь поддерживает drag and drop установку основанных на Eclipse компонентов прямо в Eclipse.
Новое в Eclipse Modeling:
В Xtext 2.0 добавлены новые возможности для предметно-ориентированных языков (DSL).
Acceleo 3.1 объединяет интеграцию кода в сборки под Ant и Maven, а также включает в себя улучшенные возможности редактирования генераторов.
CDO Model Repository 4.0 теперь интегрируется с NoSQL БД такими, как Objectivity/DB, MongoDB, и DB4O. Проведена оптимизация кеширования и много других улучшений актуальных для моделей объемом в несколько гигибайт.
Улучшения в EMF.
Улучшения в EclipseRT:
EclipseLink 2.3 поддерживает многопользовательские JPA сущности, что позволяет включить JPA в SaaS-приложения.
Equinox 3.7 реализует OSGi 4.3 спецификацию, в том числе использование универсальных подписей, общие возможности, и требования для пакетов.
Eclipse Communication Framework (ECF) реализует OSGi 4.2 стандарты Remote Service и Remote Service Admin.
В Riena 3.0 включена поддержка создания приложений для веб-браузеров, используя Eclipse RAP.
SR1 выйдет по плану 23 сентября этого года, SR2 - 24 февраля 2012.