The desired behavior of a program can be described using an abstract model. Compiling such a model into executable code requires advanced compilation techniques known as synthesis. This paper presents an object-based ...
详细信息
The desired behavior of a program can be described using an abstract model. Compiling such a model into executable code requires advanced compilation techniques known as synthesis. This paper presents an object-based language, called Jennisys, where programming is done by introducing an abstract model, defining a concrete data representation for the model, and then being aided by automatic synthesis to produce executable code. The paper also presents a synthesis technique for the language. The technique is built on an automatic program verifier that, via an underlying SMT solver, is capable of providing concrete models to failed verifications. The technique proceeds by obtaining sample input/output values from concrete models and then extrapolating programs from the sample points. The synthesis aims to produce code with assignments, branching structure, and possibly recursive calls. It is the first to synthesize code that creates and uses objects in dynamic data structures or aggregate objects. A prototype of the language and synthesis technique has been implemented.
Xtext is an open-source framework for implementing external, textual domain-specific languages (DSLs). So far, most DSLs implemented with Xtext and similar tools focus on structural aspects such as service specificati...
详细信息
ISBN:
(纸本)9781450311298
Xtext is an open-source framework for implementing external, textual domain-specific languages (DSLs). So far, most DSLs implemented with Xtext and similar tools focus on structural aspects such as service specifications and entities. Because behavioral aspects are significantly more complicated to implement, they are often delegated to generalpurpose programminglanguages. This approach introduces complex integration patterns and the DSL's high level of abstraction is compromised. We present Xbase as part of Xtext, an expression language that can be reused via language inheritance in any DSL implementation based on Xtext. Xbase expressions provide both control structures and program expressions in a uniform way. Xbase is statically typed and tightly integrated with the Java type system. languages extending Xbase inherit the syntax of a Java-like expression language as well as language infrastructure components, including a parser, an unparser, a linker, a compiler and an interpreter. Furthermore, the framework provides integration into the Eclipse IDE including debug and refactoring support. The application of Xbase is presented by means of a domain model language which serves as a tutorial example and by the implementation of the programminglanguage Xtend. Xtend is a functional and object-oriented general purpose language for the Java Virtual Machine (JVM). It is built on top of Xbase which is the reusable expression language that is the foundation of Xtend. Copyright 2012 acm.
Work-stealing is a promising approach for effectively exploiting software parallelism on parallel hardware. A programmer who uses work-stealing explicitly identifies potential parallelism and the runtime then schedule...
详细信息
ISBN:
(纸本)9781450315616
Work-stealing is a promising approach for effectively exploiting software parallelism on parallel hardware. A programmer who uses work-stealing explicitly identifies potential parallelism and the runtime then schedules work, keeping otherwise idle hardware busy while relieving overloaded hardware of its burden. Prior work has demonstrated that work-stealing is very effective in practice. However, work-stealing comes with a substantial overhead: as much as 2x to 12x slowdown over orthodox sequential code. In this paper we identify the key sources of overhead in work-stealing schedulers and present two significant refinements to their implementation. We evaluate our work-stealing designs using a range of benchmarks, four different work-stealing implementations, including the popular fork-join framework, and a range of architectures. On these benchmarks, compared to orthodox sequential Java, our fastest design has an overhead of just 15%. By contrast, fork-join has a 2.3x overhead and the previous implementation of the system we use has an overhead of 4.1x. These results and our insight into the sources of overhead for work-stealing implementations give further hope to an already promising technique for exploiting increasingly available hardware parallelism.
While the C programminglanguage provides good sup-port for writing efficient, low-level code, it is not ad-equate for deffining higher-level abstracts relevant to embedded software. In this paper we present the mbedd...
详细信息
ISBN:
(纸本)9781450315630
While the C programminglanguage provides good sup-port for writing efficient, low-level code, it is not ad-equate for deffining higher-level abstracts relevant to embedded software. In this paper we present the mbeddr technology stack that supports extension of C with constructs adequate for embedded systems. In mbeddr, efficient low-level programs can be written using the well-known concepts from C. Higher-level domain-speciffic abstracts can be seamlessly inte-grated into C by means of modular language exten-sion regarding syntax, type system, semantics and IDE. In the paper we show how language extension can ad-dress the challenges of embedded software development and report on our experience in building these exten-sions. We show that language workbenches deliver on the promise of signifficantly reducing the effort of lan-guage engineering and the construction of correspond-ing IDEs. mbeddr is built on top of the JetBrains MPS language workbench. Both MPS and mbeddr are open source software.
We present the design and implementation of a dimensionality checking system in Ada 2012. The system is implemented in the GNAT compiler, and performs compile-time checks to verify the dimensional consistency of physi...
详细信息
In the context of Component-based programming, which addresses the implementation stage of a component-based software engineering development process, this paper describes a specification and an operational integratio...
详细信息
ISBN:
(纸本)9781450311298
In the context of Component-based programming, which addresses the implementation stage of a component-based software engineering development process, this paper describes a specification and an operational integration of an inheritance system into a self-contained new component-based programminglanguage named Compo. Our proposal completes and extends related works by making it possible to apply inheritance to the full description of components, i.e. both to structural (description of provisions and requirements, of component architecture) and behavioral (full implementations of services) parts in component descriptions. Inheritance in Compo is designed to be used in conjunction with composition to maximize reuse capabilities and expressive power. Compo implementation proposes a clear operational solution for inheritance and for achieving and testing substitutions. Copyright 2012 acm.
The Glasgow Haskell Compiler is an optimizing compiler that expresses and manipulates first-class equality proofs in its intermediate language. We describe a simple, elegant technique that exploits these equality proo...
详细信息
The Glasgow Haskell Compiler is an optimizing compiler that expresses and manipulates first-class equality proofs in its intermediate language. We describe a simple, elegant technique that exploits these equality proofs to support deferred type errors. The technique requires us to treat equality proofs as possibly-divergent terms;we show how to do so without losing either soundness or the zero-overhead cost model that the programmer expects.
System virtualization has been a new foundation for system software, which is evidenced in many systems and innovations, as well as numerous commercial successes in desktop, datacenter and cloud. However, with more an...
详细信息
We present relational interpreters for several subsets of Scheme, written in the pure logic programminglanguage miniKanren. We demonstrate these interpreters running "backwards" - that is, generating progra...
详细信息
The history of programminglanguages shows a continuous search for new composition mechanisms to find better ways for structuring increasingly complex software systems into modules that can be developed and reused ind...
详细信息
ISBN:
(纸本)9781450315630
The history of programminglanguages shows a continuous search for new composition mechanisms to find better ways for structuring increasingly complex software systems into modules that can be developed and reused independently. Composition mechanisms can address various types of de-pendencies among modules, e.g., inheritance, delegation, aggregation, design patterns, contracts, explicit protocols, or domain-specific compositions. However, most languages adopt a fixed set of compo-sition mechanisms, usually with explicit notation and pre-defined semantics. In case a language does not provide any mechanisms with the desired compositional behavior, programmers may need to write workarounds or introduce the new composition mechanism through macros, libraries, frameworks or language extensions. This workshop intends to stimulate research in program-ming languages and software development by exploring the notion that today's languages with their limited set of com-position mechanisms is insufficient. Instead we should allow compositions that support more flexibility, adopt a wide va-riety of compositions, domain-specific and tailored compo-sitions, or programmable compositions of various program artifacts.
暂无评论