LINUX.ORG.RU

Вышел Racket 6.4

 ,


4

3

Вышла версия 6.4 языка Racket — языка программирования общего назначения из семейства Lisp/Scheme.

  • Исправлена уязвимость в Web-сервере. Данная уязвимость позволяла получить доступ к любому файлу, доступному Web-серверу для чтения (подробности).
  • Новый инкрементальный сборщик мусора уменьшил паузы, что особенно важно в играх и анимациях.
  • Скроллинг в DrRacket стал быстрее.
  • Добавлен болгарский перевод в DrRacket.
  • Каталог пакетов теперь имеет адрес HTTPS по умолчанию, а не HTTP.
  • Документация теперь может определять свои собственные категории для главной страницы руководства с использованием строк.
  • Шпаргалка по Racket включена в основной дистрибутив.
  • Контракт, который Typed Racket генерирует для типа Any, стал более либеральным, что позволяет большему числу программ как с использованием системы типов, так и без неё работать без ошибок контракта.
  • Redex поддерживает спецификацию связей (binding specifications).
  • Все функции pict принимают pict-convertible, что обеспечивает прозрачное взаимодействие между pict и библиотеками типа 2htdp/image.
  • Команды raco profile и raco contract-profile предоставляют лёгкий доступ к инструментарию профилирования без необходимости изменять сами программы.

>>> Подробности

anonymous

Проверено: maxcom ()
Последнее исправление: Wizard_ (всего исправлений: 6)

Ув. модераторы, разделите тэг racket lisp на 2, пожалуйста. Забыл запятую добавить, в Лиспе не принято :-)

anonymous
()

Вспомнил недавно про ракету, хороший, годный язык ведь. В продакшен протащить, как обычно, трудно, но для локалхостов и всяких утилит -отличный вариант.

loz ★★★★★
()

который Typed Racket генерирует для типа Any более стал более либеральным
более стал более либеральным

anonymous
()
Ответ на: комментарий от loz

В продакшен протащить, как обычно, трудно,

Вот описание создания серьезного коммерческого софта на PLT Scheme (PLT Scheme предшественник Racket).

Odalist ★★★★★
()
Последнее исправление: Odalist (всего исправлений: 1)
Ответ на: комментарий от Psych218

Что это за Racket вообще?

Вот, читайте, и да, я согласен с анонимусом

Где твоё «спасибо», что тебе дали новость, затратив на это своё драгоценное время, ничего не получив взамен, т.е. за бесплатно? Совсем оборзели уже.

Odalist ★★★★★
()
Последнее исправление: Odalist (всего исправлений: 1)
Ответ на: комментарий от anonymous

Мощными средствами по манипулирования синтаксисом (syntax/parse), гигиеническими макросами, паттерн-матчингом, полноценными продолжениями, модулями (с возможностью определять свой язык)

x4DA ★★★★★
()
Ответ на: комментарий от Odalist

А я не очень согласен с анонимусом. Вообще в новостях принято писать хотя бы пару фраз, о чём речь, особенно если это не мейнстрим. В данном случае в новость и вообще-то просится хоть какой-нибудь первый абзац, а то она прямо с перечисления начинается.

Анонимусу за новость, разумеется, спасибо, но вопрос у человека возник вполне резонный. Другое дело, что задавать его, наверное, надо было в спецтеме, а не здесь. Отписался.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от anonymous

> Чем это лучше борщелиспа или божественной Кложури?

Чем цепепе лучше це? :-)

Ну что за бред? Схема и CL примерно одновременно появлялись, Racket же основан на Схеме. Кложура от них отноительно независима и вообще ВНЕЗАПНО по дате выхода сама новая. Аналогия была бы только если бы вопрос звучал «чем это лучше чем Scheme?».

Gentooshnik ★★★★★
()
Ответ на: комментарий от x4DA

Мощнее defmacro средств пока нет, в практической применимости гигиеничеких макросов есть сомнения, патер-матчинг элементарно делается библиотекой. Полноценные продолжения и модули плюсую.

Gentooshnik ★★★★★
()

Добавлен болгарский перевод в DrRacket.

I са чакали това в продължение на две години, как говориться.

korvin_ ★★★★★
()
Ответ на: комментарий от Gentooshnik

Мощнее defmacro средств пока нет,

defmacro тривиально делается гигиеническими макросами: https://docs.racket-lang.org/compatibility/defmacro.html

гигиенические макросы через defmacro не реализовать. предлагаю еще раз подумать на тему того какое из средств мощнее.

патер-матчинг элементарно делается библиотекой

да, в racket это библиотека, причем из core. покажите мне стандартную либу для pattern matching из common lisp.

в практической применимости гигиеничеких макросов есть сомнения

https://www.cs.utah.edu/plt/publications/jfp12-draft-fcdf.pdf

x4DA ★★★★★
()

Госсподи, на что только не идут, лишь бы не писать на богоугодном CL или на худой конец, кошерной джаве!

И зачем в ЯП вебсервер?!

AVL2 ★★★★★
()
Ответ на: комментарий от Virtuos86

А волга - предшественник каспийского моря.

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

Контракт, который Typed Racket генерирует для типа Any стал более либеральным

Либерасты и сюда пролезли!

rupert ★★★★★
()
Ответ на: комментарий от ashot

А, хорошая штука. Для настоящих пацанчиков.

rupert ★★★★★
()
Ответ на: комментарий от AVL2

И зачем в ЯП вебсервер?!

Он не в ЯП, а в библиотеке.

monk ★★★★★
()
Ответ на: комментарий от Gentooshnik

Ну что за бред? Схема и CL примерно одновременно появлялись, Racket же основан на Схеме.

С99 новее, чем C++, но возможностей сильно меньше. Поэтому аналогия очень хорошая: в Racket добавили те возможности, которые могут пригодиться (как в C++), а в CL всё что может смутить неокрепшие умы (гигиена, продолжения) принципиально не приемлют.

monk ★★★★★
()
Ответ на: комментарий от Gentooshnik

Мощнее defmacro средств пока нет, в практической применимости гигиеничеких макросов есть сомнения

На defmacro даже анафорические макросы в макросах применять нельзя.

monk ★★★★★
()
Ответ на: комментарий от monk

На defmacro даже анафорические макросы в макросах применять нельзя.

За неявное объявление переменных кастрировать тупыми ржавыми маникюрными ножничками!

yyk ★★★★★
()
Ответ на: комментарий от yyk

За неявное объявление переменных кастрировать тупыми ржавыми маникюрными ножничками!

Так в CL сплошь и рядом *специальные-переменные* локально объявляются. Типа with-output-to-string, with-input-from-string.

А неявное объявление функций? Как относишься к tagbody и block?

P.S. Неявное объявление уместно, если оно документировано.

monk ★★★★★
()
Ответ на: комментарий от monk

В with-output-to-string и with-input-from-string ты задаешь имя той переменной, которая будет объявлена.

Чтобы было понятнее: напиши 3 вложенных анафорика if и результрующее выражение, использующее все 3 переменные.

yyk ★★★★★
()
Последнее исправление: yyk (всего исправлений: 1)
Ответ на: комментарий от Odalist

в данный момент он работает на racket. и давно уже, на самом деле. и так же давно пытаемся выкинуть ракету и переписать все части на clojure и scala. как язык схема/ракета - наверное ничего так, но реализация преподносит кучу проблем «в реальной жизни». проблем в интерпретаторе, а не в библиотеках. и «чинит» их только Флэтт. и не особо охотно, так как у него других дел хватает, как я понимаю.

drF_ckoff ★★
()
Ответ на: комментарий от drF_ckoff

давно пытаемся выкинуть ракету и переписать все части на clojure

Респект Ричарду Хикки, что он вовремя что-то понял и начал работу над своим проектом :-) На минутку представим, что автор Clojure до сих пор бы работал над реализациями Common Lisp и интегрированием их с JVM :-)

anonymous
()
Ответ на: комментарий от yyk

В with-output-to-string и with-input-from-string ты задаешь имя той переменной, которая будет объявлена.

Да. Перепутал с Racket'овским with-output-to-string. В CL в стандартной библиотеке нашёл разве что WITH-STANDARD-IO-SYNTAX.

напиши 3 вложенных анафорика if и результрующее выражение, использующее все 3 переменные.

Согласен. Поэтому в Racket нет aif, зато есть and-let*.

С другой стороны, для чтения кода (aif ... it ...) достаточно удобно. В PERL вообще анафора — неотъемлемая часть языка ($_ повсюду).

monk ★★★★★
()
Ответ на: комментарий от drF_ckoff

проблем в интерпретаторе

в натив не компилируется? o_O

и «чинит» их только Флэтс

хренасе, один человек?

так как у него других дел хватает

ну и как это использовать в продакшене?

Oxdeadbeef ★★★
()
Ответ на: комментарий от anonymous

что автор Clojure до сих пор бы работал над реализациями Common Lisp и интегрированием их с JVM :-)

В коммерческих реализациях CL интеграция с жаба экосистемой «из коробки».

Oxdeadbeef ★★★
()
Последнее исправление: Oxdeadbeef (всего исправлений: 1)
Ответ на: комментарий от Oxdeadbeef

В коммерческих реализациях CL интеграция с жаба экосистемой «из коробки».

Это понятно, и в ЛиспВорксе 7 сделали это на «отлично», насколько я слышал :-) Респект :-) Спич о том, что человек во-время принял решение, и вместо дальнейшего пиления биндингов к JNI или к механизму отражения Java для Common Lisp сделать свой язык :-) Насколько удачным было решение - очевидно :-)

anonymous
()
Ответ на: комментарий от anonymous

ABCL тоже нативное решение для ЖВМ, и судя по спеке и тестам — полная реализация CL. Единственное, рук не хватает довести до удобной интеграции с жабовской экосистемой, а так ничем бы не уступало кложуре.

Oxdeadbeef ★★★
()
Ответ на: комментарий от Oxdeadbeef

ABCL
ничем бы не уступало кложуре

История сослагательного наклонения не имеет :-) А во-вторых, иной раз гораздо продуктивнее создать свой проект и развивать его так, как считаешь нужным, не обращая внимания ни на мэйнтейнеров, ни на других обитателей IRC :-)

anonymous
()
Ответ на: комментарий от monk

а в CL всё что может смутить неокрепшие умы (гигиена, продолжения) принципиально не приемлют

Почему гигиена «смущает умы»?

DarkEld3r ★★★★★
()
Ответ на: комментарий от anonymous

божественной Кложури

Это убогое гавно не поддреживает позднее связывание из-за того что использует абсолютно непригодную для динамических языков виртуалку. Другое дело .net, там что-то специально для динамики делали. Так что если уж писать динамический ЯП в jvm среде, то только в виде интерпритатора собственного формата байткода + jit в .class, что собственно я и сделаю, если буду писать свой ЯП.

q0tw4 ★★★★
()
Ответ на: комментарий от q0tw4

Это убогое гавно не поддреживает позднее связывание из-за того что использует абсолютно непригодную для динамических языков виртуалку.

Как «ВУ ассемблер» может поддерживать или не поддерживать позднее связывание? Кто тебе мешает для «переменных с поздним связыванием» завести «окружение» и при чтении/записи этих переменных лезть в это окружение?

yyk ★★★★★
()
Ответ на: комментарий от yyk

Я к тому что пишешь, пишешь, а оно опп и не компилит по непонятной с точки зрения лиспера причине. В результате компилер удаляется с винта, ибо зачем мне ухудшенный лисп нужен, когда языков и так полно.

q0tw4 ★★★★
()
Последнее исправление: q0tw4 (всего исправлений: 1)
Ответ на: комментарий от Hertz

А еще оно на андроиде тормозит. Ну я конечно давно пробовал и руки не очень прямые, но хеловорлд запускался много секунд.

q0tw4 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.