[racket] Web server

From: Brian Adkins (racketusers at lojic.com)
Date: Thu Jul 17 14:05:59 EDT 2014

On Jul 17, 2014, at 1:26 PM, Matthew Flatt wrote:
>> Is that not the case with Places? If so, what was the rationale in not 
>> utilizing copy-on-write?
> 
> Do you mean copy-on-write via processes and fork(), or somehow by
> itself?

Yes, separate processes w/ separate virtual memory but sharing some physical pages until they get written to. I assume a large chunk of the runtime is read-only, so it seems that could save a lot of resident memory.

> We wanted to avoid multiple processes because OSes don't provide great
> facilities for managing them and communicating between them.

Maybe I'm confused. I thought creating a new Place involved creating a new process with the Racket VM, to run in parallel (potentially on a different core) with the original process. Is the "new Racket instance" running in the same process as the original? That's how I read the following:

"The place form creates a place, which is effectively a new Racket instance that can run in parallel to other places, including the initial place. "

Maybe wording like "which is effectively" leaves too much to the imagination. Do Places run in OS scheduled threads?

Posted on the users mailing list.