Patents by Inventor Stephen Harris Toub
Stephen Harris Toub 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).
-
Publication number: 20240370296Abstract: A device may queue a thread for execution by a thread pool, including configuring an ambient context with a cancellation token. Based on a call of a synchronous method by the thread, the device may determine that the thread uses a green threads model and identify the cancellation token from the ambient context. Based on the thread using the green threads model, the device may call an asynchronous method that uses an asynchronous operation to perform a task of the synchronous method, including passing the asynchronous method the cancellation token. Based on identifying a state change of the cancellation token, the device may terminate the asynchronous operation.Type: ApplicationFiled: May 1, 2023Publication date: November 7, 2024Inventors: Stephen Harris TOUB, David Charles WRIGHTON
-
Patent number: 12079595Abstract: Utilizing role types that extend underlying types. Within a program definition, a computer system identifies a statement assigning an object of an underlying type to a role type that extends the underlying type. The underlying type implements a first interface, and the role type implements a second interface. Based on the role type extending the underlying type, the computer system assigns the object of the underlying type to the role type. Based on assigning the object of the underlying type to the role type, the role type is usable to interact with the object of the underlying type using both the first interface and the second interface.Type: GrantFiled: June 29, 2022Date of Patent: September 3, 2024Assignee: Microsoft Technology Licensing, LLCInventors: David Charles Wrighton, Julien David Couvreur, Stephen Harris Toub, Mads Torgersen, Jared Porter Parsons
-
Patent number: 11983223Abstract: Techniques are described herein that are capable of constructing a finite automaton using regular expression derivatives to simulate behavior of a backtracking engine. The behavior indicates an order in which paths in an input regular expression are to be evaluated by the backtracking engine. The finite automaton is constructed to include a graph that includes a root node that represents the input regular expression. Regular expressions are derived such that each derived regular expression is a regular expression derivative of the input regular expression or of another derived regular expression. Priorities are assigned to alternations in the derived regular expressions to correspond to priorities indicated by the behavior. Nodes that represent the respective derived regular expressions and transitions between respective pairs of nodes are caused to be included in the graph. Priorities, which correspond to the order, are assigned to respective branches of the graph.Type: GrantFiled: August 18, 2022Date of Patent: May 14, 2024Assignee: Microsoft Technology Licensing, LLCInventors: Olli Ilari Saarikivi, Margus Veanes, Stephen Harris Toub, Daniel J. Moseley, Jose Rodrigo Perez Rodriguez
-
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
-
Patent number: 11922151Abstract: A single asynchronous enumerable object is generated that contains the data and methods needed to iterate through an enumerable asynchronously. The asynchronous enumerable object contains the code for traversing the enumerable one step at a time and the operations needed to suspend an iteration to await completion of an asynchronous operation and to resume the iteration upon completion of the asynchronous operation. The allocation of a single object to perform all of these tasks reduces the memory consumption needed to execute an asynchronous enumeration.Type: GrantFiled: March 12, 2020Date of Patent: March 5, 2024Assignee: Microsoft Technology Licensing, LLC.Inventors: Stephen Harris Toub, Mads Torgersen
-
Publication number: 20240061885Abstract: Techniques are described herein that are capable of constructing a finite automaton using regular expression derivatives to simulate behavior of a backtracking engine. The behavior indicates an order in which paths in an input regular expression are to be evaluated by the backtracking engine. The finite automaton is constructed to include a graph that includes a root node that represents the input regular expression. Regular expressions are derived such that each derived regular expression is a regular expression derivative of the input regular expression or of another derived regular expression. Priorities are assigned to alternations in the derived regular expressions to correspond to priorities indicated by the behavior. Nodes that represent the respective derived regular expressions and transitions between respective pairs of nodes are caused to be included in the graph. Priorities, which correspond to the order, are assigned to respective branches of the graph.Type: ApplicationFiled: August 18, 2022Publication date: February 22, 2024Inventors: Olli Ilari SAARIKIVI, Margus VEANES, Stephen Harris TOUB, Daniel J. MOSELEY, Jose Rodrigo PEREZ RODRIGUEZ
-
Publication number: 20240004616Abstract: Utilizing role types that extend underlying types. Within a program definition, a computer system identifies a statement assigning an object of an underlying type to a role type that extends the underlying type. The underlying type implements a first interface, and the role type implements a second interface. Based on the role type extending the underlying type, the computer system assigns the object of the underlying type to the role type. Based on assigning the object of the underlying type to the role type, the role type is usable to interact with the object of the underlying type using both the first interface and the second interface.Type: ApplicationFiled: June 29, 2022Publication date: January 4, 2024Inventors: David Charles WRIGHTON, Julien David COUVREUR, Stephen Harris TOUB, Mads TORGERSEN, Jared Porter PARSONS
-
Patent number: 11714609Abstract: The present application discloses methods, systems, and computer program products for automatically generating source code implementing a regular expression. A regular expression that is defined within source code of an application project is identified. The source code uses a higher-level programming language. Based on identifying the regular expression, a source code implementation of the regular expression is automatically generated using the higher-level programming language, and the source code implementation of the regular expression is integrated into the application project. After integrating the source code implementation of the regular expression into the application project, the source code implementation of the regular expression is compiled into lower-level code and the lower-level code is emitted into an application executable when building the application project, or the source code implementation of the regular expression is interpreted when executing the application project.Type: GrantFiled: November 30, 2021Date of Patent: August 1, 2023Assignee: Microsoft Technology Licensing, LLCInventor: Stephen Harris Toub
-
Publication number: 20230176823Abstract: The present application discloses methods, systems, and computer program products for automatically generating source code implementing a regular expression. A regular expression that is defined within source code of an application project is identified. The source code uses a higher-level programming language. Based on identifying the regular expression, a source code implementation of the regular expression is automatically generated using the higher-level programming language, and the source code implementation of the regular expression is integrated into the application project. After integrating the source code implementation of the regular expression into the application project, the source code implementation of the regular expression is compiled into lower-level code and the lower-level code is emitted into an application executable when building the application project, or the source code implementation of the regular expression is interpreted when executing the application project.Type: ApplicationFiled: November 30, 2021Publication date: June 8, 2023Inventor: Stephen Harris TOUB
-
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
-
Patent number: 11579855Abstract: An asynchronous method is implemented in a manner that reduces the amount of runtime overhead needed to execute the asynchronous method. The data elements needed to suspend an asynchronous method to await completion of an asynchronous operation, to resume the asynchronous method at a resumption point, and to provide a completion status of the caller of the asynchronous method are consolidated into one or two reusable objects. An asynchronous method may be associated with a distinct object pool of reusable objects. The size of a pool and the total size of all pools can be configured statically or dynamically based on runtime conditions.Type: GrantFiled: December 15, 2017Date of Patent: February 14, 2023Assignee: MICROSOFT TECHNOLOGY LICENSING LLCInventor: Stephen Harris Toub
-
Patent number: 11573787Abstract: Hot reloading a running application with an unsaved source code change. A code change to a source code of a running software application that is associated with a project type is identified. The code change is stored within an in-memory editor buffer, and is uncommitted to any source code file. It is determined that the code change can be applied to the running software application using hot reload. Hot reload agent(s) associated with the project type are identified. Using the hot reload agent(s), the code change is communicated to an application runtime associated with the running software application. At least one process of the running software application invokes a new compiled code entity corresponding to the code change.Type: GrantFiled: September 10, 2021Date of Patent: February 7, 2023Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventors: Sayed Ibrahim Hashimi, Dmitry I. Lyalin, William Edwin Hiebert, Tomas Matousek, Damian Paul Edwards, Stephen Harris Toub, Pranav Krishnamoorthy, Isadora Sophia Garcia Rodopoulos
-
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: 10740219Abstract: Described technologies support selectively tracing a process's execution, with some extra tracing done beyond the code the developer wanted traced, but with significantly reduced computational cost, by reducing the number of trace enablement and disablement operations. A trace controller uses a tracing disablement distance variable whose values indicate the computational distance from trace disablement. A distance variable modifier automatically moves the distance variable closer to a stop-tracing value as the process executes. A create task function is modified to include the setting of an indicator that a newly created task is to be traced if a current task or thread is being traced. An execute task function is modified to request the tracing of the newly created task when it is executed based on the indicator, thereby enabling selective tracing that operates across process boundaries and traces asynchronous code execution.Type: GrantFiled: October 29, 2018Date of Patent: August 11, 2020Assignee: WORKMAN NYDEGGERInventors: Del Myers, Thomas Lai, Patrick Nelson, Jordi Mola, Juan Carlos Arevalo Baeza, Stephen Harris Toub
-
Publication number: 20200210156Abstract: A single asynchronous enumerable object is generated that contains the data and methods needed to iterate through an enumerable asynchronously. The asynchronous enumerable object contains the code for traversing the enumerable one step at a time and the operations needed to suspend an iteration to await completion of an asynchronous operation and to resume the iteration upon completion of the asynchronous operation. The allocation of a single object to perform all of these tasks reduces the memory consumption needed to execute an asynchronous enumeration.Type: ApplicationFiled: March 12, 2020Publication date: July 2, 2020Inventors: STEPHEN HARRIS TOUB, MADS TORGERSEN