После более трёх месяцев разработки состоялся выпуск 4.1.1 кроссплатформенной библиотеки для C++ (стандарт C++17) FTXUI (Functional Terminal (X) User Interface), предназначенной для создания приложений с текстовым интерфейсом и распространяемой по лицензии MIT.
10 марта вышел релиз самого популярного компилятора языка Haskell — GHC 9.6.1. С момента предыдущего мажорного выпуска 9.4.1 прошло более 10 месяцев. GHC на данный момент является эталонной реализацией языка и распространяется под модифицированной лицензией BSD3.
Вышла новая мажорная версия языка программирования Racket, основанного на Scheme и нацеленного на создание пользователем собственных DSL.
Завершён переход на среду исполнения Chez Scheme — таким образом удалось уменьшить объём генерируемого кода на величину от 10 до 30%, а также значительно ускорить выполнение программ и повысить эффективность.
Вышла новая версия компилятора языка Haskell — Glasgow Haskell Compiler. Из-за значительных изменений была увеличена мажорная версия компилятора.
Основные изменения:
Добавлена реализация линейных типов (расширение LinearTypes). Линейные типы позволяют отслеживать использование ресурсов на стадии компиляции и могут использоваться, среди прочих вещей, для статического управления памятью в стиле Rust.
Новая встроенная библиотека для работы с числами неограниченного размера: ghc-bignum. Её использование помогает с переносимостью в системах, где библиотека GMP по каким-либо причинам недоступна.
Улучшения в кодогенераторе, значительно увеличивающие производительность многих программ.
Улучшения в коде проверки сравнения с образцом (pattern matching), позволяющие находить лишние проверки в случаях, где раньше это было невозможно.
Новый IO-менеджер для платформы Windows. Раньше на Windows был использован IO-менеджер для Unix-систем, что приводило в худшей производительности на этой платформе. Также прекращена поддержка Windows Vista. Теперь для сборки и запуска программ на Haskell требуется минимум Windows 7.
Добавлено расширение QualifiedDo, расширяющее возможности по переопределению поведения кода.
Для сборки с LLVM теперь требуется версия 9.0 или выше.
Также недавно был выпущен корректирующий релиз GHC 8.10.4, исправляющий несколько багов в ветке 8.10.
Состоялся очередной релиз компилятора Glasgow Haskell Compiler.
Среди изменений:
Новые расширения языка UnliftedNewtypes, StandaloneKindSignatures и ImportQualifiedPost.
Изменения в кодогенерации, включая более агрессивную специализацию кода, новый анализатор циклов, оптимизацию работы с массивами и тэггирование указателей для больших типов данных.
Новая команда интерпретатора :instances, показывающая доступные инстансы классов для заданного типа.
Улучшения в работе встраиваемого профайлера кода.
И, вишенкой на торте, новый сборщик мусора, отличающийся уменьшенным временем задержек, сборкой мусора без копирования данных и возможностью параллельной сборки мусора и работы кода. Для включения нового сборщика мусора нужно скомпилировать код новой версией компилятора и запустить с параметрами +RTS -xn.
Подробнее про новый сборщик мусора можно прочитать здесь.
Исходный код компилятора языка Miranda был выпущен под открытой (BSD 2-clause) лицензией. Miranda — функциональный ленивый язык программирования, созданный в 1985 году Дэвидом Тёрнером и широко использовавшийся в 80х и 90х годах для обучения функциональному программированию. Также он стал прообразом более популярного языка Haskell, который возник в том числе из-за закрытости исходного кода Miranda.
В курсе изучаются основы функционального подхода к программированию и практические вопросы программирования на языке LISP. Функциональные языки обладают множеством интересных особенностей, знакомство с которыми расширяет кругозор программиста. Курс содержит видеолекции, опросы и практические задания по программированию. Материал курса рассчитан на 10 недель обучения. Занятия пройдут с 27 февраля по 7 мая 2017 г.
Требования
Необходимым условием для освоения курса является знание основ вычислительной техники и дискретной математики. Для прохождения курса требуется компилятор LISP, поддерживающий стандарт Common Lisp, например, GNU CLISP или SBCL.
25 октября состоится очередная встреча сообщества функциональных разработчиков Беларуси.
Приглашаем не только тех, кто успешно применяет функциональный подход в своей ежедневной работе, но и разработчиков, активно интересующихся функциональным подходом в программировании, его преимуществами и особенностями.
Список докладов:
Олег Алешко, «Introduction to typeclasses in Scala»
Сергей Тихон, «F# for Data*»
Владимир Абрамчук, «Why Y?»
Андрей Кириленко, «Clojure и ClojureScript. Что? Зачем? Как?»
Юрий Жлоба, «Киллер-фичи Erlang»
Участие бесплатное, необходима предварительная регистрация.
Кампания на BoomStarter по сбору средств на запись второго сезона EaxCast завершилась успешно. Соответственно, теперь ведутся работы над новым сезоном. В настоящее время для прослушивания доступны первые три выпуска:
S02E01, интервью с Александром Юрченко о работе в Яндексе, проекте OpenBSD и машинном обучении.
S02E02, интервью с Романом Душкиным об управлении проектами, функциональном программировании, квантовых вычислениях и краудфандинге.
S02E03, интервью с Владимиром Шабановым о BazQux, стартапах, геймдеве, а также Haskell и Riak.
Особый акцент в подкасте делается на «не мейнстримовых» технологиях. Впрочем, тематика подкаста не ограничивается исключительно этими вопросами. Новые выпуски публикуются раз в две недели и имеют продолжительность 40-45 минут. Всего в рамках второго сезона планируется записать 24 выпуска. Каждый выпуск сопровождается полной текстовой расшифровкой.
Ещё 10 февраля вышла новая версия языка Mercury — 14.01. Мажорные релизы называются по номеру года и месяца запланированного выпуска, предыдущий был 13.05.
Mercury — это логический и функциональный язык программирования, похожий на Prolog, но с поддержкой компиляции в машинный код, чистыми предикатами, со строгой статической типизацией, явным объявлением детерминизма предикатов, с функциями (а не только предикатами), встроенным каррированием и другими новшествами.
В новой версии:
Могут повторяться переменные типов в объявлении экземпляров классов типов (type class instances). Например:
instance foo(list(T), map(T, T)).
Ряд улучшений в стандартной библиотеке, особенно связанных с функциями свёртки списков (см. полный список).
Исправлены проблемы совместимости с GCC 4.8 (а также с Visual Studio 2013 и Mac OS X 10.9).
Shen - это функциональный язык программирования, являющийся продолжением языка Qi II. Имеет опциональную статическую систему типов, основанную на секвенциальном исчислении, и общее направление на логическое программирование.
Важной целью языка является переносимость. Ядро реализовано с использованием всего 45 функций Kernel Lisp (KL), поэтому язык достаточно быстро может быть перенесён на любую платформу.
Kona — свободная реализация языка программирования K.
K — язык программирования, по концепции сходный с APL, но использующий алфавит ASCII.
Изначально язык программирования K был разработан Артуром Вайтни, Kx Systems, но его реализация от Kx проприетарная. Kona — альтернативная свободная реализация.
8 апреля 2011 лицензия интерпретатора изменена с проприетарной на свободную лицензию ISC (используемой также в проекте OpenBSD).
Возможно, причиной перехода на свободную лицензию стала недавняя новость об открытии исходных кодов другого APL-подобного языка — J.
Вышел свежий, 7-й номер журнала «Практика функционального программирования». В новом номере вы можете прочитать следующие статьи:
«Язык РЕФАЛ — взгляд со стороны». Бойко Банчев расскажет о сущности, истории и современном состоянии языка РЕФАЛ — детища Валентина Фёдоровича Турчина; языке незаслуженно подзабытом, но на десятилетия опередившем своё время и пустившем корни во множество современных ЯП (как, например, Mathematica).
«Circumflex — веб-фреймворк на Scala comme il faut». Александр Темерев даст урок использования этого «обезжиренного» и гибкого веб-фреймворка, написанного на Scala российской командой во главе с Борисом Окунским.
«Разработка алгоритма обнаружения движения в среде программирования Mathematica». Вадим Залива расскажет об опыте прототипирования такого алгоритма при разработке iPhone-приложения iSentry. Хотя Mathematica и не является в полном смысле этого слова функциональным языком программирования, но программирование в этой среде задействует множество не очень распространенных пока в мейнстриме, но очень важных и заслуживающих внимание средств: интерактивный интерпретатор, гомоиконность (единство кода и данных), сопоставление с образцами, wholemeal programming (оперирование целыми структурами данных, а не их частями), акцент на «чистое» программирование, dataflow programming (Manipulate) и т.п.
«Как написать LDAP-сервер на Erlang» и «Как написать LDAP-сервер на Си». Максим Сохацкий и Олег Смирнов обменяются любезностями со Львом Валкиным: Максим и Олег похвалят Erlang за то, что на нем можно за 20 минут написать LDAP-сервер, а Лев докажет, что дело тут вовсе не в Erlang.
«Продолжения в практике». Алексей Вознюк (человек, написавший на LISP самую быструю программу к конкурсу в ПФП №3) расскажет об использовании продолжений для упрятывания асинхронности кода за обыкновенным «последовательным» синтаксисом. Эта тема особенно актуальна в контексте взрывного роста Веба и сетевых сервисов, но интересна и потому, что открывает целый пласт неожиданных структур управления. Рекомендуем перед прочтением ознакомиться с недавно опубликованным в «Библиотечке ПФП» переводом статьи «Паттерны использования call-with-current-continuation».
«Суперкомпиляция: идеи и методы». Илья Ключников, занимающийся суперкомпиляцией в Институте прикладной математики им. М. В. Келдыша, расскажет о суперкомпиляции (кстати, изобретенной также В. Ф. Турчиным в контексте языка РЕФАЛ), построив поразительно компактный и понятный суперкомпилятор простого языка, и покажет, что она применима не только для удивительно мощной оптимизации многих классов программ, но имеет и другие неожиданные применения.
Кроме этого, журнал доступен и в печатном виде (200р, доступны и все предыдущие номера, комплекты еще дешевле, доставка куда угодно, в Москве можно самовывозом).
Фирма Jsoftware сделала доступным под лицензией GPL v.3 среду J.
J — функциональный векторный язык программирования, наследник и диалект языка APL. Язык программирования J разработан в начале 1990-х Кеннетом Айверсоном и Роджером Хуэем.
Будем надеяться, что данный шаг послужит формированию сообщества разработчиков этого интересного языка обработки данных.
Вышла новая версия комплекта для разработки на популярном функциональном языке Haskell — «The Haskell Platform 2011.2». Данная сборка содержит всё необходимое не только для освоения, но и успешной разработки на данном языке.
В комплект включены такие важные компоненты, как:
GHC 7.0.2 — оптимизирующий компилятор языка Haskell, поддерживающий REPL и содержащий интерактивный отладчик;
Haddock — генератор документации из аннотированного исходного кода (аналог doxygen);
Cabal — пакетный менеджер, позволяющий «одной командой» устанавливать различные программы и библиотеки с Hackage;
Happy, Alex, Parsec — для упрощения написания лексических анализаторов и парсеров;
После долгого перерыва вышел 6-й номер журнала «Практика функционального программирования», который также стал доступен и в печатном виде.
В номере вы можете найти:
эксклюзивные интервью с титанами функционального мира, создателями языков Haskell и Erlang: Саймон Пейтон Джонс и Джо Армстронг поделятся мыслями и ответят на вопросы о своих детищах и обо всем остальном, от работы в Microsoft Research до творчества Тарковского (обсуждение: Саймон Пейтон-Джонс, Джо Армстронг);
сравнение Node.js и Erlang (Дмитрий Демещук);
обзор языка Scala (Влад Патрышев);
перевод статьи Дэна Пипони о быстром сопоставлении с регулярными выражениями при помощи моноидов;
статью Евгения Кирпичёва, в которой идеи Дэна Пипони реализованы в коде
Кроме этого, начат проект «Библиотечка ПФП» в рамках которого будут публиковаться переводы известных статей на тему функционального программирования.