Now going through the How To Design Languages workshop detailed schedule https://school.racket-lang.org/2019/plan/
Language Oriented Programming section now starting
core idea: most languages are multiple languages, composed
Jay showing how to break hygeine.
Jay and Matthias: "but don't do it"
Me: but wait... you can't use this to exfiltrate information from a module that it didn't provide can you?
Them: yes but just don't do it
Me: but this has security implications for the stuff I'm working on
Them: Yep, talk to these people afterwards, we shouldn't distract the class
Me, internally: aaaaaaaaaaaa
Good news that Matthew Flatt told me they planned for this, and it should be possible for me to make a safe racket #lang
Maybe I need to spend the entire evening going through this part of the class
One other thing that I hadn't considered before today is that a hygenic macro can actually install definitions in the current scope. For example:
(define x 2)
(define y 3)))
(maybe-evil-macro) ; binds x and y
(+ x y))
In fact I have used such macros before, but hadn't considered the security risk they could pose: you could "surprise" a user by shadowing variables in a previous scope.
I wonder how W7 deals with it?
The thing that's semi-evil is it doesn't *look* like maybe-evil-macro is likely to inject bindings into your current scope. Admittedly this isn't much of a concern in present Racket programs, but could more seriously break security considerations in something like #lang dungeon
#lang dungeon is my vague plan for an ocap-safe module layer for Racket
Now we're on to Modules, Macros, Languages https://school.racket-lang.org/2019/plan/wed-mor-lecture.html
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!