IP Library › Granted Patent US 11,755,313
Granted Patent B2
US 11,755,313 · App. 17/373,391 · Granted Sep 12, 2023

Implementing changes made to source code of reloadable types at runtime

Inventor: Tomas Matousek (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/656G06F8/71
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,755,313
App. No.
17/373,391
Granted
Sep 12, 2023
Kind
B2
Abstract

Systems and methods for implementing changes made to source code of a program at runtime are provided. In particular, a computing device may execute the source code in a runtime environment and detect changes made to the source code at runtime in the runtime environment. In response to detecting the changes, the computing device may determine if the changes were made to a type in the source code identified as reloadable. In response to determining that the changes were made to the type in the source code identified as reloadable, the computing device may create a new version of the type and perform implementation of the changes to the source code at runtime using the new version of the type.

Claims (52)

1. A method for implementing changes made to source code of a program at runtime, the method comprising:

executing the source code in a runtime environment, wherein the source code includes a reloadable type and a non-reloadable type in-place;

detecting changes made to the source code at runtime in the runtime environment;

determining if the changes were made to a type in the source code identified as the reloadable type based on a framework that was used to construct the source code, wherein the framework includes a framework library that indicates whether the type in the source code is the reloadable type or the non-reloadable type in-place;

creating, in response to determining that the changes were made to the type in the source code identified as the reloadable type, a new version of the reloadable type; and

performing implementation of the changes to the source code at runtime using the new version of the reloadable type.

2. The method of claim 1 , wherein executing the source code in the runtime environment comprises:

obtaining the source code;

loading the source code in an integrated development environment (IDE); and

executing the source code in the runtime environment deployed by the IDE.

3. The method of claim 1 , further comprising updating, in response to determining that the changes were not made to the type in the source code identified as reloadable, the non-reloadable type in-place.

4. The method of claim 1 , wherein performing implementation of the changes to the source code at runtime using the new version of the reloadable type further comprises replacing a runtime representation and one or more existing instances of a previous version of the type in the source code with the new version of the reloadable type.

5. The method of claim 1 , wherein performing implementation of the changes to the source code at runtime using the new version of the reloadable type further comprises:

notifying a framework that was used to construct the source code that the new version of the reloadable type has been created; and

transferring a state from one or more existing instances of a previous version of the type in the source code to the new version.

6. The method of claim 1 , further comprising continuing executing the updated source code with the changes in the runtime environment.

7. The method of claim 1 , wherein determining if the changes were made to a type in the source code identified as reloadable further comprises determining if the changes were made to a type in the source code identified as reloadable based on a framework library associated with a framework that was used to construct the source code, wherein the framework library comprises a list of predefined types that are marked as reloadable.

8. A computing device for implementing changes made to source code of a program at runtime, the computing device comprising:

a processor; and

a memory having a plurality of instructions stored thereon that, when executed by the processor, causes the computing device to:

execute the source code in a runtime environment, wherein the source code includes a reloadable type and a non-reloadable type in-place;

detect changes made to the source code at runtime in the runtime environment;

determine if the changes were made to a type in the source code identified as the reloadable type based on a framework that was used to construct the source code, wherein the framework includes a framework library that indicates whether the type in the source code is the reloadable type or the non-reloadable type in-place;

create, in response to determination that the changes were made to the type in the source code identified as the reloadable type, a new version of the reloadable type; and

perform implementation of the changes to the source code at runtime using the new version of the reloadable type.

9. The computing device of claim 8 , wherein to execute the source code in the runtime environment comprises to:

obtain the source code;

load the source code in an integrated development environment (IDE); and

execute the source code in the runtime environment deployed by the IDE.

10. The computing device of claim 8 , wherein the computing device is further configured to update, in response to determination that the changes were not made to the type in the source code identified as reloadable, a type in-place.

11. The computing device of claim 8 , wherein to perform implementation of the changes to the source code at runtime using the new version of the reloadable type comprises to replace a runtime representation and one or more existing instances of a previous version of the type in the source code with the new version of the reloadable type.

12. The computing device of claim 8 , wherein to perform implementation of the changes to the source code at runtime using the new version of the reloadable type comprises to:

notify a framework that was used to construct the source code that the new version of the reloadable type has been created; and

transfer a state from one or more existing instances of a previous version of the type in the source code to the new version.

13. The computing device of claim 8 , wherein the computing device is further configured to continue executing the updated source code with the changes in the runtime environment.

14. The computing device of claim 8 , wherein to determine if the changes were made to a type in the source code identified as reloadable further comprises to determine if the changes were made to a type in the source code identified as reloadable based on a framework library associated with a framework that was used to construct the source code, wherein the framework library comprises a list of predefined types that are marked as reloadable.

15. A non-transitory computer-readable medium storing instructions for implementing changes made to source code of a program at runtime, the instructions when executed by one or more processors of a computing device, cause the computing device to:

execute the source code in a runtime environment, wherein the source code includes a reloadable type and a non-reloadable type in-place;

detect changes made to the source code at runtime in the runtime environment;

determine if the changes were made to a type in the source code identified as the reloadable type based on a framework that was used to construct the source code, wherein the framework includes a framework library that indicates whether the type in the source code is the reloadable type or the non-reloadable type in-place;

create, in response to determination that the changes were made to the type in the source code identified as the reloadable type, a new version of the reloadable type; and

perform implementation of the changes to the source code at runtime using the new version of the reloadable type.

16. The non-transitory computer-readable medium of claim 15 , wherein to execute the source code in the runtime environment comprises to:

obtain the source code;

load the source code in an integrated development environment (IDE); and

execute the source code in the runtime environment deployed by the IDE.

17. The non-transitory computer-readable medium of claim 15 , wherein the instructions when executed by the one or more processors further cause the computing device to update, in response to determination that the changes were not made to the type in the source code identified as the reloadable type, the non-reloadable type in-place.

18. The non-transitory computer-readable medium of claim 15 , wherein to perform implementation of the changes to the source code at runtime using the new version of the reloadable type comprises to replace a runtime representation and one or more existing instances of a previous version of the type in the source code with the new version of the reloadable type.

19. The non-transitory computer-readable medium of claim 15 , wherein to perform implementation of the changes to the source code at runtime using the new version of the reloadable type comprises to:

notify a framework used to construct the source code that the new version of the reloadable type has been created; and

transfer a state from one or more existing instances of a previous version of the type in the source code to the new version.

20. The non-transitory computer-readable medium of claim 15 , wherein the instructions when executed by the one or more processors further cause the computing device to continue executing the updated source code with the changes in the runtime environment.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2021
From: MATOUSEK, TOMAS
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 056828/0088 →
Continuity (1)
Related Publication 20230019235A1 · Jan 19, 2023
Cited By (1)
US 12,493,460