Existing languages provide good support for typeful programming of stand-alone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (b...
详细信息
Existing languages provide good support for typeful programming of stand-alone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (but not necessarily all) of their module structure, and with some instances rebuilt with new versions of certain modules as time goes on. In this paper, we discuss programming-language support for such systems, focussing on their typing and naming issues. We describe an experimental language, Acute, which extends an ML core to support distributed development, deployment, and execution, allowing type-safe interaction between separately built programs. The main features are (1) type-safe marshalling of arbitrary values;(2) type names that are generated (freshly and by hashing) to ensure that type equality tests suffice to protect the invariants of abstract types, across the entire distributed system;(3) expression-level names generated to ensure that name equality tests suffice for type safety of associated values, for example, values carried on named channels;(4) controlled dynamic rebinding of marshalled values to local resources;and (5) thunkification of threads and mutexes to support computation mobility. These features are a large part of what is needed for typeful distributed programming. They are a relatively lightweight extension of ML, should be efficiently implementable, and are expressive enough to enable a wide variety of distributed infrastructure layers to be written as simple library code above the byte-string network and persistent store APIs. This disentangles the language run-time from communication intricacies. This paper highlights the main design choices in Acute. It is supported by a full language definition (of typing, compilation, and operational semantics), by a prototype implementation, and by example distribution libraries.
The JastAdd Extensible Java Compiler is a high quality Java that is easy to extend in order to build static analysis for Java, and to extend Java with new language constructs. built modularly, with a Java 1.4 compiler...
详细信息
The proceedings contain 36 papers. The topics discussed include: optimizing memory transactions;compiler and runtime support for efficient software transactional memory;better extensibility through modular syntax;fast...
详细信息
ISBN:
(纸本)1595933743
The proceedings contain 36 papers. The topics discussed include: optimizing memory transactions;compiler and runtime support for efficient software transactional memory;better extensibility through modular syntax;fast and flexible instruction selection with on-demand tree-parsing automata;a framework for unrestricted whole-program optimization;practical dynamic software updating for C;an experimental analysis of self-adjusting computation;shared memory programming for large scale machines;optimizing data permutations for SIMD devices;auto-vectorization of interleaved data for SIMD;pruning dynamic slices with confidence;context-sensitive domain-independent algorithm composition and selection;reducing NoC energy consumption through compiler-directed channel voltage scaling;a global progressive register allocator;and automatic instruction scheduler retargeting by reverse-engineering.
The proceedings contain 29 papers. The topic discussed include: a serializability violation detector for shared-memory server programs;path slicing;checking type safety of foreign function calls;permission-based owner...
详细信息
The proceedings contain 29 papers. The topic discussed include: a serializability violation detector for shared-memory server programs;path slicing;checking type safety of foreign function calls;permission-based ownership: encapsulating state in higher-order typed languages;code placement for improving dynamic branch prediction accuracy;garbage collection without paging;register allocation for software pipelined multi-dimensional loops;automatically partitioning packet processing applications for pipelined architectures;programming ad-hoc networks of mobile and resource-constrained devices;composing security policies with polymer;and formal loop merging for signal transforms.
We present a novel technique for static race detection in Java programs, comprised of a series of stages that employ a combination of static analyses to successively reduce the pairs of memory accesses potentially inv...
详细信息
Atomos is the first programminglanguage with implicit transactions, strong atomicity, and a scalable multiprocessor implementation. Atomos is derived from Java, but replaces its synchronization and conditional wailin...
详细信息
Program termination is central to the process of ensuring that systems code can always react. We describe a new program termination prover that performs a path-sensitive and context-sensitive program analysis and prov...
详细信息
Atomos is the first programminglanguage with implicit transactions, strong atomicity, and a scalable multiprocessor implementation. Atomos is derived from Java, but replaces its synchronization and conditional waitin...
详细信息
Dependence graphs and memoization can be used to efficiently update the output of a program as the input changes dynamically. Recent work has studied techniques for combining these approaches to effectively dynamize a...
详细信息
暂无评论