Patents by Inventor Jan Kotas
Jan Kotas has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 11972237Abstract: Improved compilers recognize interception declarations in source code, and emit code that replaces invocations of specified artifacts with invocations of specified interceptors instead. Source generators proactively modify program behavior in arbitrary desired ways without introducing hidden security violations and without requiring edits by the program's developers. Interception declarations are visible in source code and development tools. In some cases, different invocations of a particular method at respective locations are intercepted by different replacement methods. Replacement methods have identical signatures, or are otherwise compatible. Some interceptors specify optional parameters. Method calls, field accesses, and property calls may be intercepted. Work to modify program behavior is moved in the program lifecycle from runtime to compile time, thus improving runtime performance and eliminating JIT compilation security risks.Type: GrantFiled: January 9, 2023Date of Patent: April 30, 2024Assignee: Microsoft Technology Licensing, LLCInventors: Jared Parsons, David Fowler, Jan Kotas, Stephen Harris Toub, Richard Steele Gibson, Andrew Spenser Gocke, Julien David Couvreur, Christopher Sienkiewicz
-
Publication number: 20240111518Abstract: A computing system and method for determining if a first software component that has shipped separately from a second software component has been updated. An inline expansion process copies a first method of the first software component into a first method of a second software component is performed so that the copied first method is executable when the second method of the second software component is executed. The first method from the first software component is copied into metadata that is attached to the first method of the second software component. The copy of the first method in the metadata is used to validate that the first method in the first software component has not been updated.Type: ApplicationFiled: October 4, 2022Publication date: April 4, 2024Inventors: David Charles WRIGHTON, Anton LAPOUNOV, Tomás RYLEK, Jan KOTAS
-
Patent number: 11593078Abstract: A computing device including a processor configured to receive source code including a plurality of source code modules. The processor may generate executable code from the source code and assign two or more reload indicators to two or more executable code modules. The processor may execute the executable code. During execution of the executable code, the processor may receive a source code update and generate an executable code update from the source code and the source code update. The processor may apply the executable code update to the executable code to generate updated executable code. The processor may generate a reload ordering of two or more reload operations corresponding to the reload indicators. As specified by the reload ordering, the processor may perform the two or more reload operations at the two or more respective executable code modules. The processor may execute the updated executable code.Type: GrantFiled: July 19, 2022Date of Patent: February 28, 2023Assignee: Microsoft Technology Licensing, LLCInventors: Stephen Harris Toub, Stephane Delcroix, Jan Kotas, Michael John McLaughlin, Pranav Krishnamoorthy, Thomas A. McDonald
-
Publication number: 20220413815Abstract: A computing device including a processor configured to receive source code including a plurality of source code modules. The processor may generate executable code from the source code and assign two or more reload indicators to two or more executable code modules. The processor may execute the executable code. During execution of the executable code, the processor may receive a source code update and generate an executable code update from the source code and the source code update. The processor may apply the executable code update to the executable code to generate updated executable code. The processor may generate a reload ordering of two or more reload operations corresponding to the reload indicators. As specified by the reload ordering, the processor may perform the two or more reload operations at the two or more respective executable code modules. The processor may execute the updated executable code.Type: ApplicationFiled: July 19, 2022Publication date: December 29, 2022Applicant: Microsoft Technology Licensing, LLCInventors: Stephen Harris TOUB, Stephane DELCROIX, Jan KOTAS, Michael John MCLAUGHLIN, Pranav KRISHNAMOORTHY, Thomas A. MCDONALD
-
Patent number: 11435989Abstract: Reuse of a thread-local return data structure to prevent a return data structure from being allocated every time asynchronous functions return. The system returns thread operation from the asynchronous function back to the caller function in a manner that the return data structure can be reused for future asynchronous function returns within that same thread. To do so, the system first accesses data that was generated by the asynchronous function in response to the caller function placing the function call to the asynchronous function. To determine if reuse is appropriate, the system determines that the caller function will use the return data structure as populated only once. If so, the system populates the reusable thread-local return data structure and returns that data structure to the caller.Type: GrantFiled: August 25, 2020Date of Patent: September 6, 2022Assignee: Microsoft Technology Licensing, LLCInventors: David Charles Wrighton, Jan Kotas, Stephen Harris Toub
-
Patent number: 11429358Abstract: Representing asynchronous functionality in intermediate code, and then having the runtime compiler, rather than the source code language compiler, declare the corresponding asynchronous state machine. This allows the size of the intermediate code to be smaller thereby facilitating more efficient delivery of the code to end users. Furthermore, the runtime compiler can now use its optimization capability to optimize performance of the asynchronous functionality specific to the actual environment in which the asynchronous work will operate.Type: GrantFiled: August 12, 2020Date of Patent: August 30, 2022Assignee: Microsoft Technology Licensing, LLCInventors: David Charles Wrighton, Jan Kotas, Stephen Harris Toub
-
Patent number: 11409508Abstract: A computing device including a processor configured to receive source code including a plurality of source code modules. The processor may generate executable code from the source code and assign two or more reload indicators to two or more executable code modules. The processor may execute the executable code. During execution of the executable code, the processor may receive a source code update and generate an executable code update from the source code and the source code update. The processor may apply the executable code update to the executable code to generate updated executable code. The processor may generate a reload ordering of two or more reload operations corresponding to the reload indicators. As specified by the reload ordering, the processor may perform the two or more reload operations at the two or more respective executable code modules. The processor may execute the updated executable code.Type: GrantFiled: June 25, 2021Date of Patent: August 9, 2022Assignee: Microsoft Technology Licensing, LLCInventors: Stephen Harris Toub, Stephane Delcroix, Jan Kotas, Michael John McLaughlin, Pranav Krishnamoorthy, Thomas A. McDonald
-
Publication number: 20220066759Abstract: Reuse of a thread-local return data structure to prevent a return data structure from being allocated every time asynchronous functions return. The system returns thread operation from the asynchronous function back to the caller function in a manner that the return data structure can be reused for future asynchronous function returns within that same thread. To do so, the system first accesses data that was generated by the asynchronous function in response to the caller function placing the function call to the asynchronous function. To determine if reuse is appropriate, the system determines that the caller function will use the return data structure as populated only once. If so, the system populates the reusable thread-local return data structure and returns that data structure to the caller.Type: ApplicationFiled: August 25, 2020Publication date: March 3, 2022Inventors: David Charles WRIGHTON, Jan KOTAS, Stephen Harris TOUB
-
Publication number: 20220050669Abstract: Representing asynchronous functionality in intermediate code, and then having the runtime compiler, rather than the source code language compiler, declare the corresponding asynchronous state machine. This allows the size of the intermediate code to be smaller thereby facilitating more efficient delivery of the code to end users. Furthermore, the runtime compiler can now use its optimization capability to optimize performance of the asynchronous functionality specific to the actual environment in which the asynchronous work will operate.Type: ApplicationFiled: August 12, 2020Publication date: February 17, 2022Inventors: David Charles WRIGHTON, Jan KOTAS, Stephen Harris TOUB
-
Patent number: 10592276Abstract: Some computing devices have limited resources such as, for example, battery power. When a user ceases to interact with an application, execution of the application can be moved to background and the application can be paused. During the time period in which the application is paused, the application consumes no CPU cycles because executing managed threads of the paused application are stopped, and native threads are prevented from running using asynchronous procedure calls.Type: GrantFiled: June 22, 2018Date of Patent: March 17, 2020Assignee: Microsoft Technology Licensing, LLCInventors: Abhinaba Basu, Jan Kotas
-
Patent number: 10127151Abstract: An instance of universally shared generic code is generated. A runtime parameter enables the size of a stack frame on which local data can be stored to be determined. Dynamically sized locals can be stored on a stack enabling precise garbage collection reporting. One frame of the stack is allocated for each code segment to simplify GC reporting. A reporting region in the frame memory region comprises a count of locals and a location at which the local is found in the stack.Type: GrantFiled: May 13, 2016Date of Patent: November 13, 2018Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC.Inventors: David C. Wrighton, Scott D. Mosier, Fadi M. Hanna, Peter F. Sollich, Jan Kotas
-
Publication number: 20180300170Abstract: Some computing devices have limited resources such as, for example, battery power. When a user ceases to interact with an application, execution of the application can be moved to background and the application can be paused. During the time period in which the application is paused, the application consumes no CPU cycles because executing managed threads of the paused application are stopped, and native threads are prevented from running using asynchronous procedure calls.Type: ApplicationFiled: June 22, 2018Publication date: October 18, 2018Inventors: Abhinaba Basu, Jan Kotas
-
Patent number: 10025623Abstract: Some computing devices have limited resources such as, for example, battery power. When a user ceases to interact with an application, execution of the application can be moved to background and the application can be paused. During the time period in which the application is paused, the application consumes no CPU cycles because executing managed threads of the paused application are stopped, and native threads are prevented from running using asynchronous procedure calls.Type: GrantFiled: January 31, 2016Date of Patent: July 17, 2018Assignee: Microsoft Technology Licensing, LLCInventors: Abhinaba Basu, Jan Kotas
-
Publication number: 20170329704Abstract: An instance of universally shared generic code is generated. A runtime parameter enables the size of a stack frame on which local data can be stored to be determined. Dynamically sized locals can be stored on a stack enabling precise garbage collection reporting. One frame of the stack is allocated for each code segment to simplify GC reporting. A reporting region in the frame memory region comprises a count of locals and a location at which the local is found in the stack.Type: ApplicationFiled: May 13, 2016Publication date: November 16, 2017Inventors: David C. Wrighton, Scott D. Mosier, Fadi M. Hanna, Peter F. Sollich, Jan Kotas
-
Publication number: 20170083298Abstract: Code components can be distributed as executable code (e.g., binaries) in a format that includes both machine-independent intermediate code (e.g., bytecode, CIL, etc.) and ahead-of-time compiled native code. The native code is executed if the execution environment is compatible with the native code. If the execution environment is incompatible with the native code, execution falls back to execution from intermediate code.Type: ApplicationFiled: September 23, 2015Publication date: March 23, 2017Inventors: Jan Kotas, Raja Krishnaswamy, Vance Morrison
-
Patent number: 9584877Abstract: One or more identifiers that facilitate efficient native image validation can be generated and stored in an auxiliary file upon pre-compiling of an assembly. The native image can be validated against an assembly from which the native image is generated, among other files that influence the generated contents of the native image, based upon the auxiliary file and included identifiers. Additionally, native image validation can be performed in an increasing cost sequence associated with each identifier included within the auxiliary file.Type: GrantFiled: June 16, 2011Date of Patent: February 28, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Pracheeti Nagarkar, Michael Rayhelson, Atsushi Kanamori, Fadi Hanna, Surupa Biswas, Jan Kotas
-
Publication number: 20160224374Abstract: Some computing devices have limited resources such as, for example, battery power. When a user ceases to interact with an application, execution of the application can be moved to background and the application can be paused. During the time period in which the application is paused, the application consumes no CPU cycles because executing managed threads of the paused application are stopped, and native threads are prevented from running using asynchronous procedure calls.Type: ApplicationFiled: January 31, 2016Publication date: August 4, 2016Inventors: Abhinaba Basu, Jan Kotas
-
Patent number: 9286115Abstract: Some computing devices have limited resources such as, for example, battery power. When a user ceases to interact with an application, execution of the application can be moved to background and the application can be paused. During the time period in which the application is paused, the application consumes no CPU cycles because executing managed threads of the paused application are stopped, and native threads are prevented from running using asynchronous procedure calls.Type: GrantFiled: June 21, 2012Date of Patent: March 15, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Abhinaba Basu, Jan Kotas
-
Patent number: 9009693Abstract: An enhanced binder provides flexibility and certainty when selecting a version of a software library to load, and an enhanced loader prevents a library version vulnerable to a security flaw from being loaded. The binder can perform unification, implicit override, and/or redirection. Implicit override searches assembly-specific locations for an implicit_version, and override the previously chosen unification or other version with the implicit_version when the implicit_version is greater. The implicit_version gets updated with the individual assembly, whereas the unification_version gets updated with the framework. Redirection may override the implicit_version. Unlike redirection, an implicit_version does not recite an explicit range and is found outside application configuration files. The implicit_version is specified implicitly by the assembly without an XML declaration.Type: GrantFiled: May 8, 2013Date of Patent: April 14, 2015Assignee: Microsoft CorporationInventors: Eric St. John, Mohammad Rahim Bhojani, Alok Shriram, David Kean, Divya Swarnkar, Kumar Gaurav Khanna, Gaye Oncul Kok, Jan Kotas, Michael J. Rayhelson, Michael Rousos, Weitao Su, Matthew Charles Cohn, Zhanliang Chen
-
Publication number: 20140337824Abstract: An enhanced binder provides flexibility and certainty when selecting a version of a software library to load, and an enhanced loader prevents a library version vulnerable to a security flaw from being loaded. The binder can perform unification, implicit override, and/or redirection. Implicit override searches assembly-specific locations for an implicit_version, and override the previously chosen unification or other version with the implicit_version when the implicit_version is greater. The implicit_version gets updated with the individual assembly, whereas the unification_version gets updated with the framework. Redirection may override the implicit_version. Unlike redirection, an implicit_version does not recite an explicit range and is found outside application configuration files. The implicit_version is specified implicitly by the assembly without an XML declaration.Type: ApplicationFiled: May 8, 2013Publication date: November 13, 2014Applicant: Microsoft CorporationInventors: Eric St. John, Mohammad Rahim Bhojani, Alok Shriram, David Kean, Divya Swarnkar, Kumar Gaurav Khanna, Gaye Oncul Kok, Jan Kotas, Michael J. Rayhelson, Michael Rousos, Weitao Su, Matthew Charles Cohn, Zhanliang Chen