CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Mon, 04 Aug 2025 08:08:59 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090603033729
location: https://web.archive.org/web/20090603033729/https://github.com/sacado/luarc
server-timing: captures_list;dur=1.033479, exclusion.robots;dur=0.038771, exclusion.robots.policy;dur=0.018569, esindex;dur=0.024622, cdx.remote;dur=13.223566, LoadShardBlock;dur=319.551354, PetaboxLoader3.datanode;dur=67.105886, PetaboxLoader3.resolve;dur=89.428455
x-app-server: wwwb-app214
x-ts: 302
x-tr: 368
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: wb-p-SERVER=wwwb-app214; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 301
server: nginx
date: Mon, 04 Aug 2025 08:09:00 GMT
content-type: text/html; charset=utf-8
content-length: 108
x-archive-orig-server: nginx/0.6.31
x-archive-orig-date: Wed, 03 Jun 2009 03:37:29 GMT
x-archive-orig-connection: close
x-archive-orig-status: 301 Moved Permanently
location: https://web.archive.org/web/20090603033729/https://github.com/sacado/luarc/tree/master
x-archive-orig-x-runtime: 39ms
x-archive-orig-cache-control: no-cache
x-archive-orig-content-length: 108
cache-control: max-age=1800
memento-datetime: Wed, 03 Jun 2009 03:37:29 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Tue, 14 Oct 2008 22:37:43 GMT", ; rel="prev memento"; datetime="Fri, 24 Oct 2008 04:04:40 GMT", ; rel="memento"; datetime="Wed, 03 Jun 2009 03:37:29 GMT", ; rel="next memento"; datetime="Fri, 27 Nov 2009 07:43:07 GMT", ; rel="last memento"; datetime="Sat, 19 Dec 2020 20:06:50 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_10_20090603023914_crawl102-c/52_10_20090603033636_crawl101.arc.gz
server-timing: captures_list;dur=0.738660, exclusion.robots;dur=0.026077, exclusion.robots.policy;dur=0.012176, esindex;dur=0.015870, cdx.remote;dur=18.539991, LoadShardBlock;dur=208.980856, PetaboxLoader3.datanode;dur=140.440248, PetaboxLoader3.resolve;dur=223.800691, load_resource;dur=205.366010
x-app-server: wwwb-app214
x-ts: 301
x-tr: 461
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 302
server: nginx
date: Mon, 04 Aug 2025 08:09:01 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20090602170234
location: https://web.archive.org/web/20090602170234/https://github.com/sacado/luarc/tree/master
server-timing: captures_list;dur=0.687905, exclusion.robots;dur=0.028420, exclusion.robots.policy;dur=0.012891, esindex;dur=0.014640, cdx.remote;dur=4.874676, LoadShardBlock;dur=538.484134, PetaboxLoader3.datanode;dur=146.591382, PetaboxLoader3.resolve;dur=159.496929
x-app-server: wwwb-app214
x-ts: 302
x-tr: 570
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Mon, 04 Aug 2025 08:09:01 GMT
content-type: text/html; charset=utf-8
x-archive-orig-server: nginx/0.6.26
x-archive-orig-date: Tue, 02 Jun 2009 17:02:33 GMT
x-archive-orig-connection: close
x-archive-orig-status: 200 OK
x-archive-orig-x-runtime: 127ms
x-archive-orig-etag: "86997afd16366e0bd3b33d9cd1837b81"
x-archive-orig-cache-control: private, max-age=0, must-revalidate
x-archive-orig-content-length: 20842
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Tue, 02 Jun 2009 17:02:34 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Mon, 15 Sep 2008 19:03:46 GMT", ; rel="prev memento"; datetime="Wed, 22 Apr 2009 08:55:52 GMT", ; rel="memento"; datetime="Tue, 02 Jun 2009 17:02:34 GMT", ; rel="next memento"; datetime="Thu, 04 Jun 2009 08:06:56 GMT", ; rel="last memento"; datetime="Wed, 31 May 2023 09:24:45 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: 52_10_20090602090525_crawl103-c/52_10_20090602170205_crawl101.arc.gz
server-timing: captures_list;dur=0.675835, exclusion.robots;dur=0.024686, exclusion.robots.policy;dur=0.011470, esindex;dur=0.013238, cdx.remote;dur=1.866905, LoadShardBlock;dur=148.210248, PetaboxLoader3.datanode;dur=226.597557, PetaboxLoader3.resolve;dur=214.798447, load_resource;dur=341.697808
x-app-server: wwwb-app214
x-ts: 200
x-tr: 563
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
sacado's luarc at master - GitHub
This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (

This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (

Description: | Arc Lisp's web server, implemented in Lua |
Clone URL: |
git://github.com/sacado/luarc.git
Give this clone URL to anyone.
git clone git://github.com/sacado/luarc.git
|
luarc /
name | age | message | |
---|---|---|---|
![]() |
README | Tue Sep 16 14:07:43 -0700 2008 | added (limited) support for login/logout ... [sacado] |
![]() |
app.lua | Thu Sep 18 11:53:07 -0700 2008 | Added /repl operator and fixed /login and /logo... [sacado] |
![]() |
html.lua | Thu Sep 18 11:53:07 -0700 2008 | Added /repl operator and fixed /login and /logo... [sacado] |
![]() |
luarc.lua | Thu Sep 18 11:53:07 -0700 2008 | Added /repl operator and fixed /login and /logo... [sacado] |
![]() |
luarc/ | Thu Sep 18 11:53:07 -0700 2008 | Added /repl operator and fixed /login and /logo... [sacado] |
![]() |
news.lua | Thu Sep 18 11:53:07 -0700 2008 | Added /repl operator and fixed /login and /logo... [sacado] |
![]() |
srv.lua | Thu Sep 18 11:53:07 -0700 2008 | Added /repl operator and fixed /login and /logo... [sacado] |
This is Luarc, an implementation of Arc's web server in Lua. Arc is Paul Graham's new Lisp dialect. It embeds an excellent web server, based on continuation-passing style. Luarc is just a reimplementation of Paul Graham (and other Arc contributors) 's web server code in the Lua language, with the luasocket extension. I wanted to see how a language close to Scheme but missing macros as Lua could be used to implement code written primarily for Arc and using extensively macros. I also wanted to make a more CPU and memory efficient implementation of Arc's web server. When started, the server only consumes less than 300 kb on my machine. As for now, everything is not implemented, the server is single-threaded (i.e. only one request at a time can be treated) and the code certainly contains a few bugs (particularily a few memory leaks), but that should be addressed in the next revisions. To run it, just run "lua app.lua" and check https://localhost:8080 . THE ARC CHALLENGE WITH LUARC The Arc challenge, as described by the language's author, is the following : "Write a program that causes the url said (e.g. https://localhost:port/said) to produce a page with an input field and a submit button. When the submit button is pressed, that should produce a second page with a single link saying "click here." When that is clicked it should lead to a third page that says "you said: ..." where ... is whatever the user typed in the original input field. The third page must only show what the user actually typed. I.e. the value entered in the input field must not be passed in the url, or it would be possible to change the behavior of the final page by editing the url. [...] Here's the answer in Arc: (defop said req (aform [w/link (pr "you said: " (arg _ "foo")) (pr "click here")] (input "foo") (submit))) " With Luarc, my favorite answer (as for now) is defop ('said', function () local f = function (req) w_link ("Click here", function () client:send (string.format ("You said : %s", req.args.foo)) end) end aform (f, function () input ("foo"); submit () end) end) It is less compact, mainly because of the lack of macros, but still interesting and quite readable. CONTACT my e-mail is sacado.sacado AT gmail.com LINKS Arc : https://arclanguage.org Lua : https://lua.org Luasocket : https://www.tecgraf.puc-rio.br/~diego/professional/luasocket
This feature is coming soon. Sit tight!