LINUX.ORG.RU

GNU Guile 3.0

 , , ,


3

7

16 января состоялся мажорный релиз GNU Guile — встраиваемой реализации языка программирования Scheme с поддержкой многопоточности, асинхронности, работы с сетью и системными вызовами POSIX, бинарного интерфейса Си, разбора PEG, REPL по сети, XML; имеет собственную систему объекто-ориентированного программирования.

Главной особенностью новой версии является полноценная поддержка JIT-компиляции, что позволило ускорить работу программ в среднем в два раза, максимум — в тридцать два для бенчмарка mbrot. По сравнению с виртуальной машиной Guile предыдущей стабильной версии, набор инструкций стал более низкоуровневым.

Также улучшена совместимость со стандартами языка программирования Scheme R5RS и R7RS, появилась поддержка структурированных исключений и чередующихся между собой объявлений и выражений внутри лексического контекста. Написанный на Scheme eval по производительности сравнялся с аналогом на языке Си; Для разных реализаций типа Record предоставлен унифицированный набор инструментов для работы с ними; Классы в GOOPS перестали быть переопределяемыми; Подробности и прочие изменения можно прочитать в анонсе релиза.

Новой стабильной веткой языка отныне является 3.x. Она устанавливается параллельно предыдущей стабильной ветке 2.x.

>>> Анонс релиза



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

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

А Qt - это кросплатформенно.

Угу. Какие файлы положить рядом с бинарником, полученным из CL/CommonQt, чтобы результат можно было запустить у клиента?

При попытке установить с сайта (через онлайн-инсталлятор), если поставить галочку рядом с Qt 5.14.0 он предлагает установить 37,46 ГБ. И даже версия для одного конкретного компилятора (например, MinGW 7.3) хочет 1,2 ГБ.

Для сравнения, бинарник Racket с графикой и всеми библиотеками в составе занимает 58МБ.

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

Угу. Какие файлы положить рядом с бинарником, полученным из CL/CommonQt, чтобы результат можно было запустить у клиента?

Смотря, что конкретно из Qt ты используешь, то и ложи.

При попытке установить с сайта (через онлайн-инсталлятор), если поставить галочку рядом с Qt 5.14.0

common-qt это биндинг к Qt 4.8, пятая версия не поддерживается.

он предлагает установить 37,46 ГБ. И даже версия для одного конкретного компилятора (например, MinGW 7.3) хочет 1,2 ГБ.

Я давно работал с Qt еще из С++, никогда подобных проблем не возникало. Если будет время на выходных, могу по приколу вспомнить, как там че происходит и отпишусь. Обычно все сводилось к тому что для клиента подсовываешь рядом с проектом только то, что конкретно используешь. Если там даже будет пару сотен мегабайт (не уверен) - для тебя это критично?

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

Ну, к примеру, в питоне геморно собирать QT со скриптами в .exe и набор либ в директории, а потом в инсталятор.

Вон даже у FBS https://build-system.fman.io/ много ограничений (вроде и на версию питона и на версию PyQt5, а поддержка PySide хромала)

И еще вопросы с лицензиями, ценой на QT и проч

Все это порядком мешает.

И то, что на Windows надо доустановливать дофига всего чтобы собрать работающий вариант - тоже еще то удовольствие.

Или есть удобный способ и я просто в него не умею?

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

Если там даже будет пару сотен мегабайт (не уверен) - для тебя это критично?

Если пара сотен мегабайт, то ОК. Если гигабайт, то уже перебор.

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

В случае C++ проще: там одним компилятором собираешь Qt и проект. А как угадать, чем собирать для SBCL?

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

Ну, к примеру, в питоне геморно собирать QT со скриптами в .exe и набор либ в директории, а потом в инсталятор.

Геморно, но возможно.

И еще вопросы с лицензиями, ценой на QT и проч

Если опенсорс проблем быть не должно. Прайсинги для проприетарного распространения я давно не смотрел, но они были вменяемые.

Все это порядком мешает.

Смотря какие приложения писать. Если для себя или внутреннего использование в компании - вообще проблем никаких с лицензиями. А заказчику часто программа не нужна без ее дальнейшей поддержки и перепродавать ее копии ему просто некому, потому что тулзу использует он сам. Кроме того, gui может быть с открытыми исходниками, а бекенд с закрытыми. Если я не ошибаюсь LGPL (или какая там у них лицензия) позволяет линковаться с проприетарщиной, но не статически.

И то, что на Windows надо доустановливать дофига всего чтобы собрать работающий вариант - тоже еще то удовольствие.

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

Или есть удобный способ и я просто в него не умею?

Да, есть. Я выше ссылку скидывал. И вместе с питоном тоже упаковывал в один .exe-шник, полет нормальный был. Для этого есть тулзы.

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

Если пара сотен мегабайт, то ОК. Если гигабайт, то уже перебор.

Да не будет там никакого гигабайта. Скорее всего понадобятся две dll-ки: QtCore и QtGui. В сумме они то ли до ста метров, то ли чуть больше. Точно не гигабайты.

В случае C++ проще: там одним компилятором собираешь Qt и проект. А как угадать, чем собирать для SBCL?

Я даже с питоном собирал в один exe-файл. Если интересно, я пороюсь в старых проектах, посмотрю как это делал. На счет SBCL не в курсе, я не работал с common-qt, но вот планирую это сделать в ближайшее время.

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

monk, тебе gui нужно для клиентов сторонних предоставлять? В случае чего открыть код можно будет для них или нет? Глянул только что стоимость платной лицензии - на год подписка $5500 на 1 разработчика версия для десктопа и мобильных, но это Qt5. Раньше цена была раз в 8 меньше емнип :)

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

monk, тебе gui нужно для клиентов сторонних предоставлять?

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

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

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

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

Вот еще либа с набором Qt-виджетов - https://github.com/shinmera/qtools-ui.

Когда-то давно хотел на Qt пописать в лиспе, но common-qt меня тогда испугал, выглядел как-то страшновато и я взял PySide.
Сейчас, наверное, qtools бы взял или McCLIM, если венда не нужна или готов туда ставить Х-ы и прочее.

В racket, как я понимаю, биндингов нормальных нет к Qt? А racket/gui это и есть надстройка над Gtk? Или там для макоси что-то другое используется?

On Unix, GTK+ 3 is used if its libraries can be found and the PLT_GTK2 environment is not defined. Otherwise, GTK+ 2 is used.

Кроме стандартного racket/gui что еще используется сообществом?

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

Там последнее изменение в 2016. Оно точно живое? На гитхабе ещё более старое.

Если оно только для 4-й ветки Qt, а последняя Qt 4.8.7 LTS вышла 26.05.2015, то не думаю, что там есть, что особо менять. Автор qtools отвечает на issues.

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

В racket, как я понимаю, биндингов нормальных нет к Qt? А racket/gui это и есть надстройка над Gtk? Или там для макоси что-то другое используется?

К Qt нет, насколько я знаю. Для макоси cocoa, для виндов — WinAPI.

Кроме стандартного racket/gui что еще используется сообществом?

Наверное, ничего. Я делал https://github.com/Kalimehtar/gir , но судя по звёздам осталось невостребованным.

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

по-моему проще и эффективней использовать биндинги к нормальным либам типа Qt/Gtk, разве нет?

Смотря для кого проще. Для пользователей - нет, не проще. Ну а написать нормальный gui для одного человека и правда не особо реально. То есть, это не проще, а деваться некуда.

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

На rust есть https://github.com/hecrj/iced

Пробовал пользоваться? (:

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

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

последняя Qt 4.8.7 LTS вышла 26.05.2015

На http://download.qt.io/official_releases/qt/ её уже нет.

https://download.qt.io/archive/qt/4.8/4.8.7/

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

Баги пофиксили и всех попросили переходить на Qt5 https://www.qt.io/blog/2015/05/26/qt-4-8-7-released. Автор qtool говорил, что списывался с ментейнером common-qt, мол давай переходить на Qt5, но пока никак. Но когда-то ведь это произойдет :) А совместимость по коду с пятой версией разработчики пообещали, что будет очень высокая.

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

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

Скорее всего понадобятся две dll-ки: QtCore и QtGui. В сумме они то ли до ста метров, то ли чуть больше

? Релизные Qt5Core + Qt5Gui + Qt5Widgets + qwindows.dll == 15 Мб.

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

Держи еще, типа отрефакторенный LTK: https://notabug.org/cage/nodgui. Разраб пишет, что на винде не проверял, но это ж Tcl/Tk, чему там не работать.

«Nodgui is just the results of a code refactoring of LTK with some syntax sugar on top. This means that the original documentation can be almost used as a good reference» - https://www.autistici.org/interzona/nodgui.html.

alienclaster ★★ ()