RacketWeek / How To Design Languages starts in 8 minutes and I COULD NOT BE MORE EXCITED

This will be an update thread I guess!

Introductions done! Lots of cool people here.

I was typically too verbose in my self-introduction, oops

Language Oriented Programming section now starting

school.racket-lang.org/2019/pl

core idea: most languages are multiple languages, composed

Jay is showing off how a macro works by using DrRacket's Macro Stepper. "Sorry, I've never used the macro stepper." Worked right on the first try, though.

I may have misheard, maybe he said "I never use" rather than "I've never used"

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

It sounds like there's a path forward so I'm not too worried but hoo boy

Good news that Matthew Flatt told me they planned for this, and it should be possible for me to make a safe racket

Maybe I need to spend the entire evening going through this part of the class

Follow

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-simple-macro (maybe-simple-macro)
(begin
(define x 2)
(define y 3)))

(define (foo)
(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 dungeon

dungeon is my vague plan for an ocap-safe module layer for Racket

Sign in to participate in the conversation
Octodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!