Jay, I agree. This would be a good starting point, so others can find it too. 


On Jan 19, 2012, at 2:02 PM, John Clements wrote:

> I think the below would make a good PLT blog post, perhaps with an opening 
> paragraph about how much cheaper the stateless web-server can be.
> 
> John
> 
> 
> On Jan 3, 2012, at 10:33 PM, Galler wrote:
> 
>> 
>> 
>> On the subject of porting #lang racket  to  #lang web-server code
>> 
>> I provide a few lessons learned for the archives for the next person to 
>> attempt this.
>> 
>> 
>> 1) Bindings, Serializability , and anonymous functions
>> 
>> 1A) the predicate serializable? from racket/serializable is invaluable
>> 
>> #lang web-server code will not transform if there are non-serializable 
>> constructs in the dynamic extent of the invocation of send/suspend
>> 
>> some minor surprises/lessons learned:
>> 
>> 1B) anonymous functions are not serializable
>> 
>> (serializable? (λ (x) x))  ;->#f
>> 
>> 1C) anonymous functions in a list are not serializable
>> 
>>  (serializable? (car (list (λ (x) x) (λ (x) x)))) ;->#f
>> 
>> 1D) once given a module-level binding, anonymous functions become 
>> serializable
>> 
>> (define foo (list (λ (x) x) (λ (x) x)))
>> 
>> (serializable? (car foo))  ;->#t
>> 
>> 1E)  void is not  serializable
>> 
>> (serializable? void) ;->#f
>> 
>> 1F) anonymous functions bound within a letrec form are serializable
>>  
>> 
>> 2) 'attempt to cross a continuation barrier' exceptions
>> 
>> invocations of native continuations reified with call/cc seemed to 
>> frequently throw this error
>> 
>> I haven't done enough analysis to understand why and under what conditions, 
>> but in all cases I was able to remediate by enclosing the invocation as 
>> follows.
>> 
>>  (call-with-continuation-prompt  k (default-continuation-prompt-tag)
>> 
>> 3) with-continuation-marks, continuation-marks, and 
>> current-continuation-marks can be used to replace dynamic-wind
>> 
>> 
>> Again, thank you. I think the stateless web-language is important technology 
>> and must have required an enormous amount of work to implement.
>> 
>> Anedcotally, application speed seems at or better than the stateful code.
>> 
>> R./
>> Zack
>> 
>> On Sun, Jan 1, 2012 at 4:36 PM, Jay McCarthy wrote:
>> 
>> > On Sat, 31 Dec 2011 20:03:02 -0600,Robby Findler 
>> > <ro...@eecs.northwestern.edu> mumbled:
>> > > I'm not sure if the web-server supports continuation marks or not
>> >
>> > The stateless transformation does support continuation marks, provided
>> > the keys and values are serializable. (Parameters/exception handlers are 
>> > not
>> > supported because the key is not serializable.)
>> >
>> > Jay
>> ____________________
>>  Racket Users list:
>>  http://lists.racket-lang.org/users
> 
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to