← Back to context

Comment by ithrow

3 years ago

I don't see how Clojurescript is a good thing here, it's probably the most inefficient and with the most overhead of all the compile to JS languages (with out talking too much about react with penpot uses), even highly optimized pure JS won't come anywhere near the performance of Figma's C++ engine. Yes, performance for this tools matters.

Time will tell. Currently Penpot is using SVG for rendering the canvas, while Figma is using HTML <canvas> element for rendering the canvas, with their own custom engine. I don't know anything about what Penpot is planning, but I'm still excited to see what a SVG canvas could possibly do in competition to Figmas own renderer.

And then the rest of the UI is just basic HTML which any framework/compile-to-js language could handle. It's all about the canvas, and browsers are arguably pretty efficient at render SVGs so again, time will tell what happens.

  • I've been testing penpot, and yes, you can feel a performance penalty for using SVG instead of Canvas... but only after having like 20 screens or more.

    For smaller projects, weirdly enough it's even faster than figma. Specially initial loading times, and switching between project selection, and loading the project. I think I'm gonna use it more for when I have a quick idea, and want to draft something quickly before lose it, just because of that.

Clojuescript is definitely not the most inefficient compile-to-js language. For example, the default data types will be well-designed with persistent data-structures instead of eg singly linked lists. But maybe you’re limiting to some subset in which clojurescript is the slowest.