File:  [local] / rpl / LIMITATIONS
Revision 1.80: download - view: text, annotated - select for diffs - revision graph
Sun May 20 17:28:26 2012 UTC (11 years, 11 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Correction de POLL pour traiter une liste de descripteurs et obtenir
des informations sur les types d'actions "pollables". Ajout d'un
timeout dans SMPHRTRYDECR. Si ce timeout vaut 0, la fonction est
équivalente à l'ancienne fonction SMPHRTRYDECR.

    1: RESTRICTIONS
    2:     Only sequential formatted files are supported.
    3: 
    4: typedef MY_TYPE...
    5: MY_TYPE a = { .flag = true, .value = 123, .stuff = 0.456 };
    6: 
    7: Ajouter une évaluation dans GET et PUT 'X' { I } get
    8: 
    9: Ajouter STOSIG CLRSIG SIGLOCK SIGUNLOCK SIGQUEUE ISIG WFSIG RCLSIG SIGSTATUS
   10: Mettre un masque des signaux dans structure_processus et les
   11: tableaux des signaux en variable globale (buffer circulaire protégé par un mutex
   12: avec un trylock()).
   13: 
   14: rplss signal processus
   15: 
   16: Rajouter le format dans formateur_flux() (pour les fichiers de type flow).
   17: 
   18: Économisons notre mépris eut égard au nombre de nécessiteux.
   19: Chateaubriand.
   20: 
   21: Translitération des fichiers (avec un pointeur sur la localisation du fichier
   22: dans la structure du fichier).
   23: 
   24: Fichiers non formatés : restent à coder pour les écritures :
   25:          * 0000 XXXX                Binaire sur XXXX octets
   26:          * 0010 00 00               vecteur integer*1 (dimensions integer*1)
   27:          * 0010 01 00               vecteur integer*1 (dimensions integer*2)
   28:          * 0010 10 00               vecteur integer*1 (dimensions integer*4)
   29:          * 0010 11 00               vecteur integer*1 (dimensions integer*8)
   30:          * 0010 00 01               vecteur integer*2 (dimensions integer*1)
   31:          * 0010 01 01               vecteur integer*2 (dimensions integer*2)
   32:          * 0010 10 01               vecteur integer*2 (dimensions integer*4)
   33:          * 0010 11 01               vecteur integer*2 (dimensions integer*8)
   34:          * 0010 00 10               vecteur integer*4 (dimensions integer*1)
   35:          * 0010 01 10               vecteur integer*4 (dimensions integer*2)
   36:          * 0010 10 10               vecteur integer*4 (dimensions integer*4)
   37:          * 0010 11 10               vecteur integer*4 (dimensions integer*8)
   38:          * 0010 00 11               vecteur integer*8 (dimensions integer*1)
   39:          * 0010 01 11               vecteur integer*8 (dimensions integer*2)
   40:          * 0010 10 11               vecteur integer*8 (dimensions integer*4)
   41:          * 0010 11 11               vecteur integer*8 (dimensions integer*8)
   42:          * 0011 00 00               matrice integer*1 (dimensions integer*1)
   43:          * 0011 01 00               matrice integer*1 (dimensions integer*2)
   44:          * 0011 10 00               matrice integer*1 (dimensions integer*4)
   45:          * 0011 11 00               matrice integer*1 (dimensions integer*8)
   46:          * 0011 00 01               matrice integer*2 (dimensions integer*1)
   47:          * 0011 01 01               matrice integer*2 (dimensions integer*2)
   48:          * 0011 10 01               matrice integer*2 (dimensions integer*4)
   49:          * 0011 11 01               matrice integer*2 (dimensions integer*8)
   50:          * 0011 00 10               matrice integer*4 (dimensions integer*1)
   51:          * 0011 01 10               matrice integer*4 (dimensions integer*2)
   52:          * 0011 10 10               matrice integer*4 (dimensions integer*4)
   53:          * 0011 11 10               matrice integer*4 (dimensions integer*8)
   54:          * 0011 00 11               matrice integer*8 (dimensions integer*1)
   55:          * 0011 01 11               matrice integer*8 (dimensions integer*2)
   56:          * 0011 10 11               matrice integer*8 (dimensions integer*4)
   57:          * 0011 11 11               matrice integer*8 (dimensions integer*8)
   58:          * 0101 0 XXX               nom de longueur XXX
   59:          * 0101 10 LL               nom de longueur integer*LL
   60:          * 0110 0 XXX               expression RPN
   61:          * 0110 10 LL
   62:          * 0111 0 XXX               expression algébrique
   63:          * 0111 10 LL
   64:          * 1000 0 XXX               chaîne de caractères
   65:          * 1000 10 LL
   66:          * 1001 0 XXX               table de longueur XXX
   67:          * 1001 10 00               table de longueur integer*1
   68:          * 1001 10 01               table de longueur integer*2
   69:          * 1001 10 10               table de longueur integer*4
   70:          * 1001 10 11               table de longueur integer*8
   71:          *
   72:          * 1010 00 10               vecteur real*4 (dimensions integer*1)
   73:          * 1010 01 10               vecteur real*4 (dimensions integer*2)
   74:          * 1010 10 10               vecteur real*4 (dimensions integer*4)
   75:          * 1010 11 10               vecteur real*4 (dimensions integer*8)
   76:          * 1010 00 11               vecteur real*8 (dimensions integer*1)
   77:          * 1010 01 11               vecteur real*8 (dimensions integer*2)
   78:          * 1010 10 11               vecteur real*8 (dimensions integer*4)
   79:          * 1010 11 11               vecteur real*8 (dimensions integer*8)
   80:          * 1011 00 10               vecteur complex*8 (dimensions integer*1)
   81:          * 1011 01 10               vecteur complex*8 (dimensions integer*2)
   82:          * 1011 10 10               vecteur complex*8 (dimensions integer*4)
   83:          * 1011 11 10               vecteur complex*8 (dimensions integer*8)
   84:          * 1011 00 11               vecteur complex*16 (dimensions integer*1)
   85:          * 1011 01 11               vecteur complex*16 (dimensions integer*2)
   86:          * 1011 10 11               vecteur complex*16 (dimensions integer*4)
   87:          * 1011 11 11               vecteur complex*16 (dimensions integer*8)
   88:          * 1100 00 10               matrice real*4 (dimensions integer*1)
   89:          * 1100 01 10               matrice real*4 (dimensions integer*2)
   90:          * 1100 10 10               matrice real*4 (dimensions integer*4)
   91:          * 1100 11 10               matrice real*4 (dimensions integer*8)
   92:          * 1100 00 11               matrice real*8 (dimensions integer*1)
   93:          * 1100 01 11               matrice real*8 (dimensions integer*2)
   94:          * 1100 10 11               matrice real*8 (dimensions integer*4)
   95:          * 1100 11 11               matrice real*8 (dimensions integer*8)
   96:          * 1101 00 10               matrice complex*8 (dimensions integer*1)
   97:          * 1101 01 10               matrice complex*8 (dimensions integer*2)
   98:          * 1101 10 10               matrice complex*8 (dimensions integer*4)
   99:          * 1101 11 10               matrice complex*8 (dimensions integer*8)
  100:          * 1101 00 11               matrice complex*16 (dimensions integer*1)
  101:          * 1101 01 11               matrice complex*16 (dimensions integer*2)
  102:          * 1101 10 11               matrice complex*16 (dimensions integer*4)
  103:          * 1101 11 11               matrice complex*16 (dimensions integer*8)
  104: 
  105: Utiliser clock() et clock_t pour émuler getrusage sous OS/2
  106: 
  107: Regarder les d_ep_division_par_zero pour coller un undef à la place.
  108: 
  109: ->TAG TAG-> DTAG
  110: ->UNIT UNIT-> DUNIT
  111: 
  112: Convertir avec le nouveau système de la gestion de la mémoire :
  113: - READ FLOW (longueur_effective ligne 2815)
  114: rpl/src/'`instructions_w1-conv.c
  115: instructions_w1-conv.c: In function ‘librpl_instruction_write’:
  116: instructions_w1-conv.c:1603: warning: ‘ios’ may be used uninitialized in this
  117: function
  118: instructions_w1-conv.c:431: warning: ‘chaine’ may be used uninitialized in this
  119: function
  120: 
  121: Traiter SIGTERM
  122: RUN
  123: Ajouter MULTICAST (pour les sockets)
  124: Rajouter le test des dépassements pour INCR et DECR
  125: 
  126: Ajouter TeXmacs
  127: 
  128: Dessiner les niveaux sur les graphes
  129: { "main" { "default" } { "automatic" 10 } } axes redraw 
  130: Ne fonctionne pas...
  131: 
  132: -> I:integer scalar, J:integer scalar << >>
  133: 
  134: // Teste les interfaces d'entrée et de sortie d'une fonction. Une fonction
  135: // peut avoir plusieurs interfaces.
  136: 
  137: constrained FONCTION
  138:     interface STANDARD
  139:         integer scalar, generic, real scalar
  140:     returns
  141:         real scalar
  142:     or
  143:         integer scalar
  144:     requires
  145:         VARIABLE FONCTION2
  146:     end
  147: 
  148:     interface SPECIFIQUE
  149:         scalar, ...
  150:     returns
  151:         scalar
  152:     requires
  153:     end
  154: provides
  155: <<
  156: >>
  157: 
  158: Ajouter un champs dans RPN et ADR pour pointer vers une liste.
  159: 
  160: Types :
  161: generic
  162: scalar (integer/real/complex)
  163: vector (integer/real/complex)
  164: matrix (integer/real/complex)
  165: table
  166: list
  167: binary
  168: name
  169: string
  170: algebraic
  171: expression
  172: file
  173: socket
  174: library
  175: process
  176: sql
  177: mutex
  178: semaphore
  179: 
  180: Traiter les expressions et les noms dans les fichiers. Rajouter un
  181: type de format pour les binaires non formatés (LOGICAL)
  182: 
  183: IMPORT -> installe à chaud de nouvelles définitions. Écrase les anciennes
  184: si nécessaire.
  185: 
  186: Prévoir un drapeau pour tester les interfaces (34)
  187: -> désarmé : test des interfaces
  188: -> armé : on ne teste rien
  189: 
  190: colorspec pour les couleurs des graphiques de gnuplot
  191: 
  192: TRIGGER attaché à un objet (fonction appelée dès la modification de l'objet)
  193: -> vérification de contrainte...
  194: 
  195: Decomposition de Hessenberg dgehrd, zgehrd; dorghr, zunghr for computing P
  196: dgehd2.f+dgebal.f
  197: 
  198: Pseudo inverse dgelss, zgelss
  199: 
  200: Tables dans interface_tex
  201: 
  202: Fichiers à accès direct -> entretenir une table en mémoire (hsearch())
  203: Les enregistrements sont de la forme :
  204: [Position enregistrement suivant][enregistrement]
  205: ADDNODE
  206: DELNODE
  207: 
  208: { arguments } << programme >> << interruption >> SUBMIT
  209: arg1 ... argn n << programme >> << interruption >> SUBMIT
  210: 
  211: rpl -b (batch) 32 (nombre de threads)
  212: 
  213: FOREIGN (pour les variables)
  214: 
  215: Côté esclave
  216: foreign -> X Y Z << >>
  217: FVARLOCK
  218: FVARUNLOCK
  219: 
  220: Côté maître
  221: foreign -> X Y Z << >> (il faut savoir si on est sur le mêtre ou sur un esclave)
  222: 
  223: FOREIGN permet à un esclave d'accéder à une variable partagée
  224: du maître.
  225: 
  226: ADDNOTE envoie les variables de niveau 0 au noeud client.
  227: SUBMIT envoie l'adresse de création des variables 'foreign' au client
  228: // Maître
  229: << foreign 1 -> X
  230:     <<
  231:         << foreign -> X << 'X' incr >> >> << >> submit
  232:     >>
  233: >>
  234: 
  235: ================================================================================
  236: 
  237: Compilation -> faire un exécutable qui appelle rpl par rpl -S
  238: 
  239: Verification des erreurs mémoire dans le cas d'erreur avant l'appel au
  240: séquenceur dans rpl.c
  241: 
  242: Coller un fichier ~/.rpl qui contient les valeurs par défaut des drapeaux
  243: 
  244: 'a(3)+a(3,4)' ne doit pas provoquer d'erreur si a est du type liste ou table.
  245: Si a est une liste ou une table : une seule dimension possible !
  246: 
  247: [[ 1 2 ]]3 est valide !
  248: 
  249: Evaluation symbolique des fonction ?
  250: 
  251: SQL sur des données binaires
  252: 
  253: La manière standard de faire est d'utiliser des wchar_t pour représenter les
  254: caractères (à distinguer des bytes).
  255: Il y a plein de choses dans la bibliothèque standard :
  256: - mbtowc et compagnie, et aussi mbrtowc et compagnie, une variante
  257: probablement identique dans ton cas
  258: - fgetwc, fputwc, fwprintf etc. pour les entrées-sorties
  259: - wcs*() qui remplace les fonctions en str*()
  260: 
  261: Vérifier la cohérence des arguments de OPEN
  262: 
  263: TO DO
  264:     File support : SEEK, SUPPRESS, REWRITE
  265: 
  266: Mettre des tableaux dans les formats binaires
  267: 
  268: Fichier en accès direct -> 12 {} puis entretenir un fichier d'index.
  269: Fichiers flow
  270: 
  271: SLOPEFIELD
  272: 
  273: Simplification des expressions : convertir la notation polonaise en
  274: arbre.
  275: 
  276: Problème d'indentation de
  277: select
  278:     case then end <- sur la même ligne

CVSweb interface <joel.bertrand@systella.fr>