test of time
play

TEST-OF-TIME AWARD Language primitives and type discipline for - PowerPoint PPT Presentation

ETAPS 2019 TEST-OF-TIME AWARD Language primitives and type discipline for structured communication-based programming by Kohei Honda, Vasco T. Vasconcelos and Makoto Kubo POPL 2008 MOST INFLUENTIAL PAPER AWARD LICS 2018 TEST OF TIME AWARD


  1. ETAPS 2019 TEST-OF-TIME AWARD Language primitives and type discipline for structured communication-based programming ’ by Kohei Honda, Vasco T. Vasconcelos and Makoto Kubo

  2. POPL 2008 MOST INFLUENTIAL PAPER AWARD

  3. LICS 2018 TEST OF TIME AWARD LICS’98

  4. http://mrg.doc.ic.ac.uk Mob$%&'y Re,-./c1 G/o3p Post-docs: Simon CASTELLAN David CASTRO Francisco FERREIRA Raymond HU Rumyana NEYKOVA Nicholas NG Alceste SCALAS PhD Students: Assel ALTAYEVA Juliana FRANCO Eva GRAVERSEN

  5. www.scribble.org

  6. End-to-End Switching Programme by DCC

  7. CC’18 7 ECOOP’16 1 ’ P O O C E

  8. Se Selected P Publications [2 [2018-2019] 2019] [PLDI19] Alceste Scalas, NY, Elias Benussi: Verifying message-passing programs with dependent behavioural types. • [CAV19] Julien Lange, NY: Verifying Asynchronous Interactions via Communicating Session Automata. • [CONCUR19] Mario Bravetti, Marco Carbone, Julien Lange, NY, Gianluigi Zavattaro: A Sound Algorithm for Asynchronous • Session Subtyping [FSE19] Nicola Atzei, Massimo Bartoletti, Stefano Lande, NY, Roberto Zunino:Developing secure Bitcoin contracts with • BitML [ECOOP19] Rupak Majumdar, Marcus Pirron, NY, and Damien Zufferey, Motion Session Types for Robotic Interactions • [FoSSaCs19] Simon Castellan, NY: Causality in Linear Logic • [ESOP19] Laura Bocchi, Maurizio Murgia, Vasco T. Vasconcelos, NY: Asynchronous Timed Session Types • [POPL19] Simon Castellan, NY: Two Sides of the Same Coin: Session Types and Game Semantics • [POPL19] David Castro, Raymond Hu, Sung-Shik Jongmans, Nicholas Ng, NY: Distributed Programming Using Role • Parametric Session Types in Go [POPL19] Alceste Scalas, Nobuko Yoshida: Less Is More: Multiparty Session Types Revisited • [POPL19] Bernardo Toninho, NY: Interconnectability of Session Based Logical Processes • [ICSE18] Julien Lange, Nicholas Ng, Bernardo Toninho, NY: A Static Verification Framework for Message Passing in Go • using Behavioural Types [LICS18] Romain Demangeon, NY: Causal Computational Complexity of Distributed Processes • [FoSSaCs18] Bernardo Toninho, Nobuko Yoshida: Depending On Session Typed Process • [ESOP18] Bernardo Toninho, NY: On Polymorphic Sessions And Functions: A Tale of Two (Fully Abstract) Encodings • [CC18] Rumyana Neykova, Raymond Hu, NY, Fahd Abdeljallal: A Session Type Provider: Compile-time API Generation for • Distributed Protocols with Interaction Refinements in F#

  9. Se Selected P Publications [2 [2018-2019] 2019] [PLDI19] Alceste Scalas, NY, Elias Benussi: Verifying message-passing programs with dependent behavioural types. • [CAV19] Julien Lange, NY: Verifying Asynchronous Interactions via Communicating Session Automata. • [CONCUR19] Mario Bravetti, Marco Carbone, Julien Lange, NY, Gianluigi Zavattaro: A Sound Algorithm for Asynchronous • Session Subtyping [FSE19] Nicola Atzei, Massimo Bartoletti, Stefano Lande, NY, Roberto Zunino:Developing secure Bitcoin contracts with • BitML [ECOOP19] Rupak Majumdar, Marcus Pirron, NY, and Damien Zufferey, Motion Session Types for Robotic Interactions • [FoSSaCs19] Simon Castellan, NY: Causality in Linear Logic • [ESOP19] Laura Bocchi, Maurizio Murgia, Vasco T. Vasconcelos, NY: Asynchronous Timed Session Types • [POPL19] Simon Castellan, NY: Two Sides of the Same Coin: Session Types and Game Semantics • [POPL19] David Castro, Raymond Hu, Sung-Shik Jongmans, Nicholas Ng, NY: Distributed Programming Using Role • Parametric Session Types in Go [POPL19] Alceste Scalas, Nobuko Yoshida: Less Is More: Multiparty Session Types Revisited • [POPL19] Bernardo Toninho, NY: Interconnectability of Session Based Logical Processes • [ICSE18] Julien Lange, Nicholas Ng, Bernardo Toninho, NY: A Static Verification Framework for Message Passing in Go • using Behavioural Types [LICS18] Romain Demangeon, NY: Causal Computational Complexity of Distributed Processes • [FoSSaCs18] Bernardo Toninho, Nobuko Yoshida: Depending On Session Typed Process • [ESOP18] Bernardo Toninho, NY: On Polymorphic Sessions And Functions: A Tale of Two (Fully Abstract) Encodings • [CC18] Rumyana Neykova, Raymond Hu, NY, Fahd Abdeljallal: A Session Type Provider: Compile-time API Generation for • Distributed Protocols with Interaction Refinements in F#

  10. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Static verification framework for Go Overview 2 Model checking Behavioural mCRL2 model checker Types Transform Check safety and liveness and verify Type inference 1 3 Termination checking KITTeL termination prover SSA IR Go source code Address type $ program gap 19 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  11. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Goroutines 1 func main() { 2 ch := make(chan string) 3 go send(ch) go keyword + function call 4 print(<-ch) Spawns function as goroutine 5 close(ch) 6 } Runs in parallel to parent 7 8 func send(ch chan string) { 9 ch <- "Hello Kent!" 10 } 20 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  12. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Channels Create new channel 1 func main() { Synchronous by default 2 ch := make(chan string) 3 go send(ch) Receive from channel 4 print(<-ch) Close a channel 5 close(ch) 6 } No more values sent to it 7 Can only close once 8 func send(ch chan string) { 9 ch <- "Hello Kent!" Send to channel 10 } 21 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  13. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Channels 1 func main() { 2 ch := make(chan string) Also select-case : 3 go send(ch) Wait on multiple channel 4 print(<-ch) operations 5 close(ch) 6 } switch-case for 7 communication 8 func send(ch chan string) { 9 ch <- "Hello Kent!" 10 } 21 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  14. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Deadlock detection 1 func main() { 2 Send message thru channel ch := make(chan string) 3 go send(ch) Print message on screen 4 print(<-ch) 5 close(ch) Output: 6 } $ go run hello.go 7 Hello Kent! 8 func send(ch chan string) { $ 9 ch <- "Hello Kent!" 10 } 22 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  15. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Deadlock detection Missing ’go’ keyword Only one (main) goroutine 1 // import _ "net" 2 func main() { Send without receive - blocks 3 ch := make(chan string) 4 send(ch) // Oops Output: 5 print(<-ch) $ go run deadlock.go 6 close(ch) fatal error: all goroutines 7 } are asleep - deadlock! 8 $ 9 func send(ch chan string) { 10 ch <- "Hello Kent!" 11 } 23 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  16. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Deadlock detection Missing ’go’ keyword 1 // import _ "net" Go’s runtime deadlock detector 2 func main() { Checks if all goroutines are 3 ch := make(chan string) 4 send(ch) // Oops blocked (‘global’ deadlock) 5 print(<-ch) Print message then crash 6 close(ch) 7 Some packages disable it } 8 (e.g. net ) 9 func send(ch chan string) { 10 ch <- "Hello Kent!" 11 } 23 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

  17. Concurrency in Go Behavioural type inference Model checking behavioural types Termination checking Summary Concurrency in Go Deadlock detection Missing ’go’ keyword 1 import _ "net" // unused 2 func main() { 3 ch := make(chan string) 4 send(ch) // Oops Import unused, unrelated package 5 print(<-ch) 6 close(ch) 7 } 8 9 func send(ch chan string) { 10 ch <- "Hello Kent" 11 } 23 /46 Julien Lange, Nicholas Ng, Bernardo Toninho, Nobuko Yoshida mrg.doc.ic.ac.uk A Static Verification Framework for Message Passing in Go using Behavioural Types

Recommend


More recommend