Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Raymond Hu is active.

Publication


Featured researches published by Raymond Hu.


european conference on object oriented programming | 2008

Session-Based Distributed Programming in Java

Raymond Hu; Nobuko Yoshida; Kohei Honda

This paper demonstrates the impact of integrating session types and object-oriented programming, through their implementation in Java. Session types provide high-level abstraction for structuring a series of interactions in a concise syntax, and ensure type-safe communications between distributed peers. We present the first full implementation of a language and runtime for session-based distributed programming featuring asynchronous message passing, delegation, and session subtyping and interleaving, combined with class downloading and failure handling. The compilation-runtime framework of our language effectively maps session abstraction onto underlying transports and guarantees communication safety through static and dynamic session type checking. We have implemented two alternative mechanisms for performing distributed session delegation and prove their correctness. Benchmark results show session abstraction can be realised with low runtime overhead.


european conference on object oriented programming | 2010

Type-safe eventful sessions in java

Raymond Hu; Dimitrios Kouzapas; Olivier Pernet; Nobuko Yoshida; Kohei Honda

Event-driven programming is a major paradigm in concurrent and communication-based programming, and a widely adopted approach to building scalable high-concurrency servers. However, traditional event-driven programs are more difficult to read, write and verify than their multi-threaded counterparts due to low-level APIs and fragmentation of control flow across disjoint event handlers. This paper presents a Java language extension and a novel type discipline for type-safe event-driven session programming that counters the problems of traditional event-based programming with abstractions and safety guarantees based on session types, while retaining the expressiveness and performance characteristics of events. The type discipline extends session types and their primitives with asynchronous input, session typecase and session set types, ensuring eventhandling safety and event progress in addition to the standard type soundness and communication safety. The advantages, expressiveness and performance of event-driven session programming are demonstrated through a range of examples and benchmarks, including a session-typed SMTP server.


trustworthy global computing | 2013

The Scribble Protocol Language

Nobuko Yoshida; Raymond Hu; Rumyana Neykova; Nicholas Ng

This paper describes a brief history of how Kohei Honda initiated the Scribble project, and summarises the current status of Scribble.


foundations of software science and computation structure | 2010

Parameterised multiparty session types

Nobuko Yoshida; Pierre-Malo Deniélou; Andi Bejleri; Raymond Hu

For many application-level distributed protocols and parallel algorithms, the set of participants, the number of messages or the interaction structure are only known at run-time. This paper proposes a dependent type theory for multiparty sessions which can statically guarantee type-safe, deadlock-free multiparty interactions among processes whose specifications are parameterised by indices. We use the primitive recursion operator from Godels System


international conference on coordination models and languages | 2011

Safe parallel programming with session Java

Nicholas Ng; Nobuko Yoshida; Olivier Pernet; Raymond Hu; Yiannos Kryftis

\mathcal T


runtime verification | 2013

SPY: Local Verification of Global Protocols

Rumyana Neykova; Nobuko Yoshida; Raymond Hu

to express a wide range of communication patterns while keeping type checking decidable. We illustrate our type theory through non-trivial programming and verification examples taken from parallel algorithms and Web services usecases.


runtime verification | 2013

Practical Interruptible Conversations

Raymond Hu; Rumyana Neykova; Nobuko Yoshida; Romain Demangeon; Kohei Honda

The session-typed programming language Session Java (SJ) has proved to be an effective tool for distributed programming, promoting structured programming for communications and compile-time safety. This paper investigates the use of SJ for session-typed parallel programming, and introduces new language primitives for chained iteration and multi-channel communication. These primitives allow the efficient coordination of parallel computation across multiple processes, thus enabling SJ to express the complex communication topologies often used by parallel algorithms. We demonstrate that the new primitives yield clearer and safer code for pipeline, ring and mesh topologies through implementations of representative parallel algorithms. We then present a semantics and session typing system including the new primitives, and prove type soundness and deadlock-freedom for our implementations. The benchmark results show that the new SJ is substantially faster than the original SJ and performs competitively against MPJ Express used as reference.


Foundations and Trends in Programming Languages archive | 2016

Behavioral Types in Programming Languages

Davide Ancona; Viviana Bono; Mario Bravetti; Joana Campos; Giuseppe Castagna; Pierre-Malo Deniélou; Nils Gesbert; Elena Giachino; Raymond Hu; Einar Broch Johnsen; Francisco Martins; Viviana Mascardi; Fabrizio Montesi; Rumyana Neykova; Nicholas Ng; Luca Padovani; Vasco Thudichum Vasconcelos; Nobuko Yoshida

This paper presents a toolchain for designing deadlock-free multiparty global protocols, and their run-time verification through automatically generated, distributed endpoint monitors. Building on the theory of multiparty session types, our toolchain implementation validates communication safety properties on the global protocol, but enforces them via independent monitoring of each endpoint process. Each monitor can be internally embedded in or externally deployed alongside the endpoint runtime, and detects the occurrence of illegal communication actions and message types that do not conform to the protocol. The global protocol specifications can be additionally elaborated to express finer-grained and higher-level requirements, such as logical assertions on message payloads and security policies, supported by third-party plugins. Our demonstration use case is the verification of choreographic communications in a large cyberinfrastructure for oceanography [10].


Mathematical Structures in Computer Science | 2016

On asynchronous eventful session semantics

Dimitrios Kouzapas; Nobuko Yoshida; Raymond Hu; Kohei Honda

The rigorous and comprehensive verification of communication-based software is an important engineering challenge in distributed systems. Drawn from our industrial collaborations [33,28] on Scribble, a choreography description language based on multiparty session types, this paper proposes a dynamic verification framework for structured interruptible conversation programming. We first present our extension of Scribble to support the specification of asynchronously interruptible conversations. We then implement a concise API for conversation programming with interrupts in Python that enables session types properties to be dynamically verified for distributed processes. Our framework ensures the global safety of a system in the presence of asynchronous interrupts through independent runtime monitoring of each endpoint, checking the conformance of the local execution trace to the specified protocol. The usability of our framework for describing and verifying choreographic communications has been tested by integration into the large scientific cyberinfrastructure developed by the Ocean Observatories Initiative. Asynchronous interrupts have proven expressive enough to represent and verify their main classes of communication patterns, including asynchronous streaming and various timeout-based protocols, without requiring additional synchronisation mechanisms. Benchmarks show conversation programming and monitoring can be realised with little overhead.


Concurrent Objects and Beyond | 2014

Structuring Communication with Session Types

Kohei Honda; Raymond Hu; Rumyana Neykova; Tzu-Chun Chen; Romain Demangeon; Pierre-Malo Deniélou; Nobuko Yoshida

A recent trend in programming language research is to use behavioral type theory to ensure various correctness properties of large-scale, communication-intensive systems. Behavioral types encompass concepts such as interfaces, communication protocols, contracts, and choreography. The successful application of behavioral types requires a solid understanding of several practical aspects, from their representation in a concrete programming language, to their integration with other programming constructs such as methods and functions, to design and monitoring methodologies that take behaviors into account. Behavioral Types in Programming Languages provides the reader with the first comprehensive overview of the state of the art of these practical aspects, which are summarized as the pragmatics of behavioral types. Each section covers a particular programming paradigm or methodology, providing an ideal reference for programming languages researchers interested the topic, and in identifying the areas as yet unexplored.

Collaboration


Dive into the Raymond Hu's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar

Kohei Honda

Queen Mary University of London

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Andi Bejleri

Queen Mary University of London

View shared research outputs
Top Co-Authors

Avatar

Romain Demangeon

Queen Mary University of London

View shared research outputs
Top Co-Authors

Avatar

Nicholas Ng

Imperial College London

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge