mflatt
2018-4-14 13:27:31

@leif It looks like adding libatk is straightforward. I’m unclear on how racket/gui libraries would need to adapt to use it, but I can add libatk to “gui-<platform>” package if that’s all you need.


lexi.lambda
2018-4-14 15:50:42

I’m beginning to think it might be possible to implement custom core forms as a derived concept (i.e. something that could go into the syntax/ collection). As I’ve mentioned before, I don’t think propagating the stop list from local-expand would be enough on its own, since you really need to implement some way for subforms to yield to the “custom expander” currently being used. Still, I wonder if it would make sense to, instead of modifying the macroexpander significantly, adding a syntax-local-stop-list function similar to syntax-local-context, then adding a syntax/custom-kernel module that provides a wrapped version of local-expand that respects an internal, phase 1 current-expand parameter. It would require macros to opt into cooperating with parent macros that use custom core forms, but it would eliminate the need to adjust the expander.

The biggest potential pitfall I see is with the syntax taints system, which I don’t completely understand the implications of, since I don’t understand it well enough to know if there would be situations in which the current code inspector would not be strong enough to disarm macro-produced syntax in places where it would be necessary. Still, it seems worth trying. @mflatt and @michael.ballantyne, do you have any thoughts?


mflatt
2018-4-14 21:49:42

@lexi.lambda I may be missing something of what you have in mind, but I’d expect the opt-in mechanism to implicitly (or maybe explicitly) give you the capability to manage relevant taint armings


lexi.lambda
2018-4-14 21:52:23

The truth is that I don’t really understand how that system works. :) I understand in theory how syntax taints work and what they do, and I understand how they work in a controlled environment, but I don’t really get how the code inspector hierarchy works. Namely, if I can just call syntax-disarm to disarm any piece of syntax I want, how can syntax-protect provide any actual security? Therefore, I imagine there are cases when I cannot call syntax-disarm to avoid a taint, but I don’t know what they are.


dedbox
2018-4-15 00:05:09

Oh, cool! I’d never seen syntax taints.


dedbox
2018-4-15 00:05:21

Perl does taint checks on character inputs as a kind of information flow control, so your program can crash if unchecked data leaks into unchecking code. Syntax taints look similar but for program fragments instead of character buffers.


dedbox
2018-4-15 00:05:40

I guess it looks more complicated in Racket because you have more control, and Perl can taint a lot of stuff for you.


dedbox
2018-4-15 00:07:57

But when/where does syntax taint checking happen?


lexi.lambda
2018-4-15 00:11:01

It happens in the macroexpander.


dedbox
2018-4-15 00:11:51

So leaky scopes can be detected before the program runs?


lexi.lambda
2018-4-15 00:12:36

Yes, the program won’t even compile if you expand to tainted syntax.


dedbox
2018-4-15 00:15:29

that’s pretty cool


joshua.erney
2018-4-15 01:12:30

@joshua.erney has joined the channel