2.1.1 - February 27, 2023

  • Improved compatibility with ASAN
  • Improved compatibility with Clang++
  • Suppressed creation of .LIB files with Clang even for patches with stripped /EXPORT directives
  • Fixed automatic deletion of patch files upon Agent exit
  • Fixed Bridge exiting too early for hot-restart

2.1.0 - February 17, 2023

  • Deprecated dedicated FASTBuild API EnableFASTBuildModule()
  • Deprecated support for external agents
  • Added support for MITM proxies when connecting to the license server
  • Added logging of SSL errors when failing to connect to the license server
  • Refactored API to no longer rely on <Windows.h> being included
  • Fixed variables in thread-local storage being initialized twice in the Live++ receiver thread when linking against older versions of the MSVC CRT
  • Fixed rare out-of-bounds read for compiler response files whose size is a multiple of the OS page size
  • Fixed extremely rare write-after-free in task scheduler in Broker, potentially leading to a hang or crash when enabling modules

2.0.5 - February 8, 2023

  • Updated examples and documentation with checks for invalid agents
  • Added ScheduleRestart() API for manually scheduling hot-restarts
  • Added compiler and linker log output in Visual Studio even when a process is halted
  • Added project preferences opt-in to having hooks called even when a process is halted
  • Added protection against PDBs containing invalid type indices in parts of the build info record
  • Added support for correctly patching COFF label symbols, making C++20 coroutines work
  • Added cancelable hot-reload operations via the Broker status bar and main menu
  • Added toggling optimizations for whole modules
  • Added PDB build information for incomplete compilands where available
  • Added dumping of both mini dumps and full dumps in exception handlers
  • Added bringing Broker window to front when activating via the tray icon
  • Added "Contact support" to help menu
  • Removed UI log "Compiland was not compiled for CPU type x64" for .obj files built using Microsoft's internal "aliasobj" tool
  • Improved compatibility with Clang when using __declspec(selectany) symbols
  • Improved exception handler in Bridge and Broker
  • Improved interaction with the Visual Studio debugger when hot-reloading at a breakpoint
  • Improved support for static libraries linked from arbitrary working directories
  • Fixed crash on shutdown when hot-reloading modules that link against the static runtime library
  • Fixed rare crash during symbol reconstruction for symbols without any contribution
  • Fixed rare crash for very short-lived processes
  • Fixed handling of global read-only data with relocations for code that assumes constant addresses
  • Fixed hang during hot-reload when an exception is thrown while calling the patch entry point
  • Fixed possible hang in Agent in case initialization of Bridge process fails
  • Fixed Bridge processes being left over in rare cases
  • Fixed bug in COFF reader for translation units compiled without /bigobj having more than 32767 sections
  • Fixed interaction with Visual Studio debugger in cases where threads are frozen when initiating a hot-reload
  • Fixed wrong /OPT:REF and /OPT:ICF error messages for projects using default /DEBUG settings

2.0.4 - October 7, 2022

  • Changed location of global_preferences.json from %LocalAppData% to Broker directory for easier distribution
  • Moved exception handler settings from global preferences to project preferences
  • Added support for configurable timeouts for hot-reload and hot-restart
  • Added support for configurable UI log verbosity
  • Added support for pre-compile and post-compile hooks
  • Added support for pre-build steps via project preferences
  • Implemented cancellation of hot-reload operations
  • Improved logs before and during compilation
  • Fixed rare crash when trying to load modules into already exited processes in multi-process scenarios
  • Fixed handling of interleaved EnableModule()/DisableModule() calls in quick succession
  • Fixed handling of static thread-local variables when splitting unity files
  • Fixed determining which files need to be recompiled or linked into a patch when splitting of unity files previously failed

2.0.3 - September 7, 2022

  • Added function name to hook symbol names for disambiguation of hook symbols declared on the same line or with a macro
  • Added ANSI versions of all APIs
  • Improved Broker startup time
  • Implemented support for LPP_FORCE_UNITY_SPLITTING preprocessor define for fine-grained control over unity splitting
  • Implemented automatic log file retirement
  • Fixed patching of incremental linking thunks with unity splitting enabled

2.0.2 - September 1, 2022

  • Added link to GitHub issues under "Help -> Report a bug"
  • Added safety net for PDBs containing malformed build info record type indices
  • Added API to validate agents after initialization
  • Added dedicated API to set shortcut preferences
  • Added support for copying multiple lines from list widgets in detail views, callstack window, etc.
  • Split LppCreateDefaultAgent and LppCreateSynchronizedAgent APIs into several functions
  • Project preferences can now be passed when creating an agent, reducing the room for errors due to calling APIs in the wrong order
  • Extended documentation and FAQ with known issues for bug reports acknowledged by Microsoft
  • Improved support for PDB files with completely empty DBI or IPI streams
  • Improved performance of Visual Studio COM automation
  • Improved performance of setting up agent APIs
  • Improved synchronization with the Visual Studio debugger after a hot-reload operation
  • Improved hot key handling
  • Improved documentation
  • Fixed handling of control-flow guard enabled modules
  • Fixed internal synchronization for SynchronizedAgents when hot-reloading while debugging

2.0.1 - August 24, 2022

  • Added support for splitting unity files where single .cpp files are included into several unity files
  • Improved Visual Studio interoperability when performing hot-reloads during debugging
  • Improved documentation
  • Fixed possible deadlock when interleaving EnableModule() and DisableModule() calls
  • Fixed crash when linking with the static run-time library
  • Fixed patching of RVA32 relocations
  • Fixed stripping of virtual function tables
  • Plugin versions are now shown in the "About" window

2.0.0 - August 16, 2022

  • New plugin-based Agent/Bridge/Broker architecture
  • New Hot-Deoptimize functionality
  • New networked multi-process editing
  • New modern user interface with high-DPI support
  • New automatic handling of dynamically loaded modules
  • New examples
  • Improved Hot-Restart functionality
  • Improved Hot-Fix functionality
  • Improved Clang compatibility
  • Improved Visual Studio interoperability
  • Improved Unity splitting
  • Improved hooks
  • Greatly reduced loading times
  • Greatly reduced hot-reload overhead
  • Deprecated 32-bit support

Older releases

1.6.10 - July 26, 2022

  • Bugfix: workaround for very rare Windows 10 bug that can hang the system by reserving too much address space

1.6.9 - May 4, 2022

  • Bugfix: possible crash when using inline functions in templated structs of a certain name

1.6.8 - November 11, 2021

  • Bugfix: possible crash in dynamic initializer code when using Clang

1.6.7 - November 3, 2021

  • Bugfix: detecting changes to files while hot-reload is in progress

1.6.6 - July 19, 2021

  • Bugfix: hot-restart no longer needs environment variables which caused problems with processes spawning child processes
  • Bugfix: virtual memory page reservations weren't freed correctly when manually restarting one process in a multi-process scenario
  • Bugfix: improved parsing and removing of linker directives when compiling with Clang
  • Feature: support for relative paths in continuous compilation

1.6.5 - March 26, 2021

  • Bugfix: potential crash in user application when using global symbols that emit two dynamic atexit destructors due to throwing destructors

1.6.4 - December 22, 2020

  • Bugfix: improved situation where modules could "steal" ±2GB virtual memory range from other registered modules

1.6.3 - November 25, 2020

  • Bugfix: regression introduced in 1.6.1 that would wrongly identify source compilands as library compilands, leading to unpatched functions in user code

1.6.2 - November 23, 2020

  • Bugfix: crash in user application when linking against the static runtime and calling lpp::lppShutdown in newer versions of Visual Studio 2019
  • Feature: improved handling of ±2GB virtual memory range surrounding enabled modules, reducing chances of patches that cannot be activated
  • Feature: removed obsolete handling of weak symbols

1.6.1 - October 30, 2020

  • Bugfix: changes applied to source files before loading the corresponding module in Live++ were not tracked correctly
  • Bugfix: certain relocations to symbols in anonymous namespace were not patched correctly
  • Bugfix: potential crash in external build system mode when adding new compilands
  • Bugfix: potential crash due to null pointer access
  • Bugfix: forcing local file when both local and remote files are stored in compiland dependencies when using Clang
  • Feature: dedicated FASTBuild support, i.e. compilation databases and dependencies can be directly read from FASTBuild .fdb database files
  • Feature: changed naming of Live++ patches in order to help external tools such as Superluminal Profiler find symbols for patches
  • Feature: improved logs when automating the Visual Studio debugger
  • Feature: added timeout setting for prewarming the compiler and linker environments

1.6.0 - July 20, 2020

  • Roadmap feature: support for Clang (needs patches D43002 and D80833)
  • Bugfix: recompiling files that manually set a different entry point using #pragma comment
  • Bugfix: forcing DIA interfaces to be created using the msdia140.dll that ships with Live++
  • Bugfix: public API header now compiles cleanly under Clang with -Wall
  • Bugfix: potential out-of-bounds access when gathering dynamic initializers
  • Bugfix: improved handling of symbols containing filename hashes when amalgamation splitting is used
  • Feature: extra error handling and safety nets when automating Visual Studio using COM
  • Feature: GUI item that allows to trigger recompiles in cases where the keyboard shortcut isn't recognized (e.g. when connecting via OS X remotely)
  • Feature: optimized enumeration of files
  • Feature: upgraded to xxhash version 0.7.3
  • Feature: added versioning information inside of version.txt to deployments
  • Feature: ignoring JustMyCode symbols and sections during reconstruction and when patching relocations

1.5.2 - January 27, 2020

  • Bugfix: potential error when reading modules in foreign process
  • Bugfix: stripping of associated COMDAT sections in object files compiled with /bigobj
  • Bugfix: very rare case that caused slowdowns of several seconds when reconstructing symbols
  • Bugfix: rare case that pulls in unnecessary object files as 'libraries'
  • Feature: improved performance when reconstructing symbols from COFF files
  • Feature: safeguard against PDB files that don't store a PDB path
  • Feature: fetching the compiler and linker environment no longer needs a temporary file
  • Feature: improved development and telemetry logging when timestamps are enabled
  • Feature: support for NatVis visualizers in patches in pre-4.22 versions of Unreal Engine 4

1.5.1 - August 1, 2019

  • Bugfix: potential hang when prewarming compiler/linker environment
  • Feature: lppStartup and lppShutdown APIs for cleaner startup and shutdown
  • Feature: lppRestart API for manually initiating restarts
  • Feature: menu option to show license file in Windows Explorer
  • Feature: Visual Studio 2019 support in Trial Sample and static runtime headers

1.5.0 - July 9, 2019

  • Feature: Restart functionality
  • Feature: improved Visual Studio debugging experience for halted processes
  • Feature: improved debugging of managed C# code that calls into recompiled C++ code
  • Feature: improved startup times when prewarming compiler/linker environment
  • Feature: explanatory text regarding User ID used for license activation
  • Feature: moved log files to "%LocalAppData%\Live++" path

1.4.3 - June 4, 2019

  • Bugfix: possible stall in consecutive *Async API calls
  • Bugfix: redundant global symbols in rare cases when compiling with exception handling turned on
  • Bugfix: rare crash during startup leading to stall in client
  • Bugfix: rare hang when re-compiling while being held in the debugger
  • Feature: reduced inter-process communication
  • Feature: debugging symbols for jump-to-self in code cave
  • Feature: improved log messages in a few cases
  • Feature: safeguard check ignoring compilands which are newer than the corresponding module
  • Feature: LPP_COMPILER_ERROR_MESSAGE_HOOK hook for compile error notifications
  • Feature: API for enabling and disabling multiple modules at once
  • Feature: API for logging to the Live++ UI
  • Feature: UI setting to show timestamps in log messages
  • Feature: digitally signed binaries with EV code signing certificate

1.4.2 - April 12, 2019

  • Bugfix: licensing problems for some users of 32-bit builds, caused by a bug in the 3rd-party licensing software

1.4.1 - April 9, 2019

  • Bugfix: cryptic "Initialization error 4" in 32-bit builds

1.4.0 - April 8, 2019

  • Bugfix: possible crash when changing certain UI settings
  • Bugfix: potential buffer overrun in Live++ API
  • Bugfix: potential crash when enumerating thread instruction pointers
  • Bugfix: out-of-bounds read for malformed environment blocks
  • Bugfix: license activation status sometimes not showing correctly
  • Bugfix: window position not being saved correctly when docking to the desktop borders
  • Bugfix: potential slowdown caused by accessing optical drives
  • Feature: new API for applying UI settings
  • Feature: new API for building patches directly
  • Feature: new UI setting for C++ file extensions used when splitting amalgamated/unity files
  • Feature: support for relative compiler and linker paths in UI settings
  • Feature: support for adding completely new object files when using an external build system
  • Feature: support for .o object files
  • Feature: writing of callstack dump upon fatal errors

1.3.3 - January 28, 2019

  • Bugfix: possible crash when registering modules using relative paths
  • Bugfix: increased CPU usage when opening and closing applications belonging to the same Live++ instance
  • Bugfix: hashing of module headers for identifying identical modules
  • Feature: added compiler command-line to development log
  • Feature: optimized logging performance

1.3.2 - November 22, 2018

  • Bugfix: improved information in About dialog in case hardware ID doesn't match
  • Bugfix: updated documentation regarding continuous compilation
  • Feature: UI setting for keeping Live++ in the system tray
  • Feature: updated documentation regarding natvis debug visualizers

1.3.1 - September 24, 2018

  • Bugfix: improved behaviour and error reporting when launching Live++ executable directly
  • Bugfix: fixed possible unresponsiveness when re-compiling while process is halted in debugger
  • Feature: updated documentation regarding license activation

1.3.0 - July 11, 2018

1.2.5 - May 30, 2018

  • Bugfix: workaround for incremental Windows API slowdown when enumerating thread instruction pointers
  • Bugfix: over-subscription of threads when re-compiling multiple files
  • Feature: support for project and user setting files
  • Feature: improved error reporting when detecting API vs. DLL version mismatch
  • Feature: improved logging when patching multiple processes
  • Feature: improved logging when detecting partial PDBs with missing linker environment
  • Feature: automatic identification of binary identical modules when editing multiple processes, supports copied executables in different directories
  • Feature: updated documentation and FAQ regarding FASTBuild and IncrediBuild setup

1.2.4 - May 24, 2018

  • Bugfix: mis-identification of dynamic initializers for COMDAT symbols in named namespaces
  • Bugfix: same compiland being added more than once caused by missing normalization of .obj paths

1.2.3 - May 23, 2018

  • Feature: digitally signed binaries to remedy false positives generated by certain anti-virus and malware scanners
  • Feature: workaround for compile error C2858 experienced when using Incredibuild with remote agents and precompiled header files
  • Feature: improved documentation for command-line tools

1.2.2 - May 22, 2018

  • Bugfix: linker symbol clashes when linking against the static runtime library using _ITERATOR_DEBUG_LEVEL 0
  • Bugfix: crash caused by race condition between client and server signals when client is held in the debugger
  • Bugfix: crash caused by not updating directory cache for new dependencies
  • Bugfix: 'LNK1143: invalid or corrupt file: no symbol for COMDAT section' when stripping symbols in discardable 'pick any' COMDAT sections
  • Bugfix: source files on virtual drives could lead to '#pragma once' being ignored in certain headers
  • Bugfix: breakpoints in source files on virtual drives being ignored by the debugger
  • Bugfix: loading same modules more than once in multi-process editing scenarios
  • Feature: removed obsolete UI setting superseded by additional linker options
  • Feature: UI setting for passing additional compiler options used when creating a patch
  • Feature: UI setting for letting Live++ minimize into the system tray when being closed
  • Feature: UI settings for using compiler and linker override paths as fallback only
  • Feature: warning message when changing UI settings related to splitting of amalgamated/unity files
  • Feature: improved loading times
  • Feature: improved telemetry logs
  • Feature: removed message box when no activated license can be found, window title will show 'not activated' instead

1.2.1 - May 11, 2018

1.1.2 - April 30, 2018

  • Bugfix: corrupt COFF symbol table when stripping object files compiled with /bigobj containing more than 65535 sections
  • Bugfix: missing relocation when stripping object files with overflown relocations
  • Bugfix: potential crash when PDB contains no linker symbol
  • Bugfix: error 87 when trying to spawn compiler or linker, caused by multi-line environment variables

1.1.1 - April 25, 2018

  • Feature: installing compiled patches when editing multiple processes that already have patches applied
  • Feature: improved performance when applying patches to multiple processes

1.1.0 - April 23, 2018

  • Bugfix: potential hang when querying terminated process for page protection
  • Bugfix: crash bug when throwing exceptions in 64-bit applications
  • Bugfix: system tray misbehaving in certain combinations of notifications and focus events
  • Bugfix: compiling to .obj files that contain UTF-8 characters, compiler response file needs ANSI
  • Feature: multi-processor compilation when re-compiling multiple files
  • Feature: terminated processes/clients are automatically detected and disconnected from the server
  • Feature: Live++ instance stays open until the last process terminates or disconnects
  • Feature: process group names are automatically fixed should they contain illegal characters
  • Feature: global COFF stripping when re-compiling multiple files
  • Feature: system tray icon is removed when last process disconnects

1.0.5 - April 12, 2018

  • Bugfix: potential hang due to an endless loop when stripping COFFs
  • Bugfix: potential crash due to out-of-bounds read when reading and reconstructing COFFs
  • Feature: added support for virtual drives
  • Feature: added support for playing sounds on successful and failed re-compiles
  • Feature: minimizing Live++ now sends it into the system tray, where progress is shown via animated icons

1.0.4 - April 10, 2018

  • Feature: added continuous compilation mode
  • Feature: optimized finding of changed files, leading to much shorter iteration times, especially on large projects with lots of files

1.0.3 - April 6, 2018

  • Bugfix: when linking fails, it will now be retried without having to modify a file first
  • Feature: added support for files built remotely using FASTBuild
  • Feature: added UI setting for overriding linker paths
  • Feature: added UI setting for clearing logs on recompiles
  • Feature: added UI settings for disabling the use of compiler and linker environments

1.0.2 - April 4, 2018

  • Feature: workaround for WriteProcessMemory slowdown in Windows 10 SDK

1.0.1 - March 29, 2018

  • Bugfix: pre- and post-patch hooks would sometimes be discarded by the compiler (VS2015 and newer)
  • Feature: added free sample application included in trial version

1.0.0 - March 27, 2018

  • Initial release