[2023-06-12] GUI Team Demo Day #7015
Replies: 7 comments
-
2023-06-07.15-41-31.mp4 |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Fixed problems with typing text in HTML inputs (in new dashboard or inside visualizations). The bug was caused by preventing default on keyboard events. Now we do prevent, but only on some shortcuts (which were a reason we had added the preventing in the first place). On this occasion I also tried to capture events in div created by EnsoGL, not on the entire document, but the focus was hard to manage in the HTML (usually the user needs to click on canvas on various occasions to have the shortcut working), so I gave up. Trace down and fixed last leaks of Application after calling drop on WASM. This fixed the multiple warnings after opening another project in the new dashboard, which indicated that some rendering of the previous project was still there. The main cause of leaks was - as usual - the wrong object being captured in FRP nodes (the object which owns this FRP network). The new FRP system of @wdanilo should make such bugs much harder to introduce. Additionally, I discovered that our "garbage collector" may also cause some leaks, but I'm not sure if it actually happened. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Last week I was finishing work on Undo/Redo improvements (#6950). Applying CR feedback, debugging, and fixing the issues found during the QA (including one old issue). |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Engine-ers focus on non-performance related things - mostly robustness:
|
Beta Was this translation helpful? Give feedback.
-
I finished the implementation of the new FRP engine and created a PR for it that is now being reviewed by Adam. The PR does not have nice description and the code has some places that should be refactored (e.g. a very long file with implementation), but I'm facing some unexpected problems that I'm trying to resolve. The biggest one is that refactoring this file to different files causes a 20-30% performance regression (only refactoring, no logic change) even when compiled with
LTO="fat"
.The new FRP implementation is not yet integrated with the product (this will be a separate PR), however, it's worth mentioning a few of its benefits:
Creation of FRP nodes is a lot faster (50-100x) the old implementation.
Sending FRP events with simple, copyable data is up to 2x faster than the old implementation.
Sending complex data is way faster (depending on the data), as now, the FRP sends the data via references. E.g. sending strings makes it 20-30x faster.
The FRP Network owns now a model, giving direct access to mutable model in some functions, such as
map
.Definition of the FRP nodes is extremely simple, in most cases an FRP node definition is 2-3 lines of code, including the signature. In comparison, definition of a single node in the old implementation was always 50-100 lines long.
There is a new API for defining FRP, that does not require the
frp::extend!
macro anymore! For example, you can now do:In order to deliver the PR, I needed to improve our generics library, which now is nicely implemented and allows for pretty sophisticated operations. Basically, it allows you to work in a generic fashion with fields of ANY DATA STRUCTURE, including your own data structures, even if the fields are of different types (it even allows iteration over the fields and mapping them with type-dependent functions). For example, for tuples, the following are possible:
Beta Was this translation helpful? Give feedback.
All reactions