FR3087916A1 - CORRESPONDING SOURCE CODE PROCESSING METHOD, DEVICE, SYSTEM AND PROGRAM - Google Patents

CORRESPONDING SOURCE CODE PROCESSING METHOD, DEVICE, SYSTEM AND PROGRAM Download PDF

Info

Publication number
FR3087916A1
FR3087916A1 FR1860069A FR1860069A FR3087916A1 FR 3087916 A1 FR3087916 A1 FR 3087916A1 FR 1860069 A FR1860069 A FR 1860069A FR 1860069 A FR1860069 A FR 1860069A FR 3087916 A1 FR3087916 A1 FR 3087916A1
Authority
FR
France
Prior art keywords
execution
projectable
resource
scripted
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1860069A
Other languages
French (fr)
Other versions
FR3087916B1 (en
Inventor
Gilbert Cabillic
Jean-Philippe Lesot
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Scaledynamics
Original Assignee
Scaledynamics
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Scaledynamics filed Critical Scaledynamics
Priority to FR1860069A priority Critical patent/FR3087916B1/en
Priority to PCT/EP2019/079179 priority patent/WO2020089076A1/en
Priority to EP19797208.6A priority patent/EP3874368A1/en
Priority to US17/290,512 priority patent/US20210373863A1/en
Publication of FR3087916A1 publication Critical patent/FR3087916A1/en
Application granted granted Critical
Publication of FR3087916B1 publication Critical patent/FR3087916B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Abstract

L(invention se rapporte à un procédé d'exécution d'un code scripté d'une application, procédé mis en œuvre par l'intermédiaire d'un dispositif électronique, appelé ressource appelante (ResA, A), au sein de laquelle ladite application est exécutable. Selon l'invention un tel procédé comprend : - une étape d'obtention (20) du code scripté de l'application (PCP) comprenant un ensemble d'objets projetables, un objet projetable de l'ensemble d'objets projetables comprenant au moins une fonction exécutable auprès d'une ressource d'exécution de destination (resX, B); - une étape de préparation d'une structure de données de transmission (PCP#, heap) d'au moins un objet projetable dudit code scripté préalablement obtenu, ladite structure de données de transmission associant à chaque objet projetable du code scripté, au moins une donnée d'indexation ; - une étape de transmission (40), à une ressource d'exécution de destination, de la structure de données de transmission (PCP#, heap) du code scripté; et postérieurement à l'exécution (50), par la ressource d'exécution de destination, d'au moins une fonction dudit au moins un objet projetable de la structure de données de transmission : - une étape de réception (60) d'une structure de données (ExObj, diff) de résultats d'exécution de ladite au moins une fonction ; - une étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution au sein de la ressource appelante. The invention relates to a method for executing a scripted code of an application, a method implemented by means of an electronic device, called a calling resource (ResA, A), within which said application is executable. According to the invention such a method comprises: - a step of obtaining (20) the scripted code of the application (PCP) comprising a set of projectable objects, a projectable object of the set of projectable objects comprising at least one function executable from a resource d 'destination execution (resX, B); a step of preparing a transmission data structure (PCP #, heap) of at least one projectable object of said previously obtained scripted code, said transmission data structure associating with each projectable object of the scripted code, at least one indexing data; a step of transmission (40), to a destination execution resource, of the transmission data structure (PCP #, heap) of the scripted code; and after the execution (50), by the destination execution resource, of at least one function of said at least one projectable object of the transmission data structure: a step of receiving (60) a data structure (ExObj, diff) of results of execution of said at least one function; a step of integrating the execution results of the execution results data structure within the calling resource.

Description

Procédé de traitement d'un code source, dispositif, système et programme correspondant. 1.Method of processing a source code, device, system and corresponding program. 1.

Domaine L'invention se rapporte au domaine du traitement de code informatique.Field The invention relates to the field of computer code processing.

L'invention se rapporte plus particulièrement au traitement de codes appelés scripté.The invention relates more particularly to the processing of codes called scripted.

Il s'agit de code interprétable et/ou exécutable par l'intermédiaire d'une machine virtuelle ou d'un interpréteur.This is code that can be interpreted and / or executed via a virtual machine or an interpreter.

Plus spécifiquement encore, le domaine de l'invention est celui de l'optimisation de l'exécution de code scripté au sien d'un environnement d'exécution dynamique. 2.More specifically still, the field of the invention is that of optimizing the execution of scripted code within a dynamic execution environment. 2.

Art Antérieur Il est fréquent, notamment dans un cadre institutionnel ou en entreprise, de disposer d'architectures de systèmes d'information complexes, impliquant la mise en oeuvre de nombreux dispositifs (ordinateurs, serveurs, dispositifs mobiles), interconnectés par un ou plusieurs réseaux de communications.PRIOR ART It is common, especially in an institutional or business setting, to have complex information system architectures, involving the implementation of numerous devices (computers, servers, mobile devices), interconnected by one or more networks. communications.

Au sein de telles organisations, le nombre de dispositifs connectés entre eux ne cesse de croître et la maintenance de ces architectures matérielles et logicielles coûte chère.Within such organizations, the number of devices connected to each other continues to grow and the maintenance of these hardware and software architectures is expensive.

Pour tenter d'économiser sur ces coûts, les entreprises font également appel à des services dit de « cloud », afin par exemple de mettre en oeuvre des solutions de type SaaS (de l'anglais pour « Software as a Service ») ou AaaS (de l'anglais pour « Application as a Service »).To try to save on these costs, companies also use so-called "cloud" services, for example in order to implement SaaS (for "Software as a Service") or AaaS type solutions. (English for "Application as a Service").

Bien que pouvant effectivement limiter les coûts de maintenance liés à des architecture détenues en propre, ces solutions ne sont pas exemptes d'autres contraintes (notamment au niveau de la sécurisation des données ou de la performance).Although they can effectively limit the maintenance costs associated with own-owned architectures, these solutions are not exempt from other constraints (particularly in terms of data security or performance).

Pour ce qui est de la performance, quelle que soit la solution retenue par l'organisation, celle-ci est souvent appréciée à l'aune des attentes des utilisateurs.Regarding performance, whatever solution the organization chooses, it is often assessed against user expectations.

Lorsque l'organisation possède son infrastructure, le besoin en performance, notamment pour l'exécution d'application serveur ou client-serveur, nécessite l'achat de matériels toujours plus puissants, disposants de toujours plus de ressources (processeurs, quantité de mémoire, disques rapides), afin de répondre aux besoins rencontrés par les utilisateurs.When the organization has its infrastructure, the need for performance, in particular for the execution of server or client-server applications, requires the purchase of ever more powerful equipment, with ever more resources (processors, amount of memory, fast discs), in order to meet the needs of users.

Or il se trouve que bien que certaines applications ou certains programmes sont effectivement en mesure d'utiliser pleinement les ressources mises à disposition par les nouveaux matériels, d'autres en sont souvent incapables.Now it turns out that although certain applications or certain programs are indeed able to make full use of the resources made available by the new hardware, others are often unable to do so.

En effet, les programmes et applications peuvent être divisés en deux grandes catégories (dans la suite on ne parle plus que de programmes).Indeed, the programs and applications can be divided into two main categories (in what follows we only speak of programs).

La première est celle des programmes compilés ; Il s'agit de programmes dont le code source (par exemple écrit dans le langage C, C#, C++, Pascal, etc.) est transformé, par l'utilisation d'un ou plusieurs compilateur et/ou un ou plusieurs optimiseurs en un code exécutable pour une 2 plateforme donnée (une plateforme s'entendant comme une architecture de processeur et/ou un système d'exploitation).The first is that of compiled programs; These are programs whose source code (for example written in the language C, C #, C ++, Pascal, etc.) is transformed, by the use of one or more compilers and / or one or more optimizers into one. executable code for a 2 given platform (a platform being understood as a processor architecture and / or an operating system).

Ces programmes compilés sont efficaces en ce qu'ils sont capables de tirer parti de l'ensemble des ressources fournies par la plateforme sur laquelle ils s'exécutent.These compiled programs are efficient in that they are able to take advantage of all the resources provided by the platform on which they run.

Cette efficacité tire son origine sur les nombreux travaux publiés permettant d'optimiser un code binaire 5 en fonction des plateformes de destination (par exemple utilisation de tous les coeurs de processeur disponible, parallélisation, utilisation commune de la mémoire, etc.).This efficiency derives from the numerous published works making it possible to optimize a binary code 5 as a function of the destination platforms (for example use of all the available processor cores, parallelization, common use of memory, etc.).

La deuxième catégorie est celle des programmes interprétés ; il s'agit de programmes dont le code source est interprété avant d'être exécuté.The second category is that of interpreted programs; these are programs whose source code is interpreted before being executed.

Parmi les langages de programmation populaires de ce type on trouve par exemple le PHP, le Javascript, ou encore le bytecode Java.Popular programming languages of this type include, for example, PHP, JavaScript, or even Java bytecode.

Dans le cadre 10 de l'invention, on utilise le terme code scripté pour se référer au code d'un programme écrit dans un langage de ce type.In the context of the invention, the term scripted code is used to refer to the code of a program written in a language of this type.

L'avantage des programmes écrits dans ces langages est qu'ils sont multiplateformes : le code scripté du programme s'exécute de la même manière sur différents types de plateforme.The advantage of programs written in these languages is that they are cross-platform: the scripted code of the program runs the same on different types of platform.

Seul l'interpréteur est optimisé pour une plateforme donnée.Only the interpreter is optimized for a given platform.

Ceci facilite grandement la diffusion des programmes.This greatly facilitates the broadcasting of the programs.

En revanche, les performances de ce type de programme 15 sont souvent moins bonnes que celles des programmes binaires, même en réalisant une compilation dynamique.On the other hand, the performance of this type of program is often poorer than that of binary programs, even when performing a dynamic compilation.

Et pour cause, bien que de nombreux travaux aient été conduits pour améliorer le fonctionnement des interpréteurs et des machines virtuelles, ceux-ci n'ont pas toujours conduits à des résultats totalement satisfaisants.And for good reason, although much work has been carried out to improve the operation of interpreters and virtual machines, they have not always led to completely satisfactory results.

Par exemple, le langage javascript permet d'écrire des programmes (scripts) qui sont 20 exécutés par un moteur Javascript (ou interpréteur Javascript).For example, the javascript language makes it possible to write programs (scripts) which are executed by a JavaScript engine (or JavaScript interpreter).

Un tel moteur est soit intégré au sein d'un navigateur Web (FirefoxTM, ChromeTM, EdgeTM, Opéra TM) soit mis en oeuvre séparément au sein d'un interpréteur dédié (par exemple Node.js'").Such an engine is either integrated within a Web browser (Firefox ™, Chrome ™, Edge ™, Opéra ™) or implemented separately within a dedicated interpreter (for example Node.js' ").

Comme pour d'autres langages, le code javascript est historiquement un langage s'exécutant dans un environnement mono-thread (c'est-à-dire que tous les événements s'effectuent les uns après les autres).As with other languages, javascript code has historically been a language that runs in a single-threaded environment (that is, all events occur one after the other).

Lorsqu'une fonction longue 25 est mise en oeuvre par l'interpréteur, celui-ci n'est pas nécessairement disponible pour effectuer d'autres tâches tant que la fonction n'est pas terminée.When a long function 25 is implemented by the interpreter, the latter is not necessarily available to perform other tasks until the function is terminated.

Bien entendu, avec les récentes évolutions intégrées au sein des interpréteurs, il est possible de créer des flots d'exécution isolés via des interfaces disponibles (par exemple les « webworkers » dans les navigateurs) ou dans Node.js (webworkers, child.spawn/fork).Of course, with recent developments integrated into interpreters, it is possible to create isolated execution flows via available interfaces (for example “webworkers” in browsers) or in Node.js (webworkers, child.spawn / fork).

Ainsi, des solutions existent théoriquement pour réaliser un appel 30 de fonction déporté au sein d'un flot d'exécution différent du flot principal.Thus, solutions theoretically exist for carrying out a remote function call within an execution flow different from the main flow.

Cependant, la problématique principale réside dans la portée du code exécuté dans un autre flot d'exécution.However, the main problem lies in the scope of the code executed in another execution stream.

En effet, pour pouvoir fonctionner correctement, ces solutions existantes, telles que celles 3 mentionnées précédemment doivent être intégrées au sein du code source scripté lors de son écriture par le développeur.In fact, in order to be able to function correctly, these existing solutions, such as those mentioned above, must be integrated within the scripted source code when it is written by the developer.

Par exemple, l'appel à un webworker doit être prévu à l'avance par le développeur du programme qui doit donc savoir, en avance de phase, que le programme est susceptible de s'exécuter sur une longue période et qu'il est donc nécessaire de prévoir un ou 5 plusieurs flots d'exécution pour l'exécution du programme.For example, the call to a webworker must be planned in advance by the program developer who must therefore know, in advance of the phase, that the program is likely to run over a long period and that it is therefore necessary to provide one or more execution streams for the execution of the program.

Chaque flot d'exécution (chaque webworker) implémente un code qui lui est propre (et défini par un fichier javascript particulier).Each flow of execution (each webworker) implements its own code (and defined by a particular javascript file).

Il n'y a donc pas de dynamicité de la création d'un webworker et encore moins de répartition dynamique de charge.There is therefore no dynamicity in the creation of a webworker and even less dynamic load distribution.

Par ailleurs, les flots d'exécution sont indépendants les uns des autres.Furthermore, the execution streams are independent of each other.

Cela signifie que ces dernières ne permettent pas de gérer à la fois la correspondance des objets entre 10 appelant et appelé car les solutions existantes effectuent des recopies d'objets (lorsqu'elles en effectuent), et ne permettent pas non plus de gérer l'étendue de l'applicabilité des variables et des fonctions au sein des différents flots d'exécution.This means that the latter do not make it possible to manage both the correspondence of objects between the caller and the called party because the existing solutions carry out recopies of objects (when they do), and neither do they make it possible to manage the extent of the applicability of variables and functions within the various execution streams.

Il existe donc un besoin de fournir une solution qui ne pose pas les problèmes précédemment mentionnés et permette de tirer parti de plus de ressource disponible au sein des 15 infrastructures de traitement de l'information. 3.There is therefore a need to provide a solution which does not pose the aforementioned problems and which makes it possible to take advantage of more resources available within the information processing infrastructures. 3.

Résumé La méthode proposée par les inventeurs ne pose pas ces problèmes de l'art antérieur.Summary The method proposed by the inventors does not pose these problems of the prior art.

En effet, il est proposé un procédé d'exécution d'un code scripté d'une application, procédé mis en oeuvre par l'intermédiaire d'un dispositif électronique, appelé ressource appelante (ResA, A), au 20 sein de laquelle ladite application est exécutable.Indeed, there is proposed a method for executing a scripted code of an application, a method implemented by means of an electronic device, called calling resource (ResA, A), within which said application is executable.

Selon l'invention, un tel procédé comprend : une étape d'obtention (20) du code scripté de l'application (PCP) comprenant un ensemble d'objets projetables, un objet projetable de l'ensemble d'objets projetables comprenant au moins une fonction exécutable auprès d'une ressource d'exécution de destination (resX, B) ; 25 - une étape de préparation d'une structure de données de transmission (PCP#, heap) d'au moins un objet projetable dudit code scripté préalablement obtenu, ladite structure de données de transmission associant à chaque objet projetable du code scripté, au moins une donnée d'indexation ; une étape de transmission (40), à une ressource d'exécution de destination, de la structure 30 de données de transmission (PCP#, heap) du code scripté; et 4 postérieurement à l'exécution (50), par la ressource d'exécution de destination, d'au moins une fonction dudit au moins un objet projetable de la structure de données de transmission : une étape de réception (60) d'une structure de données (ExObj, diff) de résultats 5 d'exécution de ladite au moins une fonction ; une étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution au sein de la ressource appelante .According to the invention, such a method comprises: a step of obtaining (20) the scripted code of the application (PCP) comprising a set of projectable objects, a projectable object of the set of projectable objects comprising at least a function executable from a destination execution resource (resX, B); 25 - a step of preparing a transmission data structure (PCP #, heap) of at least one projectable object of said previously obtained scripted code, said transmission data structure associating with each projectable object scripted code, at least indexing data; a step of transmitting (40), to a destination execution resource, the structure 30 of transmission data (PCP #, heap) of the scripted code; and 4 after the execution (50), by the destination execution resource, of at least one function of said at least one projectable object of the transmission data structure: a reception step (60) of a data structure (ExObj, diff) of results of execution of said at least one function; a step of integrating the execution results of the execution results data structure within the calling resource.

Ainsi, l'invention rend possible l'exécution, sur de multiples ressources, d'un code source scripté, sans nécessiter, sur les ressources distantes (ressource d'exécution de destination), la mise 10 en oeuvre d'un processus différent de celui mis en oeuvre usuellement pour l'exécution d'un code scripté par l'une de ces ressources d'exécution de destination.Thus, the invention makes possible the execution, on multiple resources, of a scripted source code, without requiring, on the remote resources (destination execution resource), the implementation of a process other than that usually implemented for the execution of a code scripted by one of these destination execution resources.

Selon une caractéristique particulière, l'étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution au sein de la ressource appelante comprend une vérification différentielle de l'intégrité des données mise à jour au cours de l'exécution (50), par la 15 ressource d'exécution de destination.According to one particular characteristic, the step of integrating the execution results of the execution results data structure within the calling resource comprises a differential check of the integrity of the updated data during the process. execution (50), by the destination execution resource.

Ainsi, il est possible, au sein de la ressource appelante, de s'assurer que les résultats d'exécution distants ne viennent pas en opposition avec d'autres ressources (locales ou de destination) qui auraient pu modifier les mêmes données préalablement à la réception de ces données modifiées par la ressource d'exécution de destination.Thus, it is possible, within the calling resource, to ensure that the remote execution results do not come into opposition with other resources (local or destination) which could have modified the same data before the receipt of this modified data by the destination execution resource.

On évite donc ainsi de propager ou 20 d'intégrer des incohérences dans les données traitées lorsque celles-ci sont au moins partiellement traitées à distance.This therefore avoids propagating or integrating inconsistencies in the data processed when the latter are at least partially processed remotely.

Selon une caractéristique particulière, l'étape d'obtention du code scripté comprenant un ensemble d'objets projetables comprend : une étape d'obtention (10) d'un code source scripté (CSSE), représentatif de l'application à 25 exécuter par la ressource appelante (ResA, A) ; une étape de détermination, au sein du code source scripté (CSSE), d'au moins une fonction susceptible d'être exécutée par une ressource d'exécution de destination, dite fonction projetable ; une étape de modification du code source scripté, délivrant un code scripté d'exécution 30 comprenant ledit ensemble d'objets projetables, en fonction de ladite au moins une fonction projetable préalablement déterminée.According to one particular characteristic, the step of obtaining the scripted code comprising a set of projectable objects comprises: a step of obtaining (10) a scripted source code (CSSE), representative of the application to be executed by the calling resource (ResA, A); a step of determining, within the scripted source code (CSSE), at least one function capable of being executed by a destination execution resource, called a projectable function; a step of modifying the scripted source code, delivering a scripted execution code 30 comprising said set of projectable objects, as a function of said at least one previously determined projectable function.

5 Ainsi, le code source scripté n'est pas directement transmis aux ressources pour être exécuté.5 Thus, the scripted source code is not directly transmitted to the resources to be executed.

A la place, il est analysé de manière à déterminer quelles sont les portions de code qui sont susceptibles d'être projetées vers des ressource d'exécution de destination, éventuellement en modifiant le code source scripté lui-même.Instead, it is analyzed to determine which portions of code are likely to be projected to destination runtime resources, possibly by modifying the scripted source code itself.

5 Selon un mode de réalisation particulier, en ce que l'étape de préparation d'une structure de données de transmission d'au moins un objet projetable dudit code scripté comprend une étape de création d'un tableau d'indexation (refA), pour chaque objet projetable (OA, XA) à transmettre à une ressource d'exécution de destination (ResX, B), tableau au sein duquel un index (0, 1, ...) est associé à une référence d'objet (RefXA, RefXA,...) ; 10 - une étape de création de la structure de données de transmission (PCP, heap) sous la forme d'un tableau comprenant, pour chaque objet projetable, un index (0, 1, ...), correspondant à l'index (0, 1, ...) de la référence de cet objet projetable au sein du tableau d'indexation (ref,,), et une représentation sérialisée (r0, r1, ...) de l'objet projetable ; Ainsi, en utilisant deux structures de données différentes, du côté de la ressource 15 appelante, pour indexer le code scripté d'exécution qui est transmis, on assure qu'il est possible, lorsque le code exécuté par la ressource destination est terminé, de retrouver une correspondance d'objet identique à celle qui a été transmise, et donc on permet une vérification des données reçues en provenance de la ressource d'exécution de destination.5 According to a particular embodiment, in that the step of preparing a transmission data structure of at least one projectable object of said scripted code comprises a step of creating an indexing table (refA), for each projectable object (OA, XA) to be transmitted to a destination execution resource (ResX, B), array in which an index (0, 1, ...) is associated with an object reference (RefXA , RefXA, ...); 10 - a step of creating the transmission data structure (PCP, heap) in the form of an array comprising, for each projectable object, an index (0, 1, ...), corresponding to the index ( 0, 1, ...) of the reference of this projectable object within the indexing array (ref ,,), and a serialized representation (r0, r1, ...) of the projectable object; Thus, by using two different data structures, on the side of the calling resource, to index the scripted execution code which is transmitted, it is ensured that it is possible, when the code executed by the destination resource is finished, to find an object correspondence identical to that which was transmitted, and therefore a verification of the data received from the destination execution resource is allowed.

Selon un mode de réalisation particulier l'étape de réception d'une structure de données 20 de résultats (ExObj, diff) d'exécution de ladite au moins une fonction comprend : une étape de réception, de la structure de données de transmission (PCP#, heap) préalablement transmise, sous la forme d'un tableau comprenant, pour chaque objet projetable, un index (0, 1, 2,...), correspondant à l'index (0, 1, 2,...) de la référence de cet objet projetable au sein d'un tableau d'indexation (refB) de la ressource d'exécution de 25 destination (ResX, B), et une représentation sérialisée (r0, r1, r2...) de l'objet projetable ; une étape de réception, de la structure de données de résultats d'exécution (ExObj, diff) sous la forme d'un tableau comprenant, pour chaque objet projetable de la structure de données de transmission (PCP, heap) préalablement transmise, un index (0, 1, 2,...) et et une représentation sérialisée (r'O, r'1, ...) des modifications effectuées par ladite au moins 30 une fonction exécutée par la ressource d'exécution de destination (ResX, B).According to a particular embodiment, the step of receiving a data structure 20 of results (ExObj, diff) for executing said at least one function comprises: a step of receiving, of the transmission data structure (PCP #, heap) previously transmitted, in the form of an array comprising, for each projectable object, an index (0, 1, 2, ...), corresponding to the index (0, 1, 2, ... ) of the reference of this projectable object within an indexing array (refB) of the destination execution resource (ResX, B), and a serialized representation (r0, r1, r2 ...) of the projectable object; a reception step of the data structure of execution results (ExObj, diff) in the form of a table comprising, for each projectable object of the transmission data structure (PCP, heap) previously transmitted, an index (0, 1, 2, ...) and and a serialized representation (r'O, r'1, ...) of the modifications performed by said at least one function executed by the destination execution resource (ResX , B).

Ainsi, il est possible de suivre l'évolution (les modifications) réalisée sur les données, indépendamment de la structuration des données transmises, tout en conservant l'indexation 6 effectuée en entré du processus lors de la création des données à destination de la ressource d'exécution de destination.Thus, it is possible to follow the evolution (the modifications) carried out on the data, independently of the structure of the transmitted data, while keeping the indexing 6 carried out in input of the process during the creation of the data intended for the resource. destination execution.

Selon une caractéristique particulière, l'étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution (ExObj, diff) au sein de la ressource appelante 5 comprend : une étape de mise à jour, au sein de la ressource appelante (ResA, A), d'une liste d'objets, la mise à jour comprenant une création d'un nouvel objet lorsque qu'un objet absent de la structure de données de transmission a été créé par la ressource d'exécution de destination au cours de l'exécution (50); 10 - une étape de mise à jour des valeurs des objets de la liste d'objets, comprenant une vérification de la cohérence des valeurs à mettre à jour en fonction des valeurs d'origine contenues dans la structure de données de transmission.According to one particular characteristic, the step of integrating the execution results of the execution results data structure (ExObj, diff) within the calling resource 5 comprises: an updating step, within the calling resource (ResA, A), of a list of objects, the update comprising the creation of a new object when an object absent from the transmission data structure has been created by the resource of destination execution during execution (50); 10 - a step of updating the values of the objects of the list of objects, comprising a check of the consistency of the values to be updated as a function of the original values contained in the transmission data structure.

Ainsi, on rend possible la vérification de la préservation de la sémantique, tant sur le code que les données transmises et retournées par la ressource d'exécution de destination.Thus, it is possible to verify the preservation of the semantics, both on the code and on the data transmitted and returned by the destination execution resource.

15 Selon une caractéristique particulière, l'étape de modification du code source scripté, délivrant un code scripté d'exécution comprenant ledit ensemble d'objets projetables, en fonction de ladite au moins une fonction projetable préalablement déterminée comprend : une étape de détermination d'au moins un contexte d'exécution de ladite application, en fonction du code source scripté (CSSE), ledit contexte d'exécution de ladite application 20 comprenant, pour chaque variable et/ou objet du code source scripté (CSSE), une représentation d'une variable et/ou objet correspondant, accessible et/ou modifiable lors de la projection vers une ressource d'exécution de destination, ledit contexte d'exécution tenant compte de la portée de chaque variable et/ou objet du code source scripté (CSSE); une étape de construction du code scripté (PCP) en fonction du code source scripté (CSSE) 25 et dudit contexte d'exécution préalablement déterminé.According to one particular characteristic, the step of modifying the scripted source code, delivering a scripted execution code comprising said set of projectable objects, as a function of said at least one previously determined projectable function comprises: a step of determining at least one execution context of said application, as a function of the scripted source code (CSSE), said execution context of said application 20 comprising, for each variable and / or object of the scripted source code (CSSE), a representation of '' a corresponding variable and / or object, accessible and / or modifiable during projection to a destination execution resource, said execution context taking into account the scope of each variable and / or object of the scripted source code (CSSE ); a step of constructing the scripted code (PCP) as a function of the scripted source code (CSSE) 25 and of said previously determined execution context.

Ainsi, on assure que le code projeté vers la ressource d'exécution de destination peut s'exécuter avec un contexte identique à celui de la ressource locale.Thus, it is ensured that the code projected to the destination execution resource can be executed with a context identical to that of the local resource.

Au final, cela permet d'assurer un fonctionnement plus efficace des codes projetés, en minimisant les éventuelles opérations d'invalidation d'exécution.In the end, this makes it possible to ensure more efficient operation of the projected codes, while minimizing any possible execution invalidation operations.

30 Il est entendu, dans le cadre de la description de la présente technique selon l'invention, qu'une étape de transmission d'une information et/ou d'un message d'un premier dispositif à un deuxième dispositif, correspond au moins partiellement, pour ce deuxième dispositif à une étape 7 de réception de l'information et/ou du message transmis, que cette réception et cette transmission soit directe ou qu'elle s'effectue par l'intermédiaire d'autres dispositifs de transport, de passerelle ou d'intermédiation, y inclus les dispositifs décrits dans la présente selon l'invention.It is understood, in the context of the description of the present technique according to the invention, that a step of transmitting information and / or a message from a first device to a second device corresponds at least partially, for this second device in a step 7 of receiving the information and / or the message transmitted, whether this reception and this transmission is direct or whether it is carried out by means of other transport devices, of gateway or intermediation, including the devices described herein according to the invention.

Selon un autre aspect, l'invention se rapporte également à un dispositif électronique 5 d'exécution d'un code scripté, appelé ressource appelante.According to another aspect, the invention also relates to an electronic device 5 for executing a scripted code, called a calling resource.

Un tel dispositif comprend : des moyens d'obtention du code scripté comprenant un ensemble d'objets projetables, un objet projetable de l'ensemble d'objets projetables comprenant au moins une fonction exécutable auprès d'une ressource d'exécution de destination ; des moyens de préparation d'une structure de données de transmission d'au moins un 10 objet projetable dudit code scripté préalablement obtenu, ladite structure de données de transmission associant à chaque objet du code scripté, au moins une donnée d'indexation ; des moyens de transmission à une ressource d'exécution de destination, de la structure de données de transmission du code scripté; et des moyens de réception d'une structure de données de résultats d'exécution, mis en 15 oeuvre postérieurement à l'exécution, par la ressource d'exécution de destination, de la structure de données de transmission ; des moyens d'intégration de résultats d'exécution de la structure de données de résultats d'exécution.Such a device comprises: means for obtaining the scripted code comprising a set of projectable objects, a projectable object of the set of projectable objects comprising at least one function executable from a destination execution resource; means for preparing a transmission data structure of at least one projectable object of said previously obtained scripted code, said transmission data structure associating with each object of the scripted code, at least one indexing datum; means for transmitting to a destination execution resource, the data structure for transmitting the scripted code; and means for receiving an execution results data structure, implemented after the execution, by the destination execution resource, of the transmission data structure; means for integrating the execution results of the execution results data structure.

L'invention se rapporte également, selon un aspect complémentaire, à un système 20 d'exécution d'un code scripté.The invention also relates, according to a complementary aspect, to a system 20 for executing a scripted code.

Un tel système comprend au moins une ressource appelante prenant la forme d'un dispositif électronique d'exécution tel que décrit précédemment et au moins une ressource distante, prenant la forme d'une ressource d'exécution de code scripté accessible depuis la ressource appelante.Such a system comprises at least one calling resource taking the form of an electronic execution device as described above and at least one remote resource, taking the form of a scripted code execution resource accessible from the calling resource.

Selon une implémentation préférée, les différentes étapes des procédés selon l'invention 25 sont mises en oeuvre par un ou plusieurs logiciels ou programmes d'ordinateur, comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un dispositif d'exécution selon l'invention et étant conçu pour commander l'exécution des différentes étapes des procédés, mis en oeuvre au niveau du terminal de communication, du dispositif électronique d'exécution et/ou du serveur distant, dans le cadre d'une répartition des traitements à effectuer et 30 déterminés par un codes source scripté.According to a preferred implementation, the different steps of the methods according to the invention are implemented by one or more software or computer programs, comprising software instructions intended to be executed by a data processor of an execution device. according to the invention and being designed to control the execution of the various steps of the methods, implemented at the level of the communication terminal, of the electronic execution device and / or of the remote server, within the framework of a distribution of the processing operations to be performed and determined by scripted source codes.

8 En conséquence, l'invention vise aussi des programmes, susceptibles d'être exécutés par un ordinateur ou par un processeur de données, ces programmes comportant des instructions pour commander l'exécution des étapes des procédés tel que mentionnés ci-dessus.8 Consequently, the invention is also aimed at programs, capable of being executed by a computer or by a data processor, these programs comprising instructions for controlling the execution of the steps of the methods as mentioned above.

Un programme peut utiliser n'importe quel langage de programmation, et être sous la 5 forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.A program can use any programming language, and be in the form of source code, object code, or code intermediate between source code and object code, such as in a partially compiled form, or in any. other desirable shape.

L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus.The invention also relates to an information medium readable by a data processor, and comprising instructions of a program as mentioned above.

Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker 10 le programme.The information medium can be any entity or device capable of storing the program.

Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple un support mobile (carte mémoire) ou un disque dur ou un SSD.For example, the medium can comprise a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or else a magnetic recording means, for example a mobile medium (memory card) or a hard drive or SSD.

D'autre part, le support d'informations peut être un support transmissible tel qu'un signal 15 électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens.On the other hand, the information medium can be a transmissible medium such as an electrical or optical signal, which can be conveyed via an electrical or optical cable, by radio or by other means.

Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet.The program according to the invention can in particular be downloaded from an Internet type network.

Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution 20 du procédé en question.Alternatively, the information medium can be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the method in question.

Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels.According to one embodiment, the invention is implemented by means of software and / or hardware components.

Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels.From this perspective, the term “module” can correspond in this document as well to a software component, as to a hardware component or to a set of hardware and software components.

25 Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné.A software component corresponds to one or more computer programs, one or more subroutines of a program, or more generally to any element of a program or of software capable of implementing a function or a set of functions, as described below for the module concerned.

Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, passerelle, set-top-box, 30 routeur, etc.) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc.).Such a software component is executed by a data processor of a physical entity (terminal, server, gateway, set-top-box, router, etc.) and is capable of accessing the material resources of this physical entity (memories , recording media, communication bus, electronic input / output cards, user interfaces, etc.).

9 De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné.In the same way, a hardware component corresponds to any element of a hardware set (or hardware) capable of implementing a function or a set of functions, according to what is described below for the module concerned.

Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit 5 intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), etc.It may be a programmable hardware component or with an integrated processor for running software, for example an integrated circuit, a smart card, a memory card, an electronic card for running a firmware. (firmware), etc.

Chaque composante du système précédemment décrit met bien entendu en oeuvre ses propres modules logiciels.Each component of the system described above obviously implements its own software modules.

Les différents modes de réalisation mentionnés ci-dessus sont combinables entre eux pour 10 la mise en oeuvre de l'invention. 4.The various embodiments mentioned above can be combined with one another for the implementation of the invention. 4.

Figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation préférentiel, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : 15 la figure 1 décrit un système dans lequel l'invention est mise en oeuvre ; la figure 2 décrit une situation de perte de correspondance entre objets pour l'exécution déportée d'un code scripté ; la figure 3 décrit un mode de réalisation spécifique du procédé de traitement de code scripté; 20 - la figure 4 illustre la problématique de portée des variables au sein d'un code scripté; la figure 5 illustre une architecture d'une ressource appelante apte à mettre en oeuvre un procédé de traitement de l'invention ; la figure 6 illustre une architecture d'une ressource d'exécution de destination apte à mettre en oeuvre un procédé de traitement de l'invention. 25 5.Figures Other characteristics and advantages of the invention will emerge more clearly on reading the following description of a preferred embodiment, given by way of simple illustrative and non-limiting example, and the appended drawings, among which: FIG. 1 describes a system in which the invention is implemented; FIG. 2 describes a situation of loss of correspondence between objects for the remote execution of a scripted code; FIG. 3 describes a specific embodiment of the scripted code processing method; FIG. 4 illustrates the problem of the scope of the variables within a scripted code; FIG. 5 illustrates an architecture of a calling resource capable of implementing a processing method of the invention; FIG. 6 illustrates an architecture of a destination execution resource capable of implementing a processing method of the invention. 25 5.

Description 5.1.Description 5.1.

Exposé des principes techniques Comme indiqué précédemment, un objet de l'invention est de permettre une utilisation efficace de ressources d'exécutions disponibles au sein d'une infrastructures, dans le cadre d'exécution de programmes scriptes par un interpréteur ou une machine virtuelle.Statement of Technical Principles As indicated above, an object of the invention is to allow efficient use of execution resources available within an infrastructure, within the framework of the execution of scripted programs by an interpreter or a virtual machine.

Plus 30 particulièrement, l'invention rend possible l'exécution, à distance ou localement, dans une pluralité de flots d'exécution (un flot d'exécution faisant partie du groupe comprenant un thread processeur, un processeur, un coeur de processeur, un thread de langage scripté, un contexte d'exécution d'une 10 séquence d'instructions), d'une ou plusieurs portions d'applications.More particularly, the invention makes it possible to execute, remotely or locally, in a plurality of execution streams (an execution stream forming part of the group comprising a processor thread, a processor, a processor core, a scripted language thread, a context for executing a sequence of instructions), one or more portions of applications.

Ainsi, l'invention permet une intégration dynamique de ressources d'exécution (serveurs, ordinateurs personnels, smartphones et tablettes) et l'allocation dynamique de portions d'applications aux ressources d'exécution nouvellement intégrées.Thus, the invention allows dynamic integration of execution resources (servers, personal computers, smartphones and tablets) and dynamic allocation of portions of applications to newly integrated execution resources.

5 L'invention apporte une solution simple et efficace aux problématiques précédemment mentionnées.The invention provides a simple and effective solution to the problems mentioned above.

Notamment, dans le cadre d'un environnement mono-serveur, l'invention offre la possibilité d'utiliser de manière automatique, l'intégralité des ressources disponibles au sein de ce serveur (en utilisant l'intégralité des coeurs de processeurs disponibles).In particular, in the context of a single-server environment, the invention offers the possibility of automatically using all of the resources available within this server (by using all of the available processor cores).

L'identification des portions de code à distribuer est quant à elle soit automatique, soit manuelle.The identification of the portions of code to be distributed is for its part either automatic or manual.

Dans le cadre d'une 10 utilisation multiserveurs, l'invention permet de distribuer des portions de codes exécutables entre plusieurs serveurs afin de mettre en oeuvre les ressources d'exécution disponibles au sein de ces serveurs.In the context of multiserver use, the invention makes it possible to distribute portions of executable code between several servers in order to use the execution resources available within these servers.

En troisième lieu, l'invention permet également de distribuer de portions de codes exécutables sur différents dispositifs (ordinateurs personnels, tablettes, smartphones) connectés par l'intermédiaire d'un ou plusieurs réseaux de communication.Thirdly, the invention also makes it possible to distribute portions of codes that can be executed on different devices (personal computers, tablets, smartphones) connected via one or more communication networks.

15 Pour ce faire, l'invention est basée sur la mise en oeuvre d'un module logiciel spécifique, lequel est utilisé en mode supervisé ou en mode pair à pair.To do this, the invention is based on the implementation of a specific software module, which is used in supervised mode or in peer-to-peer mode.

Dans le mode de réalisation décrit par la suite, le mode supervisé est détaillé.In the embodiment described below, the supervised mode is detailed.

On décrit, en relation avec la figure 1, une mise en oeuvre générale d'un traitement de code scripté implémentant la technique de l'invention.A general implementation of scripted code processing implementing the technique of the invention is described with reference to FIG. 1.

Le module logiciel spécifique (XStrmr), qui s'exécute sur une ressource appelante (ResA), comprend une unité 20 de compilation (ComU) et une unité d'allocation (AllocU).The specific software module (XStrmr), which runs on a calling resource (ResA), comprises a compilation unit (ComU) and an allocation unit (AllocU).

Ce module logiciel (XStrmr) : Prend (10) en entrée un code source scripté à exécuter (CSSE); Analyse (20) le code source scripté à exécuter (CSSE) et recherche et/ou construit des portions de code projetables (PCP) qui peuvent faire l'objet d'une projection à destination 25 d'une ressource d'exécution destinatrice (ResX) (dispositif séparé ou coeur spécifique d'un dispositif d'exécution multicceurs); ces deux premières étapes sont mises en oeuvre par l'unité de compilation (ComU) Identifie (30) une ou plusieurs ressources d'exécution (ResX) aptes à exécuter les portions de code projetables (PCP); 30 - lorsque les portions de codes et les ressources disponibles sont identifiées (et/ou construites), il projette (40) ces portions de code projetables (PCP), vers une ou plusieurs ressources d'exécution (ResX) préalablement identifiées ; 11 Les ressources identifiées implémentent elles-mêmes une pluralité des fonctions précédemment décrites, et donc une portion au moins du module logiciel (XStrmr) décrit, voire l'intégralité de celui-ci ; Les ressources d'exécution (ResX) exécutent (50) les portions de code projetées (PCP); 5 Les résultats d'exécution (ExObj) de ces portions de codes (PCP) par les ressources disponibles sont transmis (60) au module logiciel appelant (XStrmr); Le module logiciel appelant (XStrmr) traite (70) les résultats reçus.This software module (XStrmr): Takes (10) as input a scripted source code to be executed (CSSE); Analyzes (20) the scripted source code to be executed (CSSE) and searches for and / or constructs projectable portions of code (PCP) which can be projected to a destination execution resource (ResX ) (separate device or specific core of a multicore execution device); these first two steps are implemented by the compilation unit (ComU) Identifies (30) one or more execution resources (ResX) capable of executing the projectable portions of code (PCP); - when the code portions and the available resources are identified (and / or constructed), it projects (40) these projectable code portions (PCP), towards one or more execution resources (ResX) previously identified; The identified resources themselves implement a plurality of the functions described above, and therefore at least a portion of the software module (XStrmr) described, or even all of it; The execution resources (ResX) execute (50) the projected code portions (PCP); The results of execution (ExObj) of these code portions (PCP) by the available resources are transmitted (60) to the calling software module (XStrmr); The calling software module (XStrmr) processes (70) the received results.

Ces cinq dernières étapes sont mises en oeuvre par l'unité d'allocation (AllocU).These last five steps are implemented by the allocation unit (AllocU).

Les flots d'exécutions sont initialisés avant la transmission des portions de code 10 projetables.The execution streams are initialized before the transmission of the projectable code portions.

Cela signifie que lorsqu'une portion de code projetable est transmise, un flot d'exécution apte à exécuter ce code projetable a déjà été initialisé.This means that when a portion of projectable code is transmitted, an execution flow capable of executing this projectable code has already been initialized.

Ainsi, d'une manière générale, la ressource appelante est à même de décomposer et/ou modifier (automatiquement ou pas) l'application d'origine, en portions (morceaux) exécutables indépendamment, puis est à même de transmettre ces portions (et leur contexte d'exécution) à 15 une ressource identifiée, laquelle exécute cette portion, à l'aide du contexte transmis, et renvoie le résultat à la ressource appelante pour traitement.Thus, in general, the calling resource is able to break down and / or modify (automatically or not) the original application, into independently executable portions (pieces), then is able to transmit these portions (and their execution context) to an identified resource, which executes this portion, using the transmitted context, and returns the result to the calling resource for processing.

Plus particulièrement, selon l'invention, on met notamment en oeuvre une méthode de gestion des flots d'exécution, méthode qui comprend un processus de sauvegarde de la portion de code (avant sa transmission à la ressource destinatrice) et un processus de gestion des portées (de variables notamment, également appelé 20 processus de gestion des scopes) et ce afin d'assurer une cohérence d'exécution du code dans la ressource destinatrice.More particularly, according to the invention, a method of managing execution streams is implemented in particular, a method which comprises a process for saving the portion of code (before its transmission to the destination resource) and a process for managing data. scopes (of variables in particular, also called scope management process) in order to ensure consistency in the execution of the code in the destination resource.

Ces deux processus permettent de certifier que les portions de codes exécutées par la ressource distante préservent la sémantique, tant sur le code que les données (et donc qu'ils fournissent un résultat qui est identique à celui qui aurait été obtenu si ces portions avaient été exécutées par la ressource appelante).These two processes make it possible to certify that the portions of code executed by the remote resource preserve the semantics, both on the code and on the data (and therefore that they provide a result which is identical to that which would have been obtained if these portions had been executed by the calling resource).

25 Plus précisément, la méthode de gestion de flots d'exécution est mise en oeuvre, au sein du module logiciel précédemment présenté, à l'aide des unités de compilations et des unités d'allocations.More precisely, the method of managing execution flows is implemented, within the software module presented above, using the compilation units and the allocation units.

Cette méthode de gestion de flots d'exécution permet de conserver, dans les différents flots créés pour la projection des portions de code, un référentiel d'exécution unifié, lequel est utilisé pour assurer une unicité de l'exécution.This method of managing execution flows makes it possible to keep, in the various flows created for the projection of portions of code, a unified execution repository, which is used to ensure uniqueness of the execution.

En d'autres termes, selon l'invention, 30 l'exécution des différentes portions de codes projetées dans les flots d'exécution parallélisés est transparente pour l'application.In other words, according to the invention, the execution of the various code portions projected in the parallelized execution streams is transparent for the application.

Cette dernière ne sait pas qu'elle fait l'objet d'une décomposition en plusieurs portions exécutées indépendamment par différentes ressources, au sein de différents 12 flots d'exécution : de son point de vue, tout se déroule comme si le traitement avait été réalisé au sein d'un seul et unique flot d'exécution.The latter does not know that it is the object of a decomposition into several portions executed independently by different resources, within different 12 execution streams: from his point of view, everything takes place as if the processing had been carried out within a single flow of execution.

Cela est avantageux à plus d'un titre.This is advantageous in more than one way.

Notamment, n'importe quelle application peut être exécutée par le module logiciel objet de la présente technique.In particular, any application can be executed by the software module which is the subject of the present technique.

Il n'est notamment pas nécessaire de d'écrire l'application de manière spécifique.In particular, it is not necessary to write the application in a specific way.

Une 5 interface d'aide à la décomposition peut être mise en oeuvre ultérieurement afin de guider les décompositions.A decomposition aid interface can be implemented later in order to guide the decompositions.

Cependant, le développeur se contente d'écrire l'application comme il le souhaite, en fonction des exigences qui lui sont propre.However, the developer is content to write the application as he wishes, according to his own requirements.

Le module logiciel analyse le code de l'application, en fonction de paramètres d'analyse spécifique et détermine seul les portions de code (fonctions, procédure, modules) à projeter dans des flots d'exécution parallèles.The software module analyzes the code of the application, as a function of specific analysis parameters and alone determines the portions of code (functions, procedure, modules) to be projected in parallel execution flows.

Le développeur n'a pas à 10 apprendre une interface ou à développer selon une façon précise.The developer does not have to learn an interface or develop in a specific way.

En d'autres termes, afin de 'paralléliser' un programme, lors du chargement du programme, l'unité de compilation identifie (et/ou construit) les fonctions potentiellement parallélisables et génère les instrumentations nécessaires afin qu'elles puissent être soumise à l'unité d'allocation.In other words, in order to 'parallelize' a program, when loading the program, the compilation unit identifies (and / or builds) potentially parallelizable functions and generates the necessary instrumentations so that they can be subjected to the allocation unit.

15 Pour l'exécution l'unité d'allocation s'appuie sur trois blocs fonctionnels (ces blocs pouvant potentiellement être intégrés au sein d'un seul et même programme) : service, master et runner.For the execution, the allocation unit is based on three functional blocks (these blocks potentially being able to be integrated within one and the same program): service, master and runner.

Un runner matérialise les flots.A runner materializes the waves.

Le master la stratégie de placement de fonctions projetables.The master's degree in the placement strategy of projectable functions.

Le service fournit le code à exécuter dans le cluster.The service provides the code to be executed in the cluster.

Afin d'exécuter une fonction sur une ressource d'exécution de destination : 20 le service est en charge du début et de la fin de l'exécution des fonctions projetables.In order to execute a function on a destination execution resource: the service is in charge of the start and the end of the execution of the projectable functions.

Pour l'exécution, il définit un travail (job) qui contient les données nécessaires à l'exécution de la fonction (paramètre d'entrée, scope d'exécution, système objet sérialisé, code de la fonction) sous la forme d'une structure de données de transport et la transmet au master. 25 le master est en charge du placement des différents travaux (jobs) sur les runners.For execution, it defines a job which contains the data necessary for the execution of the function (input parameter, execution scope, serialized object system, function code) in the form of a transport data structure and passes it to the master. 25 the master is in charge of placing the various jobs on the runners.

Il gère une queue d'attente et d'exécution des fonctions projetables (transportées). un runner permet d'exécuter un ou plusieurs jobs en parallèles sur une ressource (par exemple un nodejs, ou un navigateur, un serveur, un cluster, etc.). une fois la fonction exécutée, le ru nner effectue un travail de différentiation, ajoute 30 les paramètres de sortie et communique au master la fin de l'exécution du job (le travail de différentiation est notamment effectué à l'aide d'une structure de 13 donnée de différentiation comme cela est explicité par la suite en lien avec un mode de réalisation). le master retire de la file d'exécution de job et indique au service qu'il est terminé ; le service valide les propriétés ACID (à moins qu'elles ne s'appliquent pas), les 5 propriétés d'ordre et met à jour l'espace des objets.It manages a queue for waiting and executing projectable (transported) functions. a runner is used to run one or more jobs in parallel on a resource (for example a nodejs, or a browser, a server, a cluster, etc.). once the function has been executed, the ru nner performs differentiation work, adds the output parameters and communicates to the master the end of the execution of the job (the differentiation work is notably carried out using a structure of 13 differentiation data as explained below in connection with an embodiment). the master withdraws from the job execution queue and indicates to the service that it is finished; the service validates the ACID properties (unless they do not apply), the 5 order properties and updates the object space.

Un mode de réalisation spécifique de la technique proposé est décrit par la suite en lien avec le langage scripté « javascript ».A specific embodiment of the proposed technique is described below in connection with the scripted language “javascript”.

Il est bien entendu que ce mode de réalisation dans le cadre du langage javascript est présenté à titre d'exemple et qu'il n'est nullement limitatif de la technique en elle-même, qui peut d'une manière générale être mise en oeuvre dans tout langage scripté ou 10 interprétable, tels PHP, ou encore du bytecode (java ou autre).It is understood that this embodiment in the context of the javascript language is presented by way of example and that it is in no way limiting of the technique in itself, which can generally be implemented. in any scripted or interpretable language, such as PHP, or even bytecode (java or other).

D'une manière générale, selon l'invention, le code scripté est découpé/modifié/structuré, en une ou plusieurs passes, par l'unité de compilation du module logiciel.In general, according to the invention, the scripted code is cut / modified / structured, in one or more passes, by the compilation unit of the software module.

Une fois structuré en portions de code projetable, l'unité d'allocation du module logiciel décide, à la volée, de l'exécution de portions de code à l'aide d'autres ressources disponibles.Once structured in portions of projectable code, the allocation unit of the software module decides, on the fly, of the execution of portions of code using other available resources.

Ainsi, préalablement, on considère 15 que le module logiciel est à même d'obtenir ou de détecter une ou plusieurs ressources disponibles, localement ou à distance.Thus, beforehand, it is considered that the software module is able to obtain or detect one or more available resources, locally or remotely.

La manière dont cette détection est effectuée ne fait pas partie de l'objet de l'invention.The way in which this detection is carried out does not form part of the object of the invention.

La seule caractéristique importante étant qu'un serveur (par exemple la ressource locale) a connaissance des ressources disponibles.The only important characteristic being that a server (eg the local resource) has knowledge of the available resources.

Sur la base du code découpé en portions projetables et de la pluralité de ressources 20 disponibles, le module logiciel : identifie au moins une ressource d'exécution de destination ; définit localement une structure d'échange de données, cette structure d'échange comprenant au moins une liste de pointage et une liste d'objets ; sérialise la structure d'échange ; 25 transmet la structure d'échange sérialisée à la ressource d'exécution de destination. - traite les résultats reçus de la part de la ressource d'exécution de destination, ces résultats étant compris dans structure d'échange de données initiale, retransmise par la ressource d'exécution de destination, et une structure de différences, listant les modifications effectuées.On the basis of the code divided into projectable portions and of the plurality of available resources, the software module: identifies at least one destination execution resource; locally defines a data exchange structure, this exchange structure comprising at least a pointing list and a list of objects; serializes the exchange structure; 25 transmits the serialized exchange structure to the destination execution resource. - processes the results received from the destination execution resource, these results being included in the initial data exchange structure, retransmitted by the destination execution resource, and a differences structure, listing the modifications made .

30 On note que les opérations précédemment définies, notamment l'opération d'identification de la ressource de destination peut être réalisée en amont, tout comme la définition de la structure de données d'échange.It is noted that the operations defined above, in particular the operation of identifying the destination resource can be carried out upstream, just like the definition of the exchange data structure.

14 En d'autres termes, la technique ci-dessus consiste en une modification de la sérialisation, laquelle ne consiste plus à transmettre les objets sérialisés tels quels, mais bien à transmettre une structure de données différente, issues des objets à transmettre, cette structure de données est construite par la ressource appelante, sur la base des objets (et fonctions) à projeter, puis est elle- 5 même transmise à la ressource d'exécution de destination.14 In other words, the above technique consists of a modification of the serialization, which no longer consists of transmitting the serialized objects as they are, but rather of transmitting a different data structure, resulting from the objects to be transmitted, this structure data is constructed by the calling resource, on the basis of the objects (and functions) to be projected, and then is itself transmitted to the destination execution resource.

La ressource d'exécution de destination créée l'ensemble des objets sur la base de cette structure de données projetée et met à jour cette structure projetée (lorsque les fonctions ou objets modifient des valeurs attachées) et créée une structure de données complémentaire de différence, qui dresse le bilan des données modifiées au cours de l'exécution des fonctions.The destination execution resource creates all the objects on the basis of this projected data structure and updates this projected structure (when the functions or objects modify attached values) and creates a complementary difference data structure, which takes stock of the data modified during the execution of the functions.

Lorsque les traitements sont terminés, ces deux structures de 10 données (la structure d'origine et la structure des différences), sont retournées à la ressource appelante, qui sur la base des modifications réalisées, effectue les mises à jour des objets (et le leurs données) pour refléter l'exécution qui a eu lieu au sein de la ressource d'exécution de destination (lorsque certaines propriétés sont à respectées et sont respectées bien sûr, par exemple les propriété ACID, telles que décrites ci-dessous).When the processing operations are finished, these two data structures (the original structure and the difference structure) are returned to the calling resource, which, on the basis of the modifications made, performs the updates of the objects (and the their data) to reflect the execution that took place within the destination execution resource (when certain properties are to be respected and are of course respected, for example the ACID properties, as described below).

15 La structure de données est construite par exemple par sérialisation.The data structure is constructed, for example, by serialization.

La sérialisation permet de construire une structure de donnée indépendante machine transférable sur un protocole réseau et après la réception, réaliser une instanciation afin de reconstruire la structure de donnée d'origine Selon la présente technique, les traitements de décomposition, identification, création, projection et traitement des résultats sont mis en oeuvre de manière itérative et/ou récursive tout 20 au long de l'exécution de l'application. 5.2.Serialization makes it possible to build a machine-independent data structure transferable over a network protocol and after reception, to perform an instantiation in order to reconstruct the original data structure According to the present technique, the processing of decomposition, identification, creation, projection and The processing of the results is carried out iteratively and / or recursively throughout the execution of the application. 5.2.

Description d'un mode de réalisation Dans ce mode de réalisation, on décrit l'implémentation des principes techniques précédemment décrit au langage javascript.Description of an Embodiment In this embodiment, the implementation of the technical principles previously described in javascript language is described.

Plus particulièrement, on décrit la manière dont on gère, pour le langage Javascript, les contextes d'exécution, la gestion de la portée, et la 25 conservation des propriétés ACID du code exécuté. 5.2.1.More particularly, we describe the way in which one manages, for the JavaScript language, the execution contexts, the management of the scope, and the conservation of the ACID properties of the executed code. 5.2.1.

Support d'exécution dans des flots différents Les moteurs Javascript permettent la création de flot d'exécution isolés via des interfaces disponibles dans les navigateurs (par exemple les webworkers) ou dans Node.js (webworkers, child.spawn/fork).Execution support in different streams Javascript engines allow the creation of isolated execution streams via interfaces available in browsers (for example webworkers) or in Node.js (webworkers, child.spawn / fork).

La méthode décrite ici permet de réaliser un appel de fonction depuis un flot 30 d'exécution A dans un second flot d'exécution B qu'il soit local (sur le même ordinateur) ou distant (sur un autre ordinateur) tout en conservant un contexte d'exécution unifié.The method described here makes it possible to perform a function call from an execution stream A in a second execution stream B, whether local (on the same computer) or remote (on another computer) while maintaining a unified execution context.

La méthode permet 15 de fournir des fonctionnalités d'exécution déportée unifiée et ouvre le champ d'application de l'exécution distante à toute fonction et sans limitation. 5.2.1.1.The method makes it possible to provide unified remote execution functionalities and opens the field of application of the remote execution to any function and without limitation. 5.2.1.1.

Correspondance des systèmes objets A la base, pour permettre une exécution unifiée, il est nécessaire de disposer d'une solution 5 de suivi des modifications réalisées sur les objets par la fonction appelée et maintenir les systèmes objets du flot A et du flot B en correspondance.Correspondence of the object systems Basically, to allow a unified execution, it is necessary to have a solution 5 for monitoring the modifications carried out on the objects by the called function and to maintain the object systems of stream A and of stream B in correspondence. .

Lorsqu'un flot Javascript A créé un flot B, les flots d'exécution sont isolés dans le sens ou, aucune propriété ou objets de A ne sont accessibles par B.When a JavaScript flow A creates a flow B, the execution flows are isolated in the sense or, no property or objects of A are accessible by B.

Le seul moyen pour A de communiquer des propriétés ou des objets à B est d'utiliser un moyen de communication entre A et B (IPC).The only way for A to communicate properties or objects to B is to use a means of communication between A and B (IPC).

Les 10 données transmises par A sont ainsi recopiées dans l'espace de B.The 10 data transmitted by A are thus copied into the space of B.

B peut les utiliser comme bon lui semble car il n'y a pas de lien entre les données de A et les données de B.B can use them as he sees fit because there is no connection between the data of A and the data of B.

Réciproquement B peut utiliser un IPC pour communiquer à A des propriétés ou objets.Conversely B can use an IPC to communicate properties or objects to A.

Afin de transmettre des objets, on effectue une sérialisation de ceux-ci, puis une fois reçus par le flot d'exécution destinataire, on en effectue une instanciation dans ce flot destinataire.In order to transmit objects, they are serialized, then once received by the recipient execution stream, they are instantiated in this recipient stream.

Sur 15 la figure 2, un flot A veut communiquer au flot B l'objet Oa, contenant les propriétés pl (numérique 12) et p2 (une référence sur un objet Xa).In Figure 2, stream A wants to communicate to stream B the object Oa, containing the properties p1 (numeric 12) and p2 (a reference to an object Xa).

Xa contenant une propriété pl (numérique 13).Xa containing a pl property (numeric 13).

La sérialisation (Sr) de l'objet Oa est effectuée, ainsi que celle de Xa (par exemple en utilisant l'appel JSON.stringify(Oa)).Serialization (Sr) of object Oa is performed, as well as that of Xa (e.g. using the JSON.stringify (Oa) call).

Une fois reçu, les objets sont instanciés (lnst) en Ob et Xb (par exemple en utilisant l'appel eval ou JSON.parse).Once received, the objects are instantiated (lnst) in Ob and Xb (eg using the eval or JSON.parse call).

20 Il est intéressant de noter que cette façon de faire qui est utilisable en Javascript permet d'échanger des objets, mais elle a le désavantage majeur et limitatif de perdre la correspondance des objets entre les flots A et B.20 It is interesting to note that this way of doing things, which can be used in Javascript, makes it possible to exchange objects, but it has the major and limiting disadvantage of losing the correspondence of the objects between the streams A and B.

Par exemple, le flot B ne sait pas (n'a aucune connaissance du fait) que Ob correspond à Oa, et que Xb correspond à Xa.For example, stream B does not know (has no knowledge of the fact) that Ob corresponds to Oa, and that Xb corresponds to Xa.

La technique mise en oeuvre par les inventeurs créée l'illusion que la fonction qui s'est 25 exécutée dans le flot B s'est exécuté dans le flot A.The technique implemented by the inventors creates the illusion that the function which performed in stream B performed in stream A.

Aussi il est possible de maintenir une équivalence des objets pour pouvoir mettre à jour les modifications des objets au sein des vrais objets du flot A.Also it is possible to maintain an equivalence of the objects in order to be able to update the modifications of the objects within the real objects of stream A.

Pour ce faire les inventeurs ont défini une solution qui étend la sérialisation et l'instanciation afin de préserver ces liens.To do this, the inventors have defined a solution which extends serialization and instantiation in order to preserve these links.

Cette solution comprend plusieurs étapes, illustrées en relation avec la figure 3.This solution comprises several steps, illustrated in relation to FIG. 3.

Les éléments textuels de la figure 3 ne constituent pas un texte, mais du code, et ne nécessitent 30 donc pas de traduction.The textual elements of Figure 3 do not constitute text, but code, and therefore do not require translation.

En figure 3, on présente (à gauche l'état des objets dans le flot d'exécution A.In figure 3, we present (on the left the state of the objects in the execution flow A.

L'étape 0 (S0) consiste en une extension de la sérialisation : 16 Pour chaque objet, un indice (0a-> 0 et Xa->1) est attribué ; Un tableau refA enregistre (sauvegarde) la référence de l'objet (refStep 0 (S0) consists of an extension of the serialization: 16 For each object, an index (0a-> 0 and Xa-> 1) is assigned; A refA array records (saves) the object reference (ref

[0] = refOa et ref[0] = refOa and ref

[1] = refXa) Un autre tableau heapA enregistre (sauvegarde) le contenu de chaque objet, et si 5 c'est un autre objet l'indice de cet objet (heapA[1] = refXa) Another heapA array records (saves) the content of each object, and if 5 it's another object the index of that object (heapA

[0]={p1:{type:"number", value:12}, p2:{type:"object", index:1}} et heapA[0] = {p1: {type: "number", value: 12}, p2: {type: "object", index: 1}} and heapA

[1] = {pl:{type:"number", value:13}} Ainsi refA [1] = {pl: {type: "number", value: 13}} So refA

[0] et heap' [0] and heap '

[0] sont associés à Oa et refA [0] are associated with Oa and refA

[1] et heap' [1] and heap '

[1] sont associés à Xa.[1] are associated with Xa.

Lors de la communication (sérialisation) effectuée entre A et B, seul heapA est transmis.During the communication (serialization) carried out between A and B, only heapA is transmitted.

Sur la figure, le tableau heap n'est représenté qu'une seule fois pour plus de clarté dans la 10 présentation.In the figure, the heap table is shown only once for clarity in the presentation.

L'étape 1 (Si) correspond à l'étape d'instanciation des objets au sein du flot B.Step 1 (Si) corresponds to the step of instantiating objects within stream B.

Sur B: refB est mis à vide (refB=[]), puis le heapA reçu (qui devient donc heapB du point de vue du flot B) est parcouru pour tous les éléments.On B: refB is empty (refB = []), then the received heapA (which therefore becomes heapB from the point of view of flow B) is scanned for all the elements.

Pour chaque élément un nouvel objet est instancié et la référence est stocké dans l'index correspondant dans ret.For each element a new object is instantiated and the reference is stored in the corresponding index in ret.

15 Ainsi, après instanciation, le contenu du tableau refB du flot B permet de faire une correspondance avec le contenu de refA du flot A (on sait par exemple que refBThus, after instantiation, the content of table refB of stream B makes it possible to make a correspondence with the content of refA of stream A (we know for example that refB

[1] sur B désigne refA[1] on B denotes refA

[1] sur A).[1] on A).

A ce stade, le flot B est en mesure d'exécuter une ou plusieurs fonctions présentes au sein des objets Ob ou Xb.At this stage, the stream B is able to execute one or more functions present within the objects Ob or Xb.

Ces fonctions, pour l'exemple décrit ici lisent et/ou modifient les nouveaux 20 objets (Ob, Xb) et paramètres instanciés.These functions, for the example described here, read and / or modify the new 20 objects (Ob, Xb) and instantiated parameters.

Par exemple, le flot B change Ob.pl de la valeur 12 à la valeur 24 et associe à Ob.p2 un nouvel objet Yb.For example, the flow B changes Ob.pl from the value 12 to the value 24 and associates with Ob.p2 a new object Yb.

Par ailleurs Xb.pl est modifié de la valeur 13 à la valeur 243.In addition Xb.pl is modified from the value 13 to the value 243.

Pour ce faire, le flot B utilise le heap reçu de la part de A.To do this, stream B uses the heap received from A.

Soit A a supprimé le heap de son côté, soit A a conservé le heap de son côté, en fonctions des conditions de mise en oeuvre opérationnelles.Either A has deleted the heap on his side, or A has kept the heap on his side, depending on the operational conditions of implementation.

25 L'étape 2 (S2) réalise un calcul des différences (suite à l'exécution des fonctions) : Une fois la ou les fonctions exécutées, il est possible de parcourir le tableau refA et de vérifier grâce à la heapB si une propriété d'un l'objet (Ob, Xb) a changé ou pas.25 Step 2 (S2) calculates the differences (following the execution of the functions): Once the function (s) have been executed, it is possible to browse the array refA and to check using the heapB if a property d 'an object (Ob, Xb) has changed or not.

Lors de ce parcours on crée ainsi un tableau diffa qui contiend la liste des différences.During this journey we thus create a diffa table which contains the list of differences.

Dans le cas d'un changement vers un nouvel objet, un nouvel indice est créé dans heapa afin de matérialiser 30 le nouvel objet.In the event of a change to a new object, a new index is created in heapa in order to materialize the new object.

Le tableau diffa contient ainsi pour l'objet 0 la nouvelle valeur pour pl (c'est-à-dire 24) et le nouvel index (2) de l'objet créé dans heapB pour p2 (refYb).The diffa array thus contains for object 0 the new value for pl (ie 24) and the new index (2) of the object created in heapB for p2 (refYb).

Il contiendra aussi la nouvelle valeur de la propriété pl de Xb (à savoir 243).It will also contain the new value of the pl property of Xb (ie 243).

17 A supposer que Ob contienne une autre propriété (p3) et que sa valeur est inchangée, elle ne sera pas décrite dans le tableau diffa.17 Assuming that Ob contains another property (p3) and its value is unchanged, it will not be described in the diffa array.

Le tableau diffa ne contient que les modifications sur les objets (ajout d'objet, modification d'objet (modification d'une propriété, suppression ou ajout d'une propriété).The diffa array only contains the modifications on the objects (addition of an object, modification of an object (modification of a property, deletion or addition of a property).

5 Une fois le calcul des différences et la mise à jour de heapB réalisée, diffa et heaps sont transmis au flot A (c'est-à-dire qu'il est sérialisé et transmis au flot appelant A).5 After calculating the differences and updating heapB, diffa and heaps are transmitted to stream A (that is, it is serialized and transmitted to calling stream A).

On peut également ne transmettre diffa que et se contenter de conserver heapa sur la ressource appelante (c'est-à-dire qu'on ne retransmet pas heapB en même temps que diffB à la fin de l'exécution sur le flot B, on ne retransmet que diff. : cela allège les transmissions, mais cela 10 met une pression mémoire plus importante sur la ressource appelante).We can also only transmit diffa and be content to keep heapa on the calling resource (i.e. we do not retransmit heapB at the same time as diffB at the end of the execution on stream B, we only retransmits diff .: this alleviates the transmissions, but this puts more memory pressure on the calling resource).

L'étape 3 (S3) instanciation des nouveaux objets sur A : Lors de la réception de diffB, A (Etape 3) instancie tous les nouveaux objets insérés dans heap,,, et ajoute les références dans le tableau refA.Step 3 (S3) instantiation of new objects on A: When receiving diffB, A (Step 3) instantiates all new objects inserted in heap ,,, and adds the references in the refA array.

Les propriété ACID des objets peuvent être vérifiées à l'issue de cette instanciation (voir ci- 15 après); L'étape 4 (non représentée) mise à jour des objets sur A : Dernière étape à l'aide du tableau diff, A met à jour le contenu des objets de A.The ACID properties of the objects can be verified at the end of this instantiation (see below); Step 4 (not shown) update the objects on A: Last step using the diff array, A updates the content of the objects in A.

Comme indiqué sur le schéma, l'ensemble des objets ont été reconstruits entre A et B et les modifications ont été reportées dans l'espace objet de A.As shown in the diagram, all the objects have been reconstructed between A and B and the modifications have been carried over to the model space of A.

20 Notons que les étapes 0, 1, 2, 3 et 4 s'exécute respectivement au sein des flots A, B, B, A, et A et que pendant ces étapes rien d'autre ne peut s'exécuter au sein de ces flots.20 Note that steps 0, 1, 2, 3 and 4 are executed respectively within streams A, B, B, A, and A and that during these steps nothing else can be executed within these waves.

Notons également que si l'objet Xa est accédé par un autre objet autre que Oa, la nouvelle valeur de Xa a été propagée.Note also that if the object Xa is accessed by another object other than Oa, the new value of Xa has been propagated.

Si Xa n'était que référencé par Oa, alors suite à la mise à jour il sera collecté par le ramasse miette de la machine virtuelle. 25 5.2.1.2.If Xa was only referenced by Oa, then after the update it will be collected by the virtual machine garbage collector. 25 5.2.1.2.

Appels effectifs des fonctions Grâce au procédé décrit ci-avant, les inventeurs ont le moyen de maintenir les équivalences des systèmes objets entre deux flots, ce qui n'était pas possible précédemment.Effective Calls of Functions Thanks to the method described above, the inventors have the means of maintaining the equivalences of the object systems between two streams, which was not possible previously.

Afin de réaliser l'appel de fonction, l'ensemble des paramètres d'entrée de la fonction est sérialisé.In order to perform the function call, all the input parameters of the function are serialized.

Puis une fois exécutée, des paramètres de sortie sont ajoutés dans la sérialisation, selon 30 le même mécanisme.Then once executed, output parameters are added in the serialization, according to the same mechanism.

Il est ainsi possible d'appeler une fonction tout en maintenant les objets liés aux paramètres d'entrée et de sortie. 18 5.2.1.3.It is thus possible to call a function while maintaining the objects linked to the input and output parameters. 18 5.2.1.3.

Gestion des scopes En dehors des paramètres, une fonction peut avoir besoin d'accéder à des propriétés/objets accessibles dans son scope (dans sa portée), c'est-à-dire des propriétés/objets, qui bien que n'étant pas définis au sein d'un objet à transmettre à la ressource d'exécution de 5 destination, sont tout de même accessibles dans le code scripté initial.Scope management Apart from the parameters, a function may need to access properties / objects accessible in its scope (in its scope), that is to say properties / objects, which although not being defined within an object to be transmitted to the destination execution resource, are all the same accessible in the initial scripted code.

C'est par exemple le cas de variables globales, de variables ou de propriétés d'un niveau précédent ou encore d'objets parents (lors d'héritage d'objets par exemple).This is for example the case with global variables, variables or properties of a previous level or even parent objects (when inheriting objects for example).

Ainsi, un problème à résoudre pour pouvoir effectuer un transfert vers un autre flot est également de pouvoir effectuer un transfert de contexte d'exécution, le contexte comprenant l'ensemble des propriétés/objets auxquels la fonction a accès 10 durant son exécution.Thus, a problem to be solved in order to be able to perform a transfer to another stream is also to be able to perform an execution context transfer, the context comprising all the properties / objects to which the function has access during its execution.

La détermination de ce contexte est effectuée en amont, c'est-à-dire avant le transfert vers la ressource d'exécution de destination, normalement par l'unité fonctionnelle de compilation.The determination of this context is carried out upstream, that is to say before the transfer to the destination execution resource, normally by the compilation functional unit.

Le contexte créé fait partie des objets qui sont sérialisés et transmis par la méthode de transmission précédemment décrite.The created context is one of the objects which are serialized and transmitted by the transmission method previously described.

La figure 4 illustre la problématique des scopes (portées d'exécution).Figure 4 illustrates the problem of scopes (execution scopes).

On comprend que si l'on souhaite transmettre, à une ressource d'exécution de 15 destination, l'exécution de f2 et de f3, la transmission correcte du contexte d'exécution est essentielle.It is understood that if it is desired to transmit, to a destination execution resource, the execution of f2 and f3, the correct transmission of the execution context is essential.

Notamment, par exemple, le scope de f3 est différent du scope de f2, malgré le fait que ces deux fonctions f2 et f3 définissent une variable nommée t dont le scope est limité.Notably, for example, the scope of f3 is different from the scope of f2, despite the fact that these two functions f2 and f3 define a variable named t whose scope is limited.

Il ne faut donc pas par exemple que les scopes de f2 et f3 entrent en collision.For example, the scopes of f2 and f3 must not collide.

Ainsi, afin de transmettre le contexte de l'environnement à un appel de fonction distant, 20 deux possibilités de traitement des scopes sont possibles : soit être en phase d'exécution pour pouvoir accéder à l'environnement et le transmettre directement, ou réécrire le code scripté d'une certaine manière.Thus, in order to transmit the context of the environment to a remote function call, two possibilities for processing the scopes are possible: either to be in the execution phase in order to be able to access the environment and transmit it directly, or to rewrite the code scripted in a certain way.

Une première solution consiste à simuler le contexte Javascript.A first solution consists in simulating the JavaScript context.

Dans cette première solution, afin de transmettre le contexte sans l'aide de l'interpréteur 25 (par exemple sans l'aide du moteur Javascript), il est nécessaire de créer le contexte dans le langage choisi (par exemple en Javascript).In this first solution, in order to transmit the context without the aid of the interpreter 25 (for example without the aid of the Javascript engine), it is necessary to create the context in the chosen language (for example in Javascript).

Pour cela, il est nécessaire de connaître toutes les portées de variables, de chaînes de portées et tous les accès au contexte.For this, it is necessary to know all the scopes of variables, strings of scopes and all accesses to the context.

Pour pouvoir le faire, nous devons exclure toute portée dynamique, c'est-à-dire l'utilisation de mots clés du style «with» et «eval», et donc être dans une portée purement lexicale.To be able to do this, we must exclude any dynamic scope, ie the use of keywords like “with” and “eval”, and therefore be in a purely lexical scope.

La méthode de création comprend : 30 - La construction de la chaîne de scope associée à chaque scope dans le programme ; 19 La séparation du programme en deux ensembles de scopes, l'un pour le scope des fonctions qui vont être exécutées à distance (remote) et l'autre pour le reste du programme (résident); Optionnellement, supprimer, dans les scopes résidents, toutes les liaisons de variable qui ne sont pas utilisées dans une fonction distante ; Optionnellement, fusionner certains scopes en renommant un nom de liaison ou de variable en conflit (par exemple, pour ne conserver qu'un scope unique par fonction) Transformer le programme comme suit : 10 Lorsque le scope global est créé, créer un objet vide et placer cet objet comme contexte courant dans l'objet 'global' (dans la suite, nommons le (global.currentContext) pour être accessible de tout le programme ; ; Chaque fois qu'un scope est créé, générez un objet vide, ajoutez lui une propriété symbolique 'parent' qui pointe sur le context pointé par `global.currentContext', et 15 mettez cette objet comme contexte courant dans l'objet 'global' (global.currentContext).The creation method includes: 30 - The construction of the scope chain associated with each scope in the program; 19 The separation of the program into two sets of scopes, one for the scope of functions that will be performed remotely (remote) and the other for the rest of the program (resident); Optionally, remove, in the resident scopes, all variable bindings that are not used in a remote function; Optionally, merge some scopes by renaming a conflicting link or variable name (for example, to keep only a single scope per function) Transform the program as follows: 10 When the global scope is created, create an empty object and place this object as the current context in the 'global' object (in the following, let's name it (global.currentContext) to be accessible to the whole program;; Each time a scope is created, generate an empty object, add it a 'parent' symbolic property that points to the context pointed to by `global.currentContext ', and 15 put this object as the current context in the' global 'object (global.currentContext).

Chaque fois qu'un scope est détruit, faire pointer le 'global.currentScope' sur l'objet pointé par `globa.currentScope.parent.Whenever a scope is destroyed, point the 'global.currentScope' to the object pointed to by `globa.currentScope.parent.

Ainsi, une pile dynamique de contextes dont le haut est à tout moment pointé par 'global.currentContext' est créée et mise à jour 20 durant l'exécution du programme ; A chaque fois qu'une fonction 'f' est définie : a. ajouter une propriété symbolique f.context pointant sur le contexte actuel pointé par 'global.currentContext' (f est l'objet fonction); b. ajouter dans l'objet context pointé par `global.currentContext tous les 25 paramètres de la fonction (le nom du paramètre devenant le nom d'une propriété, et sa valeur, la valeur de cette propriété); ; Remplacez tous les accès à une variable v incluse dans un scope résident dans une fonction f: a.Thus, a dynamic stack of contexts whose top is pointed at any time by 'global.currentContext' is created and updated during the execution of the program; Whenever a function 'f' is defined: a. add a symbolic property f.context pointing to the current context pointed to by 'global.currentContext' (f is the function object); b. add in the context object pointed to by `global.currentContext all the 25 parameters of the function (the name of the parameter becoming the name of a property, and its value, the value of this property); ; Replace all access to a variable v included in a resident scope in a function f: a.

Si l'étape 4 (optimisation optionnelle) est appliquée, recherchez le nom de la 30 liaison correspondant à la variable v (appelons la w) ; b.If step 4 (optional optimization) is applied, find the name of the link corresponding to the variable v (call it w); b.

Si l'étape 4 n'est pas appliquée, w = ; c.If step 4 is not applied, w =; vs.

Remplacer l'accès à la variable v par un accès à f.context.w.Replace access to variable v by access to f.context.w.

20 En utilisant cette première solution, consistant à réécrire le code et définir un contexte de transmission qui est associés aux différents scopes, transmettre et exécuter une fonction auprès d'une ressource d'exécution de destination est aisé : il suffit de transmettre l'objet fonction, qui contient tout le contexte d'exécution de cette fonction par l'intermédiaire de sa propriété symbolic 5 'context'.By using this first solution, consisting in rewriting the code and defining a transmission context which are associated with the different scopes, transmitting and executing a function to a destination execution resource is easy: it suffices to transmit the object function, which contains all the execution context of this function through its symbolic 5 'context' property.

Une deuxième solution consiste à capturer le contexte et à le falsifier.A second solution is to capture the context and falsify it.

Pour pouvoir mettre en oeuvre cette solution, nous devons exclure toute portée dynamique, c'est-à-dire l'utilisation de mots clés «with» et «eval», et donc être dans une portée purement lexicale. 10 1.To be able to implement this solution, we must exclude any dynamic scope, ie the use of keywords “with” and “eval”, and therefore be in a purely lexical scope. 10 1.

Construire la chaîne de scope associée à chaque scope dans le programme.Build the scope chain associated with each scope in the program.

Marquez la liaison avec un attribut constant pour les variables déclarées avec const et marquez la liaison avec un attribut tdz (zone morte temporelle) pour les variables déclarées avec const ou let et qui peuvent se retrouver dans une zone morte temporelle.Mark the binding with a constant attribute for variables declared with const and mark the binding with a tdz attribute (temporal dead zone) for variables declared with const or let and which may end up in a temporal dead zone.

Pour ces derniers, nous pouvons également fixer le moment exact où la liaison n'est sûrement pas dans la zone 15 morte temporelle, mais nous décrirons cela plus tard comme une optimisation. 2.For the latter, we can also fix the exact moment when the link is surely not in the temporal dead zone, but we will describe this later as an optimization. 2.

Pour chaque fonction, diviser le programme en deux ensembles de scopes, un pour le scope des fonctions que vous voulez exécuter à distance (distant) et un pour le reste du programme (résident). 3.For each function, divide the program into two sets of scopes, one for the scope of the functions you want to perform remotely (remote) and one for the rest of the program (resident). 3.

De manière optimisée et optionnelle, parcourir le code de la fonction que nous voulons 20 exécuter à distance pour marquer chaque liaison dont la fonction a besoin dans le scope résident. 4.Optimized and optionally, iterate through the code of the function we want to execute remotely to mark each binding that the function needs in the resident scope. 4.

Pour chaque fonction que nous voulons exécuter à distance : a.For each function we want to perform remotely: a.

Ajouter une fonction qui capture le contexte dans un objet de contexte avec les variables provenant d'une liaison marquée à l'étape 3 (ou toutes les variables du 25 scope résident si pas d'étape 3). i.Add a function that captures the context in a context object with the variables coming from a link marked in step 3 (or all the variables of the resident scope if not in step 3). i.

Construire un objet contextuel, avec (I) un identifiant définissant la configuration de la variable Temporal Dead Zone, (Il) une liste de noms de variables dans la Temporal Dead Zone, (III) deux objets vides, un pour contenir les variables non mutables (const), et un autre pour les variables 30 mutables (var, let, function et class). ii.Build a contextual object, with (I) an identifier defining the configuration of the Temporal Dead Zone variable, (II) a list of variable names in the Temporal Dead Zone, (III) two empty objects, one to contain the non-mutable variables (const), and another for mutable variables (var, let, function and class). ii.

Placez une propriété par variable, le nom de la propriété est le nom de la variable et l'emplacement de la propriété dépend du type de la variable (un 21 des deux objets définit en i.II : mutable ou non mutable).Place one property by variable, the property name is the name of the variable and the location of the property depends on the type of the variable (one of the two objects defined as i.II: mutable or non-mutable).

La valeur de la propriété est la valeur de la variable. iii.The value of the property is the value of the variable. iii.

Afin de gérer la zone morte temporelle, nous devons « try/catch » chaque accès aux variables potentiellement dans la Temporal Dead Zone au cas où 5 ces variables seraient réellement dans la Temporal Dead Zone.In order to manage the temporal dead zone, we must "try / catch" each access to the variables potentially in the Temporal Dead Zone in case 5 these variables are really in the Temporal Dead Zone.

Dans ce cas, nous devons simplement insérer le nom de la variable dans le tableau de la Temporal Dead Zone (i.l).In this case, we just need to insert the name of the variable into the Temporal Dead Zone (i.l) array.

Nous devons également calculer un identifiant qui identifie la configuration des variables de la Temporal Dead Zone en définissant un bit dans l'identifiant représentant cette variable. 10 b.We also need to calculate an identifier that identifies the configuration of the Temporal Dead Zone variables by setting a bit in the identifier representing that variable. 10 b.

Ajouter une fonction qui met à jour le contexte à partir de l'objet « context » en écrivant les variables provenant d'une liaison marquée à l'étape 3 (ou toutes les variables du scope résident si pas d'étape 3) .Add a function which updates the context from the “context” object by writing the variables coming from a link marked in step 3 (or all the variables of the resident scope if not in step 3).

Dans le cas d'une variable potentiellement dans la Temporal Dead Zone, nous devons tester si elle était effectivement dans Temporal Dead Zone de l'objet contexte, en testant le bit id, et 15 dans le cas contraire, mettre à jour le contexte avec la valeur provenant de l'objet contexte. c.In the case of a variable potentially in the Temporal Dead Zone, we need to test if it was indeed in the Temporal Dead Zone of the context object, by testing the id bit, and 15 if not, update the context with the value from the context object. vs.

Lier ces deux nouvelles fonctions dans l'objet fonction en utilisant des propriétés nommées avec soin (comme "captureContext" et "updateContext") ou en utilisant un symbole. 20 d.Link these two new functions in the function object using carefully named properties (like "captureContext" and "updateContext") or by using a symbol. 20 d.

On peut imaginer l'ajout d'une troisième fonction utilisant les deux premières fonctions, qui réalise l'appel distant avec un mécanisme spécifique (capture de contexte, appel distant avec ce contexte, mise à jour du contexte). 5.One can imagine the addition of a third function using the first two functions, which performs the remote call with a specific mechanism (context capture, remote call with this context, context update). 5.

Remplacer la fonction dans la partie distante par une fonction qui : a.Replace the function in the remote part with a function that: a.

Prend un objet de contexte comme argument. 25 b.Takes a context object as an argument. 25 b.

Créé toutes les variables nécessaires avec leur valeur initiale contenue dans l'objet context.Create all the necessary variables with their initial value contained in the context object.

Si la variable est dans l'ensemble non mutable, utiliser const pour la déclarer.If the variable is overall non-mutable, use const to declare it.

Si la variable est dans le mutable (read/write), utilisez let. c.If the variable is in the mutable (read / write), use let. vs.

Exécute (ou appelle) le code original dans un bloc try. d.Execute (or call) the original code in a try block. d.

Créée toutes les variables nécessaires dans la Temporal Dead Zone avec le let. 30 e.Create all the necessary variables in the Temporal Dead Zone with the let. 30 th.

Met à jour l'objet context avec la valeur provenant du contexte dans le bloc finally correspondant au bloc try.Updates the context object with the value from the context in the finally block corresponding to the try block.

Ignorer simplement la variable dans la zone morte temporelle ou dans la section r (read).Simply ignore the variable in the temporal dead zone or in the r (read) section.

22 Un certain nombre d'alternatives peuvent être imaginées à l'aide de fonctions utilitaires, Ici aussi, la transformation doit ëtre prudente vis-à-vis des conflits de noms avec ses propres variables, mais la transformation a la connaissance de tous les scopes, et peut donc facilement éviter les conflits.22 A number of alternatives can be imagined using utility functions. Again, the transformation must be careful about name conflicts with its own variables, but the transformation has knowledge of all scopes , and therefore can easily avoid conflicts.

5 Pour projeter l'exécution d'une fonction avec cette alternative, le programme devra obtenir l'objet context de la fonction à projeter en appelant la fonction pointée par la propriété captureUpdate de cette même fonction.5 To project the execution of a function with this alternative, the program must obtain the context object of the function to be projected by calling the function pointed to by the captureUpdate property of this same function.

Il devra alors sérialiser ce object context avec le même mécanisme que précédemment décrit.It will then have to serialize this object context with the same mechanism as previously described.

Au retour de l'exécution de cette fonction, le programme devra mettre à jour le context grâce à l'objet context provenant de la désérialisation qu'il passera 10 à la fonction pointée par la propriété updateContext de cette même fonction. 5.2.1.4.On returning from the execution of this function, the program will have to update the context thanks to the context object coming from the deserialization that it will pass 10 to the function pointed to by the updateContext property of this same function. 5.2.1.4.

Cohérence des objets, exécution ACID d'une fonction, exécution ordonnée Dans le cas précédemment décrit, une fonction exécutée dans un autre flot d'exécution (sur une ressource d'exécution de destination) modifie les objets passés en paramètres.Consistency of objects, ACID execution of a function, ordered execution In the case previously described, a function executed in another execution flow (on a destination execution resource) modifies the objects passed as parameters.

Compte 15 tenu du fait que cette fonction peut s'exécuter de façon asynchrone et parallèle, le flot d'exécution A (ressource appelante) ou un autre flot d'exécution (autre ressource d'exécution de destination) peut pendant ce temps modifier les mëmes objets.Bearing in mind the fact that this function can be executed asynchronously and in parallel, the execution flow A (calling resource) or another execution flow (other destination execution resource) can during this time modify the parameters. same objects.

Ceci n'est pas possible dans un système javascript standard dans lequel toutes les fondions s'exécutent dans le même flot.This is not possible in a standard javascript system where all the foundations run in the same stream.

Afin de maintenir la cohérence des objets, par défaut les fonctions doivent préserver les propriétés ACID 20 (Atomicité, Cohérence, Isolation et Durabilité).In order to maintain the consistency of the objects, by default the functions must preserve the ACID 20 properties (Atomicity, Consistency, Isolation and Durability).

Les inventeurs ont donc développé une technique de conservation de ces propriétés ACID.The inventors have therefore developed a technique for preserving these ACID properties.

Ainsi, afin d'exécuter une propriété ACID de la fonction une validation différentielle est effectuée, qui consiste notamment à vérifier que : les paramètres d'entrée de la fonction et les objets liés n'ont pas étés modifiés (sur A) depuis le début d'exécution de la fonction ; 25 - les variables scopées et les objets liés sont inchangés (sur A).Thus, in order to execute an ACID property of the function, a differential validation is performed, which consists in particular of checking that: the input parameters of the function and the linked objects have not been modified (on A) from the start execution of the function; 25 - scoped variables and linked objects are unchanged (on A).

Pour ce faire on réutilise l'étape 2 (S2) décrite précédemment, mais appliquée sur le flot A.To do this, we reuse step 2 (S2) described previously, but applied to stream A.

Si le tableau diffa est vide, alors aucune modification n'a été apportée pendant l'exécution de la fonction on procède au commit (la validation) de la fonction et on met à jour le système objet du flot A (étapes 3 (S3) et 4).If the diffa array is empty, then no modification has been made during the execution of the function, we commit (the validation) of the function and we update the object system of stream A (steps 3 (S3) and 4).

Si le tableau diffa n'est pas vide alors on invalide la fonction exécutée par 30 la ressource d'exécution de destination : on ne propage pas les mises à jour des paramètres et objets et on exécute la fonction à nouveau.If the diffa array is not empty then the function executed by the destination execution resource is invalidated: the updates of the parameters and objects are not propagated and the function is executed again.

23 Grâce à cette validation différentielle, il est possible d'exécuter de façon asynchrone et parallèle, une fonction, dans un autre flot, tout en maintenant son exécution cohérente dans l'application initiale.23 Thanks to this differential validation, it is possible to asynchronously and parallel execute a function in another stream, while maintaining its consistent execution in the initial application.

Par ailleurs notons que le fait d'exécuter à nouveaux la fonction de façon asynchrone ne pose pas de problème car la fonction à exécuter est elle-même asynchrone.Furthermore, let us note that the fact of executing the function asynchronously again does not pose a problem because the function to be executed is itself asynchronous.

5 Une autre propriété à respecter est la relation d'ordre d'exécution asynchrone qui est définie par setimmediate uniquement.5 Another property to observe is the asynchronous execution order relationship which is defined by setimmediate only.

Par exemple la séquence suivante : setImmediate ( fl) setImmediate (f2) , setImmediate (f3) Présuppose que fl sera exécutée avant f2, et que f2 sera exécutée avant f3.For example the following sequence: setImmediate (fl) setImmediate (f2), setImmediate (f3) Assumes that fl will be executed before f2, and that f2 will be executed before f3.

Aussi, dans le 10 cas d'une exécution déportée, comme décrite précédemment, si f2 ou f3 se termine avant fl, il est nécessaire d'attendre la validation (le commit) de f1 avant de faire le commit de f2, puis de f3.Also, in the case of a remote execution, as described previously, if f2 or f3 ends before fl, it is necessary to wait for the validation (the commit) of f1 before making the commit of f2, then of f3 .

Auquel cas, la méthode permet d'identifier ces cas de figure en réalisant une passe spécifique à ces aspects lors de la décomposition du code source scripté.In this case, the method makes it possible to identify these scenarios by carrying out a specific pass to these aspects during the decomposition of the scripted source code.

Par ailleurs, lors de l'exécution, on effectue un séquencement des validations (commits) dans l'ordre d'activation et/ou on invalide/Iéexécute si 15 besoin les fonctions invalidées.Furthermore, during execution, a sequencing of the validations (commits) is carried out in the order of activation and / or the invalidated functions are invalidated / executed if necessary.

Ci-dessous un exemple simple montrant l'utilisation de cette relation d'ordre.Below is a simple example showing the use of this order relation.

La relation d'ordre est nécessaire afin d'obtenir le bon résultat induit par la causalité des variables du code. let result = 0; function £(index) { 20 result += (result * index) + (index * index); setImmediate (f , 1) , setImmediate (f, 2) .The order relation is necessary in order to obtain the good result induced by the causality of the variables of the code. let result = 0; function £ (index) {20 result + = (result * index) + (index * index); setImmediate (f, 1), setImmediate (f, 2).

Dans cet exemple si l'ordre est respecté le résultat vaut 7 ; si l'ordre n'est pas respecté il vaut 9.In this example if the order is respected the result is 7; if the order is not respected it is worth 9.

25 Dans le cas de cet exemple, d'une part le compilateur (l'unité de compilation) peut éviter de dissocier l'exécution de ces fonction et d'autre part l'unité d'allocation, si elle agit indépendamment de l'unité de compilation peut décider de ne pas transporter l'exécution de ces fonctions dans une ressource d'exécution de destination.In the case of this example, on the one hand the compiler (the compilation unit) can avoid dissociating the execution of these functions and on the other hand the allocation unit, if it acts independently of the compilation unit may decide not to transport the execution of these functions to a destination execution resource.

En fonction des modes de réalisation, pour les développeurs, il est possible de fournir une 30 solution de traitement des décompositions qui soient personnalisables, par exemple par l'intermédiaire d'une interface de programmation (API) spécifique.Depending on the embodiments, for developers it is possible to provide a solution for processing the decompositions which is customizable, for example via a specific programming interface (API).

24 D'un point de vue développeur, il est possible d'offrir le moyen d'exécuter une fonction de façon asynchrone avec ou sans garantie ACID, avec ou sans garantie d'ordre.24 From a developer point of view, it is possible to offer the means to execute a function asynchronously with or without ACID guarantee, with or without order guarantee.

Cette dernière appelant un handler de fin.The latter calling an end handler.

Il est également possible de fournir le même support en créant une promesses qui 5 permettra de réaliser un point de synchronisation simple dans le code (f(params).then()), ou l'utilisation de await dans des fonctions async de plus haut niveau. 5.3.It is also possible to provide the same support by creating a promise that will perform a simple synchronization point in the code (f (params) .then ()), or the use of await in async functions from above level. 5.3.

Autres caractéristiques et avantages Afin qu'elle soit efficace, la technique précédemment décrite doit permettre de transporter l'exécution d'une quantité importante de fonctions.Other characteristics and advantages In order to be efficient, the technique described above must make it possible to carry the execution of a large number of functions.

Grâce à la technique des inventeurs, 10 Potentiellement, toute fonction asynchrone est projetable/déportable.Thanks to the technique of the inventors, Potentially, any asynchronous function is projectable / deportable.

Cela peut être : - des fonctions qui sont déclenchées sur événement (par exemple les .on('event', f), ou les setTimeOut ou setlmmediate ; - des fonctions async ; - des fonctions exécutées dans des webworkers.This can be: - functions that are triggered on event (for example .on ('event', f), or setTimeOut or setlmmediate; - async functions; - functions executed in webworkers.

15 Concernant d'autres séquences de code synchrones, elles sont également projetable/déportable en fonction de leurs données utilisées.Regarding other synchronous code sequences, they are also projectable / deportable according to their data used.

Par exemple, dans une séquence synchrone on a un comportement suivant dans le code Javascript : - FA - travail sur un ensemble de données A et production de A'; - FB - travail sur un ensemble de données B et production de 8'; 20 - FC- travail sur un ensemble de données Cet production de C'; - Suite - on continue le code.For example, in a synchronous sequence we have the following behavior in the JavaScript code: - FA - work on a set of data A and production of A '; - FB - work on a data set B and production of 8 '; 20 - FC- work on a set of data This production of C '; - Continued - we continue the code.

Il est aisé de comprendre que si A, A' B, B, Cet C' sont des objets/propriétés différentes, alors FA, F8 et FC sont projetable/déportables et qu'il suffit de créer un point de synchronisation avant que Suite ne s'exécute il n'y a pas de problème sur l'exécution.It is easy to understand that if A, A 'B, B, Cet C' are different objects / properties, then FA, F8 and FC are projectable / deportable and that it suffices to create a synchronization point before Suite does is running there is no problem on the run.

Ainsi le travail sur des boucles 25 dont les fonctions travaillant sur des objets/propriétés disjointes sont ainsi projetable/déportables.Thus the work on loops 25 whose functions working on disjoint objects / properties are thus projectable / deportable.

Dès lors, ce code let samples = [ ] ; let out = [] ; for (let index = 0; index < samples.length; index++) [ 30 out [index] = workOn (samples [index] ) ; 25 Pourra se transformer en une séquence projetable et parallélisable.Therefore, this code let samples = []; let out = []; for (let index = 0; index <samples.length; index ++) [30 out [index] = workOn (samples [index]); 25 Can be transformed into a projectable and parallelizable sequence.

De même, la fonction Map définie dans javascript l'est également. let newArr = oldArr.map( (val, index, arr) => { // return element to new Array 5 H ; Également : f ( ) Préambule... 10 // travail sur un set de donnée A // /./travail sur un set de donnée B 15 // Suite_ Une transformation de code permettant de créer par exemple des promesses peut être utilisée.Likewise, the Map function defined in javascript is also defined. let newArr = oldArr.map ((val, index, arr) => {// return element to new Array 5 H; Also: f () Preamble ... 10 // working on a dataset A // /. / work on a data set B 15 // Next_ A code transformation allowing the creation of promises, for example, can be used.

L'unité de compilation génère ces transformations en s'appuyant sur la propriété ACID et 20 d'ordre d'exécution du des fonctions.The compilation unit generates these transformations based on the ACID property and the order of execution of the functions.

Par exemple : f ( - - ) Préambule... async function mf () ( async function 's'AH 25 //travail sur un set de donnée A async function dB(1 //travail sur un set de donnée B 1 30 let adA = dA(1; let °dB = dB(); await odA; 26 await °dB; mf () .then(function () I // Suite...For example: f (- -) Preamble ... async function mf () (async function 's'AH 25 // work on a data set A async function dB (1 // work on a data set B 1 30 let adA = dA (1; let ° dB = dB (); await odA; 26 await ° dB; mf () .then (function () I // Continue ...

5 I ) ; 1.4.5 I); 1.4.

Systèmes et dispositifs de mise en oeuvre On présente, en relation avec la figure 5, une architecture simplifiée d'un dispositif 10 électronique d'exécution apte à effectuer le traitement et l'exécution d'un code scripté.Systems and Implementing Devices Referring to FIG. 5, a simplified architecture of an electronic execution device 10 capable of processing and executing a scripted code is presented.

Un dispositif électronique d'exécution comprend une mémoire 51, une unité de traitement 52 équipée par exemple d'un microprocesseur, et pilotée par le programme d'ordinateur 53, mettant en oeuvre le procédé tel que précédemment décrit.An electronic execution device comprises a memory 51, a processing unit 52 equipped for example with a microprocessor, and controlled by the computer program 53, implementing the method as described above.

Dans au moins un mode de réalisation, l'invention est mise en oeuvre sous la forme d'une application installée sur ce dispositif.In at least one embodiment, the invention is implemented in the form of an application installed on this device.

Un tel dispositif 15 comprend : des moyens d'obtention du code scripté comprenant un ensemble d'objets projetables, un objet projetable de l'ensemble d'objets projetables comprenant au moins une fonction exécutable auprès d'une ressource d'exécution de destination ; des moyens de préparation d'une structure de données de transmission d'au moins un 20 objet projetable dudit code scripté préalablement obtenu, ladite structure de données de transmission associant à chaque objet du code scripté, au moins une donnée d'indexation ; des moyens de transmission à une ressource d'exécution de destination, de la structure de données de transmission du code scripté; et des moyens de réception d'une structure de données de résultats d'exécution, mis en 25 oeuvre postérieurement à l'exécution, par la ressource d'exécution de destination, de la structure de données de transmission ; des moyens d'intégration de résultats d'exécution de la structure de données de résultats d'exécution.Such a device 15 comprises: means for obtaining the scripted code comprising a set of projectable objects, a projectable object of the set of projectable objects comprising at least one function executable from a destination execution resource; means for preparing a transmission data structure of at least one projectable object of said previously obtained scripted code, said transmission data structure associating with each object of the scripted code, at least one indexing datum; means for transmitting to a destination execution resource, the data structure for transmitting the scripted code; and means for receiving an execution results data structure, implemented after the execution, by the destination execution resource, of the transmission data structure; means for integrating the execution results of the execution results data structure.

On présente, en relation avec la figure 6, une architecture simplifiée d'un dispositif 30 électronique d'exécution, également appelée ressource d'exécution de destination apte à effectuer des transactions à l'aide d'une empreinte contextuelle.Referring to FIG. 6, we present a simplified architecture of an electronic execution device, also called a destination execution resource capable of carrying out transactions using a contextual fingerprint.

Un tel dispositif électronique d'exécution, comprend une mémoire 61, une unité de traitement 62 équipée par exemple d'un 27 microprocesseur, et pilotée par le programme d'ordinateur 63, mettant en oeuvre le procédé selon l'invention.Such an electronic execution device comprises a memory 61, a processing unit 62 equipped for example with a microprocessor, and controlled by the computer program 63, implementing the method according to the invention.

Dans au moins un mode de réalisation, l'invention est mise en oeuvre sous la forme d'une application installée sur un dispositif électronique d'exécution accessible par une ressource appelante.In at least one embodiment, the invention is implemented in the form of an application installed on an electronic execution device accessible by a calling resource.

Un tel dispositif électronique d'exécution comprend : 5 des moyens de réception, de la structure de données de transmission du code scripté; et des moyens d'exécution du code scripté résultant de l'instanciation, sous la forme d'objets projetables, de la structure de données reçue, et des moyens de traçage des résultats d'exécution d'au moins une fonction contenue dans ces objets ; des moyens de préparation d'une structure de données de résultats d'exécution dudit au 10 moins un objet projetable dudit code scripté préalablement exécuté, ladite structure de données de résultats d'exécution associant à chaque objet du code scripté modifié, au moins une donnée d'indexation ; des moyens de transmission à une ressource d'exécution locale, de la structure de données de de résultats d'exécution du code scripté; 15 Ces moyens se présentent sous la forme d'une application logicielle spécifique, ou encore sous la forme de composants matériels dédiés.Such an electronic execution device comprises: means for receiving the data structure for transmitting the scripted code; and means for executing the scripted code resulting from the instantiation, in the form of projectable objects, of the received data structure, and means for tracing the results of execution of at least one function contained in these objects ; means for preparing a data structure of execution results of said at least one projectable object of said previously executed scripted code, said data structure of execution results associating with each object modified scripted code, at least one piece of data indexation; means for transmitting to a local execution resource, the data structure of the execution results of the scripted code; These means are in the form of a specific software application, or else in the form of dedicated hardware components.

Plus particulièrement, dans au moins un mode de réalisation,More particularly, in at least one embodiment,

Claims (10)

REVENDICATIONS1. Procédé d'exécution d'un code scripté d'une application, procédé mis en oeuvre par l'intermédiaire d'un dispositif électronique, appelé ressource appelante (ResA, A), au sein de laquelle ladite application est exécutable, le procédé comprenant : une étape d'obtention (20) du code scripté de l'application (PCP) comprenant un ensemble d'objets projetables, un objet projetable de l'ensemble d'objets projetables comprenant au moins une fonction exécutable auprès d'une ressource d'exécution de destination (resX, B) ; - une étape de préparation d'une structure de données de transmission (PCP#, heap) d'au moins un objet projetable dudit code scripté préalablement obtenu, ladite structure de données de transmission associant à chaque objet projetable du code scripté, au moins une donnée d'indexation ; une étape de transmission (40), à une ressource d'exécution de destination, de la structure de données de transmission (PCP#, heap) du code scripté; et postérieurement à l'exécution (50), par la ressource d'exécution de destination, d'au moins une fonction dudit au moins un objet projetable de la structure de données de transmission : une étape de réception (60) d'une structure de données (ExObj, diff) de résultats d'exécution de ladite au moins une fonction ; une étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution au sein de la ressource appelante .CLAIMS 1. A method of executing a scripted code of an application, a method implemented by means of an electronic device, called a calling resource (ResA, A), within which said application is executable, the method comprising: a step of obtaining (20) the scripted code of the application (PCP) comprising a set of projectable objects, a projectable object of the set of projectable objects comprising at least one function executable from a resource of destination execution (resX, B); a step of preparing a transmission data structure (PCP #, heap) of at least one projectable object of said previously obtained scripted code, said transmission data structure associating with each projectable object of the scripted code, at least one indexing data; a step of transmitting (40), to a destination execution resource, the transmission data structure (PCP #, heap) of the scripted code; and subsequent to the execution (50), by the destination execution resource, of at least one function of said at least one projectable object of the transmission data structure: a reception step (60) of a structure data (ExObj, diff) of execution results of said at least one function; a step of integrating the execution results of the execution results data structure within the calling resource. 2. Procédé selon la revendication 1, caractérisé en ce que l'étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution au sein de la ressource appelante comprend une vérification différentielle de l'intégrité des données mise à jour au cours de l'exécution (50), par la ressource d'exécution de destination.2. Method according to claim 1, characterized in that the step of integrating the execution results of the execution results data structure within the calling resource comprises a differential check of the integrity of the data put. updated during execution (50), by the destination execution resource. 3. Procédé d'exécution d'un code scripté selon la revendication 1, caractérisé en ce que l'étape d'obtention du code scripté comprenant un ensemble d'objets projetables comprend : 2 une étape d'obtention (10) d'un code source scripté (CSSE), représentatif de l'application à exécuter par la ressource appelante (ResA, A) ; une étape de détermination, au sein du code source scripté (CSSE), d'au moins une fonction susceptible d'être exécutée par une ressource d'exécution de destination, dite 5 fonction projetable ; une étape de modification du code source scripté, délivrant un code scripté d'exécution comprenant ledit ensemble d'objets projetables, en fonction de ladite au moins une fonction projetable préalablement déterminée. 103. A method of executing a scripted code according to claim 1, characterized in that the step of obtaining the scripted code comprising a set of projectable objects comprises: a step of obtaining (10) a scripted source code (CSSE), representative of the application to be executed by the calling resource (ResA, A); a step of determining, within the scripted source code (CSSE), at least one function capable of being executed by a destination execution resource, called a projectable function; a step of modifying the scripted source code, delivering a scripted execution code comprising said set of projectable objects, as a function of said at least one previously determined projectable function. 10 4. Procédé d'exécution d'un code scripté selon la revendication 1, caractérisé en ce que l'étape de préparation d'une structure de données de transmission d'au moins un objet projetable dudit code scripté comprend : une étape de création d'un tableau d'indexation (refA), pour chaque objet projetable (0A, XA) à transmettre à une ressource d'exécution de destination (ResX, B), tableau au sein 15 duquel un index (0, 1, ...) est associé à une référence d'objet (RefOA, RefXA,...); une étape de création de la structure de données de transmission (PCP, heap) sous la forme d'un tableau comprenant, pour chaque objet projetable, un index (0, 1, ...), correspondant à l'index (0, 1, ...) de la référence de cet objet projetable au sein du tableau d'indexation (refA), et une représentation sérialisée (r0, r1, ...) de l'objet projetable ; 204. A method of executing a scripted code according to claim 1, characterized in that the step of preparing a transmission data structure of at least one projectable object of said scripted code comprises: a step of creating d 'an indexing array (refA), for each projectable object (0A, XA) to be transmitted to a destination execution resource (ResX, B), array within which an index (0, 1, ... ) is associated with an object reference (RefOA, RefXA, ...); a step of creating the transmission data structure (PCP, heap) in the form of an array comprising, for each projectable object, an index (0, 1, ...), corresponding to the index (0, 1, ...) of the reference of this projectable object within the indexing array (refA), and a serialized representation (r0, r1, ...) of the projectable object; 20 5. Procédé d'exécution d'un code scripté selon la revendication 1, caractérisé en ce que l'étape de réception d'une structure de données de résultats (ExObj, diff) d'exécution de ladite au moins une fonction comprend : une étape de réception, de la structure de données de transmission (PCP#, heap) 25 préalablement transmise, sous la forme d'un tableau comprenant, pour chaque objet projetable, un index (0, 1, 2,...), correspondant à l'index (0, 1, 2,...) de la référence de cet objet projetable au sein d'un tableau d'indexation (refB) de la ressource d'exécution de destination (ResX, B), et une représentation sérialisée (r0, r1, r2...) de l'objet projetable ; une étape de réception, de la structure de données de résultats d'exécution (ExObj, diff) 30 sous la forme d'un tableau comprenant, pour chaque objet projetable de la structure de données de transmission (PCP, heap) préalablement transmise, un index (0, 1, 2,...) et et 3 une représentation sérialisée (VO, r'1, ...) des modifications effectuées par ladite au moins une fonction exécutée par la ressource d'exécution de destination (ResX, B).5. Method for executing a scripted code according to claim 1, characterized in that the step of receiving a results data structure (ExObj, diff) for executing said at least one function comprises: a step of receiving the transmission data structure (PCP #, heap) 25 previously transmitted, in the form of an array comprising, for each projectable object, a corresponding index (0, 1, 2, ...) at index (0, 1, 2, ...) of the reference of this projectable object within an indexing array (refB) of the destination execution resource (ResX, B), and a serialized representation (r0, r1, r2 ...) of the projectable object; a reception step of the data structure of execution results (ExObj, diff) in the form of a table comprising, for each projectable object of the transmission data structure (PCP, heap) previously transmitted, a index (0, 1, 2, ...) and and 3 a serialized representation (VO, r'1, ...) of the modifications performed by said at least one function executed by the destination execution resource (ResX, B). 6. Procédé d'exécution d'un code scripté selon la revendication 1, caractérisé en ce que 5 l'étape d'intégration de résultats d'exécution de la structure de données de résultats d'exécution (ExObj, diff) au sein de la ressource appelante comprend : une étape de mise à jour, au sein de la ressource appelante (ResA, A), d'une liste d'objets, la mise à jour comprenant une création d'un nouvel objet lorsque qu'un objet absent de la structure de données de transmission a été créé par la ressource d'exécution de 10 destination au cours de l'exécution (50) ; une étape de mise à jour des valeurs des objets de la liste d'objets, comprenant une vérification de la cohérence des valeurs à mettre à jour en fonction des valeurs d'origine contenues dans la structure de données de transmission. 156. A method of executing a scripted code according to claim 1, characterized in that the step of integrating the execution results of the execution results data structure (ExObj, diff) within the calling resource comprises: a step of updating, within the calling resource (ResA, A), a list of objects, the update comprising creation of a new object when an object is absent the transmission data structure was created by the destination execution resource during execution (50); a step of updating the values of the objects of the list of objects, comprising a check of the consistency of the values to be updated as a function of the original values contained in the transmission data structure. 15 7. Procédé d'exécution d'un code scripté selon la revendication 3, caractérisé en ce que l'étape de modification du code source scripté, délivrant un code scripté d'exécution comprenant ledit ensemble d'objets projetables, en fonction de ladite au moins une fonction projetable préalablement déterminée comprend : une étape de détermination d'au moins un contexte d'exécution de ladite application, en 20 fonction du code source scripté (CSSE), ledit contexte d'exécution de ladite application comprenant, pour chaque variable et/ou objet du code source scripté (CSSE), une représentation d'une variable et/ou objet correspondant, accessible et/ou modifiable lors de la projection vers une ressource d'exécution de destination, ledit contexte d'exécution tenant compte de la portée de chaque variable et/ou objet du code source scripté (CSSE); 25 une étape de construction du code scripté (PCP) en fonction du code source scripté (CSSE) et dudit contexte d'exécution préalablement déterminé.7. A method of executing a scripted code according to claim 3, characterized in that the step of modifying the scripted source code, delivering a scripted execution code comprising said set of projectable objects, as a function of said au at least one predetermined projectable function comprises: a step of determining at least one execution context of said application, as a function of the scripted source code (CSSE), said execution context of said application comprising, for each variable and / or object of the scripted source code (CSSE), a representation of a variable and / or corresponding object, accessible and / or modifiable during projection to a destination execution resource, said execution context taking into account the scope of each variable and / or object of the scripted source code (CSSE); 25 a step of constructing the scripted code (PCP) as a function of the scripted source code (CSSE) and of said previously determined execution context. 8. Dispositif électronique d'exécution d'un code scripté, appelé ressource appelante, le dispositif comprenant : 30 des moyens d'obtention du code scripté comprenant un ensemble d'objets projetables, un objet projetable de l'ensemble d'objets projetables comprenant au moins une fonction exécutable auprès d'une ressource d'exécution de destination ; 4 des moyens de préparation d'une structure de données de transmission d'au moins un objet projetable dudit code scripté préalablement obtenu, ladite structure de données de transmission associant à chaque objet du code scripté, au moins une donnée d'indexation ; 5 des moyens de transmission à une ressource d'exécution de destination, de la structure de données de transmission du code scripté; et des moyens de réception d'une structure de données de résultats d'exécution, mis en oeuvre postérieurement à l'exécution, par la ressource d'exécution de destination, de la structure de données de transmission ; 10 - des moyens d'intégration de résultats d'exécution de la structure de données de résultats d'exécution.8. Electronic device for executing a scripted code, called a calling resource, the device comprising: means for obtaining the scripted code comprising a set of projectable objects, a projectable object of the set of projectable objects comprising at least one function executable from a destination execution resource; 4 means for preparing a transmission data structure of at least one projectable object of said previously obtained scripted code, said transmission data structure associating with each object of the scripted code, at least one indexing datum; 5 means for transmitting to a destination execution resource, the data structure for transmitting the scripted code; and means for receiving an execution results data structure, implemented after the execution, by the destination execution resource, of the transmission data structure; 10 - means for integrating the execution results of the execution results data structure. 9. Système d'exécution d'un code scripté, caractérisé en ce qu'il comprend au moins une ressource appelante prenant la forme d'un dispositif électronique d'exécution selon la 15 revendication 8 et au moins une ressource distante, prenant la forme d'une ressource d'exécution de code scripté accessible depuis la ressource appelante.9. System for executing a scripted code, characterized in that it comprises at least one calling resource taking the form of an electronic execution device according to claim 8 and at least one remote resource, taking the form a scripted code execution resource accessible from the calling resource. 10. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un 20 microprocesseur, caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution d'un procédé selon la revendication 1, lorsqu'il est exécuté sur un ordinateur. 2510. Computer program product downloadable from a communication network and / or stored on a medium readable by a computer and / or executable by a microprocessor, characterized in that it comprises program code instructions for the execution of the program. A method according to claim 1, when executed on a computer. 25
FR1860069A 2018-10-31 2018-10-31 PROCESS FOR PROCESSING A SOURCE CODE, DEVICE, SYSTEM AND CORRESPONDING PROGRAM Active FR3087916B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1860069A FR3087916B1 (en) 2018-10-31 2018-10-31 PROCESS FOR PROCESSING A SOURCE CODE, DEVICE, SYSTEM AND CORRESPONDING PROGRAM
PCT/EP2019/079179 WO2020089076A1 (en) 2018-10-31 2019-10-25 Method for executing code portions on execution resources
EP19797208.6A EP3874368A1 (en) 2018-10-31 2019-10-25 Method for executing code portions on execution resources
US17/290,512 US20210373863A1 (en) 2018-10-31 2019-10-25 Method for executing code portions on execution resources

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1860069A FR3087916B1 (en) 2018-10-31 2018-10-31 PROCESS FOR PROCESSING A SOURCE CODE, DEVICE, SYSTEM AND CORRESPONDING PROGRAM

Publications (2)

Publication Number Publication Date
FR3087916A1 true FR3087916A1 (en) 2020-05-01
FR3087916B1 FR3087916B1 (en) 2021-07-02

Family

ID=65685647

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1860069A Active FR3087916B1 (en) 2018-10-31 2018-10-31 PROCESS FOR PROCESSING A SOURCE CODE, DEVICE, SYSTEM AND CORRESPONDING PROGRAM

Country Status (4)

Country Link
US (1) US20210373863A1 (en)
EP (1) EP3874368A1 (en)
FR (1) FR3087916B1 (en)
WO (1) WO2020089076A1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3356742B2 (en) * 1999-11-17 2002-12-16 インターナショナル・ビジネス・マシーンズ・コーポレーション Program execution method
US8065665B1 (en) * 2004-02-28 2011-11-22 Oracle America, Inc. Method and apparatus for correlating profile data
US20190340012A1 (en) * 2018-05-04 2019-11-07 Ruthann Granito System for efficient resource distribution

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "javascript - WebWorkers and Asynchronous shared data access. How in Scala.js? - Stack Overflow", 22 May 2018 (2018-05-22), XP055601842, Retrieved from the Internet <URL:https://web.archive.org/web/20180522041746/https://stackoverflow.com/questions/49951842/webworkers-and-asynchronous-shared-data-access-how-in-scala-js> [retrieved on 20190703] *

Also Published As

Publication number Publication date
FR3087916B1 (en) 2021-07-02
WO2020089076A1 (en) 2020-05-07
US20210373863A1 (en) 2021-12-02
EP3874368A1 (en) 2021-09-08

Similar Documents

Publication Publication Date Title
Krämer et al. A modular software architecture for processing of big geospatial data in the cloud
US10956132B1 (en) Unified code and data management for model development
FR3103927A1 (en) Method and apparatus for running an applet
WO2010009996A1 (en) Method for compiling a computer program
FR2931269A1 (en) METHOD AND SYSTEM FOR DEVELOPING PARALLEL PROGRAMS
FR2964225A1 (en) METHOD AND DEVICE FOR DEPLOYING AND ASSISTING THE DEPLOYMENT OF COMPONENTS FORMING A REAL TIME SYSTEM ONBOARD
FR2713368A1 (en) Procedure and method of communication between machines and generalized method of preparing related programs.
EP1828941B1 (en) Device for processing formally defined data
WO2009147310A1 (en) Method for data management in a collaborative service-oriented workshop
FR3074322A1 (en) SECURE DATA TRACEABILITY PLATFORM
Chaves et al. The orchestration of Machine Learning frameworks with data streams and GPU acceleration in Kafka‐ML: A deep‐learning performance comparative
FR2871590A1 (en) METHOD FOR LOADING OBJECT-ORIENTED INTERMEDIATE LANGUAGE SOFTWARE IN A PORTABLE DEVICE.
EP2417523A1 (en) Method and device enabling the execution of heterogeneous transaction-oriented components
EP2281271A1 (en) Method for process management in a collaborative service-oriented workshop
FR3087916A1 (en) CORRESPONDING SOURCE CODE PROCESSING METHOD, DEVICE, SYSTEM AND PROGRAM
Sankar Fast Data Processing with Spark 2
Hoffman Building Microservices with ASP. NET Core: Develop, Test, and Deploy Cross-platform Services in the Cloud
FR2864285A1 (en) UML model requirements remounting method, involves automatically creating navigation model containing all UML objects pointed by requirements and level requirements module linked to upstream level requirement module
Karau et al. Scaling Python with Ray
FR2906382A1 (en) METHODS AND DEVICES FOR OPTIMIZING XML PROCESSING
CA2131632C (en) Use of a language having a similar representation for programs and data in distributed data processing
Gammelgaard Microservices in. NET
Raman et al. Building RESTful Web Services with Spring 5: Leverage the Power of Spring 5.0, Java SE 9, and Spring Boot 2.0
US11714614B2 (en) Code generation tool for cloud-native high-performance computing
FR3076367A1 (en) METHOD FOR DEVELOPING AN ONTOLOGY ADAPTED TO A PARTICULAR INDUSTRIAL DOMAIN

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20200501

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6