DB version has been increased; clean build will result after upgrading
New
New -report command line argument which outputs a detailed report of the build, including:
Processing time by item.
Processing time by library.
Processing time by type (obj, exe, dll etc).
Cache statistics.
Include file usage.
Add 'UnityInputIsolateWritableFiles' to unity generation. Allows files which are "open for edit" in revision control to be built individually to speed up iterative compile times.
Improvements
Tests can reference execuable via alias
-verbose output for Objects is improved: Timing is more accurate and number of includes found is displayed.
Include processing optimizations
Dependency graph traversal optimizations
Progress estimation optimizations
Large database load/save time is greatly reduced
Database size is greatly reduced
Total build time includes some previously excluded overheads
Job queue contention optimization
Small optimization to Unity generation
Fixes
Avoid using preprocessor with MSVC compiler unnecessarily
Fix C# dependencies not being tracked properly when using -clean
Fix C# dependencies not being tracked correctly for multiple explicitly listed .cs files
GCC includes not being correcly detected
MSVC includes being missed on some rare occasions
Fix poor unity splitting logic resulting in bad distribution and occassional empty unity files
Cache stats in -summary were not being displayed when in "writeonly" mode
Cache commit to existing entry no longer results in removal of entry
Allow concatenation of a String variable to an ArrayOfStrings variable instead of generating error 1034
Copy step outputs a line to the tty during build, consistent with other tasks
Copy outputs detailed information when -verbose is used
Copy outputs a failure message when copy fails
Fix progress calculation reaching 100% before completion
Fix small memory leak when generating unity files
Handle some highly unlikely cases of failing to set file time for cache retrieval
Empty arrays containing whitespace or comments are now handled correctly
v0.55 (5-Oct-2013)
Note
DB version has been increased; clean build will result after upgrading
Improvements
Language Syntax Enhancements
A new variable of type Struct can be defined, grouping other variables
Structures can be kept in Arrays and Arrays can be iterated over
A new Using function takes all the variables in a Struct and pushes them into the current scope
Add Print function to assist debugging configurations
Allow 0 size ForEach loops
Allow String to be concantenated to ArrayOfStrings
Build Functionality Enhancements
Add SNC compiler detection
Add Exec() function - calls an arbitrary executable to create a file
Test() function can use existing executable, as well as one built by FASTBuild
Static libs and DLLs automatically use precompiled header obj files
Errors are output contiguously, improving readability when there are multiple failed nodes
Improve thread number output when compiling with > 9 threads
More detailed errors when failing to write temp files
Linker failure message is imrproved (specifies Dll or Exe, rather than just "Linker")
Add wesbite and copyright info to "-version" output
Show total time taken by node type in -summary output
Various -summary formatting enhancements
Small performance improvement for processing very large objects
Fixes
DLL Fixes
DLLs comiled with MSVC correctly link export symbols
When linking a DLL, "DLL:" is shown in output instead of "Exe:"
Linking a DLL with another DLL deduces the import library automatically
Ensure DLLs are not rebuilt unnecessarily
GCC/SNC/PS3 Fixes
Fix broken PS3/SNC compilation (was reading stderr instead of stdout)
Standardize GCC and MSVC compiler detection (allow with and without .exe extension)
Fix detection of GCC compiler in PS3 SDK
Fix detection of C vs C++ for GCC/SNC when using the cache
Correct errors not being double-clickable in VisualStudio in some situations due to thread numbering
Ensure active job count doesn't underflow when performing local jobs
Correct formatting of cache path to stdout in -verbose mode
Correct error message when attempting to append String to incompatible type
Don't spin @ 0% when failing the build
Save completion of items which are succesful even after the build as a whole has failed
-summary formatting is no longer reliant on tab width
v0.54 (3-Jun-2013)
Note
DB version has been increased; clean build will result after upgrading
Improvements
Allow {} to be used alone to create a local scope (like a function)
Config files (bff) can now include other config files, e.g. #include "file.bff"
Direct variable assignment/concatenation now supported for variables (.X = .Y)
Fixes
Unity generation parameter UnityInputExcludedFiles is no longer sensitive to slash type used
Stop tasks sometimes being started after build is aborted with Ctrl+C
Fix typographical error in command line usage output
Fix hang at startup if database file (.fdb) has been corrupted
Fix corrupt "Unknown argument" error message when passed bad cmd line arguments
v0.53 (24-Feb-2013)
Note
The cache is invalidated due to path/version changes (no old entries will be used)
Improvements
Cache performance and space usage improvements
Cache directory hierarchy is simplified to reduce IO
Cache contents are compressed, saving ~50% of disk space
Compression yields speedups on IO bound (local or network) builds
Handle transient file opening failures due to other applications opening our files (Antivirus etc)
Add "Copy" function which can copy a file during the build
Library and CSAssembly 'CompilerInputPath' can now accept a list of paths (or a single path as before)
Optimize node lookups to reduce CPU usage
Hide distributed task counts on progress bar when not in distributed mode
Fixes
Correct misleading error when unexpected character follows a variable operator (was displaying #1016, now displays new #1017)
Correctly handle comments in the middle of variable assignments (e.g. ".Var // comment" or ".Var = // comment")
Comments are correctly parsed inside {} scopes when starting at column 0
Add missing type safety checks on various CSAssembly and Library properties
Unity files are forced to be regenerated when "-clean" option is used
Build no longer gets stuck upon cache hit when running with "-j0"
Temp directory now correctly initialized when running with "-j0"
v0.52 (18-Feb-2013)
Note
The build database (fdb) version has changed, a clean build will forced on first use of this version
Improvements
Unity 'UnityInputPath' can now accept a list of paths (or a single path as before)
Fixes
Fix crash emitting a large errors to the TTY (>64KB)
Detect non-unique Unity, Executable and DLL nodes (emit Error #1100)
Handle Unity output paths that are not \ terminated
v0.51 (17-Feb-2013)
New
Config file now supports // style line comments as well as ; style
Add checks and errors (#1302, #1303) for bad precompiled header setup for cl.exe
Config markup helpers for VisualStudio and NotePad++
Improvements
Improve precision of timer used to track task durations
Fixes
All object and pch files are deleted before compilation to ensure rebuild/no old files left behind
Fix bad string output in "Unknown build target" message in x64
Compiler executable (MSVC & GCC) detection is no longer case sensitive
Removed detection of lower-case /z7 is as using Z7 debug format for cl.exe. (Z7 debug format arg is uppercase, and cl.exe compiler options are case sensitive)
v0.50 (12-Feb-2013)
The first public release of FASTBuild, with stable support for: