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)

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

Ну я с парсера и начинал. Дальше то можно и продолжать, но хотяб с парсингом голова не болит.

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

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

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

http://docs.racket-lang.org/c-utils

Потыкал. Падает иногда на контракте. Функцию однострочник транслит в 40 строк prefab-struct бреда. Ну всеравно автор этого дела думал так же как и я, так что допинаю со временем.

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

Ты языки программирования учишь по описанию из стандарта???

Нет, просто в моей человеческой памяти не укладывается описание языка размером в 1300 страниц :-) Приходится подсматривать в стандарт, ибо это единственный достоверный источник :-) Всякие сайтишки - не вариант :-)

А иностранные языки по словарю и грамматическому справочнику?

В т.ч. :-) А как ещё можно выучить язык, не выучив слова и грамматику? :-) Лол :-)

Сравнил man realloc с https://ru.wikipedia.org/wiki/Vector_(C )

Ну вот и наглядное обоснование моего недоверия сайтишкам в оппозит стандарту :-) Где в той странице хоть слово про конструктор вектора, параметризованного initializer_list или rvalue? :-) И после этого ты будешь утверждать, что полно качественной документации, ага? :-) Поэтому все профи, кто по долгу службы кодит на цепепе читают стандарт, а не википедию, при всём к ней уважении :-) То же касается и проф. программистов Common Lisp :-) Только вот сравни стандарты Common Lisp и C++ по критериям доступности, ясности, полноты, наличию практических примеров и удобству даже в плане навигации :-) Что касается realloc, то в мане всё понятно написано :-) Мне не ясно, о каком таком неопределённом поведении ты говоришь, касаемо realloc :-)

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

Функцию однострочник транслит в 40 строк prefab-struct бреда.

Это нормально. AST ведь. На каждую лексему по структуре, описывающей что это и где это в тексте.

https://github.com/tonyg/racket-explorer/ используй для просмотра

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

Кстати, можно сравнить доки по Gtk и Qt (возможности примерно одинаковые).

Ну давай сравним окна: https://developer.gnome.org/gtk3/stable/GtkWindow.html vs http://doc.qt.io/qt-5/qwindow.html :-) Мне легче читать сишный API :-) Это не значит, что я не могу читать API цепепе, просто для того, чтобы читать какой бы то ни было цепепе код, или API, мне нужно хорошо запомнить и понимать материал толстенной книги о правилах самого языка, его «великолепной» семантики, плюс материалы по всяким паттернам и «стандартам» кодирования :-) Тогда как для чтения сишного кода достаточно классической книжки белого цвета размером менее чем 300 страниц :-) Вот и весь сказ :-)

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

профи, кто по долгу службы кодит на цепепе читают стандарт

Но изучают язык всё-таки по учебникам.

Только вот сравни стандарты Common Lisp и C++ по критериям доступности, ясности, полноты, наличию практических примеров и удобству даже в плане навигации

http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4567.pdf с ... а где найти официальный ANSI CL standard?

Или http://www.cplusplus.com/reference/ с http://www.lispworks.com/documentation/HyperSpec/Front/index.htm ?

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

http://open-std.org/JTC1/SC22/WG21/docs/papers/2015/n4567.pdf

Во-первых, это не официальный стандарт 14882, а его черновик :-)

с ... а где найти официальный ANSI CL standard?

Там же где и официальный 14882 :-) Хотя оба стоят денег :-) Но кому нужен официальный X3J13, когда есть HyperSpec? :-) Надеюсь ты не додумаешься сравнивать по юзабельности pdf черновика и HyperSpec? :-) Лол :-)

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

Это нормально. AST ведь.

Я не против, просто для реального дела надо бы еще одно предстваление сварганить, то что автор этого дела хотел сделать в http://docs.racket-lang.org/c-utils/pc.html но поленился. И всетаки печально, что функцию ast->c-code-string придется писать самому, не говоря уж о дописывании промежуточного представления с конвертами туда-суда. Автор же просто хотел читать си структуры, а не писать си код.

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

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

https://github.com/tonyg/racket-explorer/ используй для просмотра

Спасибо за хорошую мысль, но тут оно мало помогает. Всеравно все эти префабы портят картину сильно. Тут надо свои функции вывода писать.

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

Непонял. Вот есть у мну лист с кодом на моем ДСЛ. Надо оттранслить его в натив по только мне известным законам. Что я делаю?

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

Но кому нужен официальный X3J13, когда есть HyperSpec?

Вот! Для CL ты смотришь не стандарт, а документацию на его основе. Так и для C++ смотри http://en.cppreference.com/w/ и http://www.cplusplus.com/reference/. На http://en.cppreference.com/w/, в отличие от CLHS, примеры можно также слегка изменять и смотреть, что должно получиться.

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

Вот! Для CL ты смотришь не стандарт, а документацию на его основе.

Почему, могу и стандарт смотреть :-) Но я, конечно, понял тебя :-)

Так и для C++ смотри http://en.cppreference.com/w/ и http://www.cplusplus.com/reference/.

Ну, первая ссылка - ещё куда ни шло, смотреть можно, если есть доверие :-) Но я в данном случае больше доверяю CLHS, чем какому-то сайту :-) Потому что создание CLHS субсидировалось LispWorks - серьёзной фирмой, известной всем лисперам :-) И CLHS поставляется вместе с LispWorks, который стоит немало денег :-) Т.е. то, что эта документация качественная - сомнений нет :-) Что касается второго сайтишки, то, увы, но как можно доверять доке, вокруг которой какие-то баннеры? :-)

в отличие от CLHS, примеры можно также слегка изменять и смотреть, что должно получиться.

А ты Emacs когда-нибудь пробовал настроить, чтобы CLHS отображалась в EWW? :-) Я могу в несколько нажатий, не покидая Emacs, скопировать любой пример из CLHS и вставить в REPL или в файло :-) А если не надо изменять пример, то вообще могу прямо из CLHS сходу в REPL или просто запустить с результатом в минибуфер :-)

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

Пишешь макры поверх mbeddr, естественно. Почитай статьи Маркуса Вольтера на это тему.

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

Потому что создание CLHS субсидировалось LispWorks - серьёзной фирмой, известной всем лисперам :-) И CLHS поставляется вместе с LispWorks, который стоит немало денег :-)

Ну тогда тебе на https://msdn.microsoft.com/en-us/library/3bstk3k5.aspx — для MSVS все твои требования выполняются :-)

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

А ты Emacs когда-нибудь пробовал настроить, чтобы CLHS отображалась в EWW?

Мы же про то, насколько удобно пользоваться тем что есть, а не про то, что можно настроить. Так и С++ в любом IDE с документацией, автодополнением методов и всплывающими описаниями.

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

Ну тогда тебе на https://msdn.microsoft.com/en-us/library/3bstk3k5.aspx — для MSVS все твои требования выполняются :-)

Ну а почему бы и нет? :-) Если использование их продукции принесёт мне удовольствие и результат, а окружающим людям пользу, то, таки, да, мне туда :-)

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

Мы же про то, насколько удобно пользоваться тем что есть, а не про то, что можно настроить.

Конечно :-) Вот есть CLHS, есть Emacs :-) И мне удобно этим пользоваться, о том и спич :-) Удобно ещё пользоваться LispWorks :-)

Так и С++ в любом IDE с документацией, автодополнением методов и всплывающими описаниями.

В любой, значит? :-) Ок, специально скачаю Qt Creator и посмотрю отвечает ли он моим нуждам или нет :-) Специально напишу тебе :-)

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

http://docs.racket-lang.org/c-utils - там кста хозяин проекта очень даже живой человечек, сразу ответил на пул реквест с починкой той баги. Так что думаю можно дописать проект до нужного мне вида и опять запушить к нему. Будет хотя б один узабельный лиспподобный си, а не так там поделка, эдам недоделка.

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

Мне хватило http://www.greghendershott.com/fear-of-macros/index.html

Да кстати, основная причина неприятия ракет макросов в темплейтах. Уж очень странными и ограничивающими кажутся они в сравнении с простыми функциональными синтакстранформерами. Последние в свою очередь из-за постоянного навешивания-снимания синтакс-обвертки начинают бесить. Так вот и хочется взять и вернуться в коммон, где очевидные синтакстранформеры работают с просто списками. Ну или написать ракету свою реализацию темплейтов. Так вроде бы правильно формулируется моя мысль.

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

Так и для C++ смотри http://en.cppreference.com/w/ и http://www.cplusplus.com/reference/.

Что касается второго сайтишки, то, увы, но как можно доверять доке, вокруг которой какие-то баннеры? :-)

cplusplus.com действительно уже не торт. А вот cppreference предоставляет очень качественную доку по C++03/11/14/17, и даже с примерами, которые там-же можно компилировать. А если какие ошибки на cppreference заметишь, то можно их исправить как в вики.

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

Во-первых, это не официальный стандарт 14882, а его черновик

C++ стандарт теперь на гитхабе: https://github.com/cplusplus/draft. И официальный релиз отличается от драфта только тем, что в заголовке удаляют слово «draft». Стандарт можно самому скомпилировать, если знаешь какая ревизия была последняя перед выходом например C++14. Я так делал. Получается документ, неотличимый от настоящего стандарта.

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

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

Почему же тогда официальная копия стандарта стоит порядка $200? :-) Что это за суета такая? :-) На кого это рассчитано? :-) За кого принимают программистов? :-)

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

Так и С++ в любом IDE с документацией, автодополнением методов и всплывающими описаниями.

Итак, я соизволил скачать Qt Creator :-) Запустил инсталлятор, отказался создавать аккаунт Qt (зачем он мне дался?), наткнулся на диалог, который называется «Kit Selection» :-) Кнопка «Next» заблокирована, т.е. инсталлятору что-то не нравится, а что именно - я не знаю :-) Я так думаю, что ему хочется видеть у меня Debugger, которого у меня нет :-) Т.е. без дебаггера эта IDE не ставится? :-) Лол :-) Если бы не принципиальное желание потестить что там в этой IDE, на этом же самом шаге это поделие было бы отправлено в помойку за: а) невнятное предложение регистрации аккаунта; б) невнятную проблему продолжения инсталяции, которую я _соизволил_, и _снизошёл_ произвести, затратив время на скачивание и нажимание кнопок «Next» :-) Но, так и быть, поставлю какой-нибудь gdb, что-ли и попробую again :-)

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

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

Мне на всё хватает http://docs.racket-lang.org/syntax/stxparse.html . По крайней мере «постоянного навешивания-снимания синтакс-обвертки» больше нет.

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

Запустил инсталлятор

Так секундочку. Ты на урл под которым коммент пишешь смотрел? Как в нашей оси ставятса программы? Подсказка: как-то вроде sudo apt-get install qtbase5-dev или ./configure -prefix ~/libs ; make ; make install. Если же ставишь под офтопиком, то аккаунт создавать придется, такая вот бяка. Хотя можно скачать зипину с бинарями, там вроде даже настраивать особо не придется.

Но, так и быть, поставлю какой-нибудь gdb

gdb он ставит сам вместе со всем mingw, если конечно не выбрать m$ visual studio сборку.

Ваще qt печалька, креатор в принципе худшее IDE, которое я только имел необходимость терпеть. И вообще какое может быть IDE у языка с текстовым препроцессором.

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

Как в нашей оси ставятса программы?

По-разному :-) Я скачал вот это - http://download.qt.io/official_releases/qtcreator/3.5/3.5.1/qt-creator-opensource-linux-x86_64-3.5.1.run отсюда - http://www.qt.io/ru/download-open-source/ :-) Т.е. только IDE без Qt :-)

Если же ставишь под офтопиком, то аккаунт создавать придется, такая вот бяка.

Не, на данный момент создание аккаунта можно пропустить :-) Возможно, в будущем будут требовать :-)

gdb он ставит сам вместе со всем mingw, если конечно не выбрать m$ visual studio сборку.

То, что я скачал и установил, gdb не поставил :-)

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

x86_64-3.5.1.run

Ну зачем же так. В любом дистре есть запакеченный вариант, который и вопросов не задаёт, и ставится в удобные пути и обновляется сам. Ну разве что если у тебя дебиан и хочется свежака. Впрочем лично я не вижу разницы между 5.3 и всем, что сейчас есть выше. Ну в 5.2 в принципе кое чего не хватает, но тоже норм. Собственно даже ветка 4 вполне норм.

gdb не поставил

Хм, в линухе походу компилятор должна поставлять система, собственно и gdb тоже. Я просто не понимаю, как можно налажать при установке такого попсового софта как qt в такой удобной для кодера оське. Системные требования прочесть забыл что ли.

Про IDE я конечно не проверял, мне в kate вполне норм на C++ пишется, но думаю https://www.jetbrains.com/clion/ - это то на что следовало обратить внимание в первую очередь. По-моему эта контора - хорошие ребята.

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

Ну разве что если у тебя дебиан и хочется свежака.

Именно так :-)

Хм, в линухе походу компилятор должна поставлять система, собственно и gdb тоже. Я просто не понимаю, как можно налажать при установке такого попсового софта как qt в такой удобной для кодера оське. Системные требования прочесть забыл что ли.

Да хрен его знает, как так :-) Я то уже лет как 6 на все IDE положил с прибором, так как и одной жалкой потуге так и не удалось превзойти Emacs :-) Ну, разве что, Hemlock, на базе которого та же LispWork IDE немного напоминает Emacs :-) Во всяком случае, с ней чувствуешь себя как дома - те же хотки, что и в Emacs :-)

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

Про IDE я конечно не проверял, мне в kate вполне норм на C++ пишется, но думаю https://www.jetbrains.com/clion/ - это то на что следовало обратить внимание в первую очередь. По-моему эта контора - хорошие ребята.

Мне и в Emacs прекрасно пишется на цепепе :-) monk говорил о том, что, дескать, любая IDE для цепепе и документацию выводит для функций/методов/классов цепепе, и автодополняет :-) Вот я и захотел ткнуть пальцем в Qt Creator :-)

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

https://www.jetbrains.com/clion/ - это то на что следовало обратить внимание в первую очередь.

Ой, да следил я за этой Clion ещё с тех пор, как они анонсировали начало разработки :-) Ну посуди сам :-) Мне приходится писать на разных языках :-) Т.е. мне приходится знать эти языки (в т.ч. пресловутый цепепе), знать предметную область :-) Чтобы работать эффективно мне нужен удобный инструментарий :-) Этот инструментарий должен быть как можно более простым, чтобы я мог быть продуктивным :-) Так вот если я под каждый язык буду ставить разные IDE, я буду вынужден ещё и знать как эффективно работать с каждой из них :-) Плюс при переходе от одной IDE к другой будет ощутим эффект переключения контекстов, что ещё больше усугубит мою продуктивность :-) Вывод - лучше в совершенстве владеть Emacs :-)

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

Так вот если я под каждый язык буду ставить разные IDE

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

лучше в совершенстве владеть Emacs

Вот только душе как то неспокойно с ним возиться. Мало того что захламлять мозг бессистемным списком команд, так еще ограничить себя юниксовым методом взаимодействия плагинов с внешним миром (нет ffi). Да еще очень старый исходный код как на си, так и на елиспе, не говоря уж о том, что сам елисп медленно ползет в сторону норм лиспа, отягощенный тоннами наследия прошлых эпох. Пробовал всякие xemacs, но там дремучая деревня. Короче emacs это замечательная идея, но только в том случае если её реализатор ну например я. Но мне лень. Вот и сижу в kate + terminal, чтоб не отягощать себя ничем.

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

Вот только душе как то неспокойно с ним возиться.

Это аргумент и существенный :-)

так еще ограничить себя юниксовым методом взаимодействия плагинов с внешним миром (нет ffi)

Старый добрый Unix-way - это самый универсальный и самый практичный способ взаимодействия программ :-) А старый добрый CGI - самый простой и надёжный способ обслуживания HTTP-запросов (и даже нет особой надобности освобождать память, т.к. процесс живёт до окончания запроса) :-) Ну или старый добрый FastCGI, чем не Unix-way? :-)

Да еще очень старый исходный код как на си, так и на елиспе

Старый код - это хорошо - он, скорее всего, отлажен хотя бы более или менее :-) А вообще говоря, старый код везде и всюду, начиная от ОС, заканчивая СУБД и браузерами :-) В Emacs коммитят по несколько раз на день, так что не понимаю что тебе не так :-)

Короче emacs это замечательная идея, но только в том случае если её реализатор ну например я.

Да :-)

Но мне лень.

Существенный аргумент :-) Но есть мнение, что профи должен уметь создавать себе инструментарий сам :-) Хотя у меня есть ощущение, что основная масса пользуется какими-то примитивными инструментишками, не очень то и эффективными :-)

не отягощать себя ничем.

Т.е. ты пытаешься следовать, как его называют, принципу KISS :-)

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

А для CL тоже в kate + terminal?

Хм когда же я в CL писал, это был вроде емакс (увы тут выбора нет, плагин к еклипсу скорее мертв чем жив). Ну в сабже есть известный доктор ракет, хотя тупит он неподетски и функционал слабоват, но исходя из принципа наименьшего напряжения, раз он и есть официальный ИДЕ языка, то значит и наиболее удобен для оного, при условии отсутствия взлетевших альтернатив конечно.

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

а я чтобы поставить qtcreator набираю в консли sudo apt-get install qtcreator не, опыт qt-разработки под виндой есть. Тоже никакого волшебства не надо, не rocket science. Но винда, такая стерлядь, любит, когда с ней трахаются — простите за мой французский.

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

Ну или как ваше

Запустил инсталлятор

следует понимать с описанием последующих проблем никак не характерных для онтопик-системы…

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

Мы же про то, насколько удобно пользоваться тем что есть, а не про то, что можно настроить. Так и С++ в любом IDE с документацией, автодополнением методов и всплывающими описаниями.

Поставил пробник Clion :-) Написал: «std::vector<int>» :-) Поставил перед собой задачу перейти к документации по std::vector :-) Кроме как открыть заголовок stl_vector.h ничего не смог :-) Т.е. в SLIME я могу набрать: «make-array» и одним нажатием открыть CLHS :-) А как открыть место в стандарте C++ с описанием std::vector из Clion, а? :-) Я не хочу открывать унылый хедер, я хочу описание из стандарта :-)

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

в любом IDE с документацией

Я не хочу открывать унылый хедер, я хочу описание из стандарта

Переход к документации обычно Ctrl+F1.

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

Ну в сабже есть известный доктор ракет, хотя тупит он неподетски и функционал слабоват, но исходя из принципа наименьшего напряжения, раз он и есть официальный ИДЕ языка, то значит и наиболее удобен для оного, при условии отсутствия взлетевших альтернатив конечно.

emacs + geiser, например

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

Насколько я знаю, в кутесредах типо креатора и кдевелопа интегрированы доки только по qt. И вообще можно считать qt целым отдельным языком программирования с циклом foreach и динамическими пропертями в объектах.

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