NEW IN WAF 1.9 -------------- * General enhancements: - Have Clang detected first on many platforms, in particular on FreeBSD #1528 - Remove Node.cache_sig and Node.sig so that dependencies are on file contents #1580 - Change cflags in the beginning / cppflags at the end #1505 - Merge ${FOO}${BAR} flags in commands executed without a shell (no space added) - Interpret empty command-line defines as integer values #1704 - Waf tools are not cached on "waf configure" by default anymore; pass conf.load(.., cache=True) - Enable a consistent progress bar output #1641 - Add ${VAR?X} constructs in script expressions to enable simple conditional outputs - Enable 'waf dist' to package arbitrary symlinks in tarballs #1719 - Enable regexp objects in @extension besides strings for file extensions - Match extensions in the order of last definition - Task generators are now processed group-by-group, so the next task generators are processed when all tasks in a previous group are complete; bld.post_mode=POST_LAZY becomes thus the default (playground/dynamic_build/ examples) - Process Qt5 files in the way suggested by the Qt documentation - Installation methods install_files/install_as/symlink_as create regular task generators and regular tasks so that installation outputs can be re-used easily - Subclass waflib.Build.ConfiguredContext to enable configuration-dependent user commands * Performance highlights: - Reduce the key size in bld.task_sigs by adding bld.node_sigs and bld.imp_sigs - Remove __hash__ and __eq__ from Context, Node and Task #1629 - Make lazy visual studio detection the default - Remove the uses of run_once that can consume a lot of memory; add a proper LRU cache - Enable pre-forked builds by default to achieve faster builds, up to 2x speedup on short-lived processes - Enable faster consumers in Runner.py - Add the tool 'nobuild.py' to help with performance troubleshooting - Enable profiling with the --profile command-line option * API changes: - The minimum Python version required is Python 2.5 - Add Task.get_cwd() - Remove the duplicate split() functions from Utils - Remove the command called "update" - Remove Utils.nogc - Remove Configure.err_handler - Remove TaskBase.attr() which was never used - Remove Build.POST_BOTH which was never used - Remove Task.dep_vars as it is never used (define Task.vars on instances if necessary) - Remove the unused attribute 'mac_resources', use 'mac_files' instead (see demos/mac_app) - Remove qt4 and kde4 from the default modules - Refactored msvc.py - Task.sig_vars, Task.sig_explit_deps and Task.sig_implicit_deps return None - Use relative paths in apply_incpaths by default (and absolute ones when paths cross drives) - Modify Utils.run_once so that it accepts a list of *args - Better consistency between check_cfg and check_cc variables - task_gen.mapping and task_gen.prec are not defined by default on instances anymore, but instances can still define their own mappings to override the defaults, but in that case all mappings/precedences must be present. These features were not used in Waf 1.8. - Do not truncate the _task suffix from Task class names - Task.exec_command will use @argfile when command-line limits are exceeded