Hacker News new | ask | show | jobs
by shellac 1000 days ago
And as a companion piece I really enjoyed Paul Sandoz's 'Code Reflection' talk https://www.youtube.com/watch?v=xbk9_6XA_IY, which considers how java code might understand java code. The sort of thing that enable pushing functions to SQL or GPUs for example.

Edit to add: slides here https://cr.openjdk.org/~psandoz/conferences/2023-JVMLS/Code-...

1 comments

Interesting, but I don't see how operating on the code model is going to be any easier than working on the AST. It seems much more hard to reason about many transformations as compared to manipulating the AST. I do hope they take inspiration from scala and rust macros
(Late reply, sorry)

Well currently you can't get at the AST, only (with some hairy code) bytecode. (The use cases are post-compilation)

But suppose this work did enable that. What Paul is saying is that there are intermediate representations between bytecode and AST that are more helpful for these GPU / SQL / whatever runtime compilers. Representations that capture dataflows, for example. Chance are these compilers would transform an AST to something like this anyway.

See https://mlir.llvm.org/ which is referenced in that talk.

Thanks, that makes sense. I think I approached more from the perspective of a library writer that doesn't want to delve into the depth of language to implement transformations/macros. However it does seem reasonable to have a variety of abstractions to be able to express these transformations in a way closer to the target language