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...
Gespeichert in:
| Veröffentlicht in: | Proceedings of ACM on programming languages Jg. 8; H. POPL; S. 2577 - 2609 |
|---|---|
| Hauptverfasser: | , , |
| 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 |