Electronic Notes in Theoretical Computer Science · 2000 · 14 citations · 6 references
ComputingComputer EngineeringComputer ScienceCompilersProgramming LanguagesSystems ProgrammingAbstract Syntax TreesCompiler ConstructionModule SystemsSoftware ConstructionCompiler DesignCompiler SupportCompiler-based GenerationIncremental CompilationIncremental Compilation ModelsModule DesignSeparate CompilationSeparate Compilation Support
Ciao Prolog incorporates a module system which allows separate compilation and sensible creation of standalone executables. We describe some of the main aspects of the Ciao modular compiler, ciaoc, which takes advantage of the characteristics of the Ciao Prolog module system to automatically perform separate and incremental compilation and efficiently build small, standalone executables with competitive run-time performance, ciaoc can also detect statically a larger number of programming errors. We also present a generic code processing library for handling modular programs, which provides an important part of the functionality of ciaoc. This library allows the development of program analysis and transformation tools in a way that is to some extent orthogonal to the details of module system design, and has been used in the implementation of ciaoc and other Ciao system tools. We also describe the different types of executables which can be generated by the Ciao compiler, which offer different tradeoffs between executable size, startup time, and portability, depending, among other factors, on the linking regime used (static, dynamic, lazy, etc.). Finally, we provide experimental data which illustrate these tradeoffs.
6
Artificial intelligence: a modern approach
Choice Reviews Online · 1995 · 22.2K citations · Full text
International conference on logic programming
Martin Gebser, Roland Kaminski, Benjamin Kaufmann et al. · 2014 · 144 citations