#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3059740 on 2016/07/21 by Ben.Marsh
Format license violations on separate lines rather than as a single multi-line string, so they can be parsed out correctly by the EC log parser.
Change 3063115 on 2016/07/25 by Ben.Marsh
Add missing projects to Mono AutomationTool solution.
Change 3067125 on 2016/07/27 by Ben.Marsh
Clean up and document the engine versioning system.
* Version.h has a summary of all the different versioning concepts in UE4, as well as an explanation of what all the macros do.
* VersionLocked.h has been removed. ENGINE_NET_VERSION and ENGINE_REPLAY_VERSION can be overriden directly in Version.h if necessary.
* Added explicit macros for ENGINE_CURRENT_CL_VERSION And ENGINE_COMPATIBLE_CL_VERSION. The MODULE_API_VERSION macro is now defined to be the same as ENGINE_COMPATIBLE_CL_VERSION.
* Build/Build.version now includes the compatible CL version, so it can be determined without having to parse header files inside MacToolChain.cs.
* UpdateLocalVersion UAT command now exposes a -CompatibleCL=... argument to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* SetVersion BuildGraph task now has a CompatibleChange="" attribute to update ENGINE_COMPATIBLE_CL_VERSION and the CompatibleChange property in Build.version.
* VersionFileUpdater now makes an effort to parse tokens matching the macros it's going to overwrite, rather than requiring exact matches in whitespace in Version.h.
* Running UpdateLocalVersion now syncs files to revision 0 before writing if P4 is enabled, similarly to UGS, or fails if they are not writable.
Change 3067242 on 2016/07/27 by Ben.Marsh
Fix UGS showing a build failure/warning dialog immediately if you submit while the build is yellow/red. Now ignores builds before your last submitted CL.
Change 3068116 on 2016/07/28 by Ben.Marsh
Add a small Windows utility to terminate all running processes under a given root directory, and run it before and after every sync. Mean to fix instances where zombie editor processes do not terminate correctly and cause subsequent syncs to fail.
Change 3068246 on 2016/07/28 by Ben.Marsh
UGS: Improvements to 'Clean Workspace' dialog - empty folders are now set to be deleted by default, and added a context menu to select all/none/empty/default for a subtree, as well as to open Windows explorer at that location.
Change 3068573 on 2016/07/28 by Ben.Marsh
Attempt to fix AppDomain unload errors; suspect caused by delay to terminate child processes when managed exception is thrown on child threads. Now waits for the currently running threads to finish executing before quitting.
Change 3068575 on 2016/07/28 by Ben.Marsh
Respect the -noxge command-line argument when compiling UHT.
Change 3068665 on 2016/07/28 by Ben.Marsh
Delete any DLLs in output folders which share names with build products. The Windows loader reads DLLs from the first location it finds a file with a matching name, so we need to ensure that it doesn't load stale DLLs when output directories are changed (moving a module into a plugin, for example).
Change 3073316 on 2016/08/02 by Ben.Marsh
CoreUObject: Replace header guards with #pragma once directives.
Change 3073325 on 2016/08/02 by Ben.Marsh
CoreUObject: Manually untangle a few circular includes around ObjectBase.h and Class.h to allow making them into IWYU-style headers.
Change 3074391 on 2016/08/02 by Ben.Marsh
GitHub #2646: Always allow programs to build as part of non-game solution configurations.
Change 3075123 on 2016/08/03 by Richard.Fawcett
Ensure that zip files created outside of Ionic Zip can be unzipped with CommandUtils.UnzipFiles
Zip files created with 7-zip, WinRAR, and Windows Explorer all contain entities for directories, not just the files in them. Code in CommandUtils.UnzipFiles made the assumption that all entities in the zip file were files, and an exception was being thrown on encountering a directory.
Change 3075848 on 2016/08/03 by Ben.Marsh
UBT: Fix a few cases where it's possible to construct a non-canonical DirectoryReference - root directories on Windows must always have a terminating slash, but any other directories must note. DirectoryInfo and Path.GetFullPath() do not enforce this requirement.
Change 3075850 on 2016/08/03 by Ben.Marsh
UBT: Fix UHT failures when running with -nopch.
Change 3077058 by Ben.Marsh
UHT: Remove the auto-generated ObjectBase.h include from generated header files. Was originally added to allow doxygen to parse headers more easily, but was switched to parsing the file only as part of parent files instead.
[CL 3077308 by Ben Marsh in Main branch]
Restructured the analytics plugins so that editor only and platform specific functionality are all in one plugin. This requires your project file to be updated
#Ocean
Updated the project due to the plugin changes
[CL 2646527 by Joe Graf in Main branch]