Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Nicolas Ollinger <nollinge@ens-lyon.fr>
To: caml-list@inria.fr
Subject: [Caml-List] Dynlink + Marshaling...
Date: Thu, 4 Mar 1999 17:01:21 +0100 (MET)	[thread overview]
Message-ID: <Pine.GSO.3.96.990304164510.22592A-100000@montchat> (raw)

ENGLISH Abstract ---------------------------------------------------
This thread discusses the ability for a Caml bytecode program to use
Dynlink and Marshal libraries together. The main question i ask is :
<< If you reload every dynamic library BEFORE getting every marshaled
value, did you keep marshaling safety ? >>
--------------------------------------------------------------------

Le contenu de ce message peut se resumer a la question suivante :
<< Si on recharge toutes les librairies dynamiquement AVANT de
recuperer les valeurs sauvees par Marshaling, est-on sur d'avoir un
marshaling sur ? >>

C'est assez obscur comme question, voici donc un exemple de programme
typique, la question est de savoir si ce programme peut marcher comme il
est decrit.

Le programme est constitue d'un fichier bytecode executable principal qui
ne change pas au cours du temps (il a ete compile une fois pour toute).
Il utilise la bibliotheque de threads et des sockets. Il agit comme une
espece de base de donnees dans laquelle on cree des fonctions de int->int
(par composition de fonctions) et on evalue ces fonctions.

Utiliser le programme revient a se connecter par un socket et a entrer des
commandes. Les commandes etant du type :

1) evaluer une fonction en un point. (ex : "f 3")
2) ordonner le chargement d'un fichier ".cmo" pour ajouter des fonctions
   a la base. (ex : "load exp.cmo")
3) creer une nouvelle fonction en associant un nom a la composition
   de deux fonctions existantes. (ex : "let h = f o exp")

Le (2) recours a l'utilisation de Dynlink, le (3) a l'utilisation de
Marshal car on veut pouvoir garder les fonctions definies d'une session
a l'autre.

Une session (ie, une execution du programme) est donc :

- Chargement des differents ".cmo" qui ont ete demandes lors des
  precedentes sessions (dans le MEME ORDRE).
- Charger les fonctions depuis la base de fonctions (ie des
  record {nom : string; f : int -> int}).
- Interagir avec les utilisateurs jusqu'a decision de l'arret du
  programme.
- Sauvegarder les fonctions dans la base de fonctions.
- Sauvegarder la liste des differents ".cmo" demandes.

La question que je me pose est : est-on assure que les objets fonctionnels
que l'on charge depuis la base de fonctions pointent sur le bon code ?
(en supposant que personne n'a fait d'allocation de code a part dynlink).

Nicolas.
--




             reply	other threads:[~1999-03-04 18:56 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-03-04 16:01 Nicolas Ollinger [this message]
1999-03-05  8:41 ` Fabrice Le Fessant

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.GSO.3.96.990304164510.22592A-100000@montchat \
    --to=nollinge@ens-lyon.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox