[ Racket ](
http://racket-lang.org/ ) - это язык программирования общего назначения, а также первая в мире экосистема для языко-ориентированного программирования.Racket версии 7.0 включает существенные изменения в рамках долгосрочных целей замены текущей системы времени выполнения и поддержки множества систем времени выполнения. Предполагается, что пользователи Racket не почувствуют большой разницы между Racket 6.12 и Racket 7.0, но в связи с тем, что реализация претерпела серьёзные изменения, увеличен именно старший номер версии.Ядро версии 7.0 является результатом переработки ядра версии 6.12 более чем на 1/8, и включает новый механизм раскрытия макросов, который осуществляет бутстрэппинг самого себя. Данный механизм покрывает более 40% кода, необходимого для замены ядра Racket на Chez Scheme. Остальные 60% кода, по бОльшей части, также реализованы, но не включены в этот выпуск; мы надеемся и предполагаем, что Racket-на-Chez будет готов для промышленного использования в следующих выпусках ветки 7.x Синтаксис формы (`#'`) поддерживает новые шаблоны подформ: ~@ - для сплайсинга, и ~? - для выбора между подшаблонами, основанного на возможном «отсутствии» значения у переменных образца (например, у образца ~optional в syntax-parse). Библиотека syntax/parse/experimental/template, откуда происходят эти возможности, экспортирует новые формы под старыми именами для совместимости. На Windows флаг --embed-dlls команды raco exe создаёт по-настоящему автономный исполняемый файл ".exe", который содержит в себе разделяемые библиотеки Racket. Опция «Create Executable» интегрированной среды разработки DrRacket для учебных языков (Beginner Student, и т.п.) использует флаг --embed-dlls на Windows. Поддержка prefab («previously fabricated») структур в Typed Racket существенно улучшена, что делает их более полиморфными, исправляя, вместе с тем, существенные ошибки текущей реализации. Программы, которые сейчас используют предикаты для prefab-структур неизвестных данных, могут нуждаться в ревизии, т.к. предыдущие версии Typed Racket позволяли программам с потенциальными ошибками осуществлять проверку типов. Смотрите [ Typed Racket RFC 1 ](
https://github.com/racket/typed-racket/blob/master/rfcs/text/0001-prefab-structs.md ) и [ prefab-changes ](
https://pnwamk.blogspot.com/2018/06/typed-racket-v70-prefab-changesfixes.html ) для более подробной информации об этом изменении, и о том, как исправить программы, которые подверглись влиянию в связи с этим изменением. Typed Racket поддерживает #:rest-star в конструкторе типов ->*, что позволяет функциональным типам указывать в хвостовом списке аргументов (rest arguments) более сложные образцы типов, такие как функция hash. Интерактивные оверлеи могут быть наложены на графики, созданные с помощью plot-snip. Это позволяет создавать интерактивные графики или отображать дополнительную информацию, когда указатель мыши находится над областью графика. Примеры использования данной возможности можно посмотреть [ тут ](
https://alex-hhh.github.io/2018/03/interactive-overlays-with-the-racket-plot-package-update.html ) . racket/plot предоставляет процедуры для отображения графиков японских свечей (candlestick charts), которые могут быть использованы в финансовом анализе временных рядов. Добавлен contract-equivalent?, который проверяет, что два контракта являются взаимосильными, без экспоненциального замедления, которое имеет место в случае двух вызовов contract-stronger?. Lazy Racket поддерживает функции с именованными аргументами.
Ссылка:
https://www.linux.org.ru/news/development/14373747