From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ian Price Newsgroups: gmane.lisp.guile.user Subject: Re: The Web, Continuations, and All That Date: Tue, 31 Jan 2012 09:06:24 +0000 Message-ID: <87mx94xmun.fsf@Kagami.home> References: <877h0jea8d.fsf@Kagami.home> <4F1FC437.8020801@antono.info> <87y5swcbt9.fsf@Kagami.home> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1328001246 6672 80.91.229.3 (31 Jan 2012 09:14:06 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 31 Jan 2012 09:14:06 +0000 (UTC) Cc: Guile Users To: Tobias Gerdin Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Tue Jan 31 10:14:05 2012 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Rs9ms-0007cy-A1 for guile-user@m.gmane.org; Tue, 31 Jan 2012 10:14:02 +0100 Original-Received: from localhost ([::1]:51391 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rs9mr-0006oR-H0 for guile-user@m.gmane.org; Tue, 31 Jan 2012 04:14:01 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:51328) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rs9mi-0006nP-Ku for guile-user@gnu.org; Tue, 31 Jan 2012 04:13:58 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Rs9me-0000ID-9r for guile-user@gnu.org; Tue, 31 Jan 2012 04:13:52 -0500 Original-Received: from mail-wi0-f169.google.com ([209.85.212.169]:57651) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Rs9me-0000I9-3w for guile-user@gnu.org; Tue, 31 Jan 2012 04:13:48 -0500 Original-Received: by wibhj13 with SMTP id hj13so5210107wib.0 for ; Tue, 31 Jan 2012 01:13:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=2bXePCxx86XPxembvjSiySVPxswTp2tQ36ycQXeeucg=; b=Zi4WScDk3QVhIyfkKpQpHLPq3726mhTeeHID8WDkqKu+qJNntB1dAaLVolGgmvlbmI TorJDpqY7iUKTjHzsJB7wWKSR2b2e9h/4D0ktPtusUtr5u2agD2g8jwP20lutnBuXdXn epGG79eghYWqta0f7sikGhwxYqmvSZ3GvOZDo= Original-Received: by 10.180.93.132 with SMTP id cu4mr2292279wib.9.1328001226516; Tue, 31 Jan 2012 01:13:46 -0800 (PST) Original-Received: from Kagami.home (host86-182-157-0.range86-182.btcentralplus.com. [86.182.157.0]) by mx.google.com with ESMTPS id d9sm35952759wiy.2.2012.01.31.01.13.42 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 31 Jan 2012 01:13:43 -0800 (PST) In-Reply-To: (Tobias Gerdin's message of "Mon, 30 Jan 2012 20:03:08 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.212.169 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:9225 Archived-At: Tobias Gerdin writes: > As long as you have some way to redirect the client back to the same > application server things would scale quite well I think. You could > embed some token identifying the application server in the URL which > the reverse proxy could use to forward the request to the same > application server instance. New user sessions would still be > load-balanced using a round-robin scheme or something more > sophisticated. > > Something even cooler would be to have serializable continuations like > in Racket (but it requires limiting the language somewhat), in which > case you could store the continuations in the URL (if they are not too > big), or perhaps in some distributed hashtable that all application > server instances could access. A whole bunch of ideas were discussed on IRC a while back[1], and serialisation was one of the issues I was most concerned about. As it stands, when the program stops you lose all your existing continuations, which may be undesirable. Another important issue was brought up by Antono, which is that continuation URLs effectively form a gc root, and you can't safely get rid of continuations without possibly breaking some url. And even though it you can just say "well, tough", you at least need some strategy for periodically pruning your set of continuations. I'd like to see you, or I, or someone, do something like this for guile, but I think the first step is to look at existing continuation based frameworks and see how they handle some of these issues. 1. http://rotty.yi.org/irclogs/freenode/%23guile/2012-01-10/ -- Ian Price "Programming is like pinball. The reward for doing it well is the opportunity to do it again" - from "The Wizardy Compiled"