Flan: An Expressive and Efficient Datalog Compiler for Program Analysis

Datalog has gained prominence in program analysis due to its expressiveness and ease of use. Its generic fixpoint resolution algorithm over relational domains simplifies the expression of many complex analyses. The performance and scalability issues of early Datalog approaches have been addressed by...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages Jg. 8; H. POPL; S. 2577 - 2609
Hauptverfasser: Abeysinghe, Supun, Xhebraj, Anxhelo, Rompf, Tiark
Format: Journal Article
Sprache:Englisch
Veröffentlicht: New York, NY, USA ACM 02.01.2024
Schlagworte:
ISSN:2475-1421, 2475-1421
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Abstract Datalog has gained prominence in program analysis due to its expressiveness and ease of use. Its generic fixpoint resolution algorithm over relational domains simplifies the expression of many complex analyses. The performance and scalability issues of early Datalog approaches have been addressed by tools such as Soufflé through specialized code generation. Still, while pure Datalog is expressive enough to support a wide range of analyses, there is a growing need for extensions to accommodate increasingly complex analyses This has led to the development of various extensions, such as Flix, Datafun, and Formulog, which enhance Datalog with features like arbitrary lattices and SMT constraints. Most of these extensions recognize the need for full interoperability between Datalog and a full-fledged programming language, a functionality that high-performance systems like Soufflé lack. Specifically, in most cases, they construct languages from scratch with first-class Datalog support, allowing greater flexibility. However, this flexibility often comes at the cost of performance due to the conflicting requirements of prioritizing modularity and abstraction over efficiency. Consequently, achieving both flexibility and compilation to highly-performant specialized code poses a significant challenge. In this work, we reconcile the competing demands of expressiveness and performance with Flan, a Datalog compiler fully embedded in Scala that leverages multi-stage programming to generate specialized code for enhanced performance. Our approach combines the flexibility of Flix with Soufflé’s performance, offering seamless integration with the host language that enables the addition of powerful extensions while generating specialized code for the entire computation. Flan’s simple operator interface allows the addition of an extensive set of features, including arbitrary aggregates, user-defined functions, and lattices, with multiple execution strategies such as binary and multi-way joins, supported by different indexing structures like specialized trees and hash tables, with minimal effort. We evaluate our system on a variety of benchmarks and compare it to established Datalog engines. Our results demonstrate competitive performance and speedups in the range of to compared to state-of-the-art systems for workloads of practical importance.
AbstractList Datalog has gained prominence in program analysis due to its expressiveness and ease of use. Its generic fixpoint resolution algorithm over relational domains simplifies the expression of many complex analyses. The performance and scalability issues of early Datalog approaches have been addressed by tools such as Soufflé through specialized code generation. Still, while pure Datalog is expressive enough to support a wide range of analyses, there is a growing need for extensions to accommodate increasingly complex analyses This has led to the development of various extensions, such as Flix, Datafun, and Formulog, which enhance Datalog with features like arbitrary lattices and SMT constraints. Most of these extensions recognize the need for full interoperability between Datalog and a full-fledged programming language, a functionality that high-performance systems like Soufflé lack. Specifically, in most cases, they construct languages from scratch with first-class Datalog support, allowing greater flexibility. However, this flexibility often comes at the cost of performance due to the conflicting requirements of prioritizing modularity and abstraction over efficiency. Consequently, achieving both flexibility and compilation to highly-performant specialized code poses a significant challenge. In this work, we reconcile the competing demands of expressiveness and performance with Flan, a Datalog compiler fully embedded in Scala that leverages multi-stage programming to generate specialized code for enhanced performance. Our approach combines the flexibility of Flix with Soufflé’s performance, offering seamless integration with the host language that enables the addition of powerful extensions while generating specialized code for the entire computation. Flan’s simple operator interface allows the addition of an extensive set of features, including arbitrary aggregates, user-defined functions, and lattices, with multiple execution strategies such as binary and multi-way joins, supported by different indexing structures like specialized trees and hash tables, with minimal effort. We evaluate our system on a variety of benchmarks and compare it to established Datalog engines. Our results demonstrate competitive performance and speedups in the range of to compared to state-of-the-art systems for workloads of practical importance.
Datalog has gained prominence in program analysis due to its expressiveness and ease of use. Its generic fixpoint resolution algorithm over relational domains simplifies the expression of many complex analyses. The performance and scalability issues of early Datalog approaches have been addressed by tools such as Soufflé through specialized code generation. Still, while pure Datalog is expressive enough to support a wide range of analyses, there is a growing need for extensions to accommodate increasingly complex analyses This has led to the development of various extensions, such as Flix, Datafun, and Formulog, which enhance Datalog with features like arbitrary lattices and SMT constraints. Most of these extensions recognize the need for full interoperability between Datalog and a full-fledged programming language, a functionality that high-performance systems like Soufflé lack. Specifically, in most cases, they construct languages from scratch with first-class Datalog support, allowing greater flexibility. However, this flexibility often comes at the cost of performance due to the conflicting requirements of prioritizing modularity and abstraction over efficiency. Consequently, achieving both flexibility and compilation to highly-performant specialized code poses a significant challenge. In this work, we reconcile the competing demands of expressiveness and performance with Flan, a Datalog compiler fully embedded in Scala that leverages multi-stage programming to generate specialized code for enhanced performance. Our approach combines the flexibility of Flix with Soufflé’s performance, offering seamless integration with the host language that enables the addition of powerful extensions while generating specialized code for the entire computation. Flan’s simple operator interface allows the addition of an extensive set of features, including arbitrary aggregates, user-defined functions, and lattices, with multiple execution strategies such as binary and multi-way joins, supported by different indexing structures like specialized trees and hash tables, with minimal effort. We evaluate our system on a variety of benchmarks and compare it to established Datalog engines. Our results demonstrate competitive performance and speedups in the range of to compared to state-of-the-art systems for workloads of practical importance.
ArticleNumber 86
Author Xhebraj, Anxhelo
Abeysinghe, Supun
Rompf, Tiark
Author_xml – sequence: 1
  givenname: Supun
  orcidid: 0000-0001-6054-2432
  surname: Abeysinghe
  fullname: Abeysinghe, Supun
  email: tabeysin@purdue.edu
  organization: Purdue University, West Lafayette, USA
– sequence: 2
  givenname: Anxhelo
  orcidid: 0009-0008-6670-6408
  surname: Xhebraj
  fullname: Xhebraj, Anxhelo
  email: axhebraj@purdue.edu
  organization: Purdue University, West Lafayette, USA
– sequence: 3
  givenname: Tiark
  orcidid: 0000-0002-2068-3238
  surname: Rompf
  fullname: Rompf, Tiark
  email: tiark@purdue.edu
  organization: Purdue University, West Lafayette, USA
BookMark eNptkE1Lw0AYhBepYK3Fu6e9eYpmv5Kst1LTKhT0oOfwZj_KSrIbdoPYf2-lVUQ8zcA8M4c5RxMfvEHokuQ3hHBxywpGJa1O0JTyUmSEUzL55c_QPKW3PM-JZLxicorWqw78HV54XH8M0aTk3g0Gr3FtrVPO-BHfwwhd2OJl6AfXmYhtiPg5hm2Efl-EbpdcukCnFrpk5kedoddV_bJ8yDZP68flYpMBLcsxK7m2zChBuNZtpagB3gomSQGsFbqCUhZaCC1NlXMjlQVqBVRFIblsjQDFZuj6sKtiSCka2wzR9RB3Dcmbrwua4wV7MvtDKjfC6IIfI7juH_7qwIPqf0a_w08TmmZS
CitedBy_id crossref_primary_10_1145_3720436
crossref_primary_10_1145_3689754
crossref_primary_10_1007_s41870_024_02274_2
Cites_doi 10.1145/2723372.2742796
10.14778/3311880.3311886
10.1007/11785477_2
10.1007/s10990-013-9096-9
10.1145/3591239
10.1017/S0956796819000054
10.1145/2429069.2429128
10.1145/2970276.2970298
10.1145/2784731.2784760
10.1109/CGO51591.2021.9370333
10.1109/ASWEC.2015.15
10.1145/3434304
10.1145/3276509
10.1007/11575467_8
10.1145/1065167.1065169
10.1145/1868294.1868314
10.1007/978-3-031-16767-6_5
10.1145/1640089.1640108
10.5555/153676
10.14778/3407790.3407797
10.1145/2892208.2892226
10.1145/2951913.2951948
10.1145/3293883.3295719
10.5555/42790
10.1145/2908080.2908096
10.1561/2500000014
10.1007/978-3-642-24206-9_14
10.1007/978-3-662-46663-6_7
10.14778/3184470.3184471
10.1145/3622840
10.1145/3371090
10.14778/3282495.3282500
10.1145/3379446
10.1145/996841.996859
10.14778/2002938.2002940
10.1145/3479394.3479415
10.1007/978-3-030-34175-6_12
10.1109/ICDE.2010.5447892
10.1109/CGO51591.2021.9370308
10.1007/978-3-540-73595-3_13
10.1145/2020976.2021006
10.1145/3428209
10.1002/cpe.5643
10.1145/1273920.1273923
10.1109/CGO.2004.1281665
10.1007/3-540-57877-3_26
10.1145/3498696
10.1145/2882903.2915229
10.1145/1926385.1926389
10.1145/199448.199462
10.1145/3622813
10.1109/ICSE.2019.00120
10.1145/1167473.1167488
10.1145/3180143
10.1145/3183713.3196893
10.1145/3589295
10.1145/1142473.1142485
10.1109/CGO53902.2022.9741280
10.1145/3129246
10.1145/2882903.2915244
10.1109/TKDE.2015.2405562
10.1145/3360552
10.1145/258993.259019
10.1145/3486609.3487207
10.1109/ICSE48619.2023.00116
10.1007/978-3-642-22110-1_36
10.5555/551350
10.1109/FOCS.2008.43
10.1145/2590989.2590991
10.1145/3428232
10.1016/0304-3975(96)00072-2
10.1145/3303084.3309490
10.1145/3497776.3517779
10.1145/319838.319859
10.1016/0743-1066(85)90002-0
ContentType Journal Article
Copyright Owner/Author
Copyright_xml – notice: Owner/Author
DBID AAYXX
CITATION
DOI 10.1145/3632928
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList CrossRef

DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2475-1421
EndPage 2609
ExternalDocumentID 10_1145_3632928
3632928
GrantInformation_xml – fundername: DOE U.S. Department of Energy
  grantid: DE-SC0018050
  funderid: https://doi.org/10.13039/100000015
– fundername: NSF (National Science Foundation)
  grantid: 1553471, 1564207, 1918483, 1910216
  funderid: https://doi.org/10.13039/100000001
GroupedDBID AAKMM
AAYFX
ACM
AEFXT
AEJOY
AIKLT
AKRVB
ALMA_UNASSIGNED_HOLDINGS
GUFHI
LHSKQ
M~E
OK1
ROL
AAYXX
CITATION
ID FETCH-LOGICAL-a277t-74df3ec514ddb8c2ea4b53916a3b5d8a796d55d9e804e9cfa2f5a866949be5ac3
ISICitedReferencesCount 3
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001170729400087&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 2475-1421
IngestDate Sat Nov 29 07:45:08 EST 2025
Tue Nov 18 22:24:47 EST 2025
Mon Jul 07 16:40:28 EDT 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue POPL
Keywords Logic Programming
Datalog
Program Analysis
Generative Programming
Language English
License This work is licensed under a Creative Commons Attribution International 4.0 License.
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-a277t-74df3ec514ddb8c2ea4b53916a3b5d8a796d55d9e804e9cfa2f5a866949be5ac3
ORCID 0000-0001-6054-2432
0009-0008-6670-6408
0000-0002-2068-3238
OpenAccessLink https://dl.acm.org/doi/10.1145/3632928
PageCount 33
ParticipantIDs crossref_primary_10_1145_3632928
crossref_citationtrail_10_1145_3632928
acm_primary_3632928
PublicationCentury 2000
PublicationDate 2024-01-02
PublicationDateYYYYMMDD 2024-01-02
PublicationDate_xml – month: 01
  year: 2024
  text: 2024-01-02
  day: 02
PublicationDecade 2020
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationTitle Proceedings of ACM on programming languages
PublicationTitleAbbrev ACM PACMPL
PublicationYear 2024
Publisher ACM
Publisher_xml – name: ACM
References (bib86) 2023; 1
(bib29) 2020; 13
(bib79) 1997
(bib27) 2020
(bib32) 2006
(bib38) 2022; 34
(bib87) 2020
(bib67) 2022
(bib92) 2004
(bib42) 2004
(bib97) 2021
(bib12) 2008
(bib54) 2022
(bib61) 2012; 25
(bib94) 2020
(bib73) 2015; 2
(bib24) 2018
(bib72) 2016
(bib6) 1994
(bib5) 2019
(bib51) 2011; 4
(bib84) 2014
(bib47) 2016
(bib45) 2006
(bib20) 2023; 7
(bib44) 2011
(bib64) 2019
(bib17) 2006b
(bib70) 2015; 27
(bib60) 2019; 29
(bib78) 2017
(bib71) 2016
(bib57) 1994
(bib21) 2009
(bib98) 2020; 42
(bib52) 2018; 65
(bib30) 1971; 25
(bib28) 2014; 37
(bib1) 2017; 42
(bib3) 1995
(bib7) 2017
(bib15) 2014
(bib48) 2015
(bib14) 2007
(bib89) 2023
(bib19) 2022
(bib99) 2022
(bib16) 2006a
(bib77) 2016
(bib81) 2023
(bib10) 2020; 4
(bib85) 2011; 36
(bib31) 2019
(bib35) 1993
(bib25) 2021
(bib58) 1995
(bib49) 2013
(bib90) 2022
(bib96) 2022; 6
(bib76) 2018; 2
(bib63) 2013
(bib9) 2015
(bib50) 2019
(bib26) 2019; 12
(bib36) 2019a
(bib37) 2019b
(bib80) 2018
(bib40) 2010
(bib93) 2021; 5
(bib59) 2015
(bib82) 1988
(bib18) 2021
(bib43) 2021
(bib65) 1996; 167
(bib13) 2020; 4
(bib66) 2023; 7
(bib95) 2023
(bib68) 2016
(bib4) 2015
(bib22) 1985; 2
(bib8) 2022
(bib46) 2022
(bib41) 2005
(bib53) 2013; 42
(bib55) 2018; 11
(bib83) 1989
(bib91) 2005
(bib33) 2022
(bib75) 2018; 12
(bib39) 1986
(bib56) 2022
(bib62) 2010
(bib11) 2016
(bib74) 2010
(bib88) 2019; 3
(bib2) 2023
(bib34) 2011
(bib23) 2007
(bib69) 2015
e_1_3_1_81_1
e_1_3_1_66_1
e_1_3_1_24_1
e_1_3_1_47_1
Ullman. Jeffrey D. (e_1_3_1_84_1) 1989
e_1_3_1_89_1
e_1_3_1_62_1
e_1_3_1_20_1
e_1_3_1_43_1
e_1_3_1_85_1
e_1_3_1_6_1
e_1_3_1_2_1
e_1_3_1_93_1
e_1_3_1_70_1
Flores-Montoya Antonio (e_1_3_1_28_1) 2020
e_1_3_1_55_1
e_1_3_1_36_1
e_1_3_1_78_1
e_1_3_1_13_1
e_1_3_1_51_1
e_1_3_1_97_1
e_1_3_1_32_1
e_1_3_1_74_1
e_1_3_1_17_1
e_1_3_1_59_1
e_1_3_1_61_1
e_1_3_1_80_1
Antoniadis Tony (e_1_3_1_8_1) 2017
e_1_3_1_23_1
e_1_3_1_69_1
e_1_3_1_88_1
e_1_3_1_46_1
e_1_3_1_42_1
e_1_3_1_65_1
e_1_3_1_27_1
e_1_3_1_3_1
e_1_3_1_50_1
e_1_3_1_92_1
e_1_3_1_35_1
e_1_3_1_58_1
e_1_3_1_77_1
e_1_3_1_12_1
e_1_3_1_54_1
e_1_3_1_73_1
e_1_3_1_96_1
e_1_3_1_16_1
e_1_3_1_39_1
Futamura Yoshihiko (e_1_3_1_31_1) 1971; 25
e_1_3_1_83_1
e_1_3_1_60_1
e_1_3_1_22_1
e_1_3_1_45_1
e_1_3_1_68_1
Essertel Grégory M. (e_1_3_1_25_1) 2018
e_1_3_1_41_1
e_1_3_1_87_1
e_1_3_1_64_1
e_1_3_1_4_1
e_1_3_1_26_1
e_1_3_1_72_1
e_1_3_1_91_1
e_1_3_1_100_1
e_1_3_1_34_1
e_1_3_1_57_1
e_1_3_1_99_1
e_1_3_1_30_1
e_1_3_1_76_1
e_1_3_1_11_1
e_1_3_1_53_1
e_1_3_1_95_1
e_1_3_1_15_1
e_1_3_1_38_1
e_1_3_1_19_1
Freedman Craig (e_1_3_1_29_1) 2014; 37
e_1_3_1_82_1
e_1_3_1_44_1
e_1_3_1_67_1
Lars Ole Andersen (e_1_3_1_7_1) 1994
e_1_3_1_9_1
e_1_3_1_40_1
e_1_3_1_63_1
e_1_3_1_86_1
e_1_3_1_21_1
e_1_3_1_5_1
e_1_3_1_48_1
Blackburn S. M. (e_1_3_1_18_1) 2006
e_1_3_1_71_1
e_1_3_1_94_1
e_1_3_1_90_1
e_1_3_1_10_1
e_1_3_1_33_1
e_1_3_1_56_1
e_1_3_1_79_1
e_1_3_1_14_1
e_1_3_1_52_1
e_1_3_1_75_1
e_1_3_1_98_1
McSherry Frank (e_1_3_1_49_1) 2015
e_1_3_1_37_1
References_xml – start-page: 131
  year: 2015
  end-page: 150
  ident: bib4
  article-title: Staged Points-to Analysis for Large Code Bases.
  publication-title: CC (Lecture Notes in Computer Science, Vol. 9031).
– start-page: 31
  year: 2019a
  end-page: 40
  ident: bib36
  publication-title: PMAM@PPoPP.
– start-page: 49
  year: 1995
  end-page: 61
  ident: bib58
  publication-title: POPL.
– volume: 7
  start-page: 236:1
  issue: OOPSLA2
  year: 2023
  end-page: 236:31
  ident: bib20
  article-title: Graph IRs for Impure Higher-Order Languages: Making Aggressive Optimizations Affordable with Precise Effect Dependencies
  publication-title: Proc. ACM Program. Lang.
– start-page: 151
  year: 1986
  end-page: 161
  ident: bib39
  publication-title: LISP and Functional Programming.
– volume: 2
  start-page: 1
  issue: 1
  year: 2015
  end-page: 69
  ident: bib73
  article-title: Pointer Analysis.
  publication-title: Found. Trends Program. Lang.
– year: 2019
  ident: bib50
  article-title: AutoGraph: Imperative-style Coding with Graph-based Performance
  publication-title: MLSys.
– volume: 29
  start-page: e9
  year: 2019
  ident: bib60
  article-title: A SQL to C compiler in 500 lines of code.
  publication-title: J. Funct. Program.
– year: 1988
  ident: bib82
  publication-title: Principles of Database and Knowledge-Base Systems, Volume I. Principles of computer science series
– volume: 4
  start-page: 22:1
  issue: POPL
  year: 2020
  end-page: 22:28
  ident: bib10
  article-title: Seminaïve evaluation for a higher-order functional language.
  publication-title: Proc. ACM Program. Lang.
– start-page: 457
  year: 2011
  end-page: 462
  ident: bib34
  article-title: μZ-An Efficient Engine for Fixed Points with Constraints.
  publication-title: CAV (Lecture Notes in Computer Science, Vol. 6806).
– start-page: 97
  year: 2006
  end-page: 108
  ident: bib45
  publication-title: SIGMOD Conference.
– year: 2013
  ident: bib49
  article-title: Differential Dataflow.
  publication-title: CIDR.
– start-page: 1371
  year: 2015
  end-page: 1382
  ident: bib9
  publication-title: SIGMOD Conference.
– volume: 25
  start-page: 165
  issue: 1
  year: 2012
  end-page: 207
  ident: bib61
  article-title: Scala-Virtualized: linguistic reuse for deep embeddings
  publication-title: High. Order Symb. Comput.
– year: 1994
  ident: bib6
  publication-title: Program analysis and specialization for the C programming language.
– start-page: 202
  year: 2022
  end-page: 206
  ident: bib46
  article-title: Flix: A Meta Programming Language for Datalog
  publication-title: Datalog (CEUR Workshop Proceedings, Vol. 3203).
– start-page: 56
  year: 2019
  end-page: 67
  ident: bib64
  article-title: Differential Datalog.
  publication-title: Datalog (CEUR Workshop Proceedings, Vol. 2368).
– volume: 167
  start-page: 131
  issue: 1&2
  year: 1996
  end-page: 170
  ident: bib65
  article-title: Precise Interprocedural Dataflow Analysis with Applications to Constant Propagation.
  publication-title: Theor. Comput. Sci.
– start-page: 307
  year: 2018
  end-page: 322
  ident: bib80
  publication-title: SIGMOD Conference.
– start-page: 2
  year: 2006
  end-page: 27
  ident: bib32
  article-title: codeQuest: Scalable Source Code Queries with Datalog.
  publication-title: ECOOP (Lecture Notes in Computer Science, Vol. 4067).
– volume: 34
  issue: 2
  year: 2022
  ident: bib38
  article-title: Specializing parallel data structures for Datalog.
  publication-title: Concurr. Comput. Pract. Exp.
– start-page: 127
  year: 2010
  end-page: 136
  ident: bib62
  publication-title: GPCE.
– start-page: 75
  year: 2004
  end-page: 88
  ident: bib42
– start-page: 2
  year: 2015
  end-page: 9
  ident: bib59
  publication-title: ICFP.
– start-page: 77
  year: 2022
  end-page: 88
  ident: bib67
  publication-title: CC.
– year: 2017
  ident: bib78
  article-title: IncAL: A DSL for Incremental Program Analysis with Lattices
  publication-title: Proceedings of the International Workshop on Incremental Computing (IC).
– start-page: 1
  year: 2022
  end-page: 6
  ident: bib99
  article-title: Logging an Egg: Datalog on E-Graphs
  publication-title: (EGRAPHS 2022).
– start-page: 1176
  year: 2019
  end-page: 1186
  ident: bib31
  publication-title: ICSE.
– start-page: 183
  year: 2007
  end-page: 198
  ident: bib23
  article-title: Efficient E-Matching for SMT Solvers.
  publication-title: CADE (Lecture Notes in Computer Science, Vol. 4603).
– volume: 12
  start-page: 141
  issue: 2
  year: 2018
  end-page: 153
  ident: bib75
  article-title: Automatic Index Selection for Large-Scale Datalog Computation.
  publication-title: Proc. VLDB Endow.
– volume: 4
  start-page: 141:1
  issue: OOPSLA
  year: 2020
  end-page: 141:31
  ident: bib13
  article-title: Formulog: Datalog for SMT-based static analysis
  publication-title: Proc. ACM Program. Lang.
– start-page: 1135
  year: 2016
  end-page: 1149
  ident: bib72
  publication-title: SIGMOD Conference.
– start-page: 97
  year: 2005
  end-page: 118
  ident: bib91
  article-title: Using Datalog with Binary Decision Diagrams for Program Analysis.
  publication-title: APLAS (Lecture Notes in Computer Science, Vol. 3780).
– start-page: 13
  year: 2007
  end-page: 24
  ident: bib14
  publication-title: PPDP.
– start-page: 3
  year: 2011
  end-page: 16
  ident: bib44
  publication-title: POPL.
– volume: 6
  start-page: 1
  year: 2022
  end-page: 22
  ident: bib96
  publication-title: Proc. ACM Program. Lang.
– start-page: 739
  year: 2008
  end-page: 748
  ident: bib12
  article-title: Size Bounds and Query Plans for Relational Joins.
  publication-title: FOCS. IEEE Computer Society
– volume: 36
  start-page: 52
  issue: 5
  year: 2011
  end-page: 53
  ident: bib85
  article-title: The art of multiprocessor programming by Maurice Herlihy and Nir Shavit.
  publication-title: ACM SIGSOFT Softw. Eng. Notes
– start-page: 96
  year: 2014
  end-page: 106
  ident: bib84
  article-title: Triejoin: A Simple, Worst-Case Optimal Join Algorithm.
  publication-title: ICDT.
– start-page: 245
  year: 2010
  end-page: 251
  ident: bib74
  article-title: Using Datalog for Fast and Easy Program Analysis.
  publication-title: Datalog (Lecture Notes in Computer Science, Vol. 6702).
– start-page: 320
  year: 2016
  end-page: 331
  ident: bib77
  publication-title: ASE.
– start-page: 169
  year: 2006a
  end-page: 190
  ident: bib16
  publication-title: OOPSLA ‘06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications
– start-page: 131
  year: 2004
  end-page: 144
  ident: bib92
  publication-title: PLDI.
– start-page: 327
  year: 2019b
  end-page: 339
  ident: bib37
  publication-title: PPoPP.
– year: 2023
  ident: bib2
  article-title: Architecting Intermediate Layers for Efficient Composition of Data Management and Machine Learning Systems.
  publication-title: CoRR
– volume: 5
  start-page: 1
  year: 2021
  end-page: 29
  ident: bib93
  publication-title: Proc. ACM Program. Lang.
– start-page: 243
  year: 2009
  end-page: 262
  ident: bib21
  publication-title: OOPSLA.
– start-page: 799
  year: 2018
  end-page: 815
  ident: bib24
  publication-title: OSDI.
– year: 1993
  ident: bib35
  publication-title: Partial evaluation and automatic program generation.
– start-page: 225
  year: 2019
  end-page: 243
  ident: bib5
  article-title: Lightweight Functional Logic Meta-Programming.
  publication-title: APLAS (Lecture Notes in Computer Science, Vol. 11893).
– volume: 7
  start-page: 264:1
  issue: OOPSLA2
  year: 2023
  end-page: 264:26
  ident: bib66
  article-title: Bring Your Own Data Structures to Datalog.
  publication-title: Proc. ACM Program. Lang.
– volume: 13
  start-page: 1891
  issue: 11
  year: 2020
  end-page: 1904
  ident: bib29
  article-title: Adopting Worst-Case Optimal Joins in Relational Database Systems.
  publication-title: Proc. VLDB Endow.
– volume: 1
  start-page: 150:1
  issue: 2
  year: 2023
  end-page: 150:23
  ident: bib86
  article-title: Free Join: Unifying Worst-Case Optimal and Traditional Joins
  publication-title: Proc. ACM Manag. Data
– start-page: 214
  year: 2016
  end-page: 227
  ident: bib11
– year: 2022
  ident: bib90
  publication-title: DashMap.
– start-page: 1316
  year: 2023
  end-page: 1328
  ident: bib89
  publication-title: ICSE.
– start-page: 389
  year: 1994
  end-page: 403
  ident: bib57
  article-title: Solving Demand Versions of Interprocedural Analysis Problems.
  publication-title: CC (Lecture Notes in Computer Science, Vol. 786).
– start-page: 1075
  year: 2020
  end-page: 1092
  ident: bib27
  publication-title: USENIX Security Symposium.
– volume: 65
  start-page: 16:1
  issue: 3
  year: 2018
  end-page: 16:40
  ident: bib52
  article-title: Worst-case Optimal Join Algorithms.
  publication-title: J. ACM
– year: 2023
  ident: bib81
  publication-title: Eclair-lang.
– volume: 42
  start-page: 5
  issue: 4
  year: 2013
  end-page: 16
  ident: bib53
  article-title: Skew strikes back: new developments in the theory of join algorithms
  publication-title: SIGMOD Rec.
– start-page: 497
  year: 2013
  end-page: 510
  ident: bib63
  publication-title: POPL.
– volume: 4
  start-page: 539
  issue: 9
  year: 2011
  end-page: 550
  ident: bib51
  article-title: Efficiently Compiling Efficient Query Plans for Modern Hardware.
  publication-title: Proc. VLDB Endow.
– volume: 12
  start-page: 695
  issue: 6
  year: 2019
  end-page: 708
  ident: bib26
  article-title: Scaling-up in-Memory Datalog Processing: Observations and Techniques
  publication-title: Proc. VLDB Endow.
– start-page: 39
  year: 2021
  end-page: 51
  ident: bib18
  publication-title: CGO.
– year: 1995
  ident: bib3
  publication-title: Foundations of Databases.
– year: 2014
  ident: bib15
  publication-title: CoRR
– year: 2020
  ident: bib94
  publication-title: ekzhang/crepe: Datalog compiler embedded in Rust as a procedural macro
– start-page: 53
  year: 2022
  end-page: 65
  ident: bib19
  publication-title: CGO.
– start-page: 164:1
  issue: 4
  year: 2020
  end-page: 164:33
  ident: bib87
  publication-title: Proc. ACM Program. Lang.
– start-page: 20:1
  year: 2021
  end-page: 20:16
  ident: bib97
  publication-title: PPDP.
– year: 2022
  ident: bib56
  publication-title: Rayon: A data parallelism library for Rust
– volume: 2
  start-page: 139:1
  issue: OOPSLA
  year: 2018
  end-page: 139:29
  ident: bib76
  article-title: Incrementalizing lattice-based program analyses in Datalog.
  publication-title: Proc. ACM Program. Lang.
– start-page: 203
  year: 1997
  end-page: 217
  ident: bib79
  publication-title: PEPM.
– start-page: 1
  year: 2005
  end-page: 12
  ident: bib41
  publication-title: PODS.
– year: 2023
  ident: bib95
  article-title: Better Together: Unifying Datalog and Equality Saturation
  publication-title: CoRR
– start-page: 156
  year: 2021
  end-page: 169
  ident: bib25
  publication-title: GPCE.
– volume: 3
  start-page: 126:1
  issue: OOPSLA
  year: 2019
  end-page: 126:32
  ident: bib88
  article-title: Staged abstract interpreters: fast and modular whole-program analysis via meta-programming
  publication-title: Proc. ACM Program. Lang.
– start-page: 28
  year: 2015
  end-page: 37
  ident: bib69
  publication-title: ASWEC.
– start-page: 194
  year: 2016
  end-page: 208
  ident: bib47
  publication-title: PLDI.
– volume: 37
  start-page: 22
  issue: 1
  year: 2014
  end-page: 30
  ident: bib28
  article-title: Compilation in the Microsoft SQL Server Hekaton Engine.
  publication-title: IEEE Data Eng. Bull.
– year: 2006b
  ident: bib17
  article-title: The DaCapo Benchmarks: Java Benchmarking Development and Analysis (Extended Version).
  publication-title: Technical Report TR-CS-06-01
– start-page: 83
  year: 2022
  end-page: 102
  ident: bib8
  article-title: Building a Join Optimizer for Soufflé.
  publication-title: LOPSTR (Lecture Notes in Computer Science, Vol. 13474).
– start-page: 196
  year: 2016
  end-page: 206
  ident: bib68
  publication-title: CC.
– volume: 2
  start-page: 1
  issue: 1
  year: 1985
  end-page: 15
  ident: bib22
  article-title: Horn Clauses Queries and Generalizations.
  publication-title: J. Log. Program.
– year: 2015
  ident: bib48
  article-title: Scalability! But at what COST?.
  publication-title: HotOS.
– start-page: 1907
  year: 2016
  end-page: 1922
  ident: bib71
  publication-title: SIGMOD Conference.
– volume: 11
  start-page: 663
  issue: 6
  year: 2018
  end-page: 676
  ident: bib55
  article-title: Quickstep: A Data Platform Based on the Scaling-Up Approach
  publication-title: Proc. VLDB Endow.
– volume: 42
  start-page: 7:1
  issue: 2
  year: 2020
  end-page: 7:35
  ident: bib98
  article-title: Debugging Large-scale Datalog: A Scalable Provenance Evaluation Strategy
  publication-title: ACM Trans. Program. Lang. Syst.
– volume: 25
  start-page: 45
  year: 1971
  end-page: 50
  ident: bib30
  article-title: Partial evaluation of computation process-an approach to a compiler-compiler.
  publication-title: Systems, Computers, Controls
– volume: 42
  start-page: 20:1
  issue: 4
  year: 2017
  end-page: 20:44
  ident: bib1
  article-title: EmptyHeaded: A Relational Engine for Graph Processing
  publication-title: ACM Trans. Database Syst.
– year: 2022
  ident: bib33
  publication-title: User defined aggregate.
– volume: 27
  start-page: 1824
  issue: 7
  year: 2015
  end-page: 1837
  ident: bib70
  article-title: SociaLite: An Efficient Graph Query Language Based on Datalog
  publication-title: IEEE Trans. Knowl. Data Eng.
– start-page: 25
  year: 2017
  end-page: 30
  ident: bib7
  publication-title: SOAP@PLDI.
– start-page: 7:1
  year: 2022
  end-page: 7:28
  ident: bib54
  article-title: Functional Programming with Datalog.
  publication-title: ECOOP (LIPIcs, Vol. 222)
– start-page: 984
  year: 1989
  end-page: 987
  ident: bib83
  publication-title: Principles of Database and Knowledge-Base Systems, Volume II.
– start-page: 2
  year: 2021
  end-page: 14
  ident: bib43
  article-title: MLIR: Scaling Compiler Infrastructure for Domain Specific Computation
  publication-title: 2021 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).
– start-page: 613
  year: 2010
  end-page: 624
  ident: bib40
  publication-title: ICDE.
– ident: e_1_3_1_10_1
  doi: 10.1145/2723372.2742796
– ident: e_1_3_1_27_1
  doi: 10.14778/3311880.3311886
– ident: e_1_3_1_33_1
  doi: 10.1007/11785477_2
– volume-title: HotOS.
  year: 2015
  ident: e_1_3_1_49_1
– ident: e_1_3_1_62_1
  doi: 10.1007/s10990-013-9096-9
– volume: 37
  start-page: 22
  issue: 1
  year: 2014
  ident: e_1_3_1_29_1
  article-title: Compilation in the Microsoft SQL Server Hekaton Engine.
  publication-title: IEEE Data Eng. Bull.
– ident: e_1_3_1_96_1
  doi: 10.1145/3591239
– ident: e_1_3_1_61_1
  doi: 10.1017/S0956796819000054
– ident: e_1_3_1_64_1
  doi: 10.1145/2429069.2429128
– ident: e_1_3_1_16_1
– ident: e_1_3_1_78_1
  doi: 10.1145/2970276.2970298
– ident: e_1_3_1_60_1
  doi: 10.1145/2784731.2784760
– ident: e_1_3_1_19_1
  doi: 10.1109/CGO51591.2021.9370333
– ident: e_1_3_1_70_1
  doi: 10.1109/ASWEC.2015.15
– ident: e_1_3_1_47_1
– ident: e_1_3_1_94_1
  doi: 10.1145/3434304
– volume: 25
  start-page: 45
  year: 1971
  ident: e_1_3_1_31_1
  article-title: Partial evaluation of computation process-an approach to a compiler-compiler.
  publication-title: Systems, Computers, Controls
– ident: e_1_3_1_77_1
  doi: 10.1145/3276509
– ident: e_1_3_1_51_1
– ident: e_1_3_1_92_1
  doi: 10.1007/11575467_8
– ident: e_1_3_1_42_1
  doi: 10.1145/1065167.1065169
– ident: e_1_3_1_65_1
– ident: e_1_3_1_63_1
  doi: 10.1145/1868294.1868314
– ident: e_1_3_1_9_1
  doi: 10.1007/978-3-031-16767-6_5
– ident: e_1_3_1_22_1
  doi: 10.1145/1640089.1640108
– ident: e_1_3_1_36_1
  doi: 10.5555/153676
– ident: e_1_3_1_95_1
– ident: e_1_3_1_30_1
  doi: 10.14778/3407790.3407797
– start-page: 1075
  volume-title: USENIX Security Symposium.
  year: 2020
  ident: e_1_3_1_28_1
– ident: e_1_3_1_69_1
  doi: 10.1145/2892208.2892226
– ident: e_1_3_1_12_1
  doi: 10.1145/2951913.2951948
– ident: e_1_3_1_38_1
  doi: 10.1145/3293883.3295719
– ident: e_1_3_1_83_1
  doi: 10.5555/42790
– ident: e_1_3_1_48_1
  doi: 10.1145/2908080.2908096
– ident: e_1_3_1_74_1
  doi: 10.1561/2500000014
– ident: e_1_3_1_75_1
  doi: 10.1007/978-3-642-24206-9_14
– ident: e_1_3_1_5_1
  doi: 10.1007/978-3-662-46663-6_7
– ident: e_1_3_1_56_1
  doi: 10.14778/3184470.3184471
– ident: e_1_3_1_67_1
  doi: 10.1145/3622840
– ident: e_1_3_1_11_1
  doi: 10.1145/3371090
– ident: e_1_3_1_76_1
  doi: 10.14778/3282495.3282500
– ident: e_1_3_1_99_1
  doi: 10.1145/3379446
– ident: e_1_3_1_93_1
  doi: 10.1145/996841.996859
– ident: e_1_3_1_52_1
  doi: 10.14778/2002938.2002940
– ident: e_1_3_1_98_1
  doi: 10.1145/3479394.3479415
– ident: e_1_3_1_3_1
– ident: e_1_3_1_79_1
  doi: 10.1145/2970276.2970298
– ident: e_1_3_1_6_1
  doi: 10.1007/978-3-030-34175-6_12
– ident: e_1_3_1_41_1
  doi: 10.1109/ICDE.2010.5447892
– ident: e_1_3_1_44_1
  doi: 10.1109/CGO51591.2021.9370308
– start-page: 25
  volume-title: SOAP@PLDI.
  year: 2017
  ident: e_1_3_1_8_1
– ident: e_1_3_1_24_1
  doi: 10.1007/978-3-540-73595-3_13
– ident: e_1_3_1_86_1
  doi: 10.1145/2020976.2021006
– ident: e_1_3_1_14_1
  doi: 10.1145/3428209
– ident: e_1_3_1_39_1
  doi: 10.1002/cpe.5643
– ident: e_1_3_1_15_1
  doi: 10.1145/1273920.1273923
– ident: e_1_3_1_43_1
  doi: 10.1109/CGO.2004.1281665
– ident: e_1_3_1_58_1
  doi: 10.1007/3-540-57877-3_26
– ident: e_1_3_1_97_1
  doi: 10.1145/3498696
– ident: e_1_3_1_55_1
– ident: e_1_3_1_73_1
  doi: 10.1145/2882903.2915229
– ident: e_1_3_1_45_1
  doi: 10.1145/1926385.1926389
– ident: e_1_3_1_59_1
  doi: 10.1145/199448.199462
– ident: e_1_3_1_100_1
– ident: e_1_3_1_21_1
  doi: 10.1145/3622813
– ident: e_1_3_1_57_1
– ident: e_1_3_1_32_1
  doi: 10.1109/ICSE.2019.00120
– ident: e_1_3_1_17_1
  doi: 10.1145/1167473.1167488
– ident: e_1_3_1_53_1
  doi: 10.1145/3180143
– ident: e_1_3_1_81_1
  doi: 10.1145/3183713.3196893
– ident: e_1_3_1_87_1
  doi: 10.1145/3589295
– ident: e_1_3_1_46_1
  doi: 10.1145/1142473.1142485
– ident: e_1_3_1_20_1
  doi: 10.1109/CGO53902.2022.9741280
– ident: e_1_3_1_2_1
  doi: 10.1145/3129246
– start-page: 799
  volume-title: OSDI.
  year: 2018
  ident: e_1_3_1_25_1
– ident: e_1_3_1_72_1
  doi: 10.1145/2882903.2915244
– volume-title: Program analysis and specialization for the C programming language.
  year: 1994
  ident: e_1_3_1_7_1
– ident: e_1_3_1_71_1
  doi: 10.1109/TKDE.2015.2405562
– year: 2006
  ident: e_1_3_1_18_1
  article-title: The DaCapo Benchmarks: Java Benchmarking Development and Analysis (Extended Version).
  publication-title: Technical Report TR-CS-06-01
– ident: e_1_3_1_89_1
  doi: 10.1145/3360552
– ident: e_1_3_1_80_1
  doi: 10.1145/258993.259019
– ident: e_1_3_1_26_1
  doi: 10.1145/3486609.3487207
– ident: e_1_3_1_90_1
  doi: 10.1109/ICSE48619.2023.00116
– ident: e_1_3_1_35_1
  doi: 10.1007/978-3-642-22110-1_36
– ident: e_1_3_1_4_1
  doi: 10.5555/551350
– ident: e_1_3_1_82_1
– ident: e_1_3_1_13_1
  doi: 10.1109/FOCS.2008.43
– ident: e_1_3_1_54_1
  doi: 10.1145/2590989.2590991
– ident: e_1_3_1_85_1
– ident: e_1_3_1_88_1
  doi: 10.1145/3428232
– start-page: 984
  volume-title: Principles of Database and Knowledge-Base Systems, Volume II.
  year: 1989
  ident: e_1_3_1_84_1
– ident: e_1_3_1_91_1
– ident: e_1_3_1_66_1
  doi: 10.1016/0304-3975(96)00072-2
– ident: e_1_3_1_37_1
  doi: 10.1145/3303084.3309490
– ident: e_1_3_1_68_1
  doi: 10.1145/3497776.3517779
– ident: e_1_3_1_40_1
  doi: 10.1145/319838.319859
– ident: e_1_3_1_23_1
  doi: 10.1016/0743-1066(85)90002-0
– ident: e_1_3_1_34_1
– ident: e_1_3_1_50_1
SSID ssj0001934839
Score 2.3012831
Snippet Datalog has gained prominence in program analysis due to its expressiveness and ease of use. Its generic fixpoint resolution algorithm over relational domains...
SourceID crossref
acm
SourceType Enrichment Source
Index Database
Publisher
StartPage 2577
SubjectTerms Automated static analysis
Compilers
Constraint and logic programming
Logic and databases
Program analysis
Software and its engineering
Theory of computation
SubjectTermsDisplay Software and its engineering -- Automated static analysis
Software and its engineering -- Compilers
Theory of computation -- Constraint and logic programming
Theory of computation -- Logic and databases
Theory of computation -- Program analysis
Title Flan: An Expressive and Efficient Datalog Compiler for Program Analysis
URI https://dl.acm.org/doi/10.1145/3632928
Volume 8
WOSCitedRecordID wos001170729400087&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVHPJ
  databaseName: ROAD: Directory of Open Access Scholarly Resources
  customDbUrl:
  eissn: 2475-1421
  dateEnd: 99991231
  omitProxy: false
  ssIdentifier: ssj0001934839
  issn: 2475-1421
  databaseCode: M~E
  dateStart: 20170101
  isFulltext: true
  titleUrlDefault: https://road.issn.org
  providerName: ISSN International Centre
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3Nb9MwFLfK4MBlwACtG0w-IG6B1rHjeLdqdOOwjRwG6q1ybEfd1GZV11U9jX-d5_ijoZoEHLhYkT-ixO-n5-f3idAHVZZcsixNqDY6oVVGEgEX50RWPa1tSizdVIn4cc4vL_PRSBSdzs8QC7Oa8rrO12sx_6-khj4gtg2d_Qdyx5dCBzwD0aEFskP7V4Q_ncraq_uGa-fmunI2gmGTLsIa_784pU3DDYAtLBpnw8K5asU8JW25tYjnXOP6MTi5sFYG79w1s-qGoPiMMvqgBJDAyMR7_8zvIw5HE2uuvnEOleuJmd5u7D6zeeUwFIKIvEqC0EYl0dJSEspZ0qcu9PmTeaTPs968hbDiW3He5qTMl3dxpzJcu8TjHJ_a5BhplhLho8x_y6m9ddZFD0QXj83GfuET9JRwJixnv3hoKelESvOmGl38fBd4bdd-9mutXKNmLbmmJaBcvUS7_maBBw4Rr1DH1HvoRajagT0Tf43OLECO8aDGG3hggAeO8MAeHjjAAwM8sIcHDvB4g76fDq9Ovia-nEYiCefLhFNdpUaBhKx1mStiJC2ZjbuWacl0LrnINGNamLxHjVCVJBWTeZYJKkrDpErfop36tjb7CMNv635f9QlRMNqrpFTSZAKWZ5IbUnbRHmzJeO4SpoRN7qKPYYvGymegt4VQpuMtanQRjhPDO7amHPx5yiF6vgHnO7SzXNyb9-iZWi2v7xZHDaF_AbzdcsI
linkProvider ISSN International Centre
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Flan%3A+An+Expressive+and+Efficient+Datalog+Compiler+for+Program+Analysis&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Abeysinghe%2C+Supun&rft.au=Xhebraj%2C+Anxhelo&rft.au=Rompf%2C+Tiark&rft.date=2024-01-02&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=8&rft.issue=POPL&rft.spage=2577&rft.epage=2609&rft_id=info:doi/10.1145%2F3632928&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3632928
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon