IP Library Granted Patent US 12,367,023
Granted Patent B2
US 12,367,023 · App. 18/206,725 · Granted Jul 22, 2025

Compilation and execution of source code as services

Inventors: Robert Lovejoy Goodwin (Mercer Island, WA); Janaina Barreiro Gambaro Bueno (Redmond, WA); Sitaramaswamy V. Lanka (Mercer Island, WA); Dragos Barac (Sammamish, WA); Javier Garcia Flynn (Perth, AU); Pedram Faghihi Rezaei (Seattle, WA); Karthik Pattabiraman (Vancouver, CA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/434
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 12,367,023
App. No.
18/206,725
Granted
Jul 22, 2025
Kind
B2
Abstract

This document relates to compilation of source code into services. One example method involves receiving input source code, identifying data dependencies in the input source code, and identifying immutability points in the input source code based at least on the data dependencies. The example method also involves converting at least some of the input source code occurring after the immutability points to one or more service modules.

Claims (47)

1. A method performed by a computing device, the method comprising:

receiving input source code specifying a particular order to perform multiple operations involving calling a particular function with data items as input parameters;

identifying data dependencies in the input source code;

based at least on the data dependencies, identifying immutability points in the input source code;

converting at least some of the input source code occurring after the immutability points to one or more service modules; and

generating a workflow module, wherein, when compiled with the one or more service modules and executed at runtime with the one or more service modules, the workflow module is configured to designate respective service tasks that execute the one or more service modules and coordinate runtime processing by the respective service tasks,

the workflow module allowing the respective service tasks to perform the multiple operations by calling the particular function with the data items as input parameters in a different order than the particular order specified by the input source code.

2. The method of claim 1 , wherein the respective service tasks run in a single application process with the workflow module.

3. The method of claim 2 , wherein the respective service tasks communicate via shared memory.

4. The method of claim 3 , wherein the respective service tasks communicate data among one another without serialization.

5. The method of claim 1 , wherein the respective service tasks are asynchronous tasks that are created by the workflow module at runtime.

6. The method of claim 5 , wherein each service task corresponds to a different iteration of a loop in the input source code.

7. The method of claim 5 , wherein the workflow module configures each service task to await input data.

8. A system comprising:

a hardware processing unit; and

a storage resource storing computer-readable instructions which, when executed by the hardware processing unit, cause the hardware processing unit to:

receive input source code specifying a particular order to perform multiple operations involving calling a particular function with data items as input parameters;

identify data dependencies in the input source code;

based at least on the data dependencies, identify immutability points in the input source code;

convert at least some of the input source code occurring after the immutability points to one or more service modules; and

generate a workflow module, wherein, when compiled with the one or more service modules and executed at runtime with the one or more service modules, the workflow module is configured to designate respective service tasks that execute the one or more service modules and coordinate runtime processing by the respective service tasks,

the workflow module allowing the respective service tasks to perform the multiple operations by calling the particular function with the data items as input parameters in a different order than the particular order specified by the input source code.

9. The system of claim 8 , wherein the respective service tasks run in a single application process.

10. The system of claim 9 , wherein the respective service tasks communicate via shared memory.

11. The system of claim 10 , wherein the respective service tasks communicate data among one another without serialization.

12. The system of claim 8 , wherein the respective service tasks are asynchronous tasks.

13. The system of claim 12 , wherein each service task corresponds to a different iteration of a loop in the input source code.

14. The system of claim 12 , wherein the workflow module configures each service task to await input data.

15. A computer-readable storage medium storing executable instructions which, when executed by a hardware processing unit, cause the hardware processing unit to perform acts comprising:

receiving input source code specifying a particular order to perform multiple operations

involving calling a particular function with data items as input parameters;

identifying data dependencies in the input source code;

based at least on the data dependencies, identifying immutability points in the input source code;

converting at least some of the input source code occurring after the immutability points to one or more service modules; and

generating a workflow module, wherein, when compiled with the one or more service modules and executed at runtime with the one or more service modules, the workflow module designates respective service tasks that execute the one or more service modules and coordinates runtime processing by the respective service tasks,

the workflow module allowing the respective service tasks to perform the multiple operations by calling the particular function with the data items as input parameters in a different order than the particular order specified by the input source code.

16. The computer-readable storage medium of claim 15 , wherein the respective service tasks run in a single application process.

17. The computer-readable storage medium of claim 16 , wherein the respective service tasks communicate via shared memory.

18. The computer-readable storage medium of claim 17 , wherein the respective service tasks communicate data among one another without serialization.

19. The computer-readable storage medium of claim 15 , wherein the respective service tasks are asynchronous tasks.

20. The computer-readable storage medium of claim 19 , wherein each service task corresponds to a different iteration of a loop in the input source code.

21. The computer-readable storage medium of claim 20 , wherein:

the input source code specifies that:

the particular function is called with a first data item as an input parameter in a first iteration of the loop,

the particular function is called with a second data item as an input parameter in a second iteration of the loop, and

the second iteration of the loop occurs after the first iteration, and

the workflow module allows a service task that calls the particular function with the second data item as an input parameter to execute before another service task that calls the particular function with the first data item as an input parameter.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 7, 2023
From: GOODWIN, ROBERT LOVEJOY; BUENO, JANAINA BARREIRO GAMBARO; LANKA, SITARAMASWAMY V.; BARAC, DRAGOS; FLYNN, JAVIER GARCIA; REZAEI, PEDRAM FAGHIHI; PATTABIRAMAN, KARTHIK
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 063879/0203 →
Continuity (2)
Continuation 16457323 · Jun 28, 2019
Related Publication 20230315409A1 · Oct 5, 2023
References Cited (81)
US 6732090B2 · Shanahan et al. · 2004 [cited by applicant]
US 6778979B2 · Grefenstette et al. · 2004 [cited by applicant]
US 6820075B2 · Shanahan et al. · 2004 [cited by applicant]
US 6928425B2 · Grefenstette et al. · 2005 [cited by applicant]
US 7117432B1 · Shanahan · 2006 [cited by applicant]
US 7284191B2 · Grefenstette et al. · 2007 [cited by applicant]
US 7647349B2 · Hubert et al. · 2010 [cited by applicant]
US 7730003B2 · Pinto · 2010 [cited by applicant]
US 7983971B1 · McLuckie · 2011 [cited by applicant]
US 8099758B2 · Schaefer et al. · 2012 [cited by applicant]
US 8165853B2 · Pinto et al. · 2012 [cited by applicant]
US 8489742B2 · Clubb et al. · 2013 [cited by applicant]
US 8751273B2 · Pinto · 2014 [cited by applicant]
US 8924269B1 · Parvatikar et al. · 2014 [cited by applicant]
US 9323517B2 · West · 2016 [cited by applicant]
US 9357034B2 · Kumar · 2016 [cited by applicant]
US 9424024B2 · Kannan · 2016 [cited by applicant]
US 9734221B2 · Sarferaz · 2017 [cited by applicant]
US 9934295B2 · Sarferaz · 2018 [cited by applicant]
US 10191802B2 · Nautiyal · 2019 [cited by applicant]
US 10235439B2 · Sullivan · 2019 [cited by applicant]
US 10360231B2 · Hyde · 2019 [cited by applicant]
US 10360563B1 · Clubb · 2019 [cited by applicant]
US 10678601B2 · Wong · 2020 [cited by applicant]
US 20050022114A1 · Shanahan et al. · 2005 [cited by applicant]
US 20050234688A1 · Pinto et al. · 2005 [cited by applicant]
US 20050234697A1 · Pinto · 2005 [cited by applicant]
US 20050234698A1 · Pinto et al. · 2005 [cited by applicant]
US 20050234760A1 · Pinto · 2005 [cited by applicant]
US 20090031292A1 · Fulton · 2009 [cited by examiner]
US 20120197608A1 · Pinto et al. · 2012 [cited by applicant]
US 20120215560A1 · Ofek · 2012 [cited by applicant]
US 20130125097A1 · Ebcioglu et al. · 2013 [cited by applicant]
US 20130346376A1 · Dmitriev · 2013 [cited by examiner]
US 20130346988A1 · Bruno · 2013 [cited by examiner]
US 20140075019A1 · Mordani · 2014 [cited by applicant]
US 20140075431A1 · Kumar · 2014 [cited by applicant]
US 20140115560A1 · Hutchison · 2014 [cited by applicant]
US 20140123118A1 · Goetz · 2014 [cited by examiner]
US 20140211665A1 · Voccio · 2014 [cited by applicant]
US 20140337461A1 · Lipstone · 2014 [cited by applicant]
US 20140344391A1 · Varney et al. · 2014 [cited by applicant]
US 20140344399A1 · Lipstone et al. · 2014 [cited by applicant]
US 20140344400A1 · Varney et al. · 2014 [cited by applicant]
US 20140344401A1 · Varney · 2014 [cited by applicant]
US 20140344425A1 · Varney · 2014 [cited by applicant]
US 20140344452A1 · Lipstone · 2014 [cited by applicant]
US 20140344453A1 · Varney et al. · 2014 [cited by applicant]
US 20140372533A1 · Fu et al. · 2014 [cited by applicant]
US 20160291942A1 · Hutchison · 2016 [cited by examiner]
US 20170201569A1 · Fu et al. · 2017 [cited by applicant]
US 20170206256A1 · Tsirogiannis et al. · 2017 [cited by applicant]
US 20170257432A1 · Fu et al. · 2017 [cited by applicant]
US 20180203794A1 · Voccio · 2018 [cited by applicant]
US 20180329958A1 · Choudhury · 2018 [cited by examiner]
US 20180357292A1 · Rai · 2018 [cited by applicant]
US 20180357556A1 · Rai et al. · 2018 [cited by applicant]
US 20180357595A1 · Rai · 2018 [cited by applicant]
US 20190007521A1 · Lipstone · 2019 [cited by applicant]
US 20190138532A1 · Seng et al. · 2019 [cited by applicant]
US 20190166173A1 · Zhou · 2019 [cited by applicant]
US 20190179564A1 · Bernat · 2019 [cited by applicant]
US 20190260796A1 · Amine · 2019 [cited by applicant]
US 20190394224A1 · Hamdi · 2019 [cited by applicant]
US 20200110676A1 · Volos · 2020 [cited by examiner]
US 20200252415A1 · Hamdi · 2020 [cited by applicant]
AU 2004213986A1 · 2004 [cited by applicant]
CN 107851003A · 2018 [cited by applicant]
CN 109074265A · 2018 [cited by applicant]
CN 109891415A · 2019 [cited by applicant]
CN 110392876A · 2019 [cited by applicant]
WO 03001413A1 · 2003 [cited by applicant]
WO 2005106656A2 · 2005 [cited by applicant]
WO 2019021048A1 · 2019 [cited by applicant]
WO 2019099111A1 · 2019 [cited by applicant]
“Decision to Grant Issued in European Patent Application No. 20729904.1”, Mailed Date: Jul. 20, 2023, 02 Pages. [cited by applicant]
Communication pursuant to Article 94(3) EPC Received for European Application No. 20751389.6, mailed on Jun. 25, 2024, 07 pages. [cited by applicant]
First Examination report received for Indian Application No. 202147051365, mailed on Mar. 6, 2024, 07 pages. [cited by applicant]
Office Action Received for Chinese Application No. 202080047341.8, mailed on Oct. 31, 2024, 7 pages. (English translation Provided). [cited by applicant]
Intimation of Grant received for Indian Application No. 202147051365, mailed on Mar. 13, 2025, 1 page. [cited by applicant]
Notice of Allowance Received for Chinese Application No. 202080047341.8, mailed on Mar. 14, 2025, 2 pages. [cited by applicant]
Cited By (3)
US 12,608,182 US 12,699,553 US 12,699,554