LINUX.ORG.RU

Racket теперь под лицензией Apache 2.0/MIT

 , ,


1

3

Язык программирования Racket долгое время распространялся под LGPLv3. Но теперь, благодаря замене основы на Chez Scheme, появилась возможность распространять его на условиях Apache 2.0/MIT.

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

★★★★★

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

А в чём разница? Ракету разве применяли как embedded?

Dark_SavanT ★★★★★ ()

Но теперь, благодаря замене основы на Chez Scheme, появилась возможность распространять его на условиях Apache 2.0/MIT.

«Появилась возможность» или «нет выбора»?

seiken ★★★★★ ()

благодаря замене основы на Chez Scheme

Я за ракеткой вообще не слежу. Давно ли это случилось и что теперь со скоростью? SBCL можно выкидывать сравнить?

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от seiken

или «нет выбора»?

Какая лицензия может заставить распространять по MIT?

Tanger ★★★★★ ()

Прикольно. А у меня вот последний продукт остался на схеме. Как раз на ракете.

turtle_bazon ★★★★★ ()
Ответ на: комментарий от no-such-file

+1 о скорости. Я пока Chicken Scheme юзаю для экспериментов, SICP, вот это все

Бож какой мрак в этих схемах, SRFI, R6S6 всякие.

Самое интересное что в каждой реализации схемы строго есть что-то одно, что сделано плохо. Просто чтобы ложка дегтя. В каждой реализации - разное

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

«Появилась возможность» или «нет выбора»?

Появилась. Компонент под MIT можно распространять в на условиях LGPL, а наоборот нельзя. Поэтому пока ядро системы не перевели с GNU Lightning на Chez Scheme выбора не было.

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

Давно ли это случилось и что теперь со скоростью?

Первая версия на chez scheme (Racket 7.4) вышла в августе.

SBCL можно сравнить?

Если без (safety 0), то Racket всегда был примерно вровень. С chez по большинству операций стал процентов на 20 быстрее (https://blog.racket-lang.org/img/posts/2019-01-29-racket-on-chez-status/pict.svg). Аналога (safety 0) в официальном Racket (никогда) не будет. Так что для лихачей мотоцикл SBCL ничто не заменит.

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

Самое интересное что в каждой реализации схемы строго есть что-то одно, что сделано плохо. Просто чтобы ложка дегтя. В каждой реализации - разное

Что в Racket и что в Chez Scheme?

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

В Racket время старта, производительность. Все хуже даже Java

Chez Scheme надо глянуть, он был же вроде проприетарщиной. Сейчас уже нет, но руки не дошли.

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

А если всё на unsafe-* фигачить, чем это не safety=0?

unsafe-* — это всего лишь отсутствие проверки типов. С safety 0 в SBCL отключается любой контроль вплоть до количества аргументов, изменения литералов и адреса возврата.

Кроме того, unsafe-* есть не на всё.

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

Почему такая уверенность?

Из переписки с автором. Логика следующая: отключать проверки на рабочем коде нельзя, так как получишь падучую программу. Отключать проверки в ходе разработки ещё бессмысленней. А делать флаг отключения проверок только для пузомерок (и написания глючных программ) — плохо.

Примерно по схожей причине нет такого мощного отладчика как в SBCL (если тебе понадобился отладчик, чтобы понять что происходит, твоя программа неправильно написана).

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

В Racket время старта

Кстати, нашёл флаги для быстрого старта:

serverlinux:~$ cat > hello.rkt
#lang racket/base
(displayln "Hello")
serverlinux:~$ raco make hello.rkt
serverlinux:~$ time racket -n -t compiled/hello_rkt.zo
Hello

real    0m0,044s
user    0m0,044s
sys     0m0,000s
serverlinux:~$ racket -v
Welcome to Racket v6.11.

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

Аналога (safety 0) в официальном Racket (никогда) не будет. Так что для лихачей мотоцикл SBCL ничто не заменит

Ясно, спасибо за информацию.

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

если тебе понадобился отладчик, чтобы понять что происходит, твоя программа неправильно написана

Странно. А почему это не складывается в «если твоя программа падучая, то она неправильно написана»?

no-such-file ★★★★★ ()
Ответ на: комментарий от vertexua

Я смотрел, но я настолько нуб в Racket, что совсем не понимаю что делает

Загружает стандартную библиотеку. Хотя разница, действительно, есть только на Racket 6. На более поздних racket/base грузится всегда. А для Racket on Chez даже запуск «racket -n» без всего 155 мс происходит.

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

Странно. А почему это не складывается в «если твоя программа падучая, то она неправильно написана»?

Так контракты (типы) и нужны, чтобы гарантировать, что программа не упадёт. В Racket если функция падает на ошибке реализации (а не на проверке контракта), значит она неправильно написана.

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

Есть Gerbil/Gambit, он быстрее.

Не могу найти бенчи против Java. Такие есть?

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

Студентов напрягает, если им говорят, что всё, что они увидят в процессе обучения, нельзя будет использовать на работе (иначе работодателю придётся открыть исходники своего продукта). Поэтому copyleft для обучения плохо пригоден.

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

Эти любители позакрывать вот так допрыгаются и в процессе обучения могут вообще ничего не увидеть, не говоря о том что можно будет использовать. У обезьян всё как обычно - сегодня намазываем икру на хлеб, а завтра гори всё огнём. Да простит Столлман глупцов!

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

совсем не тот уровень, вообще добавлять скорости(как минимум таким способом) в функциональный язык - не особо имеет смысла

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

Скорость внезапно стала немного хуже. На Hacker News всплывала статья про производительность новой версии, к сожалению сейчас не могу найти.

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

Ждём ебилдов!

А что их ждать ?! Самим делать надо)

anonymous ()

А там всё ещё JIT или AOT тоже есть? Или я вообще неправильно понял причину тормозов при запуске?

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

А там всё ещё JIT или AOT тоже есть?

Насколько я понимаю, теперь там только AOT: https://blog.racket-lang.org/2019/01/racket-on-chez-status.html

Или я вообще неправильно понял причину тормозов при запуске?

Библиотека времени выполнения большая. И библиотека racket/base что-то (много чего-то) делает при запуске.

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

Может racket/base на православную сишечку надо переписать? Чтобы самое ядро было заоптимизировано по самые помидоры и быстро стартовало, а остальной весь опциональный обвес пускай тормозит сколько хочет. В любой случае после кложуры запуск ракетки кажется очень резвым (SBCL ещё реактивнее). Сегодня кодил на кложе и запуска её ждать задолбался. Кофе можно успеть сходить сварить. Я поэтому её и забросил. При всех достоинствах жутко тормозное и жручее поделие.

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

Может racket/base на православную сишечку надо переписать?

Станет медленнее. Схемовский код можно инлайнить, приводить к нужному типу и unbox'ить (как это по-русски?), а сишный только запускать как есть.

Там нужен аналог SBCL'ного save-lisp-and-die или оптимизация бинарника (чтобы выкидывалось всё, что не используется).

Или можно использовать RacketD (https://github.com/jFransham/racketd):

$ time ./racketd-client/target/release/racketd-client hello.rkt
Hello

real    0m0,043s
user    0m0,002s
sys     0m0,000s
monk ★★★★★ ()
Ответ на: комментарий от monk

А вот чуть патченый вариант для компилированных файлов:

$ time ./racketd-client/target/release/racketd-client compiled/hello_rkt.zo
Hello

real    0m0,023s
user    0m0,002s
sys     0m0,000s

Думаю, 23 миллисекунды даже для скриптов нормально

$ time /bin/echo ok
ok

real    0m0,022s
user    0m0,001s
sys     0m0,000s
monk ★★★★★ ()
Ответ на: комментарий от den73

про Аду, Оберон, A2, BlackBox и т.п.

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

Project Oberon как книжка, классический.

прекрасный пример того, как можно сделать модульную систему. там разработан свой язык программирования, операционная система, DSL к VHDL, прошивка на VHDL для FPGA, на ней свой риск-процессор и всё остальное.

прекрасный пример минимализма. минимальная система оберон это

  1. модуль SYSTEM
  2. загрузчик/выгрузчик других модулей
  3. сборщик мусора
  4. компилятор, линкер, текстовый редактор, многопоток и асинхронщина с корутинами

многопоточки и асинхронщины в классическом Project Oberon нет. в BlackBox Component Pascal в классическом нет, на oberoncore.ru кто-то делал форк и диплом на эту тему написал, кажется.

современное состояние — ОС BlueBottle A2 на Active Oberon (с многопоточкой) полностью.

её вроде более-менее активно пилил den73, можешь спросить у него.

кстати, den73, если ты всё-таки скастовался в этот тред. что думаешь про Аду в инкарнации GNAT компилятор? на первый взгляд, это идеальный паскаль, оберонистее чем сам оберон. основные достоинства есть, основных недостатков — нет. см. ссылки по треду выше.

и установить и попробовать просто. под винду тоже: pacman -S mingw-w64-x86_64-gcc-ada в msys2 и получается GNAT GPL Ада в полпинка. ну или можно с adacore.com скачать GNAT GAP с большим количеством батареек и IDE.

яр, например с русскими ключевыми словами вполне можно было бы в подмножество ады с английскими транслировать. кстати, вот ещё: sparforte.com, бывший BUSH (Business Universal shell) — скриптовое подмножество Ады, см. примеры. нормальная такая идея: отладить в скриптухе, потом откомпилировать отлаженное GNAT компилятором с GCC бекендом, получить исполняемый .exe. и при этом нормальная модульность, раздельная компиляция, система пакетов и т.п.

в общем, попробуй Аду и отпишить, что ты об этом думаешь. ИМХО, тебе понравится.

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