distributed programming using role parametric session
play

Distributed Programming using Role-Parametric Session Types in Go - PowerPoint PPT Presentation

1/19 Distributed Programming using Role-Parametric Session Types in Go David Castro 1 , Raymond Hu 1 , Sung-Shik Jongmans 1,2 , Nicholas Ng 1 , Nobuko Yoshida 1 1 Imperial College London 2 Open University of the Netherlands 1/19 Distributed


  1. 1/19 Distributed Programming using Role-Parametric Session Types in Go David Castro 1 , Raymond Hu 1 , Sung-Shik Jongmans 1,2 , Nicholas Ng 1 , Nobuko Yoshida 1 1 Imperial College London 2 Open University of the Netherlands

  2. 1/19 Distributed Programming using Role-Parametric Session Types in Go David Castro 1 , Raymond Hu 1 , Sung-Shik Jongmans 1,2 , Nicholas Ng 1 , Nobuko Yoshida 1 1 Imperial College London 2 Open University of the Netherlands

  3. 1/19 Distributed Programming using Role-Parametric Session Types in Go David Castro 1 , Raymond Hu 1 , Sung-Shik Jongmans 1,2 , Nicholas Ng 1 , Nobuko Yoshida 1 1 Imperial College London 2 Open University of the Netherlands

  4. 2/19 Introduction (distributed programming in Go) Long-term research agenda: Development of theory and tools to help programmers write safe concurrent programs

  5. 2/19 Introduction (distributed programming in Go) Long-term research agenda: Development of theory and tools to help Go programmers write safe concurrent Go programs [CC’16, POPL’17, ICSE’18]

  6. 3/19 Introduction (distributed programming in Go) (a) Modern, popular systems language

  7. 3/19 Introduction (distributed programming in Go) (a) Modern, popular systems language (b) Primacy of CSP-based concurrency features Lightweight threads, called goroutines Higher-order, typed native channels (across shared memory) First-order, untyped API channels (across a network)

  8. 3/19 Introduction (distributed programming in Go) (a) Modern, popular systems language (b) Primacy of CSP-based concurrency features Lightweight threads, called goroutines Higher-order, typed native channels (across shared memory) First-order, untyped API channels (across a network) (c) Survey: “Users least agreed that they are able to effectively debug uses of Go’s concurrency features”

  9. 3/19 m u l t i p a r t y Introduction (distributed programming in Go) s e s s i o n t y p e s ? [ P O P L ’ 0 8 ] (a) Modern, popular systems language (b) Primacy of CSP-based concurrency features Lightweight threads, called goroutines Higher-order, typed native channels (across shared memory) First-order, untyped API channels (across a network) (c) Survey: “Users least agreed that they are able to effectively debug uses of Go’s concurrency features”

  10. 4/19 Introduction (distributed programming in Go) Motivating example: htcat ( https://github.com/htcat/htcat ) Parallel downloader of webpages Post-factum verification very difficult Our safe-by-construction version: PGet ( )

  11. 5/19 Introduction (distributed programming in Go) Master M Fetchers F 1 F 2 F n Server S

  12. 5/19 f e a t u r e 1 : Introduction (distributed programming in Go) p a r a m e t e r i s a t i o n ( i n # F e t c h e r s ) Master M Fetchers F 1 F 2 F n Server S

  13. 5/19 f e a t u r e 1 : Introduction (distributed programming in Go) p a r a m e t e r i s a t i o n ( i n # F e t c h e r s ) Local Master M Fetchers F 1 F 2 F n Remote Server S shared memory channel TCP channel

  14. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S shared memory channel TCP channel

  15. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S M → F 1 : : :GetSize(string)

  16. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F 1 → S: : :HttpReq(byte[])

  17. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F 1 → S: . S → F 1 : : :HttpReq(byte[]). . : :HttpRes(byte[])

  18. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F 1 → M: : :Size(int)

  19. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S M → F [ 1. .n ] : : :GetData(string,int,int)

  20. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F [ 1. .n ] → S: : :HttpReq(byte[])

  21. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F [ 1. .n ] → S: . S → F [ 1. .n ] : : :HttpReq(byte[]). . : :HttpRes(byte[])

  22. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F [ 1. .n ] → M: : :Data(string,chan chan chan)

  23. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m ( i n # F e e t c h a e r a t d i s p r s ) & Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F [ 1. .n ] → M: : :Data(string,chan chan chan)

  24. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m feature 3: ( i n # F e e t c h a e r a t d i s p r s ) & channel passing Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S F [ 1. .n ] → M: : :Data(string,chan chan chan)

  25. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m feature 3: ( i n # F e e t c h a e r a t d i s p r s ) & channel passing Local Master s t i o n M t r a c a b s Fetchers F 1 F 2 F n Remote Server S

  26. 5/19 f e a t u r e e 1 2 : t u r : f e a Introduction (distributed programming in Go) p a r a m e t e o r t s r i s n a s p t r a t i o n i x e d m feature 3: f e a t u r e 4 : ( i n # F e e t c h a e r a t d i s p r s ) & channel passing h e t e r o g e n e o Local u s Master s t i o n M t r a c a b s r o l e s Fetchers F 1 F 1 F 2 F n Remote Server S

  27. 6/19 Introduction (distributed programming in Go) Features: Parameterisation (in #Fetchers) Mixed transports & disparate abstractions Channel passing Heterogeneous roles

  28. 6/19 Introduction (distributed programming in Go) Features: Parameterisation (in #Fetchers) Mixed transports & disparate abstractions Channel passing Heterogeneous roles Challenges ( safety ): Protocol compliance Deadlock-freedom

  29. 6/19 Introduction (distributed programming in Go) Features: Parameterisation (in #Fetchers) Mixed transports & disparate abstractions Channel passing Heterogeneous roles multiparty session types: Challenges ( safety ): Protocol compliance � Deadlock-freedom �

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend