IP Library Granted Patent US 10,423,406
Granted Patent B2
US 10,423,406 · App. 15/691,556 · Granted Sep 24, 2019

Software feature compilation with runtime configuration

Inventors: Michael J. Novak (Redmond, WA); Sivaramakrishna Mopati (Issaquah, WA); Gerald Haslhofer (Bellevue, WA); Marc Wautier (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/71G06F8/447
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 10,423,406
App. No.
15/691,556
Granted
Sep 24, 2019
Kind
B2
Abstract

A statement in a software code segment for an application that associates the software code segment to a feature is identified. The software code segment includes a first code block and a second code block for the feature. A feature configuration for the feature is read from a manifest that lists a set of features in the application. When a staging option corresponds to a first staging option, the statement is evaluated against the staging option to remove one of the first code block and the second code block in executable code. When the staging option corresponds to a second staging option, the first software code block and the second code block are included in the executable code. The first code block and the second code block are configurable at runtime to be selected or not selected. The first version or the second version of the executable code are output.

Claims (67)

1. A computer system comprising:

a processor; and

a computer readable storage medium having stored thereon program code that, when executed by the processor, causes the processor to:

identify a statement in a software code segment for an application that associates the software code segment to a feature, wherein the software code segment includes a first software code block and a second software code block for the feature;

read a feature configuration for the feature from a manifest that lists a set of features in the application, wherein the feature configuration for the feature comprises a staging option selected from a plurality of staging options;

when the staging option corresponds to a first staging option in the plurality of staging options:

evaluate the statement against the staging option to remove one of the first software code block and the second software code block in executable code that is generated from the software code segment for a first version of the executable code; and

output the first version of the executable code for the feature;

when the staging option corresponds to a second staging option in the plurality of staging options:

include the first software code block and the second software code block in the executable code that is generated from the software code for a second version of the executable code, wherein the first software code block and the second software code block are configurable at runtime to be selected or not selected when the staging option corresponds to the second staging option; and

output the second version of the executable code for the feature.

2. The computer system of claim 1 , wherein the software code segment does not need to be changed to generate the first version of the executable code and the second version of the executable code.

3. The computer system of claim 1 , wherein:

the first software code block is removed when the first staging option in the plurality of staging options is selected in the manifest, and

the second software code block is removed when a third staging option is selected in the manifest.

4. The computer system of claim 3 , wherein:

the first staging option always does not select the feature in the application, and

the third staging option always selects the feature in the application.

5. The computer system of claim 4 , wherein:

the statement comprises a conditional statement that executes the first software code block when the feature is selected and executes the second software code block when the feature is not selected.

6. The computer system of claim 5 , wherein:

the statement is removed from the executable code when the staging option corresponds to the first staging option or the second staging option.

7. The computer system of claim 1 , wherein:

the first staging option selects the first software code block by default, and

a third staging option selects the second software code block by default.

8. The computer system of claim 1 , wherein the program code further causes the processor to:

when the first software code block is currently selected, selecting the second software code block and not selecting the first software code block when a command to change a state of the feature is received, and

when the second software code block is currently selected, selecting the first software code block and not selecting the second software code block when the command to change the state of the feature is received.

9. The computer system of claim 8 , wherein the program code further causes the processor to:

writing information for the change in the state of the feature, wherein the change in the state is used to select one of the first software code block and the second software code block during runtime.

10. The computer system of claim 9 , wherein the state is stored in a registry for the executable code.

11. The computer system of claim 1 , wherein when the staging option corresponds to the second staging option, the statement in the executable code is evaluated during runtime to select one of the first software code block and the second software code block based on a state of the feature.

12. The computer system of claim 1 , wherein when the staging option corresponds to the first staging option, compiling and linking the first software code block and the second software code block before removing the one of the first code block and the second code block from the executable code for the first version of the executable code.

13. The computer system of claim 1 , wherein the program code further causes the processor to:

receive a distribution configuration specifying a set of users; and

configure access to the first version of the executable code or the second version of the executable code to the set of users.

14. The computer system of claim 1 , further comprising:

receive usage information including an identifier; and

record the usage information using the identifier.

15. The computer system of claim 1 , wherein:

the feature configuration includes a variant definition that specifies two or more of the plurality of staging options, and

multiple versions of the executable code are generated using the software code segment for the application based on the two or more of the plurality of staging options.

16. A method comprising:

identifying, by a computing device, a statement in a software code segment for an application that associates the software code segment to a feature, wherein the software code segment includes a first software code block and a second software code block for the feature;

reading, by the computing device, a feature configuration for the feature from a manifest that lists a set of features in the application, wherein the feature configuration for the feature comprises a staging option selected from a plurality of staging options;

when the staging option corresponds to a first staging option in the plurality of staging options:

evaluating, by the computing device, the statement against the staging option to remove one of the first software code block and the second software code block in executable code that is generated from the software code segment for a first version of the executable code; and

outputting, by the computing device, the first version of the executable code for the feature;

when the staging option corresponds to a second staging option in the plurality of staging options:

including, by the computing device, the first software code block and the second software code block in the executable code that is generated from the software code for a second version of the executable code, wherein the first software code block and the second software code block are configurable at runtime to be selected or not selected when the staging option corresponds to the second staging option; and

outputting, by the computing device, the second version of the executable code for the feature.

17. The method of claim 16 , wherein the software code segment does not need to be changed to generate the first version of the executable code and the second version of the executable code.

18. The method of claim 16 , wherein:

the first software code block is removed when the first staging option in the plurality of staging options is selected in the manifest, and

the second software code block is removed when a third staging option is selected in the manifest.

19. The method of claim 16 , wherein the program code further causes the processor to:

when the first software code block is currently selected, selecting the second software code block and not selecting the first software code block when a command to change a state of the feature is received, and

when the second software code block is currently selected, selecting the first software code block and not selecting the second software code block when the command to change the state of the feature is received.

20. A non-transitory computer readable storage medium having stored thereon program code executable by a computer system, the program code causing the computer system to:

identify a statement in a software code segment for an application that associates the software code segment to a feature, wherein the software code segment includes a first software code block and a second software code block for the feature;

read a feature configuration for the feature from a manifest that lists a set of features in the application, wherein the feature configuration for the feature comprises a staging option selected from a plurality of staging options;

when the staging option corresponds to a first staging option in the plurality of staging options:

evaluate the statement against the staging option to remove one of the first software code block and the second software code block in executable code that is generated from the software code segment for a first version of the executable code; and

output the first version of the executable code for the feature;

when the staging option corresponds to a second staging option in the plurality of staging options:

include the first software code block and the second software code block in the executable code that is generated from the software code for a second version of the executable code, wherein the first software code block and the second software code block are configurable at runtime to be selected or not selected when the staging option corresponds to the second staging option; and

output the second version of the executable code for the feature.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2017
From: NOVAK, MICHAEL J.; MOPATI, SIVARAMAKRISHNA; HASLHOFER, GERALD; WAUTIER, MARC
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 043452/0783 →
Continuity (1)
Related Publication 20190065179A1 · Feb 28, 2019