That's a cute idea. We do something like that already when sharing the
serialized continuation with the world, but Racket could conceivably do
that when it `read`/`write`s things, although it would be very odd.

--
Jay McCarthy
Associate Professor @ CS @ UMass Lowell
http://jeapostrophe.github.io
Vincit qui se vincit.


On Thu, Feb 25, 2021 at 3:28 AM [email protected] <[email protected]>
wrote:

> Could you cryptographically sign the serialized form or something like
> that?
>
> On Monday, February 22, 2021 at 8:59:29 AM UTC-8 [email protected]
> wrote:
>
>> On Sun, Feb 21, 2021 at 2:35 PM [email protected] <[email protected]> wrote:
>> >
>> > #lang web-server is brilliant. This #lang is, in my view, a really
>> excellent example of Racket's take on language-oriented programming. I find
>> that the performance of continuations is just fine, given my limited use of
>> them, and after a while you get used to the limitations and just program
>> around them.
>>
>> Thanks, a lot of people contributed a ton to it, specifically: Greg
>> Pettyjohn, John Clements, Joe Marshall, Shriram Krishnamurthi,
>> Matthias Felleisen.
>>
>> >
>> > One thing that always bothers me about #lang web-server, though, is
>> that there are a lot of provisos in the documentation. I'm talking about
>> section 3.2, "Usage Considerations", of
>> https://docs.racket-lang.org/web-server/stateless.html, in the part
>> after "However, there are some considerations you must make." Here a couple
>> of questions:
>> >
>> > + " [#lang web-server] will create an immense number of lambdas and
>> structures your program did not normally contain. The performance
>> implication of this has not been studied with Racket."
>> >
>> > This seems to me like an interesting research question. Has this
>> question been taken up? I've tried taking a look on Google Scholar for any
>> follow-up. I looked at citations of Jay's "Automatically RESTful web
>> applications" and "The two-state solution: native and serializable
>> continuations accord", but nothing stuck out to me (...which is not to say
>> that there may have missed something).
>>
>>
>> I never did any more research about this. I think you could take the
>> traditional Scheme benchmarks ---
>>
>> https://github.com/racket/racket/tree/master/pkgs/racket-benchmarks/tests/racket/benchmarks/common
>> --- and add `#lang web-server` to the top and see what happens.
>>
>> >
>> > + Some limitations of #lang web-server seem don't seem obviously
>> necessary, at least to someone who's not very familiar with the precise
>> details of the underlying program transformations. You get used to them,
>> but you wonder if there's some accessible world in which they work. For
>> example: "You may not use parameterize, because parameterizations are not
>> serializable." Is that inherently so (that is, there's no way around that,
>> no matter how clever you tweak the program transformations on which #lang
>> web-server rests), or is that just a conequence of the particular approach
>> taken (maybe it's possible, but no one has done it yet). Has there been any
>> fresh thinking about these limitations?
>>
>> In some sense, everything is possible, because we can just change the
>> way the VM works... the existing `#lang web-server` is designed to
>> never require modifications down there. In the case of `parameterize`,
>> the problem is a matter of security. Consider the following program:
>>
>> ```
>> #lang racket
>> (define p (make-parameter #t))
>> (define (launch-the-missiles!)
>> (when (p) .....))
>> (define (run-code-downloaded-from-youtube f)
>> (parameterize ([p #f]) (f)))
>> ```
>>
>> We don't want the code from YouTube to be able to launch the missiles.
>> Suppose that parameterizations were serializeable, then the YouTube
>> code could be something like:
>>
>> ```
>> (lambda ()
>> (call-with-parameterization
>> (read (with-input-string (hack-the-planet (with-output-to-string
>> (lambda () (write (current-parameterization)))))
>> launch-the-missiles!))
>> ```
>>
>> where `hack-the-planet` changes the `#f` to `#t`. That's why you can't
>> inspect parameterizations or enumerate the keys in a continuation mark
>> set.
>>
>> In general, all of the limitations of `#lang web-server` are because
>> of things like this.
>>
>> Jay
>>
>> --
>> Jay McCarthy
>> Associate Professor @ CS @ UMass Lowell
>> http://jeapostrophe.github.io
>> Vincit qui se vincit.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/0854aacf-b390-4bc7-8b7a-6b114c19bb5cn%40googlegroups.com
> <https://groups.google.com/d/msgid/racket-users/0854aacf-b390-4bc7-8b7a-6b114c19bb5cn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAJYbDamn8SVqi6Zo3wnHMQL-NLNr1VM4AC4pqpVVyA%2B18HnQNw%40mail.gmail.com.

Reply via email to