A filestore is a structured collection of data files housed in a conventional hierarchical file system. Many applications use filestores as a poor-man's database, and the correct execution of these applications re...
详细信息
ISBN:
(纸本)9781450308656
A filestore is a structured collection of data files housed in a conventional hierarchical file system. Many applications use filestores as a poor-man's database, and the correct execution of these applications requires that the collection of files, directories, and symbolic links stored on disk satisfy a variety of precise invariants. Moreover, all of these structures must have acceptable ownership, permission, and timestamp attributes. Unfortunately, current programminglanguages do not provide support for documenting assumptions about filestores, detecting errors in them, or safely loading from and storing to them. this paper describes the design, implementation, and semantics of Forest, a new domain-specific language for describing filestores. the language uses a type-based metaphor to specify the expected structure, attributes, and invariants of filestores. Forest generates loading and storing functions that make it easy to connect data on disk to an isomorphic representation in memory that can be manipulated as if it were any other data structure. Forest also generates metadata that describes the degree to which the structures on the disk conform to the specification, making error detection easy. In a nutshell, Forest extends the rigorous discipline of typed programminglanguages to the untyped world of file systems. We have implemented Forest as an embedded domain-specific language in Haskell. In addition to generating infrastructure for reading, writing and checking file systems, our implementation generates type class instances that make it easy to build generic tools that operate over arbitrary filestores. We illustrate the utility of this infrastructure by building a file system visualizer, a file access checker, a generic query interface, description-directed variants of several standard UNIX shell tools and (circularly) a simple Forest description inference engine. Finally, we formalize a core fragment of Forest in a semantics inspired by classical tree
the proceedings contain 7 papers. the topics discussed include: fixpoint reuse for incremental JavaScript analysis;know your analysis: how instrumentation aids understanding static analysis;SootDiff: bytecode comparis...
ISBN:
(纸本)9781450367202
the proceedings contain 7 papers. the topics discussed include: fixpoint reuse for incremental JavaScript analysis;know your analysis: how instrumentation aids understanding static analysis;SootDiff: bytecode comparison across different Java compilers;modernizing parsing tools: parsing and analysis with object-oriented programming;commit-time incremental analysis;program analysis for process migration;and MetaDL: analyzing datalog in datalog.
programminglanguages providing high-level abstractions can increase a programmers' productivity and the safety of a program. language-oriented programming is a paradigm in which domain-specific languages are deve...
详细信息
ISBN:
(纸本)9781450399197
programminglanguages providing high-level abstractions can increase a programmers' productivity and the safety of a program. language-oriented programming is a paradigm in which domain-specific languages are developed to solve problems within specific domains with (high-level) abstractions relevant to those domains. However, language development involves complex design and engineering processes. these processes can be simplified by reusing (parts of) existing languages and by offering language-parametric tooling. In this paper we present iCoLa, a meta-language supporting incremental (meta-)programming based on reusable components. In our implementation of iCoLa, languages are firstclass citizens, providing the full power of the host-language (Haskell) to compose and manipulate languages. We demonstrate iCoLa through the construction of the Imp, SIMPLE, and MiniJava languages via the composition and restriction of language fragments and demonstrate the variability of our approach through the construction of several languages using a fixed-set of operators.
the proceedings contain 9 papers. the topics discussed include: finite difference methods fengshui: alignment through a mathematics of arrays;data-parallel flattening by expansion;ALPyNA: acceleration of loops in pyth...
the proceedings contain 3 papers. the topics discussed include: formal reasoning and the hacker way;TACAI: an intermediate representation based on abstract interpretation;value and allocation sensitivity in static pyt...
ISBN:
(纸本)9781450379977
the proceedings contain 3 papers. the topics discussed include: formal reasoning and the hacker way;TACAI: an intermediate representation based on abstract interpretation;value and allocation sensitivity in static python analyses;and explaining bug provenance with trace witnesses.
the past decade of experience has demonstrated that the generic programming methodology is highly effective for the design, implementation, and use of large-scale software libraries. the fundamental principle of gener...
详细信息
ISBN:
(纸本)3540291385
the past decade of experience has demonstrated that the generic programming methodology is highly effective for the design, implementation, and use of large-scale software libraries. the fundamental principle of generic programming is the realization of interfaces for entire sets of components, based on their essential syntactic and semantic requirements, rather than for any particular components. Many programminglanguages have features for describing interfaces between software components, but none completely support the approach used in generic programming. We have recently developed G, a languagedesigned to provide first-class language support for generic programming and large-scale libraries. In this paper, we present an overview of g and analyze the interdependence between language features and library design in light of a complete implementation of the Standard Template Library using G. In addition, we discuss important issues related to modularity and encapsulation in large-scale libraries and how language support for validation of components in isolation can prevent many common problems in component integration.
Creating an application-specific processor is an effective and popular way to solve many problems in embedded hardware design using FPGAs, ASICs, or custom silicon. programmingthese processors is complicated by the l...
详细信息
ISBN:
(纸本)9781450389860
Creating an application-specific processor is an effective and popular way to solve many problems in embedded hardware design using FPGAs, ASICs, or custom silicon. programmingthese processors is complicated by the lack of toolchain support for creating the necessary binary code as part of hardware design, implementation, and evaluation. Hardware developers who cannot create their own ad-hoc assembler are left to hand-assemble their code into binary instructions which is both painful and error prone. We present a tool that supports the rapid creation of assemblers for application-specific processors. A single language is used to specify both instruction formats as collections of bit fields and the instantiation of those formats into sequences of binary instructions as a single, homogeneous activity that is designed to be as familiar and accessible to hardware designers as possible. the output from the tool can be used directly by hardware synthesis tools to initialise the program memory of an application-specific processor.
We propose a mechanism to raise the abstraction level of source-code analysis and robustly support multiple languages. Built on top of the LARA framework, it allows sharing language specifications between LARA source-...
详细信息
the fast-and-loose, permissive semantics of dynamic programminglanguages limit the power of static analyses. For that reason, soundness is often traded for precision through dynamic program analysis. Dynamic analysis...
详细信息
ISBN:
(纸本)9781450399197
the fast-and-loose, permissive semantics of dynamic programminglanguages limit the power of static analyses. For that reason, soundness is often traded for precision through dynamic program analysis. Dynamic analysis is only as good as the available runnable code, and relying solely on test suites is fraught as they do not cover the full gamut of possible behaviors. Fuzzing is an approach for automatically exercising code, and could be used to obtain more runnable code. However, the shape of user-defined data in dynamic languages is difficult to intuit, limiting a fuzzer's reach. We propose a feedback-driven blackbox fuzzing approach which draws inputs from a database of values recorded from existing code. We implement this approach in a tool called signatr for the R language. We present the insights of its design and implementation, and assess signatr's ability to uncover new behaviors by fuzzing 4,829 R functions from 100 R packages, revealing 1,195,184 new signatures.
Most traditional software systems are not built withthe artificial intelligence support (AI) in mind. Among them, some may require human interventions to operate, e.g., the manual specification of the parameters in t...
详细信息
ISBN:
(纸本)9781450367127
Most traditional software systems are not built withthe artificial intelligence support (AI) in mind. Among them, some may require human interventions to operate, e.g., the manual specification of the parameters in the data processing programs, or otherwise, would behave poorly. We propose a novel framework called Autonomizer to autonomize these systems by installing the AI into the traditional programs. Autonomizer is general so it can be applied to many real-world applications. We provide the primitives and the runtime support, where the primitives abstract common tasks of autonomization and the runtime support realizes them transparently. Withthe support of Autonomizer, the users can gain the AI support with little engineering efforts. Like many other AI applications, the challenge lies in the feature selection, which we address by proposing multiple automated strategies based on the program analysis. Our experiment results on nine real-world applications show that the autonomization only requires adding a few lines to the source code. Besides, for the data-processing programs, Autonomizer improves the output quality by 161% on average over the default settings. For the interactive programs such as game/driving, Autonomizer achieves higher success rate with lower training time than existing autonomized programs.
暂无评论