Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Yoav Zibin

dblp:35/5726 · DBLP profile ↗
← Back
15ranked-venue papers
9as first author
0since 2021 · last 2012
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 12 · 8 first-authorTheory of computation · 2

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
10 papers
Programming languages and type systems · 76% Debugging and program repair · 15% Compilers and program optimization · 7%
Network and information security
1 paper
Systems and software security · 100%
Theoretical computer science
2 papers
Algorithms and data structures · 100%

Topics — the 17 heaviest of 20, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › method dispatch
dynamic dispatch
0.232007
Efficient dynamic dispatching with type slicing · ACM Trans. Program. Lang. Syst. 2007
Efficient subtyping tests with PQ-encoding · ACM Trans. Program. Lang. Syst. 2005
Fast algorithm for creating space efficient dispatching tables with application to multi-dispatching · OOPSLA 2002
Programming languages and type systems › type systems
subtyping
0.132005
Efficient subtyping tests with PQ-encoding · ACM Trans. Program. Lang. Syst. 2005
Fast algorithm for creating space efficient dispatching tables with application to multi-dispatching · OOPSLA 2002
Efficient Subtyping Tests with PQ-Encoding · OOPSLA 2001
Programming languages and type systems
method dispatch
0.122007
Efficient dynamic dispatching with type slicing · ACM Trans. Program. Lang. Syst. 2007
Incremental algorithms for dispatching in dynamically typed languages · POPL 2003
Programming languages and type systems › language design
immutability
0.112010
Ownership and immutability in generic Java · OOPSLA 2010
Programming languages and type systems › type systems
ownership types
0.112010
Ownership and immutability in generic Java · OOPSLA 2010
Systems and software security
vulnerability discovery
0.112009
Automatically patching errors in deployed software · SOSP 2009
Debugging and program repair
automated program repair
0.112009
Automatically patching errors in deployed software · SOSP 2009
Debugging and program repair › automated program repair
patch generation
0.112009
Automatically patching errors in deployed software · SOSP 2009
Compilers and program optimization › memory optimization › data layout optimization
object layout
0.122008
Two-dimensional bidirectional object layout · ACM Trans. Program. Lang. Syst. 2008
Efficient Subtyping Tests with PQ-Encoding · OOPSLA 2001
Programming languages and type systems
type systems
0.112007
Object and reference immutability using java generics · ESEC/SIGSOFT FSE 2007
Programming languages and type systems
encoding
0.112005
Efficient subtyping tests with PQ-encoding · ACM Trans. Program. Lang. Syst. 2005
Programming languages and type systems › object-oriented programming
multiple inheritance
0.122003
Incremental algorithms for dispatching in dynamically typed languages · POPL 2003
Fast algorithm for creating space efficient dispatching tables with application to multi-dispatching · OOPSLA 2002
Programming languages and type systems › type systems
dynamic typing
0.012003
Incremental algorithms for dispatching in dynamically typed languages · POPL 2003
Programming languages and type systems › type theory
type isomorphism
0.012003
Efficient algorithms for isomorphisms of simple types · POPL 2003
Algorithms and data structures › data structure design
compressed data structures
0.012003
Incremental algorithms for dispatching in dynamically typed languages · POPL 2003
Programming languages and type systems › method dispatch
multiple dispatch
0.012002
Fast algorithm for creating space efficient dispatching tables with application to multi-dispatching · OOPSLA 2002
Programming languages and type systems › type systems › polymorphism
generics
0.012007
Object and reference immutability using java generics · ESEC/SIGSOFT FSE 2007

Methods — techniques the papers use, named apart from their topics

static type system · 0.1soundness proof · 0.1featherweight java · 0.1type slicing · 0.1PQ-trees · 0.1whole-program analysis · 0.1type hierarchy analysis · 0.1type system formalization · 0.1type soundness proof · 0.1type erasure · 0.1theoretical analysis · 0.0incremental algorithm · 0.0complexity analysis · 0.0
YearPublicationVenuePosition
2012 Object Initialization in X10
Yoav Zibin, David Cunningham, Igor Peshansky, Vijay A. Saraswat
ECOOP1
2010 Ownership and immutability in generic Java
abstract
The Java language lacks the important notions of ownership (an object owns its representation to prevent unwanted aliasing) and immutability (the division into mutable, immutable, and readonly data and references). Programmers are prone to design errors, such as representation exposure or violation of immutability contracts. This paper presents Ownership Immutability Generic Java (OIGJ), a backward-compatible purely-static language extension supporting ownership and immutability. We formally defined a core calculus for OIGJ, based on Featherweight Java, and proved it sound. We also implemented OIGJ and performed case studies on 33,000 lines of code.
Yoav Zibin, Alex Potanin, Paley Li, Mahmood Ali, Michael D. Ernst
OOPSLA1
2009 Automatically patching errors in deployed software
abstract
We present ClearView, a system for automatically patching errors in deployed software. ClearView works on stripped Windows x86 binaries without any need for source code, debugging information, or other external information, and without human intervention.
Jeff H. Perkins, Sunghun Kim 0001, Samuel Larsen, Saman P. Amarasinghe, Jonathan Bachrach, Michael Carbin, Carlos Pacheco, Frank Sherwood, Stelios Sidiroglou-Douskos, Gregory T. Sullivan, Weng-Fai Wong, Yoav Zibin, Michael D. Ernst, Martin C. Rinard
SOSP12
2008 Two-dimensional bidirectional object layout
abstract
Object layout schemes used in C++ and other languages rely on (sometimes numerous) compiler generated fields. We describe a language-independent object layout scheme, which is space optimal, that is, objects are contiguous, and contain no compiler generated fields other than a single type identifier. As in C++ and other multiple inheritance languages such as CECIL and DYLAN, the new scheme sometimes requires extra levels of indirection to access some of the fields. Using a data set of 28 hierarchies, totaling almost 50,000 types, we show that this scheme improves field access efficiency over standard implementations, and competes favorably with (the non-space-optimal) highly optimized C++ specific implementations. The benchmark includes an analytical model for computing the frequency of indirections in a sequence of field access operations. Our layout scheme relies on whole-program analysis, which requires about 10 microseconds per type on a contemporary architecture (Pentium III, 900Mhz, 256MB machine), even in very large hierarchies. We also present a layout scheme for separate compilation using the user-annotation of virtual inheritance edge that is used in C++.
Joseph Gil, William W. Pugh, Grant E. Weddell, Yoav Zibin
ACM Trans. Program. Lang. Syst.4
2007 Object and reference immutability using java generics
abstract
A compiler-checked immutability guarantee provides useful documentation, facilitates reasoning, and enables optimizations. This paper presents Immutability Generic Java (IGJ), a novel language extension that expresses immutability without changing Java's syntax by building upon Java's generics and annotation mechanisms. In IGJ, each class has one additional type parameter that is Immutable, Mutable, or ReadOnly. IGJ guarantees both reference immutability (only mutable references can mutate an object) and object immutability (an immutable reference points to an immutable object). IGJ is the first proposal for enforcing object immutability within Java's syntax and type system, and its reference immutability is more expressive than previous work. IGJ also permits covariant changes of type parameters in a type-safe manner, e.g., a readonly list of integers is a subtype of a readonly list of numbers. IGJ extends Java's type system with a few simple rules. We formalize this type system and prove it sound. Our IGJ compiler works by type-erasure and generates byte-code that can be executed on any JVM without runtime penalty.
Yoav Zibin, Alex Potanin, Mahmood Ali, Shay Artzi, Adam Kiezun, Michael D. Ernst
ESEC/SIGSOFT FSE1
2007 Randomised algorithms for isomorphisms of simple types
abstract
We give the first linear time (randomised) algorithm for thefirst order isomorphism problem, that is, the isomorphism of non-recursive types involving product- and function-type constructors, under the axioms of commutativity and associativity of products, currying and distributivity of functions over products. This problem can also be thought of as the problem of formal equality-testing of multi-variate expressions involving only multiplications and exponentiation. Previous work gave a deterministicO(nlog2n) time andO(n) space algorithm for the problem (nbeing the input size). Our specific contribution includes two randomised algorithms for the problem: (i) anO(n) timeMonte Carloalgorithm (that is, with a small probability it may decide erroneously that the two types are isomorphic), and (ii) anO(nlogn) expected time andO(n) spaceLas Vegasalgorithm (that is, with a small probability it may execute long). The algorithms rely on a preprocessing stage, which computes the sequence of the firstnprimes inO(nlogn/log logn) time and space.
Joseph Gil, Yoav Zibin
Math. Struct. Comput. Sci.2
2007 Efficient dynamic dispatching with type slicing
abstract
A fundamental problem in the implementation of object-oriented languages is that of a frugal implementation of dynamic dispatching, that is, a small footprint data structure that supports quick response to runtime dispatching queries of the following format: which method should be executed in response to a certain message sent to a given object. Previous theoretical algorithms for this problem tend to be impractical due to their conceptual complexity and large hidden constants. In contrast, successful practical heuristics lack theoretical support. The contribution of this article is in a novel type slicing technique, which results in two dispatching schemes: TS and CT d . We make the case for these schemes both practically and theoretically. The empirical findings on a corpus of 35 hierarchies totaling some 64 thousand types from eight different languages, demonstrate improvement over previous results in terms of the space required for the representation, and the time required for computing it. The theoretical analysis is with respect to ι, the best possible compression factor of the dispatching matrix. The results are expressed as a function of a parameter κ, which can be thought of as a metric of the complexity of the topology of a multiple inheritance hierarchy. In single inheritance hierarchies κ = 1, but although κ can be in the order of the size of the hierarchy, it is typically a small constant in actual use of inheritance; in our corpus, the median value of κ is 5, while its average is 6.4. The TS scheme generalizes the famous interval containment technique to multiple inheritance. TS achieves a compression factor of ι/κ, that is, our generalization comes with an increase to the space requirement by a small factor of κ. The pay is in the dispatching time, which is no longer constant as in a naive matrix implementation, but logarithmic in the number of different method implementations. In practice, dispatching uses one indirect branch and, on average, only 2.5 binary branches. The CT schemes are a sequence of algorithms CT 1 , CT 2 , CT 3 , …, where CT d uses d memory dereferencing operations during dispatch, and achieves a compression factor of 1/ d ι 1−1/ d in a single inheritance setting. A generalization of these algorithms to a multiple inheritance setting, increases the space by a factor of (2κ) 1−1/ d . This trade-off represents the first bounds on the compression ratio of constant-time dispatching algorithms. We also present an incremental variant of the CT d suited for languages such as Java.
Joseph Gil, Yoav Zibin
ACM Trans. Program. Lang. Syst.2
2005 Efficient algorithms for isomorphisms of simple types
abstract
The first-order isomorphism problem is to decide whether two non-recursive types using product- and function-type constructors are isomorphic under the axioms of commutative and associative products, and currying and distributivity of functions over products. We show that this problem can be solved in time of the best previous algorithm for this problem.
Joseph Gil, Yoav Zibin
Math. Struct. Comput. Sci.2
2005 Efficient subtyping tests with PQ-encoding
abstract
Given a type hierarchy, a subtyping test determines whether one type is a direct or indirect descendant of another type. Such tests are a frequent operation during the execution of object-oriented programs. The implementation challenge is in a space-efficient encoding of the type hierarchy that simultaneously permits efficient subtyping tests. We present a new scheme for encoding multiple- and single-inheritance hierarchies, which, in the standard benchmark hierarchies, reduces the footprint of all previously published schemes. Our scheme is called PQ-encoding (PQE) after PQ-trees , a data structure previously used in graph theory for finding the orderings that satisfy a collection of constraints. In particular, we show that in the traditional object layout model, the extra memory requirements for single-inheritance hierarchies is zero. In the PQE subtyping, tests are constant time, and use only two comparisons. The encoding creation time of PQE also compares favorably with previous results. It is less than 1 s on all standard benchmarks on a contemporary architecture, while the average time for processing a type is less than 1 ms. However, PQE is not an incremental algorithm. Other than PQ-trees, PQE employs several novel optimization techniques. These techniques are applicable also in improving the performance of other, previously published, encoding schemes.
Joseph Gil, Yoav Zibin
ACM Trans. Program. Lang. Syst.2
2003 Two-Dimensional Bi-directional Object Layout
Yoav Zibin, Joseph Gil
ECOOP1
2003 Incremental algorithms for dispatching in dynamically typed languages
abstract
A fundamental problem in the implementation of object-oriented languages is that of a frugal dispatching data structure, i.e., support for quick response to dispatching queries combined with compact representation of the type hierarchy and the method families. Previous theoretical algorithms tend to be impractical due to their complexity and large hidden constant. In contrast, successful practical heuristics, including Vitek and Horspool's compact dispatch tables (CT) [16] designed for dynamically typed languages, lack theoretical support. In subjecting CT to theoretical analysis, we are not only able to improve and generalize it, but also provide the first non-trivial bounds on the performance of such a heuristic.Let n,ml denote the total number of types, messages, and different method implementations, respectively. Then, the dispatching matrix, whose size isnm, can be compressed by a factor of at most ι ≡ (nm)/l. Our main variant to CT achieves a compression factor of ½ √ι. More generally, we describe a sequence of algorithms CT1, CT2, CT3,..., where CTd achieves compression by a factor of (at least) 1overdι1—1/d, while using d memory dereferencing operations during dispatch. This tradeoff represents the first bounds on the compression ratio of constant-time dispatching algorithms.A generalization of these algorithms to a multiple-inheritance setting, increases the space by a factor of κ1-1/d, where κ is a metric of the complexity of the topology of the inheritance hierarchy, which (as indicated by our measurements) is typically small. The most important generalization is an incremental variant of the CTd scheme for a single-inheritance setting. This variant uses at most twice the space of CTd, and its time of inserting a new type into the hierarchy is optimal. We therefore obtain algorithms for efficient management of dispatching in dynamic-typing, dynamic-loading languages, such as Smalltalk and even the Java invokeinterface instruction.
Yoav Zibin, Joseph Gil
POPL1
2003 Efficient algorithms for isomorphisms of simple types
abstract
The first order isomorphism problem is to decide whether two nonrecursive types using product- and function-type constructors, are isomorphic under the axioms of commutative and associative products, and currying and distributivity of functions over products. We show that this problem can be solved in 2 is the input size. This result improves upon the space bounds of the best previous algorithm. We also describe an time algorithm for the linear isomorphism problem, which does not include the distributive axiom, whereby improving upon the time of the best previous algorithm for this problem.
Yoav Zibin, Joseph Gil, Jeffrey Considine
POPL1
2003 Condition-Based Consensus in Synchronous Systems
Yoav Zibin
DISC1
2002 Fast algorithm for creating space efficient dispatching tables with application to multi-dispatching
abstract
The dispatching problem can be solved very efficiently in the single-inheritance~(SI) setting. In this paper we show how to extend one such solution to the multiple-inheritance~(MI) setting. This generalization comes with an increase to the space requirement by a small factor of κ This factor can be thought of as a metric of the complexity of the topology of the inheritance hierarchy.On a data set of~35 hierarchies totaling some~64 thousand types, our dispatching data structure, based on a novel type slicing technique, exhibits very significant improvements over previous dispatching techniques, not only in terms of the time for creating the underlying data structure, but also in terms of total space used.The cost is in the dispatching time, which is no longer constant, but doubly logarithmic in the number of types. Conversely, by using a simple binary search, dispatching time is logarithmic in the number of different implementations. In practice dispatching uses one indirect branch and, on average, only~2.5 binary branches.Our results also have applications to the space-efficient implementation of the more general problem of dispatching multi-methods.A by-product of our type slicing technique is an incremental algorithm for constant-time subtyping tests with favorable memory requirements. (The incremental version of the subtyping problem is to maintain the subtyping data structure in presence of additions of types to the inheritance hierarchy.)
Yoav Zibin, Joseph Gil
OOPSLA1
2001 Efficient Subtyping Tests with PQ-Encoding
abstract
Subtyping tests, i.e., determining whether one type is a subtype of another, are a frequent operation during the execution of objectoriented programs. The challenge is in encoding the hierarchy in a small space, while simultaneously making sure that subtyping tests have efficient implementation. We present a new scheme for encoding multiple and single inheritance hierarchies, which, in the standardized hierarchies, reduces the footprint of all previously published schemes. The scheme is called PQ-encoding after PQ-trees, a data structure previously used in graph theory for finding the orderings that satisfy a collection of constraints. In particular, we show that in the traditional object layout model, the extra memory requirements for single inheritance hierarchies is zero. In the PQ-encoding subtyping tests are constant time, and use only two comparisons. Other than PQ-trees, PQ-encoding uses several novel optimization techniques. These techniques are applicable also in improving the performance of other, previously published, encoding schemes.
Yoav Zibin, Joseph Gil
OOPSLA1