|
|
|
|
|
by escot
1814 days ago
|
|
Luna was really inspiring to me. I'm really interested to see how this goes. I remember Luna previously having rendering perf issues using a canvas element. How is the perf with Enso? Small thing, I noticed this typo: > the ease with which you can ready and write code On: https://enso.org/docs/syntax |
|
You are absolutely right! Luna was our prototype with several issues – slow GUI, low compiler performance, and lack of extensibility. That's why we went into heads-down mode for almost 2 years to make a production version based on customer and user feedback. As a result:
1. Rendering Performance. We have created a custom WebGL-based vector shapes renderer which is really fast (we have tests of rendering over a million of points at 60 FPS on my MacBook): https://github.com/enso-org/ide/tree/develop/src/rust/ensogl
2. Computing Performance. We have rewritten the compiler from scratch. We used the GraalVM / Truffle framework under the hood as our core JIT framework, and we have added tons of custom optimizations on top of it (e.g. to efficiently support immutable memory, currying, etc). As the result, Enso is right now up to 80x faster than Python (benchmarks: https://github.com/enso-org/benchmarks).
3. Extensiblity. The new Enso is a fully polyglot language – it allows you to literally copy-and-paste code in Java, JavaScript, R, and Python (soon also Ruby, Scala, Kotlin, Rust, and C) directly into Enso nodes without the need to write any wrappers and with a close-to-zero performance overhead. You can even create closures in the visual environment and pass them as arguments to functions in e.g. JavaScript, which will call them with objects created in JS, which will be understood by the Enso nodes! See our videos and compiler section here to learn more: https://enso.org/language
Did I answer your questions? :)
--- EDIT ---
Thanks for catching the typo! Fixed :)