| Preface | p. vii |
| Introducing Vesta | |
| Introduction | p. 5 |
| Some Scenarios | p. 6 |
| The Configuration Management Challenge | p. 8 |
| The Vesta Response | p. 9 |
| Essential Background | p. 13 |
| The Unix File System | p. 14 |
| Naming Files and Directories | p. 14 |
| Mount Points | p. 14 |
| Links | p. 15 |
| Properties of Files | p. 15 |
| Unix Processes | p. 16 |
| The Unix Shell | p. 17 |
| The Unix Programming Environment | p. 18 |
| Make | p. 20 |
| The Architecture of Vesta | p. 21 |
| System Components | p. 21 |
| Source Management Components | p. 22 |
| Build Components | p. 24 |
| Storage Components | p. 27 |
| Models and Modularity | p. 28 |
| Vesta's Core Properties | p. 29 |
| The User's View of Vesta | |
| Managing Sources and Versions | p. 35 |
| Names and Versions | p. 36 |
| The Source Name Space | p. 36 |
| Versioning | p. 37 |
| Naming Files and Packages | p. 38 |
| The Development Cycle | p. 40 |
| The Outer Loop | p. 40 |
| The Inner Loop | p. 41 |
| Detailed Operation of the Repository Tools | p. 42 |
| Version Control Alternatives | p. 44 |
| Additional Repository Tools | p. 45 |
| Mutable Files and Directories | p. 45 |
| Replication | p. 46 |
| Global Name Space | p. 46 |
| A Replication Example | p. 48 |
| The Replicator | p. 49 |
| Cross-Repository Check-out | p. 50 |
| Repository Metadata | p. 52 |
| Mutable Attributes | p. 52 |
| Access Control | p. 55 |
| Metadata and Replication | p. 57 |
| System Description Language | p. 59 |
| Motivation | p. 59 |
| Language Highlights | p. 60 |
| The Environment Parameter | p. 62 |
| Bindings | p. 63 |
| Tool Encapsulation | p. 65 |
| Closures | p. 67 |
| Imports | p. 68 |
| Building Systems in Vesta | p. 71 |
| The Organization of System Models | p. 72 |
| Hierarchies of System Models | p. 74 |
| Bridges and the Standard Environment | p. 76 |
| Library Models | p. 77 |
| Application Models | p. 79 |
| Putting It All Together | p. 80 |
| Control Panel Models | p. 81 |
| Customizing the Build Process | p. 84 |
| Handling Large Scale Software | p. 88 |
| Inside Vesta | |
| Inside the Repository | p. 93 |
| Support for Evaluation and Caching | p. 93 |
| Derived Files and Shortids | p. 93 |
| Evaluator Directories and Volatile Directories | p. 94 |
| Fingerprints | p. 96 |
| Inside the Repository Implementation | p. 98 |
| Directory Implementation | p. 98 |
| Shortids and Files | p. 100 |
| Longids | p. 101 |
| Copy-on-Write | p. 103 |
| NFS Interface | p. 104 |
| RPC Interfaces | p. 105 |
| Implementing Replication | p. 105 |
| Mastership | p. 105 |
| Agreement | p. 106 |
| Agreement-Preserving Primitives | p. 108 |
| Propagating Attributes | p. 110 |
| Incremental Building | p. 113 |
| Overview of Function Caching | p. 113 |
| Caching and Dynamic Dependencies | p. 115 |
| The Function Cache Interface | p. 119 |
| Computing Fine-Grained Dependencies | p. 120 |
| Representing Dependencies | p. 120 |
| Caching External Tool Invocations | p. 121 |
| Caching User-Defined Function Evaluations | p. 123 |
| Caching System Model Evaluations: A Special Case | p. 131 |
| Error Handling | p. 132 |
| Function Cache Implementation | p. 134 |
| Cache Lookup | p. 135 |
| Cache Entry Storage | p. 138 |
| Synchronization | p. 139 |
| Evaluation and Caching in Action | p. 139 |
| Scratch Build of the Standard Environment | p. 139 |
| Scratch Build of the Vesta Umbrella Library | p. 142 |
| Scratch and Incremental Builds of the Evaluator | p. 144 |
| Weeder | p. 147 |
| How Deletion is Specified | p. 148 |
| Implementation of the Weeder | p. 149 |
| The Function Call Graph | p. 149 |
| Concurrent Weeding | p. 152 |
| Assessing Vesta | |
| Competing Systems | p. 161 |
| Loosely Connected Configuration Management Tools | p. 161 |
| RCS | p. 162 |
| CVS | p. 162 |
| Make | p. 163 |
| Integrated Configuration Management Systems | p. 165 |
| DSEE | p. 165 |
| ClearCASE | p. 167 |
| Other Systems | p. 168 |
| Vesta System Performance | p. 171 |
| Platform Configuration | p. 172 |
| Overall System Performance | p. 172 |
| Performance Comparison with Make | p. 173 |
| Performance Breakdown | p. 175 |
| Caching Analysis | p. 177 |
| Resource Usage | p. 178 |
| Repository Performance | p. 180 |
| Speed of File Operations | p. 181 |
| Disk and Memory Consumption | p. 183 |
| Speed of Repository Tools | p. 186 |
| Speed of Cross-Repository Tools | p. 188 |
| Speed of the Replicator | p. 189 |
| Function Cache Performance | p. 190 |
| Server Performance | p. 190 |
| Measurements of the Stable Cache | p. 191 |
| Disk and Memory Usage | p. 192 |
| Function Cache Scalability | p. 192 |
| Weeder Performance | p. 193 |
| Interprocess Communication | p. 194 |
| Conclusions | p. 197 |
| Vesta in the Real World | p. 198 |
| Vesta in the Future | p. 199 |
| SDL Reference Manual | p. 203 |
| Introduction | p. 203 |
| Lexical Conventions | p. 204 |
| Meta-notation | p. 204 |
| Terminals | p. 204 |
| Semantics | p. 205 |
| Value Space | p. 205 |
| Type Declarations | p. 206 |
| Evaluation Rules | p. 207 |
| Expr | p. 208 |
| Literal | p. 209 |
| Id | p. 209 |
| List | p. 209 |
| Binding | p. 212 |
| Select | p. 213 |
| Block | p. 214 |
| Stmt | p. 215 |
| Assign | p. 215 |
| Iterate | p. 216 |
| FuncDef | p. 216 |
| FuncCall | p. 219 |
| Model | p. 220 |
| Files | p. 220 |
| Imports | p. 224 |
| File Name Interpretation | p. 227 |
| Pragmas | p. 228 |
| Primitives | p. 228 |
| Functions on Type t_bool | p. 229 |
| Functions on Type t_int | p. 229 |
| Functions on Type t_text | p. 230 |
| Functions on Type t_list | p. 232 |
| Functions on Type t_binding | p. 234 |
| Special Purpose Functions | p. 237 |
| Type Manipulation Functions | p. 238 |
| Tool Invocation Function | p. 239 |
| Diagnostic Functions | p. 243 |
| Concrete Syntax | p. 244 |
| Grammar | p. 244 |
| Ambiguity Resolution | p. 247 |
| Tokens | p. 247 |
| Reserved Identifiers | p. 249 |
| The Vesta Web Site | p. 251 |
| References | p. 253 |
| Index | p. 257 |
| Table of Contents provided by Ingram. All Rights Reserved. |