Results 1 - 10
of
15
Flick: A Flexible, Optimizing IDL Compiler
- in Proceedings of ACM SIGPLAN '97 Conference on Programming Language Design and Implementation (PLDI), (Las Vegas, NV), ACM
, 1997
"... An interface definition language (IDL) is a nontraditional language for describing interfaces between software components. IDL compilers generate "stubs" that provide separate communicating processes with the abstraction of local object invocation or procedure call. High-quality stub generation is ..."
Abstract
-
Cited by 66 (4 self)
- Add to MetaCart
An interface definition language (IDL) is a nontraditional language for describing interfaces between software components. IDL compilers generate "stubs" that provide separate communicating processes with the abstraction of local object invocation or procedure call. High-quality stub generation is essential for applications to benefit from componentbased designs, whether the components reside on a single computer or on multiple networked hosts. Typical IDL compilers, however, do little code optimization, incorrectly assuming that interprocess communication is always the primary bottleneck. More generally, typical IDL compilers are "rigid" and limited to supporting only a single IDL, a fixed mapping onto a target language, and a narrow range of data encodings and transport mechanisms. Flick, our new IDL compiler, is based on the insight that IDLs are true languages amenable to modern compilation techniques. Flick exploits concepts from traditional programming language compilers to br...
A Tool Framework for Static and Dynamic Analysis of Object-Oriented Software with Templates
- PROC. SUPERCOMPUTING 2000, DALLAS/TEXAS
, 2000
"... The developers of high-performance scientific applications often work in complex computing environments that place heavy demands on program analysis tools. The developers need tools that interoperate, are portable across machine architectures, and provide source-level feedback. In this paper, we des ..."
Abstract
-
Cited by 33 (26 self)
- Add to MetaCart
The developers of high-performance scientific applications often work in complex computing environments that place heavy demands on program analysis tools. The developers need tools that interoperate, are portable across machine architectures, and provide source-level feedback. In this paper, we describe a tool framework, the Program Database Toolkit (PDT), that supports the development of program analysis tools meeting these requirements. PDT uses compile-time information to create a complete database of high-level program information that is structured for well-defined and uniform access by tools and applications. PDT's current applications make heavy use of advanced features of C++, in particular, templates. We describe the toolkit, focussing on its most important contribution -- its handling of templates -- as well as its use in existing applications.
An RPC mechanism for transportable agents
, 1996
"... Transportable agents are autonomous programs that migrate from machine to machine, performing complex processing at each step to satisfy client requests. As part of their duties agents often need to communicate with other agents. We propose to use remote procedure call (RPC) along with a exible inte ..."
Abstract
-
Cited by 21 (14 self)
- Add to MetaCart
Transportable agents are autonomous programs that migrate from machine to machine, performing complex processing at each step to satisfy client requests. As part of their duties agents often need to communicate with other agents. We propose to use remote procedure call (RPC) along with a exible interface de nition language (IDL), to add structure to inter-agent communication. The real power of our Agent RPC comes from a client-server binding mechanism based on exible IDL matching and from support for multiple simultaneous bindings. Our agents are programmed in Agent Tcl�we describe how the Tcl implementation made RPC particularly easy to implement. Finally, although our RPC is designed for Agent Tcl programs, the concepts would also work for standard Tcl programs.
Automated Support for Seamless Interoperability in Polylingual Software Systems
- IN ACM SIGSOFT'96, FOURTH SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING
, 1996
"... Interoperability is a fundamental concern in many areas of software engineering, such as software reuse or infrastructures for software development environments. Of particular interest to software engineers are the interoperability problems arising in polylingual software systems. The defining chara ..."
Abstract
-
Cited by 17 (4 self)
- Add to MetaCart
Interoperability is a fundamental concern in many areas of software engineering, such as software reuse or infrastructures for software development environments. Of particular interest to software engineers are the interoperability problems arising in polylingual software systems. The defining characteristic of polylingual systems is their focus on uniform interaction among a set of components written in two or more different languages. Existing approaches to support for interoperability are inadequate because they lack seamlessness: that is, they generally force software developers to compensate explicitly for the existence of multiple languages or the crossing of language boundaries. In this paper we first discuss some foundations for polylingual interoperability, then review and assess existing approaches. We then outline PolySPIN, an approach in which interoperability can be made transparent and existing systems can be made to interoperate with no visible modifications. We also de...
The Mockingbird System: A Compiler-based Approach to Maximally Interoperable Distributed Programming
"... type encodes programmerdefined types that Mockingbird is expected to leave alone. A Capability type is used to model 7 Character repertoire = "rep-name" Record member TYPE member TYPE Choice member TYPE member TYPE Sequence countrange = range-spec TYPE Capability special-repertoire ..."
Abstract
-
Cited by 15 (1 self)
- Add to MetaCart
type encodes programmerdefined types that Mockingbird is expected to leave alone. A Capability type is used to model 7 Character repertoire = "rep-name" Record member TYPE member TYPE Choice member TYPE member TYPE Sequence countrange = range-spec TYPE Capability special-repertoire = name Integer range = range-spec Real exponent = range-spec Any Miscellaneous Primitive Types Structuring Types Communication Channels Type Reference TypeRef Abstract name = type-name-string precision = precision-spec ref to MockSL type ref to MockSL type Figure 6: MockSL type constructors remote references. A TypeRef type is used to express recursion or type inclusion when one type is completely included in the definition of another. A Record type constructs heterogeneous aggregates and a Sequence type constructs homogeneous aggregates. Finally, a Choice type constructs alternative types (as in the variant or union types of Pascal and C). Because the MockSL type system is ...
Concert/C: A language for distributed programming
- In Winter 1994 USENIX Conference
, 1994
"... Concert/C is a new language for distributed C programming that extends ANSI C to support distribution and process dynamics. Concert/C provides the ability to create and terminate processes, connect them together, and communicate among them. It supports transparent remote function calls (RPC) and asy ..."
Abstract
-
Cited by 14 (6 self)
- Add to MetaCart
Concert/C is a new language for distributed C programming that extends ANSI C to support distribution and process dynamics. Concert/C provides the ability to create and terminate processes, connect them together, and communicate among them. It supports transparent remote function calls (RPC) and asynchronous messages. Interprocess communications interfaces are typed in Concert/C, and type correctness is checked at compile time wherever possible, otherwise at runtime. All C data types, including complex data structures containing pointers and aliases, can be transmitted in RPCs. Concert/C programs run on a heterogeneous set of machine architectures and operating systems and communicate over multiple RPC and messaging protocols. The current Concert/C implementation runs on AIX 3.2 1, SunOS 4.1, Solaris 2.2 and OS/2 2.1, and communicates over Sun RPC, OSF/DCE and UDP multicast. Several groups inside and outside IBM are actively using Concert/C, and it is available via anonymous ftp from software.watson.ibm.com:/pub/concert. 1
Using Annotated Interface Definitions to Optimize RPC
- In Proc. of the 15th ACM Symp. on Operating Systems Principles
, 1995
"... In RPC-based communication, it is useful to distinguish the RPC interface, which is the "network contract" between the client and the server, from the presentation, which is the "programmer's contract" between the RPC stubs and the code that calls or is called by them. Presentation is usually a fixe ..."
Abstract
-
Cited by 10 (5 self)
- Add to MetaCart
In RPC-based communication, it is useful to distinguish the RPC interface, which is the "network contract" between the client and the server, from the presentation, which is the "programmer's contract" between the RPC stubs and the code that calls or is called by them. Presentation is usually a fixed function of the RPC interface, but some RPC systems, such as DCE and Concert, support the notion of a flexible presentation or endpoint modifier, allowing controlled modification of the behavior of the stubs on each side without affecting the contract between the client and the server. Up until now, the primary motivation for flexible presentation has been for programmer convenience and improved interoperability. However, we have found flexible presentation also to be useful for optimization of RPC, and in many cases necessary to achieving maximal performance without throwing out the RPC system and resorting to hand-coded stubs. In this paper we provide examples demonstrating this point fo...
Mockingbird: Flexible Stub Compilation from Pairs of Declarations
, 1999
"... Mockingbird is a prototype tool for developing interlanguage and distributed applications. It compiles stubs from pairs of interface declarations, allowing existing data types to be reused on both sides of every interface. Other multilanguage stub compilers impose data types on the application, c ..."
Abstract
-
Cited by 10 (1 self)
- Add to MetaCart
Mockingbird is a prototype tool for developing interlanguage and distributed applications. It compiles stubs from pairs of interface declarations, allowing existing data types to be reused on both sides of every interface. Other multilanguage stub compilers impose data types on the application, complicating development. Mockingbird supports C/C++, Java, and CORBA IDL, and can be extended to other languages. Its stubs convert types whose structural equivalence would be missed by other tools, because it interacts with the programmer to refine the original declarations. We show that this kind of tool improves programming productivity, and describe, in detail, Mockingbird's design and implementation. 1 Introduction It is often necessary to interconnect components residing on different machines or written in different languages. Crossing a machine boundary involves adjusting between the representation of information in program variables and its representation in network messages. C...
Concert/C: Supporting Distributed Programming with Language Extensions and a Portable Multiprotocol Runtime
- In The 14th International Conference on Distributed Computing Systems
, 1994
"... We describe the design and implementation of the Concert/C compiler and runtime. We describe solutions to the problems of (1) how to extend a language without compromising the use of legacy source and object code and tools, (2) how to extract language-neutral interface information from native langua ..."
Abstract
-
Cited by 9 (4 self)
- Add to MetaCart
We describe the design and implementation of the Concert/C compiler and runtime. We describe solutions to the problems of (1) how to extend a language without compromising the use of legacy source and object code and tools, (2) how to extract language-neutral interface information from native language type declarations, (3) how to make function pointers into firstclass values transmissable over a network while retaining runtime compatibility with plain C, and (4) how to interoperate with multiple RPC and messaging protocols, selecting protocols at runtime, with little sacrifice of efficiency. 1 Introduction The Concert/C language extends the ANSI C language [1] to enable the construction of explicitly distributed programs. The Concert/C language and its design rationale is explored in [6]. This paper deals with the implementation of the Concert/C compiler and runtime. A program is "explicitly distributed" if it is aware of its use of distributed services. For example, an inter-enter...
Multi-protocol web services for enterprises and the grid
- In Proceedings of the EuroWeb 2002 Conference on the Web and the
, 2002
"... ..."

