[ Home | Source | Mailing list | Documentation ]
Picking the right approach to solving a problem is key in the ease and effectiveness of the solution. Mem takes a new approach towards building: memoization. Script your build how you like, annotate your expensive leaf calls and mem will make sure that they are only reevaluated when the inputs change.
changes in all inputs, including compiler flags, correctly triggers rebuilds
build into separate directory
variant builds
portable (written in Python)
automatically determin's dependencies for supported languages
comes with support for building c, c++, java, swig, asciidocs
extending the build is extremely easy (write a memoized function)
very fast: no dependency graph calculations needed—immediately starts building
build caching (eg like ccache) is inherant in build
build is not file-system specific—build could be on in-process data structures or anything external that supports hashing (eg S3)
build is scripted in normal Python
not a build-specific half-baked language
not a subset of Python: build can include exceptions, threading, fork()ing, etc.
can use the wealth of existing Python modules
build is dynamic:
no global graph of dependencies
no requirement to know ahead of time what will be needing built nor what output files will be produced