{"action":"created","issue":{"url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html/issues/13","repository_url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html","labels_url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html/issues/13/comments","events_url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html/issues/13/events","html_url":"https://github.com/OlivierBlanvillain/monadic-html/issues/13","id":186326801,"number":13,"title":"Explore addition of a Virtual/Incremental DOM mechanism","user":{"login":"OlivierBlanvillain","id":1085297,"avatar_url":"https://avatars2.githubusercontent.com/u/1085297?v=4","gravatar_id":"","url":"https://api.github.com/users/OlivierBlanvillain","html_url":"https://github.com/OlivierBlanvillain","followers_url":"https://api.github.com/users/OlivierBlanvillain/followers","following_url":"https://api.github.com/users/OlivierBlanvillain/following{/other_user}","gists_url":"https://api.github.com/users/OlivierBlanvillain/gists{/gist_id}","starred_url":"https://api.github.com/users/OlivierBlanvillain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OlivierBlanvillain/subscriptions","organizations_url":"https://api.github.com/users/OlivierBlanvillain/orgs","repos_url":"https://api.github.com/users/OlivierBlanvillain/repos","events_url":"https://api.github.com/users/OlivierBlanvillain/events{/privacy}","received_events_url":"https://api.github.com/users/OlivierBlanvillain/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":19,"created_at":"2016-10-31T16:15:17Z","updated_at":"2018-03-17T18:17:09Z","closed_at":null,"author_association":"OWNER","body":"Especially needed to deal with mutable `Seq`s. Here is an abstract for the project:\r\n\r\nFunctional reactive programming (FRP) is a popular paradigm for developing web interfaces, but care needs to be taken in the DOM binding mechanism in order to have good performance.\r\n\r\nState of the art DOM binding libraries such as Facebook React relie on (virtual) DOM diffing mechanism to obtain best performances. On every update, a complete view of the application is generated in memory. The framework then compute a diff between current and previous view to finally apply the minimum changes to the DOM.\r\n\r\nAnother approach, called *precise binding*, makes use of FRP constructs to build views while maintaining a dependency graph of `Rx`s, values susceptible to changes over time. This mechanism, currently using in the [`monadic-html`](https://github.com/OlivierBlanvillain/monadic-html) library, allows changes to be propagate very precisely to the DOM. However, depending on the granularity of mutations, idiomatic `monadic-html` can be inefficient when re-rendering large portions of the DOM for small changes.\r\n\r\nThe goal of this project is to design a DOM diffing algorithm in Scala.js which could be combined with the existing *precise binding* mechanism to obtain an hybrid approach. Depending on time, the project would include benchmarks to compare this hybrid binding approach with existing solutions.\r\n"},"comment":{"url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html/issues/comments/373941390","html_url":"https://github.com/OlivierBlanvillain/monadic-html/issues/13#issuecomment-373941390","issue_url":"https://api.github.com/repos/OlivierBlanvillain/monadic-html/issues/13","id":373941390,"user":{"login":"bbarker","id":916366,"avatar_url":"https://avatars1.githubusercontent.com/u/916366?v=4","gravatar_id":"","url":"https://api.github.com/users/bbarker","html_url":"https://github.com/bbarker","followers_url":"https://api.github.com/users/bbarker/followers","following_url":"https://api.github.com/users/bbarker/following{/other_user}","gists_url":"https://api.github.com/users/bbarker/gists{/gist_id}","starred_url":"https://api.github.com/users/bbarker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bbarker/subscriptions","organizations_url":"https://api.github.com/users/bbarker/orgs","repos_url":"https://api.github.com/users/bbarker/repos","events_url":"https://api.github.com/users/bbarker/events{/privacy}","received_events_url":"https://api.github.com/users/bbarker/received_events","type":"User","site_admin":false},"created_at":"2018-03-17T18:17:08Z","updated_at":"2018-03-17T18:17:08Z","author_association":"CONTRIBUTOR","body":"With regard to data binding and cached values, this is being handled in\n#94. I don't know of any work so far being done on vdom diffing.\n\nOn Sat, Mar 17, 2018 at 1:32 AM, Tao <notifications@github.com> wrote:\n\n> Any update for this issue?\n>\n> —\n> You are receiving this because you were mentioned.\n> Reply to this email directly, view it on GitHub\n> <https://github.com/OlivierBlanvillain/monadic-html/issues/13#issuecomment-373895998>,\n> or mute the thread\n> <https://github.com/notifications/unsubscribe-auth/AA37jslY4Q6AkHt9q4oRbgpvWaif5HNeks5tfJ_ogaJpZM4KlMs4>\n> .\n>\n\n\n\n-- \nBrandon Barker\nbrandon.barker@gmail.com\n"}}
{"actor":{"display_login":"bbarker"}}