16 research outputs found
New Directions in Cloud Programming
Nearly twenty years after the launch of AWS, it remains difficult for most
developers to harness the enormous potential of the cloud. In this paper we lay
out an agenda for a new generation of cloud programming research aimed at
bringing research ideas to programmers in an evolutionary fashion. Key to our
approach is a separation of distributed programs into a PACT of four facets:
Program semantics, Availablity, Consistency and Targets of optimization. We
propose to migrate developers gradually to PACT programming by lifting familiar
code into our more declarative level of abstraction. We then propose a
multi-stage compiler that emits human-readable code at each stage that can be
hand-tuned by developers seeking more control. Our agenda raises numerous
research challenges across multiple areas including language design, query
optimization, transactions, distributed consistency, compilers and program
synthesis
Anterior cruciate ligament reconstruction: a new cortical suspension device for femoral fixation with transtibial and transportal techniques
Recommended from our members
Better Defunctionalization through Lambda Set Specialization
Higher-order functions pose a challenge for both static program analyses and optimizing compilers. To simplify the analysis and compilation of languages with higher-order functions, a rich body of prior work has proposed a variety of defunctionalization techniques, which can eliminate higher-order functions from a program by transforming the program to a semantically-equivalent first-order representation. Several modern languages take this a step further, specializing higher-order functions with respect to the functions on which they operate, and in turn allowing compilers to generate more efficient code. However, existing specializing defunctionalization techniques restrict how function values may be used, forcing implementations to fall back on costly dynamic alternatives. We propose lambda set specialization (LSS), the first specializing defunctionalization technique which imposes no restrictions on how function values may be used. We formulate LSS in terms of a polymorphic type system which tracks the flow of function values through the program, and use this type system to recast specialization of higher-order functions with respect to their arguments as a form of type monomorphization. We show that our type system admits a simple and tractable type inference algorithm, and give a formalization and fully-mechanized proof in the Isabelle/HOL proof assistant showing soundness and completeness of the type inference algorithm with respect to the type system. To show the benefits of LSS, we evaluate its impact on the run time performance of code generated by the MLton compiler for Standard ML, the OCaml compiler, and the new Morphic functional programming language. We find that pre-processing with LSS achieves run time speedups of up to 6.85x under MLton, 3.45x for OCaml, and 78.93x for Morphic
Recommended from our members
Katara: Synthesizing CRDTs with Verified Lifting
Conflict-free replicated data types (CRDTs) are a promising tool for
designing scalable, coordination-free distributed systems. However,
constructing correct CRDTs is difficult, posing a challenge for even seasoned
developers. As a result, CRDT development is still largely the domain of
academics, with new designs often awaiting peer review and a manual proof of
correctness. In this paper, we present Katara, a program synthesis-based system
that takes sequential data type implementations and automatically synthesizes
verified CRDT designs from them. Key to this process is a new formal definition
of CRDT correctness that combines a reference sequential type with a
lightweight ordering constraint that resolves conflicts between non-commutative
operations. Our process follows the tradition of work in verified lifting,
including an encoding of correctness into SMT logic using synthesized inductive
invariants and hand-crafted grammars for the CRDT state and runtime. Katara is
able to automatically synthesize CRDTs for a wide variety of scenarios, from
reproducing classic CRDTs to synthesizing novel designs based on specifications
in existing literature. Crucially, our synthesized CRDTs are fully,
automatically verified, eliminating entire classes of common errors and
reducing the process of producing a new CRDT from a painstaking paper proof of
correctness to a lightweight specification
Synthesizing CRDTs from Sequential Data Types with Verified Lifting
Conflict-free replicated data types (CRDTs) are a powerful tool for designing
scalable, coordination-free distributed systems. However, constructing correct
CRDTs is difficult, posing a challenge for even seasoned developers. As a
result, CRDT development is still the domain of academics, with new designs
often awaiting peer review and a manual proof of correctness. In this paper, we
present a program synthesis-based system that can automatically synthesize
verified CRDT designs from sequential data type implementations. Key to this
process is a new formal definition of CRDT correctness that combines a
reference sequential type with a lightweight ordering constraint that resolves
conflicts between non-commutative operations. Our process follows the tradition
of work in verified lifting, including an encoding of correctness into SMT
logic using synthesized inductive invariants and hand-crafted grammars for the
CRDT state and runtime. Our algorithm is able to automatically synthesize CRDTs
for a wide variety of scenarios, from reproducing classic CRDTs to synthesizing
novel designs based on specifications in existing literature. Crucially, our
synthesized CRDTs are fully, automatically verified, eliminating entire classes
of common errors and reducing the process of producing a new CRDT from a
painstaking paper proof of correctness to a lightweight specification.Comment: 23 pages, 11 figure
Recommended from our members
Keep CALM and CRDT On
Despite decades of research and practical experience, developers have few tools for programming reliable distributed applications without resorting to expensive coordination techniques. Conflict-free replicated datatypes (CRDTs) are a promising line of work that enable coordination-free replication and offer certain eventual consistency guarantees in a relatively simple object-oriented API. Yet CRDT guarantees extend only to data updates; observations of CRDT state are unconstrained and unsafe. We propose an agenda that embraces the simplicity of CRDTs, but provides richer, more uniform guarantees. We extend CRDTs with a query model that reasons about which queries are safe without coordination by applying monotonicity results from the CALM Theorem, and lay out a larger agenda for developing CRDT data stores that let developers safely and efficiently interact with replicated application state