LINUX.ORG.RU

Вышел GNU Guile 2.0.7

 , , ,


1

3

Вышла новая версия реализации языка Scheme — GNU Guile 2.0.7. Несмотря на незначительное изменение номера версии, появились несколько интересных нововведений, а именно:

  • Полная поддержка инфиксных выражений (curly-infix-expressions). Теперь вместо (* a (+ b c)) можно писать {a * {b + c}}.
  • Поддержка разных опции чтения (read option) для разных портов.
  • Поддержка вложенных директив future.
  • Специальный синтаксис для добавления путей в переменные окружения GUILE_LOAD_PATH и GUILE_LOAD_COMPILED_PATH в конец списка путей, а не в начало.
  • Исправлен недочет в функции load-in-vicinity, которая не сканировала директории, установленные в переменной %load-compiled-path.
  • Исправлен порядок поиска расширений. Теперь Guile не изменяет для этого переменную окружения LD_LIBRARY_PATH.
  • Функция make-vtable-vtable помечена устаревшей, рекомендуется использовать make-vtable и <standard-vtable>.
  • Оптимизированы вызовы equal? и eqv? для случаев, когда один из аргументов — константа.
  • Новые предупреждения компилятора -Wduplicate-case-datum и -Wbad-case-datum.
  • Многочисленные незначительные улучшения и исправления ошибок.

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

★★★★★

Проверено: tazhate ()

guile --version

Guile 1.8.8

Ох я слоупок.

P.S. Может выучить на замену питону? Что посоветуете?

chinarulezzz ★★ ()

вместо (* a (+ b c)) можно писать {a * {b + c}}

Лучше бы они с таким усердием пилили нормальный порт под mingw.

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

на замену питону?

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

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

про SICP знаю. Думаю вообще, есть ли смысл учить на замену питону?

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

Питон для всякой шняги что придёт в голову. Скрипты системные, прикладные, боты всякие...

Скорость у guile офигенно низкая... Прям, ну незнаю.

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

Питон силен батарейками и кучей библиотек на все случаи жизни. В схеме столько и близко нету.

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

Скорость у guile офигенно низкая... Прям, ну незнаю.

Питон в этом плане тоже далеко не чемпион.

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

Да, к тому же писать для него модули на других языках - одно удовольствие. А сам язык очень примитивный, что тоже приятно. С другой стороны манит лисп... Но я не знаю, стоит ли!? Вот и спрашиваю линуксоидов :) А то времени много.

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

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

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

Но я не знаю, стоит ли!?

А я откуда тогда знаю? Изучение ЯП - это инвестиция времени. А любая инвестиция - это всегда риск. Решай сам.

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

Основная проблема схемы примерно та же, что и у линукса — куча несовместимых между собой дистров. И если дистры линукса еще хоть как-то похожи и сравнимы по скорости и юзабельности, то у схемы вообще полная каша, поэтому говорить о таком языке как «Scheme» в контексте какой-то действительно полезной программистской деятельности бесполезно, нужно говорить о конкретных реализациях.

Касательно скорости: некоторые компиляторы Scheme в порядке увеличения скорости — Gambit-C, Chicken, Bigloo. На JVM та же Kawa показывает неплохие результаты, сравнимые с самой жабой и скалой, да и имеет еще простой ffi-интерфейс к jvm-классам (поэтому, кстати, это одна из моих любимых реализаций).

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

Скорость у guile офигенно низкая... Прям, ну незнаю.

ORLY?

(michael@jollheef)~ $ time guile -c '(display "Hello\n")'
Hello

real	0m0.015s
user	0m0.012s
sys	0m0.003s
(michael@jollheef)~ $ time python -c 'print "Hello"'
Hello

real	0m0.039s
user	0m0.030s
sys	0m0.008s

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

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

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

там же вроде бы используется mit scheme в примерах, не?

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

Ну для основ это не так важно, а детали уже по справочникам смотреть.

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

Охх, вот это серьёзней. Т.е. освоив gambit-c использовать guile будет сложней? Еще как я понял синтаксис дополняют некоторые реализации. Т.е. это примерно как 2 и 3 питон... Это уже не очень хорошо.

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

бгг. Ну друк, ну не серьёзно это. Ладно бы фибоначчи хотябы там.. ;)

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

С другой стороны манит лисп...

Поздравляю тебя. Ты наслушался баек местных лисп-адептов о том, какой это мощный, элитарный и вообще охуенский язык.

Спешу тебя разочаровать. Лисп-адвокатами на ЛОРе являются две категории людей:

  • укушенные Луговскером ебанаты, задрачивающие анафорические лямбды и ничего практичного в своей жизни не написавшие;
  • тролли.

(Некоторые умудряются довольно удачно сочетать в себе оба качества, но эта категория почти вырожденная.) Так вот, лисп сегодня — безнадежный и устаревший язык, несущий, впрочем, небезынтересные идеи. Некоторые из этих идей позволяют очень лихо дрочить вприсядку решать вприсядку олимпиадные задачки на лиспе. Ну или вот писать скрипты для GIMP, ведь Guile — это и есть скриптовой движок внутри GIMP'а. Правда, он там скорее по историческим причинам. Разработчики GIMP — люди трезвомыслящие, и поэтому уже давно ввели Python как основной скриптовой язык.

Итак, благодаря неудачной истории развития, фатальным техническим изъянам, отсутствию библиотек и инфраструктуры, ебнутому на голову сообществу сектантов — лисп на данный момент лишен практической ценности, и занимает свое заслуженное место в Музее Информационных Технологий (MIT, ололо). Изучать или не изучать музейный экспонат — решай сам.

В конце концов, историки и археологи тоже нужны.

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

фатальным техническим изъянам

например? Не троллизма ради, а ученья для.

Изучать или не изучать музейный экспонат — решай сам.

Музейность - не мешает. Особенно как любителю объектного паскаля и модулы (использую for fun); А вот то что несовместимые реализации, каждый с своим reference doc'ом, а бывает что и без него, и к тому же реализации достаточно немощные (в сравнении с fpc например), то стимулов учить все таки не так много.

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

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

Это гораздо хуже, чем второй и третий питон, увы.

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

Guile — это и есть скриптовой движок внутри GIMP'а

Нет и никогда им не был.

какой это мощный, элитарный и вообще охуенский язык

Так, в основном, говорят о CL.

buddhist ★★★★★ ()

Вот и я думаю, что лучше изучать новичку: Common List или Phyton...

Etch ()

А как у сабжа с поддержкой оффтопика?

Macil ★★★★★ ()

вместо (* a (+ b c)) можно писать {a * {b + c}}

ну нет. Часть налёта элитарности слетает.

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

А как у сабжа с поддержкой оффтопика?

Я как-то пытался его под оффтопик собрать. Не получилось

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

а как запустить мелким рантайм?

Вот у меня задачка есть, которую хочу сделать на лиспе, просмотрел SBCL, Guile, Racket. Задачка мелкая, вебовая и основной смысл мелкий рантайм, рес память приоритетнее скорости. Так вот пока крутил вертел Минимальный скрипт для запуска веб-сервера гуиля где то в пределах 15 мегов, но с ракет что то не ясное совсем, как ни крутил отжирает свои 80 с хером метров и все тут. Как не казалась схема мне проще и изящнее, а по тестам пока выходит SBCL + компилятор нормальный есть. Вопрос: как вообще можно запустить минивеб-приложение на ракет ну хотя бы в 15 метрах, просто хотя бы хелловорлд?

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

и кстати по ссылке тупо повторить пример не вышло

Сабж.

anonymous ()

Полная поддержка инфиксных выражений (curly-infix-expressions). Теперь вместо (* a (+ b c)) можно писать {a * {b + c}}.

Теперь убрать лишние круглые скобки - и получится нормальный язык.

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

Я на днях глянул на racket. Интересная штука, особенно «typed racket». Но несколько напрягло следующее:

1. Вызов пустой сишной функции через его FFI стоит 150 наносекунд. Если это делает C - будет 3 наносекунды. SBCL генерит адский код для аналогичного вызова, но тратит 30 наносекунд. В общем, погано.

2. Глянул на декомпильнутые функции в racket и typed racket. Конкретно, смотрел на

(define (foo x)
	(+ 1 x))

и

(define (foo [x : Number]) : Number
	(+ 1 x))

Ожидал, что в typed racket дамп покажет хоть что-то относящееся к типам, что поможет JIT сгенерировать код без ненужных проверок. А дудки. Но код выглядит практически идентично, за исключением того, что в случае Typed Racket есть еще куча чего-то малочитаемого, находящегося как бы в довесок к функцкии foo и на неё явным образом не ссылающегося.

3. Очень странно компилируется код с циклами. Вот пример:

#lang racket/base

(define (do_benchmark)
    (for ([i (in-range 7)])
        (print «hi»)))

(do_benchmark)

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

Даже не смотрел уже после этого, как он оптимизирует операцию целочисленного деления и прочие тривиальности.

А жаль. Racket выглядит действительно интересно. Сам хотел что-то такое писать, но руки не дошли. А с другой стороны, качество сгенерированного кода, мягко говоря, удручает. И есть подозрение, что для того, чтобы его улучшить, надо будет перелопатить половину racket.

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

Спешу тебя разочаровать. Лисп-адвокатами на ЛОРе являются две категории людей:

Три. Про альтовцев забыл.

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

несущий, впрочем, небезынтересные идеи.

Клевета. Все небезынтересное (конкретно - сборку мусора) из говнолиспа давно уже позаимствовали. Осталось одно говно.

Ну или вот писать скрипты для GIMP, ведь Guile — это и есть скриптовой движок внутри GIMP'а.

Клевета. Лучше всего скрипты для GIMP пишутся на Питоне. SIOD давно устарел и держат его там только из жалости (но лучше б добили).

лисп на данный момент лишен практической ценности

Ты так говоришь, как будто бы были моменты, когда эта практическая ценность у него была. Это не так.

psikh ()
Ответ на: а как запустить мелким рантайм? от anonymous

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

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

например? Не троллизма ради, а ученья для.

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

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

Про альтовцев забыл.

А они разве не рубанутые?

psikh ()

Теперь вместо (* a (+ b c)) можно писать {a * {b + c}}

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

anonymous ()

Теперь вместо (* a (+ b c)) можно писать {a * {b + c}}.

А так (a*(b+c)) писать никто не догадался?

Napilnik ★★★★★ ()

Теперь вместо (* a (+ b c)) можно писать {a * {b + c}}.

не нужно!

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

Лучше бы они с таким усердием пилили нормальный порт под mingw.

Лучше использовать более нативный компилятор.

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

Только ты. Ставай в очередь за нобелевской премией.

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

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

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

mingw.

/0

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

Этот самый mingw будет установлен у 99% целевой аудитории.

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

В лиспе первое слово после скобочки - всегда функция, если что.

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

У тебя все задачи сплошной риалтайм, что тебя это так волнует?

Напомнило крик души в теме о портировании hg на python 3.

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