Webdevelopment in Common Lisp

I am a little familiar with the Scheme. I read OnLisp, and I would like to make a real peace project in this. Most likely web development. I would like to know what settings people use to develop websites in lisp. I have a couple of macs at home, and I decided that I would use clozure cl. However, I fear several things. I read on the internet that cl does not have a reliable means for streaming data and there are no good networks. It's true? What was your experience like?

PS: Don't tell me about clojure :). Lisp is an itch that I need to scratch.

+6
source share
4 answers

Not sure why he wouldn’t have “good networks”; you cannot rely on threads if you want to write a portable Common Lisp application, as some implementations do not support them (AFAIK, just clisp , although you can compile it with experimental thread support). If you plan to choose an implementation and stick to it, you will not have this problem.

The "standard" CL web stack is Hunchentoot / cl-who / clsql , although you can find manuals that run on Araneida or Portable AllegroServe .

The setup that I use, Debian / SBCL runs quicklisp and the above systems along with MySQL (although I'm seriously thinking about switching to Postgres ) for the database and nginx to run before Hunchentoot serving any static content.

+6
source

I am currently using the Restas Hunchentoot -based Hunchentoot inspired by the Rails route system. I also use Postmodern to interact with the PostgreSQL , and I generate HTML with cl-markup . although I am thinking of switching to cl-who , which looks more customizable.

When I started, I also considered using Parenscript to create JavaScript , but now I'm just happy with Mootools and plain JavaScript .

Everything runs on SBCL and is accessible using Quicklisp.

+8
source

mck- supports generic lisp heroku hero.

https://github.com/mck-/heroku-cl-example/tree/

+3
source

The problem with Common Lisp "networking" is that we do not have sockets in the CL standard, so each implementation has its own socket API. We have some attempts to give a common interface, for example, usocket . You can find a list of network-related packages here .

If you need web infrastructure, check out Caveman . I haven't used it yet, but it looks like the most comprehensive CL web environment I have ever seen.

+2
source

Source: https://habr.com/ru/post/915141/


All Articles