The idea of having a binary [AST format](https://github.com/tc39/proposal-binary-ast) [is finally](https://www.phoronix.com/scan.php?page=news_item&px=BinaryAST-Proposal) [lifting off in the vast swamps of JavaScript](https://blog.cloudflare.com/binary-ast/)...
Whether this can benefit languages that compile to JS is a separate discussion, but it also has similarity to the Nim "Syntax Skins" idea. Break up the compiler into separate programs (or make it executable in partial compilation modes): a front-end that generates binary AST, and a backend that converts it to C or JS. It would then be possible to fork the front-end to create "sibling languages" for Nim that share the same module ecosystem and backend.