LINUX.ORG.RU

Racket завершает переход с LGPL на двойное лицензирование MIT/Apache

 , ,


1

2

Racket — язык, вдохновленный Scheme, а также экосистема для программирования других языков — начал переход на двойное лицензирование Apache 2.0 или MIT в 2017 году и теперь, к версии 7.5, практически все его компоненты завершают этот процесс.

Авторы отмечают две основные причины этого:

  1. Непонятно, как трактовать положения LGPL о динамической линковке к Racket, где макросы «копируют» код из библиотек в код приложения, а приложения зачастую комплектуются рантаймом и библиотеками Racket.
  2. Некоторые организации принципиально не хотят использовать программное обеспечение, лицензированное под любой вариацией GPL.

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

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



Проверено: a1batross ()
Последнее исправление: filosofia (всего исправлений: 2)

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

а на с++ с помощью макросов можно писать как на лиспе, но это же не повод так делать. а вот «DSL для программирования вебсерверов»:

(require web-server/servlet
         web-server/servlet-env)
 
(define (start req)
  (response/xexpr
   `(html (head (title "Hello world!"))
          (body (p "Hey out there!")))))
 
(serve/servlet start)
anonymous
()
Ответ на: комментарий от anonymous

а на с++ с помощью макросов можно писать как на лиспе, но это же не повод так делать

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

а вот «DSL для программирования вебсерверов»

Ну да, так себе. Но «честный» DSL тоже можно запилить.

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

«DSL для генерирования слайдов»:

(slide
 #:title "How to Say Hello"
 (t "Hello World!")
 (t "Goodbye Dlrow!"))

тоже не очень?

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

И как на нём писать gpl-код?

Как лицензия компилятора связана с компилируемым кодом?

А взаимодействовать с существующим gpl-кодом?

Точно так же.

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

Тоже. Есть более интересные примеры: https://docs.racket-lang.org/datalog/ https://docs.racket-lang.org/brag/

Да и не должен быть DSL чем-то мозговыносящим (как и макросы лиспа). От этих двух вещей у людей завышенные ожидания, ящитаю.

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

ты уже 100 раз присел со скобками

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

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

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

У лисперов профдеформация уже на финальной стадии, потому когда появились парсеры обрабатывающие не скобочный код в структуры Лиспа, то им оно особо и не надо было. Зачем код без скобок если ты уже 100 раз присел со скобками чтобы заставить его работать.

Ты не шаришь. Многие программисты любят ударяться в крайности и задрачивать их до посинения. Есть те, кто экономит каждый байт и пишет на C. А есть те, кто прётся от полного отсутствия синтаксиса у языка и написания кода в виде чистого AST. Ну и что что за последние 60 лет появились какие-то парсеры, комбинаторы и вот это всё? Деды на AST писали и мы будем!

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

Насколько я знаю, это де-факто правило во всех американских компаниях, они строго следят за лицензированием.

В EMC какой-то йуный лойер как-то выкатил запрет на использование Linux kernel и gcc для VNXe (VNX2, портированный на Линукс), ибо GPL. Старшие лойеры ему потом объяснили, конечно, ибо сей продукт к ревеню компании 10 млрд добавлял, но факт был, да.

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

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

Чем сложно AST какого-нибудь языка наподобие Питона?
Скорее скобочке только потому, что написать парсер просто. Очень просто.

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

А теперь сравни вот с этим:

let mut doc: DOMTree<String> = html!(
    <html>
        <head>
            <title>"Hello Kitty"</title>
            <meta name=Metadata::Author content="Not Sanrio Co., Ltd"/>
        </head>
        <body>
            <h1>"Hello Kitty"</h1>
            <p class="official">
                "She is not a cat. She is a human girl."
            </p>
            { (0..3).map(|_| html!(
                <p class="emphasis">
                    "Her name is Kitty White."
                </p>
            )) }
            <p class="citation-needed">
                "We still don't know how she eats."
            </p>
        </body>
    </html>
);
WatchCat ★★★★★
()
Ответ на: комментарий от filosofia

не очень.

Ну да, вон выше на лишпоподобном очень, да?
Но там тоже строковые значения в кавычках, внезапно.
Хочешь полноценного html? Вперёд в php. Со всем его граблями.

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

Я, кстати, так и не видел пруфоф, что гомоиконность добавляет каких-то плюшек. Те же Haskell или Rust без неё прекрасно обходятся, и её отсутствие никак кодогенерации не мешает.

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

А ты стало быть за разработку браузера платишь?

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

Я при прочих равных выберу лисполапшу, т.к. там понятен синтаксис. В твоём примере нечто мимикрирует под хтмл, но с оговорками. Сколько там ещё скрытых оговорок?

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

Читаемость такая же, как и в условном питоне. Отступы никто не отменял, и существуют устоявшиеся правила форматирования s-выражений. Скобочки для парсера, а не для человека.

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

Я при прочих равных выберу лисполапшу, т.к. там понятен синтаксис.

О да, скобочки «наше фсё»

В твоём примере нечто мимикрирует под хтмл, но с оговорками. Сколько там ещё скрытых оговорок?

Про «скрытые» это ты сам придумал, лишь бы докопаться.
Хотя все особенности описаны в документации.

Но с фанатиками спорить бесполезно, для них лучше скобочки, т.к. «там понятен синтаксис».

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

А чой-то вы сразу обзываетесь, а? Любое мнение, отличное о вашего — фанатизм? Попахивает фанатизмом,.. стоп.

Про «скрытые» это ты сам придумал, лишь бы докопаться.

Я ничего не придумывал. Я вижу хтмл, потом приглядываюсь — нифига! И потому спросил, сколько ещё там едва различимых от хтмл отличия.

Jsx выглядит поадекватнее.

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

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

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

А чой-то вы сразу обзываетесь, а? Любое мнение, отличное о вашего — фанатизм? Попахивает фанатизмом,.. стоп.

Отмазку «сам дурак» стоило бы оставить в детском саду. И дело не во мнении отличным от моего, а в желании моего визави докопаться на пустом месте, лишь бы оправдать своё мнение. Причём докапывание выглядит примерно так: «У вас коньяк всего лишь пятилетней выдержки, а не десяти, поэтому мы будем пить настойку бояршника, т.к. она привычней.»

Я ничего не придумывал.

«Скрытые» не выдумка?

И потому спросил, сколько ещё там едва различимых от хтмл отличия.

Ты не спросил, а набросил.

Ну и пример не на лишпо дсл, а на плюсах, который ничем не хуже набора скобочек с «понятным синтаксисом»:

      h("span",
        Data(
          Attrs {
            {"style", "font-weight: normal; font-style: italic"}
          }
        ),
        std::string("This is now italic type")
      ),
      h(" and this is just normal text", true),
      h("a",
        Data(
          Attrs {
            {"href", "/bar"}
          }
        ),
        std::string("I'll take you places!")
      )
WatchCat ★★★★★
()
Ответ на: комментарий от Reset

А - автовыравнивание. Питон просто удобен, вот с самого начала. В этом проблема скриптухи, таким языкам просто необходимо быть удобными с самого первого момента использования, с текущим-то разнообразием. Ракету же студенты чуть ли ненавидят: https://acbart.github.io/ihateracket.com/

anonymous
()
Ответ на: DSL от PamidoR

А какая разница? Это скорее не создание ДСЛ как таковое, а просто оригинальный способ задать (красивый) синтаксис. Главное ведь не язык, а домен. Лаконичные дслы можно клепать и без макросов, особенно если этому благоволит дизайн языка - тот же Хускель, например.

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

Можно, конечно. Просто авторы ракеты делают акцент на этом, ну и какие-никакие инструменты для этого есть.

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

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

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

Дружок, ты сперва просто так обзываешься фанатиком, теперь вот «сам дурак» — это спецолимпиада что ли? Или лиспофобия — не симптом, а диагноз?

По сабжу, ты знаешь что такое принцип наименьшего удивления? Если я вижу что-то похожее на хтмл, я не иду читать доки, а работаю с этим, как с хтмл, как минимум до тех пор, пока не дохожу до синтаксиса шаблонов. Поэтому jsx лучше этого поделия (там хтмл как хтмл), лисповая хрень лучше (у тебя нет заранее ожиданий от НЁХ), равно как и плюсовая.

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

Инструменты в ракете неудобные, а акцент не актуален. С тем что предоставляют сейчас другие языки - усилия просто не оправданы. Конечно так себе пример: думал, если уж брать язык для скриптинга к supercollider-у, или pd, то это должно быть что-нибудь лиспоподобное. Сейчас же если бы занимался этим точно выбрал бы питон.

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

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

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

Это же был раст, да? Тогда сорян, был не прав. Прими мои извинения и соболезнования. Я правда не хотел ранить вашу душу.

filosofia
() автор топика
Ответ на: комментарий от WatchCat

Два варианта на Common Lisp:

HTML в виде скобок:

`(:html
   (:head
     (:title "Hello Kitty")
     (:meta :name ,(author *metadata*)
            :content "Not Sanrio Co., Ltd"))
   (:body
     (:h1 "Hello Kitty")
     (:p :class "official"
         "She is not a cat. She is a human girl."))
   ,(iter
      (repeat 3)
      (collect `(:p :class "emphasis"
                    "Her name is Kitty White.")))
   (:p :class "citation-needed"
       "We still don't know how she eats."))

и типа как в JSP, только круче:

#<%"
  <html>
    <head>
      <title>Hello Kitty</title>
      <meta name="<% (author *metadata*) %>" content="Not Sanrio Co., Ltd"/>
    </head>
    <body>
      <h1>Hello Kitty</h1>
      <p class="official">She is not a cat. She is a human girl.</p>
      <% (iter
           (repeat 3)
                    ; an ordinary string would work here too
           (collect #<%"<p class="emphasis">Her name is Kitty White.</p>"%>)) %>
      <p class="citation-needed">We still don't know how she eats.</p>
    </body>
  </html>
"%>

Реализация первого (конвертация списков такого формата в html) занимает 100 строк. Второй — 120 строк основного кода + 100 строк на вспомогательный класс, которым оборачивается входной поток, чтобы в него можно было обратно символы пихать (неограниченный unread-char). В обоих случаях в HTML можно вставлять какой угодно код с произвольной степенью рекурсии. Код пока можно посмотреть тут: http://jini-zh.org/tmp/lor/html.lisp

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

Не мимо define-syntax, а скорее syntax-rules - стандартное средство схемы для написания макросов, которое невежественно считают «ограниченным и вообще убогим», syntax-rules - рекурсивный матчер, и конкретно для схемы - он чертовски идиоматичен. Макросистемы CL и схемы такие же разные, как и сами языки, в схеме намеренное использование макросов, для решения задачи такой же антипаттерн как и итерация через set!, это функциональный язык, со всеми вытекающими. CL - противоположность, которая предлагает решать проблемы императивно и макросами сразу же.

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

Какую мне удачную американскую компанию насоветовали, оказывается.

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

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

функциональщина функциональна, но не практична, скриптота проста в освоении, но ничему не учит студентов если это не целенаправленное обучение каким-то общим паттернам которые подходят для всех языков.

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

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

Ну и пример не на лишпо дсл, а на плюсах, который ничем не хуже набора скобочек с «понятным синтаксисом»:

На С++98, а на С++14 это выглядит, например, так:

  constexpr auto page =
    R"(
    <span>
        <p color="red" height='10'>{{name}} is a {{profession}} in {{city}}</p>
    </span>
    )"_html;

https://github.com/rep-movsd/see-phit

Т.е. по сути так же - встроенный шаблон на обычном HTML с парсингом на этапе компиляции.

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

примерно такой же мозг рака как и писать «DSL» на лиспе. отличная возможность лисперам посмотреть на все эти костыли со стороны.

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