branchsbox/hotload-monomod-detectcancel

26 Commits over 31 Days - 0.03cph!

1 Year Ago
Remove defunct code about using cecil as the DMDType, not needed since we fix the references ourselves
1 Year Ago
Record event when we ILHotload, matches naming of existing hotloads so we can derive % easily
1 Year Ago
Don't attempt fast hotload if any compiler-generated type definitions change Will happen if you change / add / remove things like lambda methods
1 Year Ago
Added failing fast hotload test for compiler-generated type changes
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes Fixes after refactor, a bit ugly at the moment Support fast hotload for property accessors NoticeWidget shows ms if duration < 1s Call UISystem.OnHotload after an ILHotload ILHotload test for nested blocks Fixed ILHotload change detection for nested blocks Added hotload_fast engine convar to enable / disable IL hotload Added failing test of typeof(T) in method body hotloads Failing test for static references Fix references to members / types in fast-hotloaded method bodies Allow debugging ILHotload in Sandbox.Test Test for fast-hotloaded methods with parameter / return types defined in the changed module
1 Year Ago
Test for fast-hotloaded methods with parameter / return types defined in the changed module
1 Year Ago
Fix references to members / types in fast-hotloaded method bodies Allow debugging ILHotload in Sandbox.Test
1 Year Ago
Failing test for static references
1 Year Ago
Added failing test of typeof(T) in method body hotloads
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes Fixes after refactor, a bit ugly at the moment Support fast hotload for property accessors NoticeWidget shows ms if duration < 1s Call UISystem.OnHotload after an ILHotload ILHotload test for nested blocks Fixed ILHotload change detection for nested blocks Added hotload_fast engine convar to enable / disable IL hotload
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes Fixes after refactor, a bit ugly at the moment Support fast hotload for property accessors NoticeWidget shows ms if duration < 1s Call UISystem.OnHotload after an ILHotload ILHotload test for nested blocks Fixed ILHotload change detection for nested blocks Added hotload_fast engine convar to enable / disable IL hotload
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes Fixes after refactor, a bit ugly at the moment Support fast hotload for property accessors NoticeWidget shows ms if duration < 1s Call UISystem.OnHotload after an ILHotload ILHotload test for nested blocks Fixed ILHotload change detection for nested blocks
1 Year Ago
NoticeWidget shows ms if duration < 1s Call UISystem.OnHotload after an ILHotload ILHotload test for nested blocks Fixed ILHotload change detection for nested blocks
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes Fixes after refactor, a bit ugly at the moment Support fast hotload for property accessors
1 Year Ago
Support fast hotload for property accessors
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes Fixes after refactor, a bit ugly at the moment
1 Year Ago
Fixes after refactor, a bit ugly at the moment
1 Year Ago
Refactor AST processing for ILHotload Moved to Sandbox.Generator, and now tags changed methods with an attribute rather than referencing them from assembly-level attributes
1 Year Ago
Re-use compiler options where possible Changed fast hotload log to a trace Make OnlyMethodBodiesChanged multithreaded, fixed multiple changes in one file Failing test for property body changes Cleanup ILHotload tests, failing test for overloaded method
1 Year Ago
A bit more flexibility in fast path test case code preprocessing Added failing fast path hotload test for changing method signatures ILHotload: changes must be specifically within a BlockSyntax of a method Added Compiler.UpdateParseOptions() for tests to use Don't use ILHotload if a preprocessor define changed Incremental syntax tree parsing Throw when trying to debug an ILHotload swap during a test Basic incremental compilation Make generated code more deterministic, nicer for incremental compile Keep track of which assembly types are actually loaded from
1 Year Ago
0ms hotload fast path poc when only method bodies change using MonoMod Biggest flaw of this is detecting the changes, Ziks has some good ideas with comparing the AST https://files.facepunch.com/matt/1b2611b1/sbox-dev_My23jH4uYG.mp4 Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes Fixed methods with identical IL not being replaced by ILHotload ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests Fixed how file changes are emulated in FastPathTest
1 Year Ago
Fixed how file changes are emulated in FastPathTest
1 Year Ago
Documentation for Compiler.SyntaxTree.cs Added CompilerSettings.SourcePathFilter predicate Boilerplate for writing ILHotload tests
1 Year Ago
ILHotload should never run with a debugger attached Clean up dead code Detour using a generated dynamic method copy from the replacing method
1 Year Ago
Fixed methods with identical IL not being replaced by ILHotload
1 Year Ago
Print individual changes during compile, show node paths WIP check if all changes are in method bodies Add attributes to package assemblies describing changed methods * SupportsILHotloadAttribute is added if only method bodies change * MethodBodyChangeAttribute is added for each changed method Yet to properly support nested declaring types and methods with overloads. ILHotload looks for SupportsILHotload and MethodBodyChange attributes