File:  [local] / rpl / LIMITATIONS
Revision 1.38: download - view: text, annotated - select for diffs - revision graph
Mon Jun 20 17:34:09 2011 UTC (12 years, 10 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
La nouvelle gestion des variables fonctionne sur des programmes non
compilés utilisant des variables de tous niveaux. Les différentes techniques
de masquage des variables ont été testées ainsi que les portées des variables.

    1: RESTRICTIONS
    2:     Only sequential formatted files are supported.
    3: 
    4: Économisons notre mépris eut égard au nombre de nécessiteux.
    5: Chateaubriand.
    6: 
    7: Virer les cases vides dans la pile des variables par niveau.
    8: 
    9: Libérer la mémoire (arbre des variables) à la fin d'un processus et d'un thread
   10: Convertir avec le nouveau système de la gestion de la mémoire :
   11: - CLUSR
   12: - MEM
   13: - PRUSR
   14: 
   15: - READ FLOW (longueur_effective ligne 2815)
   16: rpl/src/'`instructions_w1-conv.c
   17: instructions_w1-conv.c: In function ‘librpl_instruction_write’:
   18: instructions_w1-conv.c:1603: warning: ‘ios’ may be used uninitialized in this
   19: function
   20: instructions_w1-conv.c:431: warning: ‘chaine’ may be used uninitialized in this
   21: function
   22: 
   23: interruptions-conv.c: In function ‘librpl_liberation_threads’:
   24: interruptions-conv.c:806: error: ‘struct_processus’ has no member named
   25: ‘nombre_variables’
   26: interruptions-conv.c:809: error: ‘struct_processus’ has no member named
   27: ‘s_liste_variables’
   28: interruptions-conv.c:811: error: ‘struct_processus’ has no member named
   29: ‘s_liste_variables’
   30: interruptions-conv.c:815: error: ‘struct_processus’ has no member named
   31: ‘s_liste_variables’
   32: interruptions-conv.c:818: error: ‘struct_processus’ has no member named
   33: ‘s_liste_variables’
   34: interruptions-conv.c:821: error: ‘struct_processus’ has no member named
   35: ‘s_liste_variables’
   36: interruptions-conv.c:824: error: ‘struct_processus’ has no member named
   37: ‘s_liste_variables’
   38: 
   39: 
   40: optimisation-conv.c: In function ‘librpl_sequenceur_optimise’:
   41: optimisation-conv.c:75: error: ‘struct_processus’ has no member named
   42: ‘nombre_variables’
   43: optimisation-conv.c:77: error: ‘struct_processus’ has no member named
   44: ‘s_liste_variables’
   45: optimisation-conv.c:82: error: ‘struct_processus’ has no member named
   46: ‘s_liste_variables’
   47: optimisation-conv.c:133: error: ‘struct_processus’ has no member named
   48: ‘s_liste_variables’
   49: optimisation-conv.c:136: error: ‘struct_processus’ has no member named
   50: ‘s_liste_variables’
   51: optimisation-conv.c:151: error: ‘struct_processus’ has no member named
   52: ‘s_liste_variables’
   53: optimisation-conv.c:216: error: ‘struct_processus’ has no member named
   54: ‘s_liste_variables’
   55: optimisation-conv.c:234: error: ‘struct_processus’ has no member named
   56: ‘s_liste_variables’
   57: 
   58: 
   59: Traiter SIGTERM
   60: RUN
   61: Ajouter MULTICAST (pour les sockets)
   62: Rajouter le test des dépassements pour INCR et DECR
   63: 
   64: 4.1 -> nouvelle gestion des variables
   65: 
   66: Ajouter TeXmacs
   67: Ajouter giac$fonction
   68: 
   69: Dessiner les niveaux sur les graphes
   70: { "main" { "default" } { "automatic" 10 } } axes redraw 
   71: Ne fonctionne pas...
   72: 
   73: // Teste les interfaces d'entrée et de sortie d'une fonction. Une fonction
   74: // peut avoir plusieurs interfaces.
   75: FONCTION
   76: <<
   77:     INTERFACE
   78:         ALTERN
   79:         RESULT
   80:         REQUIRES
   81:         END
   82:     END
   83: >>
   84: 
   85: fonction
   86:   INTERFACE
   87:     generic
   88:     integer scalar
   89:     real matrix
   90:     complex vector
   91:     table
   92:     list
   93:     binary
   94:     name
   95:     string
   96:     algebraic
   97:     expression
   98:     file
   99:     socket
  100:     library
  101:     process
  102:     sql
  103:     mutex
  104:     semaphore
  105:   CONSTRAINED
  106:     4 pick size 6 pick size same
  107:   RESULT
  108:     type
  109:   END
  110: 
  111:   INTERFACE
  112:     integer
  113:     real matrix
  114:     integer/real/complex vector
  115:     table
  116:     list
  117:   RESULT
  118:     type
  119:   END
  120: REQUIRES
  121:   variables globales ou définitions
  122: PROVIDES
  123: <<
  124: >>
  125: 
  126: Traiter les expressions et les noms dans les fichiers. Rajouter un
  127: type de format pour les binaires non formatés (LOGICAL)
  128: 
  129: IMPORT -> installe à chaud de nouvelles définitions. Écrase les anciennes
  130: si nécessaire.
  131: 
  132: Prévoir un drapeau pour tester les interfaces (34)
  133: -> désarmé : test des interfaces
  134: -> armé : on ne teste rien
  135: 
  136: colorspec pour les couleurs des graphiques de gnuplot
  137: 
  138: TRIGGER attaché à un objet (fonction appelée dès la modification de l'objet)
  139: -> vérification de contrainte...
  140: 
  141: Decomposition de Hessenberg dgehrd, zgehrd; dorghr, zunghr for computing P
  142: dgehd2.f+dgebal.f
  143: 
  144: Pseudo inverse dgelss, zgelss
  145: 
  146: Tables dans interface_tex
  147: 
  148: Fichiers à accès direct -> entretenir une table en mémoire (hsearch())
  149: Les enregistrements sont de la forme :
  150: [Position enregistrement suivant][enregistrement]
  151: ADDNODE
  152: DELNODE
  153: 
  154: { arguments } << programme >> << interruption >> SUBMIT
  155: arg1 ... argn n << programme >> << interruption >> SUBMIT
  156: 
  157: rpl -b (batch) 32 (nombre de threads)
  158: 
  159: FOREIGN (pour les variables)
  160: 
  161: Côté esclave
  162: foreign -> X Y Z << >>
  163: FVARLOCK
  164: FVARUNLOCK
  165: 
  166: Côté maître
  167: foreign -> X Y Z << >> (il faut savoir si on est sur le mêtre ou sur un esclave)
  168: 
  169: FOREIGN permet à un esclave d'accéder à une variable partagée
  170: du maître.
  171: 
  172: ADDNOTE envoie les variables de niveau 0 au noeud client.
  173: SUBMIT envoie l'adresse de création des variables 'foreign' au client
  174: // Maître
  175: << foreign 1 -> X
  176:     <<
  177:         << foreign -> X << 'X' incr >> >> << >> submit
  178:     >>
  179: >>
  180: 
  181: ================================================================================
  182: 
  183: Compilation -> faire un exécutable qui appelle rpl par rpl -S
  184: 
  185: Verification des erreurs mémoire dans le cas d'erreur avant l'appel au
  186: séquenceur dans rpl.c
  187: 
  188: Coller un fichier ~/.rpl qui contient les valeurs par défaut des drapeaux
  189: 
  190: 'a(3)+a(3,4)' ne doit pas provoquer d'erreur si a est du type liste ou table.
  191: Si a est une liste ou une table : une seule dimension possible !
  192: 
  193: [[ 1 2 ]]3 est valide !
  194: 
  195: Evaluation symbolique des fonction ?
  196: 
  197: SQL sur des données binaires
  198: 
  199: La manière standard de faire est d'utiliser des wchar_t pour représenter les
  200: caractères (à distinguer des bytes).
  201: Il y a plein de choses dans la bibliothèque standard :
  202: - mbtowc et compagnie, et aussi mbrtowc et compagnie, une variante
  203: probablement identique dans ton cas
  204: - fgetwc, fputwc, fwprintf etc. pour les entrées-sorties
  205: - wcs*() qui remplace les fonctions en str*()
  206: 
  207: Vérifier la cohérence des arguments de OPEN
  208: 
  209: TO DO
  210:     File support : SEEK, SUPPRESS, REWRITE
  211: 
  212: Mettre des tableaux dans les formats binaires
  213: 
  214: Fichier en accès direct -> 12 {} puis entretenir un fichier d'index.
  215: Fichiers flow
  216: 
  217: SLOPEFIELD
  218: 
  219: Simplification des expressions : convertir la notation polonaise en
  220: arbre.
  221: 
  222: Problème d'indentation de
  223: select
  224:     case then end <- sur la même ligne

CVSweb interface <joel.bertrand@systella.fr>