This paper explores the feasibility of implementing pattern matching for the Go programminglanguage. The design of pattern matching is taken from Scala, and reimplemented using Go's constructs and new language ex...
详细信息
Network protocol stacks are an important ingredient of today's infrastructure software. For instance, all state-of-the-art operating systems for PCs and the server market come with a TCP/IP stack. The design of pr...
详细信息
ISBN:
(纸本)9781450306478
Network protocol stacks are an important ingredient of today's infrastructure software. For instance, all state-of-the-art operating systems for PCs and the server market come with a TCP/IP stack. The design of protocol stacks and their layered structure has been studied for decades. However, in practice, implementations often do not follow the clean textbook design consequently. This especially holds for the domain of embedded TCP/IP stacks where minimal resource consumption is crucial. In this work we present an analysis that explains the reason for this dilemma. We have also developed a very simple solution that is based on common aspect-oriented programminglanguage features: Upcall Dispatcher Aspects. In a case study this concept has been repeatedly applied as an AspectC++ idiom in the implementation of the CiAO TCP/IP stack, which we compared to several traditional implementations. Besides reflecting a clean design at the implementation level, our protocol stack, which mainly targets the domain of resource-constrained embedded systems, even outperforms the other solutions with respect to resource consumption and various "-ilities". Copyright 2011 acm.
The proceedings contain 41 papers. The topics discussed include: dynamic software updates: a VM-centric approach;safe and timely dynamics updates for multi-threaded programs;CEAL: a C-based language for self-adjusting...
ISBN:
(纸本)9781605583921
The proceedings contain 41 papers. The topics discussed include: dynamic software updates: a VM-centric approach;safe and timely dynamics updates for multi-threaded programs;CEAL: a C-based language for self-adjusting computation;PetaBricks: a language and compiler for algorithmic choice;staged information flow for JavaScript;laminar: practical fine-grained decentralized information flow control;Merlin: specification inference for explicit information flow problems;TAJ: effective taint analysis of web applications;lightweight annotations for controlling sharing in concurrent data structures;a randomized dynamic program analysis technique for detecting real deadlocks;FastTrack: efficient and precise dynamic race detection;LiteRace: effective sampling for lightweight data-race detection;progress guarantee for parallel programs via bounded lock-freedom;stretching transactional memory;and parallelizing sequential applications on commodity hardware using a low-cost software transactional memory.
Linearity is a multi-faceted and ubiquitous notion in the analysis and the development of programminglanguage concepts. We study linearity in a denotational perspective by picking out programs that correspond to line...
详细信息
ISBN:
(纸本)9781450308656
Linearity is a multi-faceted and ubiquitous notion in the analysis and the development of programminglanguage concepts. We study linearity in a denotational perspective by picking out programs that correspond to linear functions between coherence spaces. We introduce a language, named SlPCF(star), that increases the higher-order expressivity of a linear core of PCF by means of new operators related to exception handling and parallel evaluation. SlPCF(star) allows us to program all the finite elements of the model and, consequently, it entails a full abstraction result that makes the reasoning on the equivalence between programs simpler. Denotational linearity provides also crucial information for the operational evaluation of programs. We formalize two evaluation machineries for the language. The first one is an abstract and concise operational semantics designed with the aim of explaining the new operators, and is based on an infinite-branching search of the evaluation space. The second one is more concrete and it prunes such a space, by exploiting the linear assumptions. This can also be regarded as a base for an implementation.
Software engineering demands generality and abstraction, performance demands specialization and concretization. Generative programming can provide both, but developing high-quality program generators takes a large eff...
详细信息
Software engineering demands generality and abstraction, performance demands specialization and concretization. Generative programming can provide both, but developing high-quality program generators takes a large effort, even if a multi-stage programminglanguage is used. We present lightweight modular staging, a library-based multi-stage programming approach that breaks with the tradition of syntactic quasi-quotation and instead uses only types to distinguish between binding times. Through extensive use of component technology, lightweight modular staging makes an optimizing compiler framework available at the library level, allowing programmers to tightly integrate domain-specific abstractions and optimizations into the generation process. We argue that lightweight modular staging enables a form of language virtualization, i.e. allows to go from a pure-library embedded language to one that is practically equivalent to a stand-alone implementation with only modest effort.
A software architecture describes the structure of a computing system by specifying software components and their interactions. Mapping a software architecture to an implementation is a well known challenge. A key ele...
详细信息
ISBN:
(纸本)9781450304450
A software architecture describes the structure of a computing system by specifying software components and their interactions. Mapping a software architecture to an implementation is a well known challenge. A key element of this mapping is the architecture's description of the data and control-flow interactions between components. The characterization of these interactions can be rather abstract or very concrete, providing more or less implementation guidance, programming support, and static verification. In this paper, we explore one point in the design space between abstract and concrete component interaction specifications. We introduce a notion of interaction contract that expresses allowed interactions between components, describing both data and control-flow constraints. This declaration is part of the architecture description, allows generation of extensive programming support, and enables various verifications. We instantiate our approach in an architecture description language for Sense/Compute/Control applications, and describe associated compilation and verification strategies.
This paper introduces an extension to OpenMP3.0 enabling stream programming with minimal, incremental additions that seamlessly integrate into the current specification. The stream programming model decomposes program...
详细信息
ISBN:
(纸本)9781450302418
This paper introduces an extension to OpenMP3.0 enabling stream programming with minimal, incremental additions that seamlessly integrate into the current specification. The stream programming model decomposes programs into tasks and explicits the flow of data among them, thus exposing data, task and pipeline parallelism. It helps the programmers to express concurrency and data locality properties, avoiding non-portable low-level code and early optimizations. We survey the diverse motivations and constraints converging towards the design of our simple yet powerful language extension, and we present experimental results of a prototype implementation in a public branch of GCC 4.5. Copyright 2011 acm.
The proceedings contain 19 papers. The topics discussed include: impacts of data interchange formats on energy consumption and performance in smartphones;community sharing platform for mobile devices;performance study...
ISBN:
(纸本)9781450308731
The proceedings contain 19 papers. The topics discussed include: impacts of data interchange formats on energy consumption and performance in smartphones;community sharing platform for mobile devices;performance study of Conillon - a platform for distributed computing;secure deduplication on mobile devices;implementation of business intelligence tools using open source approach;open source data mining tools for audit purposes;audit of e-Commerce process;Plan2See: discovering events through Web 1.0;teaching computer programming with structured programminglanguage and flowcharts;innovate in your program computer class: an approach based on a serious game;training and interface features in technology acceptance;medieval guild as metaphor to a knowledge sharing community;and collaborative framework for browser games development.
暂无评论