수플레 (프로그래밍 언어)
Soufflé (programming language)패러다임 | 선언형, 논리 프로그래밍 |
---|---|
가족 | 데이터로그 |
안정적 방출 | 2.3[1] |
타이핑 분야 | 정적 |
면허증. | UPL |
파일 이름 확장명 | .dl |
웹사이트 | souffle-lang |
의 영향을 받은 | |
데이터로그 |
Soufflé는 Datalogger의 영향을 받는 오픈 소스 병렬 논리 프로그래밍 언어입니다.Soufflé에는 병렬 C++을 대상으로 하는 인터프리터와 컴파일러가 모두 포함되어 있습니다.Soufflé는 정적 분석기, 분해기 및 이진 리버스 엔지니어링 도구를 만드는 데 사용되었습니다.Soufflé는 학술 연구원들에 의해 고성능과 "최첨단"으로 간주되며 학술 [2][3][4]논문의 벤치마크에 자주 사용됩니다.
프로그래밍 예제
그래프에서 에지 집합이 주어지면 다음 프로그램은 두 노드 사이의 (방향) 경로 집합을 계산합니다.이를 과도적 폐쇄라고도 합니다.edge
인척 관계
.선언문 가장자리(x:번호, y:번호) .입력 가장자리 .선언문 경로.(x:번호, y:번호) .산출량 경로. 경로.(x, y) :- 가장자리(x, y). 경로.(x, y) :- 경로.(x, z), 가장자리(z, y).
특징들
- 병렬 C++(OpenMP를 사용하는 C++)을 대상으로 하는 인터프리터[5] 및 컴파일러입니다[6].인터프리터와 컴파일러 모두 반나체 [7]평가를 사용합니다.
- 계층화[8] 부정
- 집계[9]
- 자동 인덱스[10] 선택
- 분리 세트,[12] B-트리 [13]및 [14]시도를 포함한 특수 병렬 데이터 구조.[11]
- 정적 타이핑[15]
- 기록 및 대수 데이터[16] 유형
- 외부 기능[17] 인터페이스
관련 도구
컴파일러와 인터프리터 외에도 Soufflé 프로젝트는 다음을 게시합니다.
- 프로파일러,
- "프로비던스"[18] 기반 디버거,
- 프로파일 기반 [19]최적화에서처럼 프로파일을 기반으로 효율적인 쿼리 계획을 선택하는 "자동 검색"("프로파일 최적화 도구"라고도 함).
적용들
Soufflé는 다음과 같은 정적 분석기를 구축하는 데 사용되었습니다.
또한 역 엔지니어링 [23]및 분해기를 포함한 [24]이진 분석 도구를 구축하는 데 사용되었습니다.
레퍼런스
- ^ "Release Release 2.3 · souffle-lang/souffle". GitHub. Retrieved 2023-02-26.
- ^ Ketsman, Bas; Koutris, Paraschos (2022-06-28). "Modern Datalog Engines". Foundations and Trends in Databases. 12 (1): 1–68. doi:10.1561/1900000073. ISSN 1931-7883.
- ^ Gilray, Thomas; Sahebolamri, Arash; Kumar, Sidharth; Micinski, Kristopher (2022-11-21). "Higher-Order, Data-Parallel Structured Deduction". arXiv:2211.11573 [cs.PL].
- ^ Sahebolamri, Arash; Gilray, Thomas; Micinski, Kristopher (2022-03-18). "Seamless deductive inference via macros". Proceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction. CC 2022. New York, NY, USA: Association for Computing Machinery: 77–88. doi:10.1145/3497776.3517779. ISBN 978-1-4503-9183-2. S2CID 247522107.
- ^ Hu, Xiaowen; Zhao, David; Jordan, Herbert; Scholz, Bernhard (2021-06-15). "Artifact for Paper: An Efficient Interpreter for Datalog by De-specializing Relations". doi:10.1145/3410297. Retrieved 2023-02-26.
{{cite journal}}
:저널 요구 사항 인용journal=
(도움말) - ^ Scholz, Bernhard; Jordan, Herbert; Subotić, Pavle; Westmann, Till (2016-03-17). "On fast large-scale program analysis in Datalog". Proceedings of the 25th International Conference on Compiler Construction. CC 2016. New York, NY, USA: Association for Computing Machinery: 196–206. doi:10.1145/2892208.2892226. ISBN 978-1-4503-4241-4. S2CID 7531543.
- ^ 요르단, 숄츠 & 수보티치 2016.
- ^ "Rules Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03.
- ^ "Aggregates and Generative Functors Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03.
- ^ Subotić, Pavle; Jordan, Herbert; Chang, Lijun; Fekete, Alan; Scholz, Bernhard (October 2018). "Automatic index selection for large-scale datalog computation". Proceedings of the VLDB Endowment. 12 (2): 141–153. doi:10.14778/3282495.3282500. ISSN 2150-8097. S2CID 53569679.
- ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2022-01-25). "Specializing parallel data structures for Datalog". Concurrency and Computation: Practice and Experience. 34 (2). doi:10.1002/cpe.5643. ISSN 1532-0626. S2CID 213103253.
- ^ Nappa, Patrick; Zhao, David; Subotić, Pavle; Scholz, Bernhard (September 2019). "Fast Parallel Equivalence Relations in a Datalog Compiler". 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT). pp. 82–96. doi:10.1109/PACT.2019.00015. ISBN 978-1-7281-3613-4. S2CID 204827819.
- ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-16). "A specialized B-tree for concurrent datalog evaluation". Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming. PPoPP '19. New York, NY, USA: Association for Computing Machinery: 327–339. doi:10.1145/3293883.3295719. ISBN 978-1-4503-6225-2. S2CID 59617209.
- ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-17). "Brie: A Specialized Trie for Concurrent Datalog". Proceedings of the 10th International Workshop on Programming Models and Applications for Multicores and Manycores. PMAM'19. New York, NY, USA: Association for Computing Machinery: 31–40. doi:10.1145/3303084.3309490. ISBN 978-1-4503-6290-0. S2CID 239258588.
- ^ "Types Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03. "수플레는 정적으로 유형화된 언어입니다."
- ^ "Types Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-04.
- ^ "User-Defined Functors Soufflé • A Datalog Synthesis Tool for Static Analysis". souffle-lang.github.io. Retrieved 2023-03-03.
- ^ Zhao, David; Subotić, Pavle; Scholz, Bernhard (2020-04-17). "Debugging Large-scale Datalog: A Scalable Provenance Evaluation Strategy". ACM Transactions on Programming Languages and Systems. 42 (2): 7:1–7:35. doi:10.1145/3379446. ISSN 0164-0925. S2CID 218905148.
- ^ Arch, Samuel; Hu, Xiaowen; Zhao, David; Subotić, Pavle; Scholz, Bernhard (2022). Villanueva, Alicia (ed.). "Building a Join Optimizer for Soufflé". Logic-Based Program Synthesis and Transformation. Lecture Notes in Computer Science. Cham: Springer International Publishing. 13474: 83–102. doi:10.1007/978-3-031-16767-6_5. ISBN 978-3-031-16767-6.
- ^ Antoniadis, Triantafylou & Smaragdakis 2017.
- ^ Silverman, Davis Ross; Sun, Yihao; Micinski, Kristopher; Gilray, Thomas (2021-07-27). "So You Want to Analyze Scheme Programs With Datalog?". arXiv:2107.12909 [cs.PL].
- ^ Tsankov, Petar; Dan, Andrei; Drachsler-Cohen, Dana; Gervais, Arthur; Bünzli, Florian; Vechev, Martin (2018-10-15). "Securify: Practical Security Analysis of Smart Contracts". Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. CCS '18. New York, NY, USA: Association for Computing Machinery: 67–82. doi:10.1145/3243734.3243780. hdl:10044/1/87935. ISBN 978-1-4503-5693-0. S2CID 46936025.
- Brent, Lexi; Jurisevic, Anton; Kong, Michael; Liu, Eric; Gauthier, Francois; Gramoli, Vincent; Holz, Ralph; Scholz, Bernhard (2018-09-11). "Vandal: A Scalable Security Analysis Framework for Smart Contracts". arXiv:1809.03981 [cs.PL].
- Grech, Neville; Kong, Michael; Jurisevic, Anton; Brent, Lexi; Scholz, Bernhard; Smaragdakis, Yannis (2018-10-24). "MadMax: surviving out-of-gas conditions in Ethereum smart contracts". Proceedings of the ACM on Programming Languages. 2 (OOPSLA): 116:1–116:27. doi:10.1145/3276486. S2CID 51920261.
- Praitheeshan, Purathani; Pan, Lei; Yu, Jiangshan; Liu, Joseph; Doss, Robin (2020-09-16). "Security Analysis Methods on Ethereum Smart Contract Vulnerabilities: A Survey". arXiv:1908.08605 [cs.CR].
- ^ Sun, Yihao; Ching, Jeffrey; Micinski, Kristopher (2021-01-12). "Declarative Demand-Driven Reverse Engineering". arXiv:2101.04718 [cs.PL].
- ^ Flores-Montoya, Antonio; Schulte, Eric (2020-08-12). "Datalog disassembly". Proceedings of the 29th USENIX Conference on Security Symposium. SEC'20. USA: USENIX Association: 1075–1092. ISBN 978-1-939133-17-5.
원천
- Jordan, Herbert; Scholz, Bernhard; Subotić, Pavle (2016). Chaudhuri, Swarat; Farzan, Azadeh (eds.). "Soufflé: On Synthesis of Program Analyzers". Computer Aided Verification. Lecture Notes in Computer Science. Cham: Springer International Publishing. 9780: 422–430. doi:10.1007/978-3-319-41540-6_23. ISBN 978-3-319-41540-6. S2CID 7428346.
- Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé: a tale of inter-engine portability for Datalog-based analyses". Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis. SOAP 2017. New York, NY, USA: Association for Computing Machinery: 25–30. doi:10.1145/3088515.3088522. ISBN 978-1-4503-5072-3. S2CID 3074689.