세션 유형
Session type| 유형 시스템 |
|---|
| 일반적인 개념 |
| 주요 카테고리 |
| 마이너 카테고리 |
유형 이론에서 세션 유형은 동시 프로그램에서 정확성을 보장하기 위해 사용됩니다.이를 통해 동시 프로그램 간에 송수신되는 메시지가 예상된 순서와 예상된 [1][2]유형의 메시지임을 확인할 수 있습니다.세션 유형 시스템은 채널 [3]및 액터 시스템 모두에 대해 조정되었습니다.
세션 유형은 동시 및 분산 시스템에서 바람직한 속성, 즉 통신 오류 및 교착 상태 부재 및 프로토콜 [4]준수를 보장하기 위해 사용됩니다.
바이너리 세션유형과 멀티파티 세션유형
2개의 프로세스 간의 상호작용은 바이너리세션 타입을 사용하여 체크할 수 있으며, 3개 이상의 프로세스 간의 상호작용은 멀티 파티세션 [5]타입을 사용하여 체크할 수 있습니다.
이진 세션 유형의 정식 정의
바이너리 세션의 유형은 송신 조작 수신 조작 브랜치 선택 재귀( rec 및 종료(\end)[2]를 사용하여 설명할 수 있습니다.
를 들어, S ! l? n . n d \ S = \ ; ! ?int는 세션타입S \ ! 를 나타냅니다.그 후 정수 t \ 를 수신한 후 최종적으로 합니다( d \ end) 。
실장
세션 유형은 다음과 같은 기존 프로그래밍 언어에 맞게 조정되었습니다.
- l채널(Scala)[6]
- Effpi (스칼라)[6]
- STMonitor (Scala)[7]
- 앙상블S[8].
- 세션 유형(녹)[9]
- sesh([10]녹색)
- 세션 액터(Python)[11]
- 모니터링 대상 세션 Erlang(Erlang)[12]
- FuSe(OCAML)[13]
- session-ocaml(OCAML)[14][15]
- Priority Sesh(해스켈)[16]
레퍼런스
- ^ Hüttel, Hans; Lanese, Ivan; Vasconcelos, Vasco T.; Caires, Luís; Carbone, Marco; Deniélou, Pierre-Malo; Mostrous, Dimitris; Padovani, Luca; Ravara, António; Tuosto, Emilio; Vieira, Hugo Torres; Zavattaro, Gianluigi (5 April 2016). "Foundations of Session Types and Behavioural Contracts". ACM Computing Surveys. 49 (1): 3:1–3:36. doi:10.1145/2873052. ISSN 0360-0300. S2CID 3580137.
- ^ a b Ancona, Davide (2016). Behavioral types in programming languages. Hanover, Massachusetts: Now Publishers. ISBN 978-1-68083-135-1. OCLC 1053840486.
- ^ Fowler, Simon; Lindley, Sam; Wadler, Philip (10 May 2017). "Mixing Metaphors: Actors as Channels and Channels as Actors (Extended Version)". arXiv:1611.06276 [cs.PL].
- ^ Scalas, Alceste; Yoshida, Nobuko (June 2018). "Multiparty session types, beyond duality". Journal of Logical and Algebraic Methods in Programming. 97: 55–84. doi:10.1016/j.jlamp.2018.01.001. S2CID 48360420.
- ^ Honda, Kohei; Yoshida, Nobuko; Carbone, Marco (2008). "Multiparty asynchronous session types". Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - POPL '08: 273. doi:10.1145/1328438.1328472. ISBN 9781595936899. S2CID 53038488.
- ^ a b "Session programming in Scala". alcestes.github.io. Retrieved 2 November 2021.
- ^ "STMonitor". chrisbartoloburlo.github.io. Retrieved 2 November 2021.
- ^ Harvey, Paul; Fowler, Simon; Dardha, Ornela; Gay, Simon J. (2021). "Multiparty Session Types for Safe Runtime Adaptation in an Actor Language". 35th European Conference on Object-Oriented Programming (ECOOP 2021). 194: 10:1–10:30. doi:10.4230/LIPIcs.ECOOP.2021.10. S2CID 234681015.
- ^ Jespersen, Thomas Bracht Laumann; Munksgaard, Philip; Larsen, Ken Friis (30 August 2015). "Session types for Rust". Proceedings of the 11th ACM SIGPLAN Workshop on Generic Programming. WGP 2015. Association for Computing Machinery: 13–22. doi:10.1145/2808098.2808100. ISBN 9781450338103. S2CID 18320631.
- ^ Kokke, Wen (12 September 2019). "Rusty Variation: Deadlock-free Sessions with Failure in Rust". Electronic Proceedings in Theoretical Computer Science. 304: 48–60. arXiv:1909.05970. doi:10.4204/EPTCS.304.4. ISSN 2075-2180. S2CID 198166990.
- ^ Yoshida, Nobuko; Neykova, Rumyana (29 March 2017). "Multiparty Session Actors". Logical Methods in Computer Science. 13 (1). doi:10.23638/LMCS-13(1:17)2017. S2CID 65240382.
- ^ Fowler, Simon (10 August 2016). "An Erlang Implementation of Multiparty Session Actors". Electronic Proceedings in Theoretical Computer Science. 223: 36–50. arXiv:1608.03321. doi:10.4204/EPTCS.223.3. ISSN 2075-2180. S2CID 418549.
- ^ Padovani, Luca (2017). "A simple library implementation of binary sessions". Journal of Functional Programming. 27: e4. doi:10.1017/S0956796816000289. ISSN 0956-7968. S2CID 19776781.
- ^ Imai, Keigo; Yoshida, Nobuko; Yuen, Shoji (March 2019). "Session-ocaml: A session-based library with polarities and lenses". Science of Computer Programming. 172: 135–159. doi:10.1016/j.scico.2018.08.005. ISSN 0167-6423. S2CID 69673075.
- ^ Imai, Keigourl. "Session OCaml". www.ct.info.gifu-u.ac.jp. Retrieved 2 November 2021.
- ^ Kokke, Wen; Dardha, Ornela (26 March 2021). "Deadlock-Free Session Types in Linear Haskell". arXiv:2103.14481 [cs.PL].