Racket - это язык программирования общего назначения, а также первая в мире экосистема для языко-ориентированного программирования.
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 и prefab-changes для более подробной информации об этом изменении, и о том, как исправить программы, которые подверглись влиянию в связи с этим изменением.
- Typed Racket поддерживает
#:rest-star
в конструкторе типов->*
, что позволяет функциональным типам указывать в хвостовом списке аргументов (rest arguments) более сложные образцы типов, такие как функцияhash
. - Интерактивные оверлеи могут быть наложены на графики, созданные с помощью
plot-snip
. Это позволяет создавать интерактивные графики или отображать дополнительную информацию, когда указатель мыши находится над областью графика. Примеры использования данной возможности можно посмотреть тут. -
racket/plot
предоставляет процедуры для отображения графиков японских свечей (candlestick charts), которые могут быть использованы в финансовом анализе временных рядов. - Добавлен
contract-equivalent?
, который проверяет, что два контракта являются взаимосильными, без экспоненциального замедления, которое имеет место в случае двух вызововcontract-stronger?
. - Lazy Racket поддерживает функции с именованными аргументами.
>>> Оригинал