artanis
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libuv based http server for Guile


From: Nala Ginrut
Subject: Re: libuv based http server for Guile
Date: Mon, 04 Nov 2019 00:19:06 +0800
User-agent: mu4e 1.3.2; emacs 26.1

Shiv Shankar Dayal writes:
> I would like to work on libuv based core for artanis. I am not much of a
> guile
> programmer but I do know C programming language reasonably well. However,
> I would need some help as to how to layout this project.

Good! I'm always here to give you advices. Feel free to ask.
Guile is designed to cooperate with C. Before you start, you may try
some little projects with Guile FFI first.

The rest of this mail is to all folks interested in developping new server-core.

The Guile manual is good for FFI, and I had an article for it years ago:
https://nalaginrut.com/archives/2015/03/27/do-some-quick-and-dirty-with-guile-ffi

The epoll & inotify module of Artanis is based on FFI too:
http://git.savannah.gnu.org/cgit/artanis.git/tree/artanis/server/epoll.scm
http://git.savannah.gnu.org/cgit/artanis.git/tree/artanis/inotify.scm

> I would like to run an event loop and run multiple threads but threads
> won't
> share data. One thread will listen on the socket and assign work to worker
> threads. Threads won't share any global data. So there will be no need of
> locks. They will communicate to each other using message passing much
> like in https://github.com/scylladb/seastar.

Well, here're some suggestions:
1. The global states in (artanis env) needs to be safe, you have to be
careful to check if there's race condition.

2. Please follow the Guile standard server API, there's example in
Artanis, please checkout new-guile-engine and new-fibers-engine below:
http://git.savannah.gnu.org/cgit/artanis.git/tree/artanis/server/ragnarok.scm#n551

3. When you finish it, I'll add a new standard API named
add-new-server-engine! to let users register their prefered third-party
server-core. So that other server-cores could be maintained
externally. This is important, because Artanis was designed to be a
lightweight kernel with a bunch of plugins. But at that time, Scheme has
no good package manager, so I bundled all things into one project for
product development. There'll be a package manager for Artanis, the
current recommended way is to develop it with Guix, anyway, I'll write
it in the later roadmap.

Best regards.


--
GNU Powered it
GPL Protected it
GOD Blessed it
HFG - NalaGinrut
Fingerprint F53B 4C56 95B5 E4D5 6093 4324 8469 6772 846A 0058

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]