Patents by Inventor Erik Meijer

Erik Meijer 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: 7530080
    Abstract: A system and method for employing a programming language based on structural types on top of a nominal type runtime environment is disclosed. The system utilizes adapters and coercive subtyping to achieve precise typing while preserving aliasing. Furthermore, the system employs a universal value representation to achieve cross-assembly type equivalence.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: May 5, 2009
    Assignee: Microsoft Corporation
    Inventors: Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Erik Meijer, Christopher J. Lovett, Matthew J. Warren
  • Publication number: 20090102805
    Abstract: A multi-sensory experience is provided to a user of a device that has a touch screen through an arrangement in which audio, visual, and tactile feedback is utilized to create a sensation that the user is interacting with a physically-embodied, three-dimensional (“3-D”) object. Motion having a particular magnitude, duration, or direction is imparted to the touch screen so that the user may locate objects displayed on the touch screen by feel. In an illustrative example, when combined with sound and visual effects such as animation, the tactile feedback creates a perception that a button on the touch screen moves when it is pressed by the user like a real, physically-embodied button. The button changes its appearance, an audible “click” is played by the device, and the touch screen provides a tactile feedback force against the user's finger.
    Type: Application
    Filed: October 18, 2007
    Publication date: April 23, 2009
    Applicant: Microsoft Corporation
    Inventors: Erik Meijer, Umut Aley, Sinan Ussakali
  • Publication number: 20080313609
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Application
    Filed: June 16, 2008
    Publication date: December 18, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen
  • Publication number: 20080306617
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Application
    Filed: June 16, 2008
    Publication date: December 11, 2008
    Applicant: MICROSOFT CORPORATION
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen
  • Patent number: 7441237
    Abstract: A system and method for interfacing additional translation logic via composer(s) to a compiler to extend the capabilities of the compiler is provided. Generally, composer(s) can be software libraries that provide employment of componentization and polymorphism to compiler add-ons in order to extend compiler capabilities. One or more composers can be accessible to the compilation process by reference(s) made in a source code file. For example, additional translation logic for data types and/or expressions (e.g., markup language) created after compiler design can be made accessible to a compiler via composer(s), thus extending the existing compiler. The present invention mitigates problems associated with conventional compiler extending schemes and affords for compile code optimization without having to consider substantially all of the operations of a single query.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: October 21, 2008
    Assignee: Microsoft Corporation
    Inventors: Matthew J. Warren, Barend H. Venter, Wolfram Schulte, Erik Meijer, Christopher J. Lovett, Chia-Hsun Chen
  • Patent number: 7389498
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Grant
    Filed: March 25, 2003
    Date of Patent: June 17, 2008
    Assignee: Microsoft Corporation
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen
  • Publication number: 20080040360
    Abstract: A design pattern for choice types in object oriented programming languages is described herein. The design pattern enables discrimination among branch types in a type-safe and discoverable manner. Additionally, the design pattern enables object types that will eventually serve as branch types to be initially defined without placing them in a fixed class hierarchy. Hence, these object types can be initially defined without the need to anticipate that they will later be used as branch types. Furthermore, these object types can serve as branch types for multiple choice types, without the need to anticipate the names or compositions of the choice types when the branch object types are initially defined.
    Type: Application
    Filed: August 14, 2006
    Publication date: February 14, 2008
    Applicant: Microsoft Corporation
    Inventors: Erik Meijer, Ralf Lammel
  • Publication number: 20080040656
    Abstract: Object instance annotation technology is disclosed. This technology is capable of annotating any number of instances for any number of objects. Object instance annotations can be of various types, and annotations can serve as data extensions. Objects are enabled for annotation either by developers, or, alternatively, automatically by a programming language or framework. Furthermore, an interface is provided for annotations. This interface has a variety of operations, some of which allow for adding, retrieving, or removing annotations. Annotations can be reference types or even value types. They may also be private class types. Once object instances are enabled for annotating, and the interface is set up, this interface can annotate a multitude of different kinds of objects. For example, it can annotate generic objects, XML trees, CodeDom trees, and so on.
    Type: Application
    Filed: August 14, 2006
    Publication date: February 14, 2008
    Applicant: Microsoft Corporation
    Inventors: Ralf Lammel, Anders Hejlsberg, Andrew E. Kimball, David Lawrence Remy, Erik Meijer
  • Patent number: 7219329
    Abstract: The present invention relates to systems and methods that facilitate dynamic programming language execution in a managed code environment. A runtime code generator is provided within the framework of a managed object environment. The code generator includes a class allocator that reserves one or more method slots for a dynamic method call. A dynamic method builder then employs the method slots to generate an intermediate language stream that forms a method description. The method description is then fed to a Just-In-Tine (JIT) compiler that returns at least one dynamically generated pointer to facilitate execution of the dynamic method call at runtime.
    Type: Grant
    Filed: June 13, 2003
    Date of Patent: May 15, 2007
    Assignee: Microsoft Corporation
    Inventors: Erik Meijer, Dario Russi, Peter F. Drayton
  • Publication number: 20070028210
    Abstract: A program execution engine that facilitates generic type variance verification is provided. The execution engine receives a program executable in the form of intermediate language (IL). The program executable can be based on code that includes expression(s) with generic type(s) which have been identified as requiring variance verification (e.g., covariance and/or contra-variance). The execution engine includes a variance verification component that dynamically determines whether value(s) associated with the generic type(s) identified as requiring variance verification comply with the particular variance verification requirement. The variance verification component can provide error information (e.g., throw an exception), if the specified variance is not safely compliant Variance verification can be based on static checking which places the burden on a source language compiler to emit the run-time checks in intermediate language (IL), if run-time checked variance is required.
    Type: Application
    Filed: July 29, 2005
    Publication date: February 1, 2007
    Applicant: Microsoft Corporation
    Inventors: Erik Meijer, Anders Hejlsberg, Matthew Warren, Luca Bolognese, Peter Hallam, Gary Katzenberger
  • Patent number: 7168063
    Abstract: The present invention relates to systems and methods that facilitate dynamic programming language execution in a managed code environment. A class component is provided that declares an inheritance hierarchy for one or more tagged values associated with a dynamic programming language. During execution of the tagged values, a rules component mitigates user-defined types from inheriting or deriving properties from the tagged values in order to support a type safe runtime environment. A bifurcated class tree is provided that defines non-tagged type elements on one side of the tree and tagged type element values on an alternate branch of the tree. The rules component analyzes runtime extensions that help to prevent data from one component of the tree deriving or inheriting properties from another component of the tree. The runtime extensions include such aspects as cast class extensions, test class extensions, and conversion class extensions for converting data types from one class subtype to another.
    Type: Grant
    Filed: June 10, 2003
    Date of Patent: January 23, 2007
    Assignee: Microsoft Corporation
    Inventor: Erik Meijer
  • Patent number: 7155703
    Abstract: Performing validation of a derived virtual method includes receiving program code where the derived virtual method is derived from a virtual method of the program language used to generate the program code, compiling the program code to an intermediate language expression, generating metadata descriptive of the compiled program code, validating the use of the derived virtual method by accessing the metadata, and permitting the use of the derived virtual method if the metadata grants override permissions concerning the virtual method of the programming language. The metadata indicating access and override permissions may be generated while compiling the program code in the common language infrastructure. Alternately, the flag may use pre-existing values indicative of the access and override permissions concerning the virtual method of the programming language.
    Type: Grant
    Filed: July 18, 2003
    Date of Patent: December 26, 2006
    Assignee: Microsoft Corporation
    Inventors: Erik Meijer, Craig T. Sinclair, James H. Hogg, Peter H. Golde, Serge Lidin, Christopher W. Brumme
  • Publication number: 20060101423
    Abstract: Data is requested by an XML application conforming to the XML data model. The data is stored in an SQL database conforming to the relational data model. A mapping component transforms the XML query into an SQL query using a mapping component comprising instructions obtained from an instruction set defined by a mapping algebra. The transformed operation is used to retrieve the data. Once retrieved, the algebraically defined mapping component transforms the SQL data from data conforming to the relational data model to data conforming to the XML data for use in the XML application.
    Type: Application
    Filed: October 1, 2004
    Publication date: May 11, 2006
    Applicant: Microsoft Corporation
    Inventors: Avner Aharoni, David Schach, Erik Meijer
  • Publication number: 20050289457
    Abstract: A method of binding elements of a structured document to an observer structure includes obtaining the logical structure of a document. Nodes representing information contained in the document are mapped to an observer structure which can include both a user interface or a programming object. The user interface may be a graphical user interface including a display form of a grid-like structure to contain the structured document information. The data binding which maps the structured document information to the observer form may be directionally controllable such that any change made to the information at the observer may be reflected in the source structured document.
    Type: Application
    Filed: June 29, 2004
    Publication date: December 29, 2005
    Applicant: Microsoft Corporation
    Inventors: Dare Obasanjo, Erik Meijer, Derek Denny-Brown, Mark Fussell, Srikanth Mandadi, Ilia Ioffe
  • Publication number: 20050015753
    Abstract: Performing validation of a derived virtual method includes receiving program code where the derived virtual method is derived from a virtual method of the program language used to generate the program code, compiling the program code to an intermediate language expression, generating metadata descriptive of the compiled program code, validating the use of the derived virtual method by accessing the metadata, and permitting the use of the derived virtual method if the metadata grants override permissions concerning the virtual method of the programming language. The metadata indicating access and override permissions may be generated while compiling the program code in the common language infrastructure. Alternately, the flag may use pre-existing values indicative of the access and override permissions concerning the virtual method of the programming language.
    Type: Application
    Filed: July 18, 2003
    Publication date: January 20, 2005
    Inventors: Erik Meijer, Craig Sinclair, James Hogg, Peter Golde, Sergey Lidin, Christopher Brumme
  • Publication number: 20040255268
    Abstract: The present invention relates to systems and methods that facilitate dynamic programming language execution in a managed code environment. A runtime code generator is provided within the framework of a managed object environment. The code generator includes a class allocator that reserves one or more method slots for a dynamic method call. A dynamic method builder then employs the method slots to generate an intermediate language stream that forms a method description. The method description is then fed to a Just-In-Tine (JIT) compiler that returns at least one dynamically generated pointer to facilitate execution of the dynamic method call at runtime.
    Type: Application
    Filed: June 13, 2003
    Publication date: December 16, 2004
    Inventors: Erik Meijer, Dario Russi, Peter F. Drayton
  • Publication number: 20040255267
    Abstract: The present invention relates to systems and methods that facilitate dynamic programming language execution in a managed code environment. A class component is provided that declares an inheritance hierarchy for one or more tagged values associated with a dynamic programming language. During execution of the tagged values, a rules component mitigates user-defined types from inheriting or deriving properties from the tagged values in order to support a type safe runtime environment. A bifurcated class tree is provided that defines non-tagged type elements on one side of the tree and tagged type element values on an alternate branch of the tree. The rules component analyzes runtime extensions that help to prevent data from one component of the tree deriving or inheriting properties from another component of the tree. The runtime extensions include such aspects as cast class extensions, test class extensions, and conversion class extensions for converting data types from one class subtype to another.
    Type: Application
    Filed: June 10, 2003
    Publication date: December 16, 2004
    Inventor: Erik Meijer
  • Publication number: 20040193575
    Abstract: An object-oriented programming language with integrated query powers for both SQL and XML is disclosed. Portions of SQL select statement as well as XPath have been tightly integrated into a compiler and type system to provide for strongly typed programming and seamless access to both SQL and XML data.
    Type: Application
    Filed: March 25, 2003
    Publication date: September 30, 2004
    Inventors: Chia-Hsun Chen, Wolfram Schulte, Barend H. Venter, Erik Meijer, Christopher J. Lovett, Matthew J. Warren
  • Publication number: 20040194057
    Abstract: A system and method for enriching object oriented programming languages by employing XML literals, embedded expressions, and a flexible validator is provided. Object instantiation is accomplished by employing XML literals with optional embedded expressions. The XML literals themselves provide a means for concise programmatic denotation, which facilitates coding and debugging of XML data. XML embedded expressions, inter alia, allow complex objects to be constructed dynamically. The validation system and method provides flexible validation for the XML literals and embedded expressions using inference rules to describe when a literal expression is valid and what the resulting witness or proof is for the value denoted by the literal.
    Type: Application
    Filed: March 25, 2003
    Publication date: September 30, 2004
    Inventors: Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Erik Meijer, Christopher J. Lovett, Matthew J. Warren
  • Publication number: 20040194058
    Abstract: A type system employing structural subtyping is disclosed herein. A core type system supports several structural types, such as stream, choice, intersection and sequence. Also part of the core type system is a new invariant type, which denotes values whose dynamic type is the same as its static type, and type restrictions for limiting a range of a base type. Furthermore, a streamlined structural version of delegates, called structural delegates and a validation method thereof are introduce into the type system. To further facilitate type safety, strict statically checked interface casts are introduced.
    Type: Application
    Filed: March 25, 2003
    Publication date: September 30, 2004
    Inventors: Erik Meijer, Wolfram Schulte, Barend H. Venter, Chia-Hsun Chen, Christopher J. Lovett, Matthew J. Wararen