28-29 февраля мы отпразднуем конец зимы, прогрев мозги до максимально возможной температуры.
На очередной C++ Siberia обсудим конкурентность, функциональщину, рефлексию, новые стандарты и эпик фейлы комитета стандартизации.
Выступят Тимур Думлер, Антон Полухин, Виталий Брагилевский и другие.
Конференция пройдет в лекторий-баре ПОТОК, что по адресу Новосибирск, Депутатская, 46.
Вышла новая версия популярной системы сборки CMake 3.16.0 и сопутствующих утилит CTest и CPack, облегчающих тестирование и сборку пакетов соответственно.
SObjectizer — это относительно небольшой фреймворк для упрощения разработки сложных многопоточных приложений на C++. SObjectizer позволяет разработчику строить свои программы на базе асинхронного обмена сообщениями с использованием таких подходов, как Actor Model, Publish-Subscribe и CSP. Это открытый проект под лицензией BSD-3-CLAUSE. Краткое впечатление о SObjectizer можно составить на основании вот этой презентации.
Версия 5.6.0 является первым мажорным релизом новой ветки SObjectizer-5.6. Что означает также завершение развития ветки SObjectizer-5.5, которая развивалась более четырех лет.
Доступна новая реализация протокола FastCGI, написанная на современном C++17. Библиотека примечательна простотой в использовании и высокой производительностью. Возможно подключение как в виде статически и динамически связанной библиотеки, так и через встраивание в приложение в форме заголовочного файла. Кроме Unix-подобных систем обеспечена поддержка использования в Windows. Код поставляется под свободной лицензией zlib.
Bison — это генератор синтаксических анализаторов общего назначения, преобразующий аннотированную контексто-свободную граматику в детерминированный LR- или обобщённый LR(GLR)-анализатор, задействующий таблицы анализатора LALR(1). Bison также умеет генерировать таблицы IELR(1) и канонические LR(1). Овладев Bison, можно использовать его для разработки разнообразных языковых анализаторов — от применяющихся в простых настольных калькуляторах до сложных языков программирования. Bison обратно совместим с Yacc: все корректно составленные Yacc-грамматики должны работать с Bison без изменений.
В детерминистический C++-каркас, lalr1.cc, привнесены масштабные изменения. Если включена поддержка вариантов и компилятор поддерживает C++11 и выше — типы только для перемещения теперь можно использовать для семантических значений. Поддержка C++98 не объявлена устаревшей. Огромное спасибо Френку Хекенбаху за проторенный его реализацией каркаса на C++17 путь к этому выпуску.
Значимые изменения в этом выпуске:
Поддержка DJGPP, годами лишённого поддержки и тестирования, объявлена устаревшей. Если никто не гальванизирует этот труп — от него избавятся.
Группа разработчиков пакета Cantera рада представить выпуск версии 2.4.0.
Cantera - набор инструментов и библиотек с открытым исходным кодом для решения задач химической кинетики, термодинамики и процессов переноса. Может использоваться в программах написанных на Python и Matlab, а так же при написании приложений на языках C++ и Fortran.
Опубликован новый релиз кроссплатформенного PIM-менеджера MyTetra v.1.43. Это багфикс-релиз, выпущенный спустя два года после основного релиза. Список изменений состоит из 24 пунктов, среди которых не только исправление выявленных при эксплуатации проблем, но и добавление нового функционала.
В данном релизе сделано много мелких правок для встроенного WYSIWYG редактора, улучшено редактирование ссылок и доработано поведение редактора на граничных местах текста - в начале и конце области редакторования. Исправлена работа с различными нестандартными именами прикрепляемых файлов (dot-файлы, файлы без расширений и т.п.), исправлено взаимодействие программы с различными оконными средами (DE) в плане правильного восстановления геометрии окна и назначении кнопок по-умолчанию.
27 июня вышла новая версия Eclipse 4.8.0 Photon. Eclipse - платформа для построения IDE, включающая в себя плагины для поддержки разработки на разных языках. По словам Майка Милинковича, исполнительного директора Eclipse Foundation, задача Eclipse Photon - расширение многоязычных возможностей Eclipse за счет взаимодействия по протоколу LSP (Language Server Protocol), через который предоставляются поддержка редактирования кода на современных языках (в Eclipse поддерживается LSP версии 3.6 и Debug Adapter protocol 1.25).
В состав Eclipse включен плагин для поддержки разработки на Rust - Eclipse Corrosion 0.1.0 (первый языковый плагин, построенный на взаимодействии по LSP).
Zapcc — компилятор языка C++, основанный на наработках LLVM/Clang, данный компилятор отличается высокой скоростью компиляции из-за применения активного кеширования в различных этапах сборки программы. Данный компилятор может выступать в качестве замены gcc и clang, также он поддерживает интеграцию с любыми системами сборок. Исходный код был открыт под лицензией LLVM и располагается на GitHub.
Данный компилятор заметно ускоряет компиляцию C++, но для C это не настолько заметно, к примеру сборка Boost.Math производится в 10 раз быстрее чем у clang, сборка Webkit происходит в 2-4 раза быстрее, сборка Clang при помощи Zapcc выполняется в два раза быстрее, чем самим Clang.
Высокая скорость компиляции достигается применением zapccs, непосредственно выполняющего компиляцию и поддерживающего в оперативной памяти кэш компиляции, в котором между разными запусками сохраняется информация о всех этапах сборки.
Спустя намеченный год после выхода предыдущего мажорного выпуска «Коллекции компиляторов ГНУ» [0], увидел свет GCC 8.1. Разработчики обещают свежие возможности и более жесткую оптимизацию.
19-21 апреля в Санкт-Петербурге пройдёт конференция C++ Russia. Ещё больше трэша и угара в этом году: Jon Kalb, Andrei Alexandrescu, Антон Полухин, Ivan Čukić, Михаил Матросов и другие докладчики. Обсудим новый стандарт, сборку и отладку C++ проектов, функциональный подход (кто сказал Haskell?!), модель памяти, конкурентность и параллелизм и много-много другой боли.
Первый день конференции (19 апреля) посвящен мастер-классам. Шесть часов интенсивной C++ терапии от лучших собако^W специалистов. На мастер-класс вы приходите с ноутбуком и платите за то, чтобы писать код: отличное развлечение для всей семьи!
Вечером первого дня организуется ужин с докладчиками: этакий social event на буржуйский манер. Покупаете билет и можно не просто придти поесть, а объяснить докладчикам в чем они не правы (например, Александреску).
Конференция пройдет в гостинице Прибалтийская, что по адресу Санкт-Петербург, ул. Кораблестроителей, 14.
30 декабря 2017 г., спустя 2 года разработки, вышла новая версия Code::Blocks 17.12 - среды разработки на языках С, С++, D (теперь и для него, с ограничениями) и Fortran.
Данный выпуск, как всегда, содержит множество исправлений ошибок, улучшений и новых возможностей.
Среди них, например, для компонента «Core/UI» можно отметить:
editor: Исправление ошибки копирования/вставки средней кнопкой мыши при использовании wxGTK2.8.
editor: Вставка новой строки перед и после текущей строки, если она без выравнивания.
editor: В компоненте UpdateUI поведение при использовании 'Select next occurrence' и 'Select skip to next occurrence' (вероятно, имеется ввиду инструмент «мультикурсор») сделано более логическим.
lexer: Добавлено несколько новых ключевых слов в лексический анализатор языка Fortran.
Добавлен множественный выбор в диалоге «Copy to...» при поиске директорий (Search Directories).
editor: Добавлено переключение между заголовочными файлами и реализацией для шаблонов (.tpp;.tcc . <-> .h;.hpp).
Добавлена возможность переименовывать виртуальные каталоги через меню.
Добавлена возможность выбора используемой схемы подсветки синтаксиса в соответствующем меню в строке статуса.
И многое другое, в том числе улучшения для автодополнения кода, взаимодействия с компиляторами, отладчиком и других компонентов.
Бинарные сборки в виде tar-архивов подготовлены для Debian {9,10}, Fedora {26-28} и CestOS 7.
Полный список основных изменений приведён по ссылке в «Подробностях».
PIP — кроссплатформенная легковесная библиотека под C++ (99), упрощающая написание консольных программ. Представляет собой связный набор классов, макросов и функций, которые значительно упрощают написание кода во многих прикладных областях.
Основной упор в библиотеке сделан на функциональность, конфигурируемость и минимизацию конечного кода.
C++ User Group начинает проводить регулярные встречи в Москве по примеру Санкт-Петербурга: одна встреча каждый месяц-полтора. На каждой встрече от одного до трёх докладов, каждая встреча в офисе какой-нибудь доброй компании, которая согласится пустить в гости.
Первая встреча пройдет 6 ноября в офисе Align Technology. На встрече будет три доклада. Откроет встречу специальный гость — Sean Parent — ведущий научный сотрудник (principal scientist) и архитектор ПО из Adobe.
В понедельник Google выпустил исходные коды библиотеки Abseil, созданной для того, чтобы значительно дополнить стандартную библиотеку языка C++. Данный код на протяжении многих лет использовался как базовая библиотека при разработке закрытого ПО, но был вынесен в отдельный открытый проект для упрощения открытия исходных кодов и разработки других библиотек, например, protobuf, grpc и tensorflow. Код распространяется под лицензией Apache 2.0.
Библиотека собирается с помощью bazel — системы сборки с открытым кодом, которая используется в Google. Данная система сборки позволяет точно контроллировать зависимости и получать воспроизводимые артефакты, но достаточно неудобна для повседневного использования. Но библиотека предполагает статическую линковку, так что её интеграция в любую систему сборки будет тривиальной.
Интересные части библиотеки:
absl::Mutex — примитив синхронизации, который одновременно может служить мьютексом, condition variable и read-write-блокировкой. Данный класс был разработан до появления C++11, но не был заменён std::mutex и его аналогами, так как предоставляет менее ошибкопорождающий интерфейс.
Бекпорты некоторых возможностей C++14/C++17 для компиляторов, поддерживающих только C++11: absl::make_unique, absl::optional, absl::any, absl::span, absl::string_view. При этом при сборке новым компилятором большинство absl:: типов будут обычным typedef для библиотечных.