Device interoperability tool set and method for processing interoperability application specifications into interoperable application packages
System, device, method, and computer program and computer program products for providing communicating between devices having similar or dissimilar characteristics and facilitating seamless interoperability between them. Computer program software and methods of and systems and devices for sharing of content, applications, resources and control across similar and dissimilar permanently or intermittently connected electronic devices. Devices, systems, appliances, and the like communicating and/or interoperating within the framework provided. Interoperability tools, such as DartTools, process an interoperability source application specification, such as a DartSource application specification, into the interoperability application packages.
1 . A method for generating an interoperability software application package of digitally encoded information , along with meta information needed to carry out an intended purpose (intent) on one or more connected or intermittently connected devices; the method comprising:
processing of source materials through an interoperability compiler process to create object files; and
processing the object files and optional libraries through an interoperability linker process to create libraries or an interoperability software application package.
2 . The method of claim 1 , wherein the digitally encoded information comprises digitally encoded data, code and/or content and the meta information comprises meta information in the form of data, code and/or content.
3 . The method of claim 1 , wherein the interoperability compiler process is implemented as a compiler computer program software product and the linker process is implemented as a linker computer program software product.
4 . The method of claim 1 , wherein the source materials are assembled according to an Interoperability Source method.
5 . The method of claim 4 , wherein the Interoperability source method includes a procedure for specifying a software application package of digitally encoded data, code and content, along with meta information in the form of data, code and content needed to carry out an intended purpose (intent) on one or more connected or intermittently connected devices; and the method comprising expressing in an interoperability software programming language one or more or any combination of the following:
(a) an object oriented framework and or library;
(b) source code for expressing the main code and data used to carry out the logic of the application, whether to be expressed as one executable image or an integrated set of executable images;
(c) digitally expressible resources; and
(d) system calls or instruction invocations necessary for connecting the logic of the application to the native underlying hardware and software of the device(s).
6 . The method of claim 1 , wherein the compiler and linker are combined into a single compiler/linker software tool product.
7 . The method of claim 1 , wherein an optional master software application package is optionally further processed into one or more other interoperability software packages.
8 . The method of claim 7 , wherein the optional master software application package is optionally processed into other interoperability software packages by the use of an interoperability master player computer program software product.
9 . The method of claim 1 , wherein the source materials comprise DartSource source materials.
10 . The method of claim 1 , wherein the interoperability software application comprises a Dart conforming to the DartFormat.
11 . The method of claim 10 , wherein the Dart conforming to the DartFormat is operable within an object oriented interoperability framework having a set of object oriented class definitions, and implementation code thereof to be used as part of the source specifications of an event driven software application package, the object oriented interoperability framework formed according to a procedure comprising:
(i) specifying using an object oriented language as a base event processing class that contains at least the following data and code members:
(a) a process member that takes as a parameter a reference or copy of an instance of an event data structure; and
(b) an ordered list member of references to or instances of other event processing objects which have the same base class; and
(ii) implementing the members and methods of the class specification in source code.
12 . The method of claim 1 , wherein the interoperability compiler comprises the DartCompiler.
13 . The method of claim 1 , wherein the interoperability linker comprises the DartLinker.
14 . The method of claim 7 , wherein the optional master software application comprises a DartMaster.
15 . The method of claim 8 , wherein the interoperability master player comprises a Dart MasterPlayer.
16 . The method of claim 1 , wherein the source materials include code and data references in a software programming language which has been extended to include one or more or any combination of the following semantics:
(1) first semantics for specifying resources to be made into parts of the output package;
(2) second semantics for specifying independently executable procedures to be made into parts of the output package that is the result of processing the source;
(3) third semantics for referencing parts or ids of the parts of the output packages;
(4) fourth semantics for generating the parts or ids of the parts of the output packages for use at runtime by code or data structure instances in the source code;
(5) fifth semantics for specifying separately executable image starting points;
(6) sixth semantics for referencing the separately executable images to be encapsulated into the output package or packages that is the result of processing of the source; and
(7) seventh semantics for specifying the processing needed to direct the compiler and/or the linker and/or the master player software products to include at least one of parts, corresponding part table entries, and other data in the package for identifying pointer variables which are to effectively point to a private memory address space independent from all other such pointers, procedures, main program data, main and program code.
17 . The method of claim 16 , wherein the application program language is a version of the C or C++ programming language.
18 . The method of claim 16 , wherein one or more of the extensions are expressed as C or C++#pragma statements.
19 . The method of claim 16 , wherein one or more of the extensions are expressed as builtin functions with reserved names known to the interoperability compiler that parses and processes the source code expressed in the application program language.
20 . The method of claim 16 , wherein the software programming language is the DartInstructionSet or any other programming language which is known to be Turing Complete.
21 . The method of claim 16 , where the interoperability compiler and interoperability linker include parsing and processing of program statements conforming to the semantics of one or more of the listed semantics.
22 . The method of claim 16 , wherein the resources are selected from the set consisting of one or more or any combination of the following:
(i) an external file or any other binary data image accessible by the compiler, linker and/or master player procedures or software products;
(ii) a data structure instance specified in the source code;
(iii) a procedure or function whether or not the procedure is a DartProcedure specified in the source code;
(iv) an executable program, an executable package, or a Dart; and
(v) any combination of any number of the above whether stored separately, packaged together, and/or compressed and/or encrypted.
23 . The method of claim 16 , wherein the resources are included by reference in a #pragma statement which causes the compiler, linker and/or optional master player procedure or software products to include the resources as parts of the output package.
24 . The method of claim 16 , wherein the parts are linear contiguous binary images to be placed into packages or Dart parts assigned and referenced as part of a package by a scalar identifier partId with a value which is unique in the package.
25 . The method of claim 16 , wherein a part table is also generated by the compiler, linker, and/or master player as part of the output packages with information used to find the part image inside the package, and to provide parameters or descriptive information relevant to the part.
26 . The method of claim 25 , wherein the parameters or descriptive information are one or more or any combination of the following:
(i) a scaler or text describing the content type of the part;
(ii) an offset into the package where the part starts;
(iii) an offset into the package where the part ends, or a length of the part so that the part end can be computed;
(iv) a flags or plurality of flags to indicate special processing options for the part according to the content type for the loading, usage and or saving of the package or part; and
(v) optionally other content type specific parameters which are specific to the content type.
27 . The method of claim 25 , wherein the part table is the Dart Part Table conforming to the DartFormat.
28 . The method of claim 16 , wherein the pointer variables are to function as virtual pointers.
29 . The method of claim 16 , wherein the pointer variables are Dart VirtualPointers.
30 . A method as in claim 16 , wherein the second semantic executable procedures include DartProcedures.
31 . A method as in claim 16 , wherein the second semantics take the form conforming generally to the following:
#pragma Procedure(<name of function>).
32 . A method as in claim 16 , wherein the first semantics take the form conforming generally to one or more of the following:
(1) #pragma FileToPart(<file path and name><parameters such as content type, picture size destined for parameters of PartTableRecord>); or
(2) #pragma partvariable(<variable or structure name>).
33 . A method as in claim 16 , wherein the fourth semantic ids are PartIds used in the Part TableRecords and other sections of the DartFormat.
34 . A method as in claim 16 , wherein the third semantics take the form conforming generally to the following: partnumberof(<identifier name>).
35 . A method as in claim 16 , wherein the seventh semantics take the form conforming generally to the following:
#pragma virtualpointer (<pointer variable identifier><values to control optional automatic saving of values when a Dart SAVE_INSTRUCTION is executed and to control the number of real memory pages to be used>).
36 . The method of claim 1 , wherein the interoperability compiler, interoperability linker and interoperability master player are the DartTools.
37 . The method of claim 1 , wherein the interoperability software application package comprises a Dart conforming to the DartFormat.
38 . The method of claim 8 , where as an option, the source code specifies a single master independently executable image that is output in the package generated by the compiler and/or the linker along with extra parts containing object class, instance, and linkage information used when the package is executed on an optional software tool product or the master player, to intelligently generate one or more packages.
39 . The method of claim 38 , wherein a single master independently executable image execution entry point is an entry point to a method of a special derived class from the base event processing class, with the following added features:
(i) data elements and/or methods to form, hold and manage a list of special object base class or derived class object instances and/or references to such instances that are to be output in a particular package; and
(ii) one or more setup methods which are called when the master is executed.
40 . The method of claim 38 , wherein a single master independently executable image execution entry point is an entry point to a method of a special derived class from the base event processing class, the method being for specifying an object oriented interoperability framework having a set of object oriented class definitions, and implementation code thereof to be used as part of the source specifications of an event driven software application package, and the method comprising:
(i) specifying using an object oriented language as a base event processing class that contains at least the following data and code members:
(a) a process member that takes as a parameter a reference or copy of an instance of an event data structure; and
(b) an ordered list member of references to or instances of other event processing objects which have the same base class; and (ii) implementing the members and methods of the class specification in source code; the method further including:
(i) providing data elements and/or methods to form, hold and manage a list of special object base class or derived class object instances and/or references to such instances that are to be output in a particular package; and
(ii) providing one or more setup methods which are called when the master is executed.
41 . The method of claim 39 , wherein the execution of the master results according to the specifications of the source in the forming of the list
42 . The method of claim 38 , wherein the special derived class is a Dart Rendition class.
43 . The method of claim 39 , wherein the single master independently executable image is a Dart Rendition inside a Dart.
44 . The method of claim 41 , wherein as an option the execution which results in the forming of the list also include configuring, creating, optimizing, adding parts to or otherwise affecting the independently executable images that are referenced by the list.
45 . The method of claim 44 , wherein the list is formed and the configuring, creating, optimizing and/or adding parts to or otherwise affecting the generation or makeup of independently executable images is performed using input from or more of the following sources:
(i) a human input solicited during the master's execution;
(ii) an automated procedure that was specified by the source code;
(iii) an information collected from the computing device on which the master is executing by the executing code of the master package;
(iv) an information collected from any number of computing devices over any number of communications mediums by the executing code of the master package; and
(v) combinations of these.
46 . The method of claim 39 , wherein as a step for each package to be produced by executing the master on a master player, the generated list is used to find the starting points for all the independently executable images and the assembly of the package is performed according to a procedure comprising the steps:(i) identifying the execution entry point of one of the derived class object instances and or references on the list;
(ii) recursively or interactively tracing all the possible execution paths starting at the execution entry point while keeping track of all the reachable elements;
(iii) generating all the code, data, resources, and other digitally representable parts necessary to form a single executable image for placement in a package which includes all the reachable elements that have been tracked;
(iv) performing steps (i), (ii) and (iii) for each of the derived class object instances and or references on the list; and
(v) generating a package of individually executable images.
47 . The method of claim 39 , wherein the generating of a package of individually executable images comprises at least one of the following:
a) meta information necessary for locating, loading, and extracting each individual executable image; and
b) parts which together contain all the reachable elements that have been tracked for all the separately executable images.
48 . The method of claim 39 , wherein the recursively or interactively tracing all the possible execution paths starting at the execution entry point while keeping track of all the reachable elements, includes keeping track of all reachable variables, data structure instances, functions and all the objects that are pointed to or otherwise referenced by the data in or by the methods, variables, data structure instances, functions and objects, and further iteratively or recursively all such elements to which these point to or reference.
49 . The method of claim 46 , wherein elements not tracked as being reachable are not generated as meta information or parts or any other representation of the package to reduce the size and or complexity of the package, or the handling or execution of the package or parts of the package.
50 . The method of claim 38 , wherein processing of the master by a master player is used for one or more or any combination of the following purposes:
(i) as a program generator for dynamic customization of one or a plurality of packages;
(ii) to collect real-time information that is to be part of the generated package or packages that was not collected or was not obtainable at the time of compiling and or linking of the master;
(iii) as a graphical user interface for interactively selecting, laying out, and/or providing new information needed to generate particular packages;
(iv) for creating, and/or viewing, and/or testing, and/or correcting, and/or building various aspects of various independently executable images or sets of independently executable images to be output in one or more packages in an optionally interactive manner with optional visual feedback of the changing characteristics of the package or packages to be output; and
(v) for dynamically generating tables, code, content, or other resources, or collections thereof to be used as parts of the generated package or packages.
51 . The method of claim 49 , wherein the processing of the master beneficially avoids the need to recompile and or relink or otherwise re-process the source code.
52 . The method of claim 49 , wherein the user interface is presented as part of the execution of the master for customizing the package generation.
53 . The method of claim 52 , wherein the user interface is presented according to the code, data and/or resources of the master.
54 . The method of claim 48 , wherein some subset of the code, data and or resources that are elements of the master for carrying out the purposes are referenced only as the result of execution starting at execution entry points of derived class object instances that are not on the list.
55 . The method of claim 49 , wherein some subset of the code, data and or resources that are elements of the master for carrying out the purposes are referenced only as the result of execution starting at execution entry points of derived class object instances that are not on the list.
56 . The method of claim 54 , wherein the subset is left out of the generated package.
57 . The method of claim 56 , wherein the subset is left out to decrease the size of the package or reduce the complexity of the package.
58 . The method of claim 46 , wherein tracking information about reachable elements or sets of elements also includes further information for each such element or set of elements an access list containing on this access list all the entries from which the particular element or set of elements is reachable.
59 . A method as in claim 46 , wherein the individual part binary images are sharable between the independently executable images so that the size of an interoperability application may be limited.
60 . The method of claim 59 , wherein the further information is used by the master player product to produce a package or packages where parts image instances inside the generated package are shared amongst the separately executable images rather than having to duplicate such part images for each separately executable image in the package which logically contains the part image.
61 . The method of claim 58 , wherein one or more procedural elements of the package are compiled/linked and optionally processed by the master player into a form conforming to a Interoperability Instructions Set.
62 . A computer program product for use in conjunction with a computer system or information appliance, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising:
a program module that directs the computer system or information appliance to function in a specified manner to generate an interoperability software application package of digitally encoded information, optionally along with meta information needed to carry out an intended purpose on one or more connected or intermittently connected devices, the program module including instructions for:
processing of source materials through an interoperability compiler process [software product] to create object files; and
processing the object files and optional libraries through an interoperability linker process to create libraries or an interoperability software application package.
63 . A computer program product as in claim 62 , wherein the digitally encoded information comprises digitally encoded data, code and/or content and the meta information comprises meta information in the form of data, code and/or content.
64 . A computer program product as in claim 62 , wherein the interoperability compiler process is implemented as a compiler computer program software product and the linker process is implemented as a linker computer program software product.
65 . A computer program product as in claim 62 , wherein the source materials are assembled according to an Interoperability Source method.
66 . A computer program product as in claim 65 , wherein the Interoperability source method includes a procedure for specifying a software application package of digitally encoded data, code and content, along with meta information in the form of data, code and content needed to carry out an intended purpose (intent) on one or more connected or intermittently connected devices; and the method comprising expressing in an interoperability software programming language one or more or any combination of the following:
(a) an object oriented framework and or library;
(b) source code for expressing the main code and data used to carry out the logic of the application, whether to be expressed as one executable image or an integrated set of executable images;
(c) digitally expressible resources; and
(d) system calls or instruction invocations necessary for connecting the logic of the application to the native underlying hardware and software of the device(s).
67 . An interoperability software products tool set whether packaged separately, dynamically linked together, or packaged into a single executable in any combination comprising:
a) an interoperability compiler;
b) an interoperability linker; and
c) an interoperability master player.
68 . The interoperability software products tool set of claim 67 , wherein the interoperability compiler and linker in combination execute a method for generating an interoperability software application package of digitally encoded information, along with meta information needed to carry out an intended purpose (intent) on one or more connected or intermittently connected devices; the method comprising: processing of source materials through an interoperability compiler process to create object files; and processing the object files and optional libraries through an interoperability linker software product to create libraries or an interoperability software application package.
69 . The interoperability software products tool set of claim 67 , wherein the master software application package is optionally processed into other interoperability software packages by the use of an interoperability master player software product.
70 . The interoperability software products tool set of claim 67 , wherein the software product or products are implemented and or designated and or used as DartTools.
71 . The interoperability software products tool set of claim 67 , wherein there is a single selection procedure or set of selection procedures associated with each rendition to be used in a recruitment procedure to intelligently select the most suitable independently executable image, from the available images, to run on a target device and or target device environment.