Frameworks Lisp?

Quels sont les frameworks Web populaires (ok, populaires, relatifs) pour les différentes variantes de LISP?

PLT Scheme dispose d’un serveur Web intégré basé sur la continuation .

Mise à jour: le schéma PLT s’appelle maintenant Racket.

Hunchentoot est également assez répandu

Qu’est-ce que Weblocks?

Weblocks est un framework Web basé sur les continuations écrit en Common Lisp.

http://common-lisp.net/project/cl-weblocks/

La plupart (peut-être la totalité) des frameworks Web Common Lisp bien connus ont déjà été mentionnés, alors je vais append quelques commentaires.

Hunchentoot n’est pas un “framework web” dans le sens où la plupart des gens veulent dire. C’est un serveur HTTP (extrêmement bon).

“Lisp on Lines” de Drew Crampsie semble extrêmement prometteur, mais je ne suis pas certain de son étendue. J’ai attendu pour entendre une annonce.

UnCommon Web de Marco Baringer s’exécute sur de nombreuses implémentations CL: Allegro CL, CMUCL, Clozure CL (anciennement OpenMCL), GNU clisp et SBCL. Le seul élément majeur manquant est LispWorks; Je ne sais pas si cela signifie qu’il n’a pas été testé pour fonctionner, ou est connu pour ne pas fonctionner, ou quoi; mais s’il fonctionne sur tous les autres dialectes, il est probablement facile de le faire fonctionner sur n’importe quel autre.

Pour Clojure, vous pouvez essayer Compojure .

Lisp commun

Un grand nombre des suspects habituels (Hunchentoot, UCW, LoL) ont déjà été mentionnés. Franz met à disposition pour Allegro Common Lisp (et porté sur d’autres Lisps):

  • à un niveau inférieur (gestion des requêtes HTTP vous-même), AllegroServe .
  • à un niveau supérieur (plus d’un “cadre”), WebActions .

Les deux sont open source. J’ai tendance à utiliser AllegroServe, en prenant en compte les utilitaires dont j’ai besoin, mais certaines personnes aiment vraiment les WebActions.

J’ai utilisé Araneida pendant un certain temps et je préfère son style à AllegroServe, mais il n’a pas été maintenu depuis 2006.

J’ai beaucoup cherché un bon framework Web pour Lisp et je les ai tous trouvés inaccessibles. L’architecture d’UCW ne m’a pas semblé très naturelle (je ne me souviens plus pourquoi, cela fait longtemps que je ne l’ai pas regardé), et KPAX n’est plus maintenu (je pense).

Le web symbolique est très intéressant et je pense que Weblocks est le plus intéressant, mais Weblocks n’est pas très bien documenté et peut être assez intimidant pour le nouveau venu. SymbolicWeb était immature la dernière fois que j’ai regardé, mais il a peut-être augmenté depuis. La page des fonctionnalités est plutôt bonne aujourd’hui.

Vous pouvez adopter différentes approches. Si vous voulez une approche purement lisp, vous pouvez alors:

  • Si vous pouvez lire le code avec compétence et comprendre les suites, vous pouvez essayer Weblocks avec un backend Hunchentoot (Weblocks a une dépendance sur Hunchentoot qui n’a pas encore été extrait). Il est censé y avoir un véritable manuel d’utilisateur dans un mois ou deux, mais comme pour tout projet OSS, ces engagements sont sommaires.
  • De même, vous pouvez essayer SymbolicWeb. [ mise à jour : tant pis, le projet n’est plus]
  • rouler les vôtres Sérieusement – il y a cl-who pour vous aider avec la génération HTML, il y a des librairies javascript et json disponibles, des usockets, elephant, cl-sql, hunchentoot, aserve, et beaucoup de bibliothèques utilitaires que vous pouvez combiner ensemble.

Si vous êtes d’accord avec une approche hybride, c’est quelque chose que j’expérimente en ce moment: j’ai écrit un backend Lisp JSON-RPC pour Qooxdoo, donc je peux servir des frontaux javascript purs via un serveur http ultra-rapide comme Cherokee et permettez à Cherokee d’établir des liens avec autant de serveurs json-rpc exécutant Lisp que je le souhaite. Très, très évolutif. Je suis loin de comprendre les difficultés et les défis, mais c’était assez simple de travailler. la librairie json simplifie le fonctionnement du backend – je pense que Qooxdoo lui-même est plus difficile (mais je ne suis pas vraiment un développeur JS).

Je vais aussi vérifier les WebActions d’Allegro, car il y a un certain attrait à la disponibilité du support payant – sans mentionner qu’Allegro est la meilleure implémentation CL disponible (Son Kennyness l’utilise :-)).

UnCommonWeb (UCW) est souvent mentionné sur http://www.common-lisp.net/project/ucw/ – il ne s’agit pas de REST comme en mode vogue à l’heure actuelle, plus comme SeaSide de Smalltalk (mais là encore, SeaSide est assez en vogue).

LeftParen

Lisp-on-lines est un framework d’application web basé sur CLSQL et UCW et fournit un modèle de développement d’applications similaire à bien des égards à Ruby on Rails. En ce moment, il peut être trouvé à http://versions.tech.coop/lisp-on-lines/ .

http://www.cliki.net/lisp-on-lines

http://kevin.casa.cavewallarts.com/LISP/LOL/lol.html

Pour Clojure, vous pouvez essayer Webjure .

Je viens de découvrir un framework Web appelé Clack pour le lisp commun et je l’ai trouvé très facile à démarrer.

Voir http://clacklisp.org/

Citation tirée de son site Web “Clack est un environnement d’application Web pour Common Lisp inspiré par WSGI et Ruby’s Rack de Python.”

et Caveman est un micro-framework web basé sur Clack.

SymbolicWeb – http://groups.google.com/group/symbolicweb est une autre chose intéressante (mais loin d’être “populaire”).

Re: SymbolicWeb (et sa disparition exagérée)

Page du projet SymbolicWeb sur l’article de Gitorious et SymbolicWeb sur Wikipedia . La page Google Groupes est définitivement morte (et non archivée?), Mais l’arbre Gitorious affiche les checkins aussi récemment que le 29 avril 2010 . La page du projet fait également référence à ” quelques exemples en cours ” étant “occasionnellement disponibles” sur nostdal.org (ce qui est inaccessible au moment où j’écris ceci, renforçant le qualificatif “occasionnellement” :-).)

( Remarque: je ne suis pas un utilisateur SymbolicWeb. Je viens de suivre les liens SymbolicWeb lors de la lecture de ce fil.)

Restas est un autre framework Web qui a vu des mises à jour récentes:

http://restas.lisper.ru/en/

Son aperçu

RESTAS is a Common Lisp web application framework. Its key features are: RESTAS was developed to simplify development of web applications following the REST architectural style. RESTAS is based on the Hunchentoot HTTP server. Web application development with RESTAS is in many ways simpler than with Hunchentoot, but some knowledge of Hunchentoot is required, at least about working with hunchentoot:*request* and hunchentoot:*reply*. Request dispatch is based on a route system. The route system is the key concept of RESTAS and provides unique features not found in other web frameworks. The other key RESTAS concept is its module system, which provides a simple and flexible mechanism for modularized code reuse. Interactive development support. Any RESTAS code (such as the definition of a route, a module or a submodule) can be recomstackd at any time when you work in SLIME and any changes you made can be immediately seen in the browser. No web server restart or other complicated actions are needed. SLIME integration. The inner structure of a web application can be investigated with the standard "SLIME Inspector." For example, there is a "site map" and a simple code navigation with this map. Easy to use, pure Lisp web application daemonization facility based on RESTAS and SBCL in Linux without the use of Screen or detachtty. RESTAS is not an MVC framework, although it is not incompatible with the concept. From the MVC point of view, RESTAS provides the controller level. Nevertheless, RESTAS provides an effective and flexible way for separation of logic and representation, because it does not put any constraints on the structure of applications. Separation of model and controller can be effectively performed with Common Lisp facilities, and, hence, doesn't need any special support from the framework. RESTAS does not come with a templating library. cl-closure-template and HTML-TEMPLATE are two good templating libraries that can be used with RESTAS. 

Cette question est un peu ancienne mais je pensais partager ma récente découverte: le langage Hop, basé sur Scheme, est assez complet.

HOP est un langage de programmation multi-niveaux pour le Web 2.0 et le Web diffus. Il est conçu pour la programmation d’applications Web interactives dans de nombreux domaines tels que le multimédia (galeries Web, lecteurs de musique, …), l’automatisation omniprésente (SmartPhones, appareils personnels), les mashups, les bureaux (agendas Web, clients de messagerie, … ), etc.

Caractéristiques HOP:

  • un ensemble complet de widgets pour la programmation d’interfaces graphiques Web fantaisistes et portables,
  • compatibilité totale avec les technologies Web traditionnelles (JavaScript, HTML, CSS),
  • Prise en charge de HTML5, un serveur Web polyvalent prenant en charge HTTP / 1.0 et HTTP / 1.1,
  • un support multimédia natif pour permettre des applications multimédia Web omniprésentes,
  • support rapide WebDAV niveau 1,
  • un compilateur de code natif d’optimisation pour le code serveur,
  • un compilateur JavaScript à la volée pour le code client,
  • un ensemble complet de bibliothèques pour le courrier, les calendriers, les bases de données, la téléphonie, …