После двух лет разработки подготовлен (http://blog.cognitect.com/blog/clojure19) релиз динамического языка программирования Clojure 1.9 (http://clojure.org/), базирующегося на языковых конструкциях Lisp и сочетающего в себе возможности функционального и многопоточного программирования с чертами современных скриптовых языков. Код программ на языке Clojure транслируется в Java байт-код и выполняется на виртуальной машине JVM. Код компилятора Clojure, библиотек и runtime-компонентов распространяется в рамках лицензии Eclipse Public License.
Из ключевых улучшений (https://github.com/clojure/clojure/blob/master/changes.md) отмечается:
- Интеграция с библиотекой spec (https://clojure.org/about/spec) для описания, проверки корректности и тестирования структуры данных и функций. При помощи spec можно автоматизировать выполнение таких задач, как валидация, обработка ошибок, деструктуризация, инструментовка, генерация тестов и тестовых данных. В Clojure поддержка spec добавлена через две библиотеки: spec.alpha - непосредственно реализация spec и core.specs.alpha - спецификации для языка Clojure. Обе библиотеки пока имеют уровень качества альфа-версии;- Реализован набор утилит командной строки (https://clojure.org/guides/deps_and_cli), предоставляющих интерактивную среду программирования Clojure REPL, а также инструменты для упрощения установки, компоненты для использование сборочной системы Maven и управления локальными зависимостями, API для управления classpath;
- В clojure.core добавлена большая порция предикатов и типов, включая "boolean?", "int?", "double?", "uuid?", "any?", "ident?", "bytes?";
- Добавлены новые функции bounded-count, swap-vals!, reset-vals! и
halt-when;
- Добавлен протокол Inst для типов, манипулирующих отрезками времени (применим для java.util.Date и java.time.Instant);- В отображениях (map) обеспечена возможность указания пространств имён для ключей, например '#:car{:make "Jeep" :model "Wrangler"}'.
URL: http://blog.cognitect.com/blog/clojure19
Новость: http://www.opennet.me/opennews/art.shtml?num=47710
Кложа годнота! Ей бы ещё рантайм более подходящий.
Да нормальный runtime, как раз для такого языка :)
> Да нормальный runtime, как раз для такого языка :)Вам никто не запрещает использовать Lumo/CLJS
Зато JVM - дерьмо
Рантаймов завались: JVM, .Net., JS. То есть clojure и в браузере(JS), и на мобилке (React Native) и на сервере (JVM, .Net), даже вот теперь для скриптинга годиться (см. lumo + весь JS мир библиотек под Node).
> весь JS мир библиотек под NodeНадеюсь leftpad пойдет, иначе ненужно.
>> весь JS мир библиотек под Node
> Надеюсь leftpad пойдет, иначе ненужно.Не смешно
Был, помнится, в прошлом году доклад одного из ключевых разработчиков Apache Storm, который начался с того, почему они решили перейти с Clojure на Java. Причину объяснили очень просто, задав вопрос к весьма забитой аудитории, сколько тут человек пишет на Clojure.... Ответ - потому и решили переписать всё на Java....
Судя по GitHub как было ядро Apache Strom на Clojure так и осталось.
https://github.com/apache/storm/tree/master/storm-core/src/c...К тому же Натан Марц (автор Storm) много писал о том, что дала ему кложа при разработке Storm.
И сам Марц активен в комьюнити кложи, много пишет и по сей день.
>> Судя по GitHub как было ядро Apache Strom на Clojure так и осталось.https://github.com/apache/storm/graphs/commit-activity
Банально, проект умирает....
Зато новый на Java вполне себе растёт https://github.com/twitter/heron/graphs/commit-activity
> Зато новый на Java вполне себе растётДык, всё что жабе всегда только и растёт...
Как рак
> Причину объяснили очень просто, задав вопрос к весьма забитой аудитории, сколько тут человек пишет на Clojure...Когда компании приводят такие аргументы, единственный вывод, который можно сделать -- это то, что в компании плохо организовано производство, возрасла текучка кадров, временные решения стали превалировать над спроектированными.
>Код программ на языке Clojure транслируется в Java байт-код и выполняется на виртуальной машине JVM.Официально ещё и на .NET и в браузере через JavaScript.
А про Лазарус не написали...