LINUX.ORG.RU

Вышел Racket 6.3

 , ,


2

9

Доступен для скачивания релиз 6.3 языка программирования Racket — http://racket-lang.org/.

Новшества:

  • При раскрытии макросов используется новое представление связывания, что позволяет проще понимать как макросы сохраняют связывания, особенно при вовлечении в процесс раскрытия нескольких модулей и при отклонении от гигиены при раскрытии.
  • GUI-библиотека Racket теперь использует Gtk3+ по умолчанию.
  • Новое руководство по Redex.
  • Улучшена проверка синтаксических ошибок для Redex-паттернов.
  • Bluebox стали более агрессивными в плане отыскания имён для поиска в документации.
  • Подмодули теперь полностью поддерживаются в Typed Racket.
  • Библиотека typed/racket/unsafe предоставляет формы импорта/экспорта для обхода генерации контрактов.
  • Typed Racket предоставляет экспериментальную поддержку units (из racket/unit).
  • Экспериментальная форма define-new-subtype позволяет указывать тонкие различия, без которых типы считаются идентичными (аналог new type в Haskell).
  • Конструктор типов Promise изменился, нарушив обратную совместимость для устранения promise, созданных с помощью promise/name.
  • Пакеты unstable-* исключены из главного дистрибутива.
  • big-bang поддерживает режим display-mode, что позволяет т.н. «мировым» программам (интерактивным, графическим программам, состоящих из простых математических функций) занимать весь экран целиком.

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

anonymous

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

Отличные новости!

ymn ★★★★★
()

Встречный вопрос от общелиспера - как вы там без unwind-protect с освобождением ресурсов справляетесь?

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

Есть стандартный схемных dynamic-wind, в Racket могут быть и более легковесные варианты, на основе delimited continuations.

Begemoth ★★★★★
()
Последнее исправление: Begemoth (всего исправлений: 1)

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

гУгол-переводчег?

gns ★★★★★
()

Какой-то уж до боли знакомый логотип...

Я правильно понял, что Racket — это дальнейшее развитие слэш замена PLT Scheme?

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

Я правильно понял, что Racket — это дальнейшее развитие слэш замена PLT Scheme?

именно так

be_nt_all ★★
()

Использовать язык из подмножества LISP для веб-серверов и charts'ов - это всё одно что державным скипетром в дерьме ковыряться.

Некоторые и нейронные сети используют для высирания баннеров - от интеллектуальности средств для продуцирования веб-мусора последний почему-то не становится полезнее.

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

как вы там без unwind-protect с освобождением ресурсов справляетесь

Так же как и с освобождением памяти. Как переменная стала недоступной, так ресурс и освободился. А в простых случаях (внутри тела не запоминается во внешнюю переменную продолжение) dynamic-wind выше крыши.

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

Кто-нибудь использует?

У меня на нём сайт, управление ограничением трафика в локальной сети и пара вытаскивалок информации с сайтов.

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

управление ограничением трафика в локальной сети

это как? Пускаешь через него весь трафик локальных интерфейсов?

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

Пускаешь через него весь трафик локальных интерфейсов?

Запущен на шлюзе в интернет. Интерфейс через http. На основании настроек в конфигурации устанавливает ограничения через tс. На основании списка компьютеров в домене автоматически добавляет новые в конфигурацию. Из данных tc -s строит отчёт по текущему потреблению трафика.

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

по каким-то конкретным соображениям

Помимо учебной цели аргументов было 4:

1. Простой формат обмена Racket-Racket. Так как список компьютеров из Active Directory проще получить на Windows, а шлюз на Linux.

2. Достаточно простой доступ к WMI (на Windows) и работе с программами командной строки

3. Возможность писать web-интерфейс без явного отслеживания сессии (как в http://docs.racket-lang.org/continue/index.html)

4. Удобная многопоточность (web, опрос AD, контроль tc и статистика должны быть в одной программе и друг другу не мешать).

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

гУгол-переводчег?

Нет, заурядный читатель-потребитель :-)

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

Опять борщета на уютном лоре?!?

Набил кишку красной икрой? :-)

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

монолит вместо микросервисов?

Совсем микросервис у меня один: отдельная программа на Windows-машине отдаёт список компов из AD.

Всё остальное имеет общий список компьютеров (структур). Так как запись поля атомарная операция, то не вижу смысла разбивать на отдельные процессы.

Разбивка есть по модулям (чтение/запись файла с конфигурацией, общение с tc, общение с arp и nmblookup) и по потокам (web, обновление настроек tc, обновление информации о компах через nmblookup).

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

какой IDE под racket используешь?

DrRacket. Чуть тормозит иногда и автодополнения по сути нет, но удобно видеть связи переменной при наведении на неё.

emacs годится?

Да, есть автодополнение, поиск по помощи: http://www.nongnu.org/geiser/ Там только отладчик хуже, чем в DrRacket.

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

понял.

насчёт твоего микросервиса у меня примерно та-же задача сейчас стоит но,, я решил что на конечных точках будут агенты (Windows -> PowerShell, xNIX -> perl|shell....) с верификацией после посыла информации от агента (криптографией), сеть территориально распределена и реализация NAC по многим предпосылкам невозможна. всё никак не возьмусь по времени, уже с год как продумал

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

решил что на конечных точках будут агенты (Windows -> PowerShell, xNIX -> perl|shell....) с верификацией после посыла информации от агента

Я бы stunnel с авторизацией по ключу сделал. А поверх него уже что угодно. Racket в такой задаче позволяет сэкономить на сериализации/десериализации, так как write + read позволяют пробросить произвольное дерево.

Если совсем глобально, то можно сделать распределённую программу: http://docs.racket-lang.org/guide/parallelism.html#(part._distributed-places) — из коробки шифрование, проброс почти произвольных данных, запуск агента на удалённой машине.

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

Вот как раз калька с английского довольно уродлива. «отклонение от гигиены при раскрытии»  — это сильно. :)

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

отклонение от гигиены при раскрытии

А как по-русски? «отклонение от соблюдения гигиены», «при нарушении гигиены при раскрытии», «при нарушении соблюдения гигиены при раскрытии» или вместо «гигиены» какой-то другой неологизм придумать?

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

«hygiene-bending» — это тоже некоторый неологизм, который сами авторы языка предпочитают употреблять в кавычках. Надо какой-то аналог искать.

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

подумаю. в случае с powershell|shell на раб станции/клиенте у меня встроенные средства ОС и минимум деплоя(групповые политики,puppet etc), хотя ничего не мешает задеплоить бинарник, если он будет статически слинкован со всеми нужными ему библиотеками и гарантированно запускается на зоопарке winXp win7 win8.1. как с этим в рАкете?

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

Надо какой-то аналог искать.

И какой? Если вводить свой термин, то будет путаница как с нитями/потоками, накладными/инвойсами и т.д. Для технических текстов это неудобно.

А «отклонение от гигиены» режет слух не больше, чем «распады прелестного кварка в более лёгкие ароматы сильно подавлены и происходят в основном через слабые взаимодействия»

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

если он будет статически слинкован со всеми нужными ему библиотеками

С этим не очень. Классически deploy Racket'ового бинарника сводится к копированию папки с бинарником и библиотеками (в пределах сетки я вообще ставлю ярлык на сетевой диск и всё, заодно и обновлять проще).

гарантированно запускается на зоопарке winXp win7 win8.1

С этим замечательно. Также может компилироваться как в 32 бита, так и в 64.

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

«при обходе гигиены», наверное. «при раскрытии» вообще тут не надо.

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

Это макростеппер который?

Нет, это я про ту штуку, что запускает экспандер фоном во время того, как ты печатаешь код и, с-но, сразу выдает ошибки макроэкспанда, без запуска программы. А гуи-степпер и в гейзере запускается по хоткею при небольшом допиле (по крайней мере раньше надо было допилить немного, сейчас может уже сразу эта возможность есть)

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

сразу выдает ошибки макроэкспанда, без запуска программы.

А! От неё для меня основная польза была связи между переменными показывать. А именно ошибки скорее в минус: пока не напишешь синтаксически корректное выражения, так даже помощь не показывает.

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

Кстати, есть же http://docs.racket-lang.org/guide/Emacs.html

Я одно время пытался использовать geiser. Столкнулся с тем , что через раз показывались результаты компиляции. Может я делал чего-то не так, но я забил. Стал использовать racket-mode. Для моих потребностей оказалось достаточно. А чем geiser лучше? Мне показалось, что его стараются сделать универсальным для всех Схем и Ракетки, поэтому он какой-то громоздкий.

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

А чем geiser лучше? Мне показалось, что его стараются сделать универсальным для всех Схем и Ракетки, поэтому он какой-то громоздкий.

autodoc и поддержка картинок в тексте .rkt

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

Вопрос терминологии. Понятие «гигиена» возникает еще в r6rs, но что она там означает я толком не понял, но что-то связанное с «культурой использования». В квантовой хромодинамике хоть терминология устоялась.

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

но что-то связанное с «культурой использования»

О, боги! https://en.wikipedia.org/wiki/Hygienic_macro Что интересно, перевода этой страницы на русский нет.

То есть «гигиена» — это свойство макросистемы, позволяющее исключить ненамеренный захват идентификаторов из параметров макроса или окружения, в котором раскрывается макрос.

Соответственно, «отклонение от гигиены» — использование синтаксических конструкций, позволяющих нарушить гигиену для определённых идентификаторов.

В квантовой хромодинамике хоть терминология устоялась.

В Scheme тоже. При переводе на русский у физиков те же проблемы: beauty quark — это «бьюти-кварк», «красивый кварк», «прелестный кварк»?

monk ★★★★★
()

Кстати, можно-ли что-то подобное в Ракетке сделать?

#lang some-extention racket/base

(define (f x) x)


#module+ main

(display (f "hw!"))


#module+ test

(require rackunit)

(check-equal? (f 'x) 'x)


#module docs scribble/base

....

Я имею в виду:

1. более удобную запись субмодулей,

2. субмодули для языков с произвольным синтаксисом.

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

За статью в википедии спасибо, проясняет ситуацию. Теперь хоть понятна аналогия.

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

beauty quark — это «бьюти-кварк», «красивый кварк», «прелестный кварк»?

b-quark. Впервые на русском языке я услышал именно вариант «красивый» году в 1986м на первом курсе физтеха :) Хотя там терминология доставляет, конечно. Квантовые числа «странность» и «истинность»....

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