3 ms·
Hey, author of Fornjot here. Could you give a bit more detail on what you mean by that? The plan for Fornjot is to use WebAssembly as the intermediate represen
by hannobraun 5y ago
Hey, author of Fornjot here.
Could you give a bit more detail on what you mean by that? The plan for Fornjot is to use WebAssembly as the intermediate representation for models: https://github.com/hannobraun/Fornjot/issues/71 https://github.com/hannobraun/Fornjot/issues/71
- rq1 5y agoHi there. Not at this level. My idea was more like building it as a tower of intermediate languages or representations. Eg. You start with a core and pure language of primitives (for drawing and constraint solving), that should be easy to optimise and build sugared versions/higher level language that will translate/reduce into that core language. It means at the end that we could have a higher level, declarative language/DSL that will generate the right underlying core representation (and you’ll compile that core language to webassembly or llvm ir for instance). That’s how the latest advanced FP programming languages are built. Eg. you can check Idris2[1] or Formality[2] (small enough to understand the construction). The analogy with llvm was to emphasise that you’d have a backend where your optimisation efforts should go, and your frontend(s) where your “ux” and ergonomics efforts should go. Or put another way: build a “low level virtual machine” tailored for your specific topic, then the set of higher level languages that compile to its ir/bytecode. [1]: https://idris2.readthedocs.io/en/latest/implementation/overview.html https://idris2.readthedocs.io/en/latest/implementation/overv... [2]: https://github.com/Kindelia/Kind https://github.com/Kindelia/Kind https://github.com/VictorTaelin/Elementary-Affine-Type-Theory-legacy https://github.com/VictorTaelin/Elementary-Affine-Type-Theor...
- hannobraun 5y agoInteresting, thanks for elaborating! I have had similar thoughts: Having a low-level representation that only makes sure that a geometric object you reference actually exists (and does other low-level validations), then have a wrapper around that, that provides higher-level operations and makes sure your model is also manifold. This isn't thought out yet, just some stuff I've pondered. Thanks for providing more input to my thought process!