From a764cdf4c8bffe4f87af7b770f2ad3f605660e60 Mon Sep 17 00:00:00 2001 From: Bor-Yuh Evan Chang Date: Fri, 1 Dec 2023 14:58:54 -0700 Subject: [PATCH] Add SAS'23 --- clouds/ondemandcg-sas23.words.png | Bin 0 -> 54829 bytes clouds/ondemandcg-sas23.words.txt | 5 + index.html | 60 ++++++++---- news.html | 17 +++- papers.html | 19 +++- papers/historia-oopsla23.html | 1 - papers/indistinguishability-oopsla23.html | 1 - papers/ondemandcg-sas23.html | 106 ++++++++++++++++++++++ pl.html.log | 1 + pl.xml | 65 ++++++++++++- 10 files changed, 246 insertions(+), 29 deletions(-) create mode 100644 clouds/ondemandcg-sas23.words.png create mode 100644 clouds/ondemandcg-sas23.words.txt create mode 100644 papers/ondemandcg-sas23.html diff --git a/clouds/ondemandcg-sas23.words.png b/clouds/ondemandcg-sas23.words.png new file mode 100644 index 0000000000000000000000000000000000000000..99d841b6e1bbcd59087cdc70e06a50a4c5dc8ab3 GIT binary patch literal 54829 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 Sergio Mover, Gowtham Kaki, and Bor-Yuh Evan Chang - have had papers accepted for presentation at OOPSLA 2023 in October (Meier et al. and ). + have had papers accepted for presentation at OOPSLA 2023 in October (Meier et al. and Linvill et al.). + + +

2023.06.29: + +
+
+ CUPLV author + Bor-Yuh Evan Chang with collaborators + has had a paper "Lifting On-Demand Analysis to Higher-Order Languages" accepted for presentation at + SAS 2023 in October.
2022.11.01: @@ -250,9 +260,9 @@

Affiliates

2022.02.25: -
+
- CUPLV authors Gowtham Kaki, , and Nicholas V. Lewchenko + CUPLV authors Gowtham Kaki, Prasanth Prahladan, and Nicholas V. Lewchenko have had papers accepted for presentation at PLDI 2022 in June (Kaki et al. and Žikelić et al.).
@@ -367,16 +377,6 @@

Affiliates

Lavaei et al.).
-
2019.11.01: - -
- Please consider applying or encourage your students and postdocs to apply for positions in the Department of Computer Science. - We have multiple openings with one particular interest area being trustworthy software. - Applications - will be evaluated beginning on December 1, 2019, although applications will continue to be evaluated until the position is - filled. - -
2023.11.01: @@ -390,6 +390,13 @@

Affiliates

[1, 2] +
+
2023.06.29: + + Paper by + Schoepe et al. accepted to + SAS 2023. +
2022.11.01: @@ -477,11 +484,6 @@

Affiliates

4].
-
2019.11.01: - - Tenure-track and instructor openings in CS. - -
Ph.D. Positions. We are looking for strong students to join our diverse and @@ -525,7 +527,6 @@

OOPSLA 2023
  • detail
  • doi
  • -
  • pdf
  • Historia: Refuting Callback Reachability with Message-History Logics
    @@ -543,7 +544,6 @@

    OOPSLA 2023
  • detail
  • doi
  • -
  • pdf
  • Verifying Indistinguishability of Privacy-Preserving Protocols
    @@ -555,6 +555,26 @@

    OOPSLA 2023SAS 2023Cascais, PortugalOctober 2023

    + +
    +
    +
    +
    2023
    + +
    Lifting On-Demand Analysis to Higher-Order Languages
    +
    Daniel Schoepe, David Seekatz, Ilina Stoilkovska, Sandro Stucki, Daniel Tattersall, Pauline Bolignano, Franco Raimondi, and Bor-Yuh Evan Chang
    +
    + SAS 2023: + International Static Analysis Symposium + +
    +
    +
    +

    PLDI 2022San Diego, California, USAJune 2022

    diff --git a/news.html b/news.html index 0e0d7f5..9c674f8 100644 --- a/news.html +++ b/news.html @@ -69,7 +69,18 @@

    2023.07.01

    Sergio Mover, Gowtham Kaki, and Bor-Yuh Evan Chang - have had papers accepted for presentation at OOPSLA 2023 in October (Meier et al. and ). + have had papers accepted for presentation at OOPSLA 2023 in October (Meier et al. and Linvill et al.). + +

    +
    +

    2023.06.29

    +

    +

    +
    + CUPLV author + Bor-Yuh Evan Chang with collaborators + has had a paper "Lifting On-Demand Analysis to Higher-Order Languages" accepted for presentation at + SAS 2023 in October.

    @@ -96,9 +107,9 @@

    Ph.D. Positions

    2022.02.25

    -

    +
    - CUPLV authors Gowtham Kaki, , and Nicholas V. Lewchenko + CUPLV authors Gowtham Kaki, Prasanth Prahladan, and Nicholas V. Lewchenko have had papers accepted for presentation at PLDI 2022 in June (Kaki et al. and Žikelić et al.).

    diff --git a/papers.html b/papers.html index 9536a89..f9e526d 100644 --- a/papers.html +++ b/papers.html @@ -46,7 +46,6 @@
    Historia: Refuting Callback Reachability with Message-History Logics
    @@ -64,7 +63,6 @@
    Verifying Indistinguishability of Privacy-Preserving Protocols
    @@ -75,6 +73,23 @@

    +
    +
    +
    +
    2023
    + +
    Lifting On-Demand Analysis to Higher-Order Languages
    +
    Daniel Schoepe, David Seekatz, Ilina Stoilkovska, Sandro Stucki, Daniel Tattersall, Pauline Bolignano, Franco Raimondi, and Bor-Yuh Evan Chang
    +
    + SAS 2023: + International Static Analysis Symposium + +
    +
    +
    diff --git a/papers/historia-oopsla23.html b/papers/historia-oopsla23.html index a3709f5..f5a63ae 100644 --- a/papers/historia-oopsla23.html +++ b/papers/historia-oopsla23.html @@ -61,7 +61,6 @@

    Reference

    Historia: Refuting Callback Reachability with Message-History Logics
    diff --git a/papers/indistinguishability-oopsla23.html b/papers/indistinguishability-oopsla23.html index 7325233..bd9034d 100644 --- a/papers/indistinguishability-oopsla23.html +++ b/papers/indistinguishability-oopsla23.html @@ -61,7 +61,6 @@

    Reference

    Verifying Indistinguishability of Privacy-Preserving Protocols
    diff --git a/papers/ondemandcg-sas23.html b/papers/ondemandcg-sas23.html new file mode 100644 index 0000000..5dd16be --- /dev/null +++ b/papers/ondemandcg-sas23.html @@ -0,0 +1,106 @@ + + + + + + + + SAS 2023 + : + Lifting On-Demand Analysis to Higher-Order Languages | CUPLV + + + +
    +
    + +
    +
    +
    +
    + +
    + +

    Reference

    +
    +
    +
    +
    2023
    + +
    Lifting On-Demand Analysis to Higher-Order Languages
    +
    Daniel Schoepe, David Seekatz, Ilina Stoilkovska, Sandro Stucki, Daniel Tattersall, Pauline Bolignano, Franco Raimondi, and Bor-Yuh Evan Chang
    +
    + SAS 2023: + International Static Analysis Symposium + +
    +
    +
    +

    Abstract

    + +

    In this paper, we present an approach to lift on-demand analysis to higher-order languages. Specifically, our approach bootstraps + an on-demand call graph construction by leveraging a pair of on-demand data flow analyses. Static analysis is increasingly + applied to find subtle bugs or prove deep properties in large, industrial code bases. To effectively do this at scale, analyzers + need to both resolve function calls in a precise manner (i.e., construct a precise call graph) and examine only the relevant + portion of the program (i.e., be on-demand). A strawman strategy to this problem is to use fast, approximate, whole-program + call graph construction algorithms. However, this strategy is generally not adequate for modern languages like JavaScript + that rely heavily on higher-order features, such as callbacks and closures, where scalable approximations often introduce + unacceptable imprecision. This strategy also limits increasingly sophisticated on-demand analyses, which scale by analyzing + only parts of a program as needed: the scalability advantages of an on-demand analysis may be thwarted by the need to construct + a whole-program call graph. The key insight of this paper is that existing on-demand data flow analyses can themselves be + applied in a black-box manner to construct call graphs on demand. We propose a soundness condition for the existing on-demand + analyses with respect to partial call graphs, formalize our algorithm as an abstract domain combinator, and prove it sound + in Isabelle/HOL. Furthermore, we evaluate a prototype implementation of the resulting on-demand call graph construction algorithm + for a subset of JavaScript (using the Synchronized Push-Down Systems framework as the underlying data flow analysis) on benchmarks + making heavy use of higher-order functions. +

    + +

    BibTeX

    +@string{SAS = "International Static Analysis Symposium (SAS)"}
    +@inproceedings{ondemandcg-sas23,
    +  author = {Daniel Schoepe and David Seekatz and Ilina Stoilkovska and Sandro Stucki and Daniel Tattersall and Pauline Bolignano and Franco Raimondi and Bor-Yuh Evan Chang},
    +  title = {Lifting On-Demand Analysis to Higher-Order Languages},
    +  booktitle = SAS,
    +  year = {2023},
    +  pages = {460-484},
    +  
    +}
    +
    +
    + + \ No newline at end of file diff --git a/pl.html.log b/pl.html.log index e723bf7..5724453 100644 --- a/pl.html.log +++ b/pl.html.log @@ -6,6 +6,7 @@ projects.html visiting.html papers/historia-oopsla23.html papers/indistinguishability-oopsla23.html +papers/ondemandcg-sas23.html papers/runtimeassisted-pldi22.html papers/antipotentials-pldi22.html papers/brbo-sas21.html diff --git a/pl.xml b/pl.xml index e11ce1c..dd459f9 100644 --- a/pl.xml +++ b/pl.xml @@ -40,7 +40,20 @@ have had papers accepted for presentation at in October ( and ). + key="indistinguishability-oopsla23" mode="authors"/>). + + + + + Paper by + accepted to + . + + + CUPLV author + with collaborators + has had a paper "" accepted for presentation at + in October. @@ -69,7 +82,7 @@ ] - CUPLV authors , , and + CUPLV authors , , and have had papers accepted for presentation at in June ( and ). @@ -3427,6 +3440,30 @@ Boulder, located at the base of the Rocky Mountain foothills, is consistently aw ECH specification that were missed by other models.

    + + Lifting On-Demand Analysis to Higher-Order Languages + + + + + + + + + + + + https://doi.org/10.1007/978-3-031-44245-2_21 + + + + + 460-484 + 2023 + +

    In this paper, we present an approach to lift on-demand analysis to higher-order languages. Specifically, our approach bootstraps an on-demand call graph construction by leveraging a pair of on-demand data flow analyses. Static analysis is increasingly applied to find subtle bugs or prove deep properties in large, industrial code bases. To effectively do this at scale, analyzers need to both resolve function calls in a precise manner (i.e., construct a precise call graph) and examine only the relevant portion of the program (i.e., be on-demand). A strawman strategy to this problem is to use fast, approximate, whole-program call graph construction algorithms. However, this strategy is generally not adequate for modern languages like JavaScript that rely heavily on higher-order features, such as callbacks and closures, where scalable approximations often introduce unacceptable imprecision. This strategy also limits increasingly sophisticated on-demand analyses, which scale by analyzing only parts of a program as needed: the scalability advantages of an on-demand analysis may be thwarted by the need to construct a whole-program call graph. The key insight of this paper is that existing on-demand data flow analyses can themselves be applied in a black-box manner to construct call graphs on demand. We propose a soundness condition for the existing on-demand analyses with respect to partial call graphs, formalize our algorithm as an abstract domain combinator, and prove it sound in Isabelle/HOL. Furthermore, we evaluate a prototype implementation of the resulting on-demand call graph construction algorithm for a subset of JavaScript (using the Synchronized Push-Down Systems framework as the underlying data flow analysis) on benchmarks making heavy use of higher-order functions.

    +
    +
    RunTime-assisted convergence in replicated data types @@ -6975,6 +7012,24 @@ an application example.

    Eric Wustrow https://ericw.us/trow/ + + Daniel Schoepe + https://schoepe.org/~daniel/ + + + David Seekatz + + + Ilina Stoilkovska + https://istoilkovska.github.io/ + + + Sandro Stucki + https://sstucki.github.io/ + + + Daniel Tattersall + @@ -7366,6 +7421,12 @@ an application example.

    Static Analysis Symposium International + + 2023-10 + Cascais, Portugal + Thirtieth + https://conf.researchr.org/home/sas-2023 + 2021-10 Chicago, Illinois, USA