1 points par GN⁺ 2024-08-31 | 1 commentaires | Partager sur WhatsApp
  • CIEL est un Lisp étendu basé à 100 % sur Common Lisp, qui met en avant une approche « batteries included » avec des outils de base fournis
  • Les scripts s’exécutent avec le shebang #!/usr/bin/env ciel, et le code Lisp permet d’utiliser directement la lecture de JSON et les requêtes HTTP GET
  • L’exemple appelle une URL avec http:get, lit la réponse avec json:read-json, puis l’affiche avec print
  • L’exemple d’exécution ./myscript.lisp montre comment traiter un script CIEL comme un exécutable classique
  • Le reste de la documentation web nécessite JavaScript ; pour la consulter sans JavaScript, il faut se référer au dépôt GitHub

Nature de base de CIEL

  • CIEL est présenté comme un « Lisp étendu »
  • Basé sur Common Lisp

    • Il est basé à 100 % sur Common Lisp
    • Il se distingue par une approche batteries included, avec des outils de base inclus

Exemple d’exécution de script

  • Le code d’exemple indique l’exécuteur ciel dans le shebang
#!/usr/bin/env ciel

(print
  (json:read-json
    (http:get "https://fakestoreapi.com/products?limit=5";)))
  • Il envoie une requête HTTP avec http:get, lit le JSON de la réponse avec json:read-json, puis l’affiche avec print
  • La commande d’exécution est la suivante
$ ./myscript.lisp

Accès à la documentation et au dépôt

  • Le lien du projet est disponible sur GitHub
  • Le reste de la documentation web nécessite JavaScript ; un message indique de consulter le dépôt GitHub si JavaScript n’est pas disponible

1 commentaires

 
GN⁺ 2024-08-31
Commentaires sur Hacker News
  • Il est vraiment important que des composants bien documentés sous forme de standards soient regroupés et utilisables directement comme s’ils faisaient partie du langage de base, avec en plus un joli nom.
    J’aime bien, et ça pourrait devenir une nouvelle cible standard. Il ne manque plus qu’une bonne mascotte ou un logo.

    • Vu le nom, ça devrait être un petit phoque.
    • Je ne sais pas où se trouve la documentation. Honnêtement, je n’en vois pas beaucoup ici, et j’appellerais plutôt ça un README qu’une documentation.
  • J’aime l’approche. Je m’attendais à « encore un autre Lisp », ce qui aurait été cool, mais pas quelque chose que j’aurais eu envie d’utiliser tout de suite.
    Étendre et améliorer l’existant peut être plus difficile et moins amusant que repartir de zéro, mais c’est bien plus précieux. J’utilise déjà Common Lisp, et celui-ci semble réduire un peu ses bizarreries caractéristiques, surtout pour les débutants ou les petits projets.

  • Chaque fois qu’on parle d’un Lisp rapide et pratique, j’ai envie de mentionner Joker (https://github.com/candid82/joker).
    C’est une syntaxe Clojure implémentée en Go ; je n’y suis pas affilié, mais je trouve ça vraiment excellent. L’exemple CIEL en Joker donnerait (prn {:a 1 :b 2 :c 3}), et voici un Gist pour télécharger, installer et exécuter : https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...
    L’exécution complète du script a pris 2,1 secondes, et l’exemple lui-même 0,007 seconde.

  • C’est agréable de voir l’approche choisie par Babashka (https://babashka.org/) arriver maintenant aussi dans l’univers Common Lisp.

  • J’obtiens le même avertissement Javascript dans Safari. Je n’ai activé aucune extension.
    En vérifiant avec Chrome, à part ça, ça ressemble exactement au genre d’outil que j’aimerais utiliser. La bibliothèque standard de CL donne déjà un peu l’impression d’être surchargée, mais si l’objectif est d’avoir les « batteries incluses », il manquait des choses comme Alexandria et Bordeaux, donc ce choix me plaît. Cela donne une impression de « bonnes pratiques » ou de standardisation à l’écosystème CL, qui est un peu fragmenté.

  • Excellent. Personnellement, j’utilise une image avec Alexandria, Serapeum, Dexador, Bordeaux Threads et des outils liés à JSON ; avoir quelque chose que d’autres utilisent pour une cible similaire pourrait être pratique.
    Cela me semble avoir plus de chances de réussir que les propositions CDR dont on a beaucoup trop discuté, ou que CL21 avant elles. Je me demande aussi s’il y a beaucoup de reader macros activées par défaut.

    • Dans le REPL de terminal, une seule est activée, et quand CIEL est utilisé comme bibliothèque Lisp ordinaire, aucune ne l’est.
      C’est parce qu’on ne veut pas modifier la readtable par défaut. Voir ci-dessous pour activer le passage par le shell dans le REPL de l’éditeur.
    • En jetant rapidement un œil au code, il semble que seul clesh[1] soit activé par défaut pour sortir du REPL vers le shell.
      1 : https://github.com/Neronus/Clesh
  • S’il y avait un wrapper pour construire les cœurs ncurses et SDL, peut-être qu’un jour lem pourrait tourner directement au-dessus de CIEL et fournir un véritable environnement Lisp.
    https://news.ycombinator.com/item?id=41357409

  • Cela semble différent d’un autre Lisp appelé Ciel (https://pldb.io/concepts/ciel.html), créé par Ron Garret en 2010. Il est aussi spécialiste des fusées (https://flownet.com/ron/).

  • Peut-on le compiler facilement en binaire ? J’imagine qu’il suffit d’utiliser la méthode CL standard.
    Le fait que le CIEL custom REPL ait un passage par le shell comme !ls, c’est une fonctionnalité sympa.

    • C’est assez pratique. Si tu veux un shell Lisp avancé dans le terminal, où mélanger du code shell et du code Lisp, regarde lish : https://github.com/nibbula/lish/
      L’auteur ne le considère pas encore comme « prêt » ou « assez bon », mais il a déjà bien avancé. Il existe aussi https://github.com/bradleyjensen/shcl, qui est un shell POSIX. Comme toujours, on trouve une liste plus complète ici : https://github.com/CodyReichert/awesome-cl#shells-shells-int...
    • Pour l’instant, CIEL est utilisé comme bibliothèque et se construit de la manière standard.
      J’aimerais ajouter une commande ciel build.
    • Désolé si je me trompe, mais je pensais que c’était une fonctionnalité assez standard. Les kernels IPython utilisent exactement le même format, et si l’on a besoin d’un shell complet, on peut aussi utiliser xonsh.
      Je me demande si Python est un cas particulier dans la façon dont son REPL est implémenté. Je ne connais vraiment que les REPL de Python et d’e-lisp.
    • En quoi Ctrl+Z ne suffit-il pas ?
  • Ça ressemble à SBCL avec des bibliothèques en plus. L’auteur, vindarel, est sur HN.

    • Salut o/ J’espère que les objectifs de CIEL ont été bien expliqués. Je l’utilise tous les jours, avec l’image core dans mon éditeur, et je distribue aussi des produits avec.
      Quand je démarre un nouveau projet, quand je dois interagir avec le monde extérieur, ou quand je veux écrire quelque chose de petit et le déployer sur un serveur sans la complexité de Python, ça me fait gagner beaucoup de temps. Django reste bien sûr difficile à remplacer, mais j’ai aussi commencé un tableau de bord DB automatique pour les tâches CRUD ; ce n’est pas encore public, mais c’est en cours.
      J’ai progressivement intégré CL dans du travail client, et CIEL est un outil de plus pour cela. Le but est d’utiliser CL dans la vraie vie. Mes projets n’ont pas forcément besoin des superpouvoirs de CL, mais je veux cette puissance pour développer, déployer et superviser.
      Aujourd’hui, j’ai corrigé quelques problèmes et publié la v0.2 : https://github.com/ciel-lang/CIEL/releases/tag/v02 Le point essentiel est que l’installation de CIEL devrait être beaucoup plus simple, surtout sur Mac. Il y a maintenant bien moins de dépendances système.
      Si l’installation reste difficile sur une plateforme donnée, merci d’envoyer les détails dans une issue. En résumé, j’espère que CIEL rendra votre parcours avec CL plus simple et plus fluide. Vous n’imaginez pas le temps qu’il m’a fallu pour comprendre certaines choses. Maintenant, c’est prêt ici, empaqueté :-]