Нет аргументов выбора clack перед weblocks или crane и Integral перед hu.dwim.perec.
Почему для интерфейса с GTK выбран cl-cffi-gtk с ручной (и устаревшей на год) привязкой, а не cl-gobject-introspection, в котором для привязки требуется только актуальная версия пакета GObjectIntrospection (из GTK)?
Исходя из того, что я вижу в README у Integral там просто передрали http://clsql.b9.com/manual/update-instance-from-records.html (даже меньше: в clsql всё-таки был :join-class). Какой-то NIH синдром: выкинуть всё и сделать свой маленький чистый велосипед.
Напоминает такой же хипстерский и пустой по содержанию http://learnlispthehardway.org/. Видно, что мозгов хватает только на то, чтобы красиво перечислить 100500 пунктов. Особо радует обилие соплей на reddit.
Чего тебе не хватает в Ладе Калине. Даже напрягаться сформулировать не буду.
Всё, что есть в Common Lisp, есть и в Racket. Может не всегда в явном виде (если бы, например, defmacro не было готового в библиотеке, то пришлось бы эту сотню строк написать самому).
Компилятор типа sbcl? Лёгкий быстрый интерпретатор типа clisp?
В данном случае «всё в одном». В смысле, компилятор в Racket — JIT Lighting. Соответственно, скорость выполнения кода примерно соответствует SBCL с разумными параметрами (без safety = 0).
Скорость интерпретации не знаю на чём проверить (чтобы аналог можно было с clisp сравнить).
Если для скриптов, то
$ time racket -n -l racket/base -V -q -e '(displayln "hello")'
Welcome to Racket v6.2.
hello
real 0m0.078s
user 0m0.068s
sys 0m0.004s
$ time clisp -q -x '(format t "hello~%")'
hello
NIL
real 0m0.023s
user 0m0.016s
sys 0m0.004s
$ time sbcl --noinform --quit --eval '(format t "hello~%")'
hello
real 0m1.316s
user 0m1.216s
sys 0m0.052s
Быстрый - я и имел в виду быстрый старт. Лёгкий - сколько памяти оно скушала, выводя этот хелловорлд. Могут ли несколько хелловорлд процессов снижать потребление памяти объединением её?
--merge-core-pages
When platform support is present, provide hints to the oper‐
ating system that identical pages may be shared between pro‐
cesses until they are written to. This can be useful to
reduce the memory usage on systems with multiple SBCL pro‐
cesses started from similar but differently-named core files,
or from compressed cores. Without platform support, do noth‐
ing.
with multiple SBCL processes started from similar but differently-named core files
В Racket так не принято. Есть один /usr/bin/racket. Он, очевидно, шарится. Можно также сделать бинарник для клиента, у которого нет Racket. Тогда всё в бинарнике.
Ощущения практичности, вызванное излишком слишком «умных» концепций и вееянием какой-то теоретичностью. И какой-то он вычурный, Racket этот. Наверное, специально для юнцов :-)
И в тех же SBCL/CCL, не говоря уже о LispWorks, это реализовано отлично.
Ну не знаю. В SBCL при попытке использовать многопоточный hunchentoot + postgresql я узнал, что такое LDB. Пришлось переписать сайт на Racket.
Кроме того, в Racket его thread нормально собираются сборщиком мусора (A thread that has not terminated can be garbage collected if it is unreachable and suspended or if it is unreachable and blocked on only unreachable events).