1 Punkte von GN⁺ 2024-08-31 | 1 Kommentare | Auf WhatsApp teilen
  • CIEL ist ein zu 100 % auf Common Lisp basierendes erweitertes Lisp und wirbt mit einer „batteries included“-Ausstattung, die grundlegende Werkzeuge mitliefert
  • Skripte werden mit dem Shebang #!/usr/bin/env ciel ausgeführt und können in Lisp-Code direkt JSON lesen und HTTP GET verwenden
  • Das Beispiel ruft mit http:get auf, liest die Antwort mit json:read-json und gibt sie mit print aus
  • Das Ausführungsbeispiel ./myscript.lisp zeigt den Ablauf, CIEL-Skripte wie normale ausführbare Dateien zu behandeln
  • Für den Rest der Webdokumentation ist JavaScript erforderlich; wer sie ohne JavaScript ansehen möchte, soll das GitHub-Repository prüfen

Grundcharakter von CIEL

  • CIEL wird als „erweitertes Lisp“ vorgestellt
  • Auf Common Lisp basierend

    • Es basiert zu 100 % auf Common Lisp
    • Als Merkmal wird eine batteries included-Ausstattung mit enthaltenen grundlegenden Werkzeugen hervorgehoben

Beispiel für die Skriptausführung

  • Der Beispielcode legt den ciel-Runner per Shebang fest
#!/usr/bin/env ciel

(print
  (json:read-json
    (http:get "https://fakestoreapi.com/products?limit=5";)))
  • Er sendet mit http:get eine HTTP-Anfrage, liest anschließend das Antwort-JSON mit json:read-json und gibt es mit print aus
  • Der Ausführungsbefehl lautet wie folgt
$ ./myscript.lisp

Zugriff auf Dokumentation und Repository

  • Der Projektlink wird auf GitHub bereitgestellt
  • Für den Rest der Webdokumentation ist JavaScript erforderlich; wenn JavaScript nicht verwendet werden kann, gibt es den Hinweis, das GitHub-Repository anzusehen

1 Kommentare

 
GN⁺ 2024-08-31
Meinungen auf Hacker News
  • Es ist wirklich wichtig, dass standardmäßig gut dokumentierte Komponenten so gebündelt werden, dass sie sich direkt wie Teil der Kernsprache nutzen lassen, und dazu noch einen schicken Namen bekommen.
    Gefällt mir, und es könnte auch ein neues Standard-Target werden. Jetzt braucht es nur noch ein gutes Maskottchen oder Logo.

    • Dem Namen nach sollte es wohl eine kleine Robbe sein.
    • Ich weiß nicht, wo die Dokumentation ist. Ehrlich gesagt sieht es hier nicht nach viel aus; ich würde es eher README als Dokumentation nennen.
  • Mir gefällt der Ansatz. Ich hatte „noch ein Lisp“ erwartet; das wäre zwar cool gewesen, aber nichts, das ich sofort nutzen wollen würde.
    Etwas Bestehendes zu erweitern und zu verbessern kann schwieriger und weniger spaßig sein als ein Neuanfang, ist aber viel wertvoller. Ich nutze bereits Common Lisp, und das hier scheint besonders für Einsteiger oder kleine Projekte ein wenig von dessen eigentümlicher Seltsamkeit zu reduzieren.

  • Immer wenn von einem schnellen und bequemen Lisp die Rede ist, möchte ich Joker (https://github.com/candid82/joker) erwähnen.
    Es ist eine in Go implementierte Clojure-Syntax; ich bin nicht beteiligt, halte es aber für wirklich hervorragend. Das CIEL-Beispiel würde in Joker so aussehen: (prn {:a 1 :b 2 :c 3}), und ein Gist zum Herunterladen, Installieren und Ausführen ist hier: https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...
    Das Ausführen des gesamten Skripts dauerte 2,1 Sekunden, die Ausführung des Beispiels selbst 0,007 Sekunden.

  • Schön zu sehen, dass der Ansatz von Babashka (https://babashka.org/) nun auch in der Common-Lisp-Welt angekommen ist.

  • In Safari bekomme ich dieselbe Javascript-Warnung. Erweiterungen sind keine aktiviert.
    In Chrome geprüft: Abgesehen davon sieht es genau nach etwas aus, das ich nutzen möchte. Die CL-Standardbibliothek wirkt schon etwas überladen, aber wenn man „Batterien inklusive“ anstrebt, fehlten Dinge wie Alexandria und Bordeaux; diese Auswahl gefällt mir. Sie gibt dem etwas fragmentierten CL-Ökosystem ein Gefühl von „Best Practices“ oder Standardisierung.

  • Großartig. Persönlich nutze ich ein Image mit Alexandria, Serapeum, Dexador, Bordeaux Threads und JSON-bezogenen Werkzeugen; es könnte praktisch sein, wenn es etwas gibt, das auch andere mit einem ähnlichen Ziel verwenden.
    Das wirkt erfolgversprechender als die CDR-Vorschläge, über die übermäßig viel diskutiert wurde, oder das frühere CL21. Ich frage mich auch, ob viele reader macros standardmäßig aktiviert sind.

    • Im Terminal-REPL ist nur eines aktiviert, und wenn man CIEL als normale Lisp-Bibliothek verwendet, ist keines aktiviert.
      Der Grund ist, dass ich die readtable nicht standardmäßig anfassen möchte. Wie man im Editor-REPL Shell-Passthrough aktiviert, steht unten.
    • Ein schneller Blick in den Code legt nahe, dass standardmäßig nur clesh[1] für den Ausstieg vom REPL in die Shell aktiviert ist.
      1: https://github.com/Neronus/Clesh
  • Wenn es Wrapper zum Bauen von ncurses- und SDL-Cores gäbe, könnte vielleicht eines Tages lem direkt auf CIEL laufen und eine echte Lisp-Umgebung entstehen.
    https://news.ycombinator.com/item?id=41357409

  • Das scheint sich von Ciel (https://pldb.io/concepts/ciel.html), einem anderen Lisp von Ron Garret aus dem Jahr 2010, zu unterscheiden. Er ist außerdem Raketenwissenschaftler (https://flownet.com/ron/).

  • Lässt es sich einfach zu einem Binary kompilieren? Vermutlich nutzt man einfach den Standardweg von CL.
    Dass es im CIEL custom REPL Shell-Passthrough wie !ls gibt, ist ein cooles Feature.

    • Ziemlich praktisch. Wenn man eine fortgeschrittene Lisp-Shell möchte, in der sich Shell-Code und Lisp-Code im Terminal mischen lassen, sollte man sich lish ansehen: https://github.com/nibbula/lish/
      Der Autor hält sie noch nicht für „bereit“ oder „gut genug“, aber sie ist schon recht weit. Es gibt auch eine POSIX-Shell: https://github.com/bradleyjensen/shcl. Wie immer gibt es eine längere Liste unter https://github.com/CodyReichert/awesome-cl#shells-shells-int....
    • Derzeit wird CIEL als Bibliothek verwendet und auf dem Standardweg gebaut.
      Ich möchte einen Befehl ciel build hinzufügen.
    • Entschuldigung, falls ich falschliege, aber ich dachte, das sei eine ziemlich standardmäßige Funktion. Auch der IPython-Kernel verwendet exakt dasselbe Format, und wenn man eine vollständige Shell braucht, kann man xonsh verwenden.
      Ich frage mich, ob Python bei REPL-Implementierungen der Sonderfall ist. Mit REPLs kenne ich mich nur bei Python und e-lisp aus.
    • Was fehlt denn an Ctrl+Z?
  • Sieht aus wie SBCL plus zusätzliche Bibliotheken. Der Autor, vindarel, ist auf HN.

    • Hallo o/ Ich hoffe, das Ziel von CIEL wurde gut erklärt. Ich nutze es täglich, verwende das Core-Image im Editor und liefere damit auch Produkte aus.
      Wenn ich ein neues Projekt starte, mit der Außenwelt interagieren muss oder etwas Kleines ohne die Komplexität von Python schreiben und auf einen Server stellen möchte, spart es mir viel Zeit. Django ist natürlich schwer zu ersetzen, aber ich habe auch ein automatisches DB-Dashboard für CRUD-Aufgaben begonnen; es ist noch nicht öffentlich, aber in Arbeit.
      Ich habe CL schrittweise in Kundenprojekte integriert, und CIEL ist ein weiteres Mittel zu diesem Zweck. Es geht darum, CL tatsächlich zu verwenden. Meine Projekte brauchen nicht unbedingt die Superkräfte von CL, aber für Entwicklung, Deployment und Monitoring will ich diese Stärke haben.
      Heute habe ich einige Probleme behoben und v0.2 veröffentlicht: https://github.com/ciel-lang/CIEL/releases/tag/v02. Der Kernpunkt ist, dass die Installation von CIEL, besonders auf dem Mac, deutlich einfacher werden sollte. Es gibt jetzt viel weniger Systemabhängigkeiten.
      Falls die Installation auf bestimmten Plattformen weiterhin schwierig ist, schickt bitte Details in ein Issue. Kurz gesagt: Ich hoffe, CIEL macht eure CL-Reise einfacher und reibungsloser. Ihr könnt euch nicht vorstellen, wie lange es gedauert hat, manche Dinge herauszufinden. Jetzt ist es hier vorbereitet und paketiert :-]