Oh, a quick followup - could we post a link to this on the Guile web page? I don't know who is maintaining that now, but it claims to have a list of projects using Guile, and I think a multi-protocol server is certainly interesting enough to go there.
Noah On Tue, Apr 3, 2012 at 10:41 PM, Noah Lavine <[email protected]> wrote: > That looks excellent! Thanks for posting it. > > On Mon, Apr 2, 2012 at 12:23 PM, Nala Ginrut <[email protected]> wrote: >> hi falks! >> Many guys believe Guile-2.0 is powerful, me too. But we need more and more >> guile projects to prove that. >> Here's a toy of my coding game. A generic server named "Ragnarok". The >> keyword "generic" implied it's not only a http-server, but easy >> to add new protocols without considering the common features for a server >> such as config/logger/concurrent... >> If you checkout its code, you may find that it may didn't use web API you >> thought in Guile lib, and it's bother to implement epoll though Andy is >> making effort to writing nio/ethread now. Well, the reason is simple, >> because that API/epoll did exist or not stable at the time I wrote Ragnarok. >> I think it's easy to port it to our future nio/ethread for a higher >> concurrency. >> It's here: git://gitorious.org/glow/ragnarok.git >> I'll make a main page for it if I find a proper web hosting. >> >> Features: >> * GPLv3 (of course) >> * Object oriented >> (yes, I'm the minority in Guile community who try to program with GOOPS, >> though FP features may cancel out most of OO features) >> * HTTP/1.1 >> * Multi-protocols >> * Multi-languages >> (Guile is actually a dynamic compiler collection against the GCC who's the >> static one according to Andy's free speech. So multi-language >> must be the most fascinating feature.) >> * Guile/Scheme Template >> * Configurable >> * MIME >> * Unified epoll/select/kqueue interface >> * Logger >> * Standard CGI >> * Static page and binary downloading service (of course) >> >> These days I'm on my vacation and gave a free speech to Chengdu Linux User >> Group for a topic about Guile. Many guys are interested in >> using Scheme for web framework. But they thought it's very clumsy to write >> Scheme in web development, they love PHP more. >> For such a misunderstanding, I showed them one of the features in Ragnarok, >> the Guile template: >> ---------------------------------cut---------------------------------- >> <html> >> <% (if (= 1 1) (begin %> >> <p>asdf: <%= (+ 1 1) %></p> >> <% )) %> >> >> <% (let ((test-me (expt 3 8))) %> >> <p><%= test-me %></p> >> <% ) %> >> </html> >> ----------------------------------end------------------------------- >> >> If you get this dynamic page from Ragnarok server, the result will be: >> ================= >> <html> >> <p>asdf: 2</p> >> <p>6561</p> >> </html> >> ================= >> Or open it from any web-browser you like. >> >> Well, it's an interesting feature and easy to implement for most guys in >> Lisp world. >> The point is, I'm telling them the template is not a big deal for Guile. We >> have it. >> >> After the free talking, an audience ask me: why not release it? >> I must confess it's just a toy of my coding game. I didn't know if people >> will be interested in it. >> And many guys here know much than me, so I'm hesitating. >> But the sentence on Geiser[1] site struck me: "No hacker is an island". Then >> I believe I must share it to the world and get more help. >> Anyway, it's buggy but it really works! >> If you're in trouble with running it directly, you may try to use it's >> <server> class for debugging or working with it: >> --------------------------------------------cut----------------------------------- >> (use-modules (ragnarok server)) >> (server:run (make <server> #:name "first-http")) >> --------------------------------------------end---------------------------------- >> Then you get a http server listen in 8080 in default. >> Happy hacking! >> >> >> [1] http://www.nongnu.org/geiser/ >>
