ECOOP 2020
Sun 15 - Tue 17 November 2020 Online Conference
co-located with SPLASH 2020
Mon 16 Nov 2020 19:00 - 19:20 at OOPSLA/ECOOP - M-1
Mon 16 Nov 2020 07:00 - 07:20 at OOPSLA/ECOOP - M-1

Traditionally, web applications have been written as HTML pages with embedded JavaScript code that implements dynamic and interactive features by manipulating the Document Object Model (DOM) through a low-level browser API. However, this unprincipled approach leads to code that is brittle, difficult to understand, non-modular, and does not facilitate incremental update of user-interfaces in response to state changes.

React is a popular framework for constructing web applications that aims to overcome these problems. React applications are written in a declarative and object-oriented style, and consist of components that are organized in a tree structure. Each component has a set of properties representing input parameters, a state consisting of values that may vary over time, and a render method that declaratively specifies the subcomponents of the component. React’s concept of reconciliation determines the impact of state changes and updates the user-interface incrementally by selective mounting and unmounting of subcomponents. At designated points, the React framework invokes lifecycle hooks that enable programmers to perform actions outside the framework such as acquiring and releasing resources needed by a component.

These mechanisms exhibit considerable complexity, but, to our knowledge, no formal specification of React’s semantics exists. This paper presents a small-step operational semantics that captures the essence of React, as a first step towards a long-term goal of developing automatic tools for program understanding, automatic testing, and bug finding for React web applications. To demonstrate that key operations such as mounting, unmounting, and reconciliation terminate, we define the notion of a well-behaved component and prove that well-behavedness is preserved by these operations.

Mon 16 Nov
Times are displayed in time zone: (GMT-05:00) Central Time (US & Canada) change

07:00 - 08:20: M-1Research Papers at OOPSLA/ECOOP +12h
07:00 - 07:20
Talk
Research Papers
Magnus MadsenAarhus University, Ondřej LhotákUniversity of Waterloo, Frank TipNortheastern University
07:20 - 07:40
Talk
Research Papers
Evgenii MoiseenkoSt. Petersburg University / JetBrains Research, Anton PodkopaevMPI-SWS, NRU HSE, JetBrains Research, Ori LahavTel Aviv University, Israel, Orestis MelkonianUtrecht University, Viktor VafeiadisMPI-SWS, Germany
07:40 - 08:00
Talk
Research Papers
Jan de Muijnck-HughesUniversity of Glasgow, Wim VanderbauwhedeUniversity of Glasgow, Edwin BradyUniversity of St. Andrews
08:00 - 08:20
Talk
Research Papers
Alexandros TasosImperial College London, Juliana Franco, Sophia DrossopoulouImperial College London, Tobias WrigstadUppsala University, Sweden, Susan EisenbachImperial College London
DOI
19:00 - 20:20: M-1Research Papers at OOPSLA/ECOOP
19:00 - 19:20
Talk
Research Papers
Magnus MadsenAarhus University, Ondřej LhotákUniversity of Waterloo, Frank TipNortheastern University
19:20 - 19:40
Talk
Research Papers
Evgenii MoiseenkoSt. Petersburg University / JetBrains Research, Anton PodkopaevMPI-SWS, NRU HSE, JetBrains Research, Ori LahavTel Aviv University, Israel, Orestis MelkonianUtrecht University, Viktor VafeiadisMPI-SWS, Germany
19:40 - 20:00
Talk
Research Papers
Jan de Muijnck-HughesUniversity of Glasgow, Wim VanderbauwhedeUniversity of Glasgow, Edwin BradyUniversity of St. Andrews
20:00 - 20:20
Talk
Research Papers
Alexandros TasosImperial College London, Juliana Franco, Sophia DrossopoulouImperial College London, Tobias WrigstadUppsala University, Sweden, Susan EisenbachImperial College London
DOI