File:  [local] / rpl / LIMITATIONS
Revision 1.55: download - view: text, annotated - select for diffs - revision graph
Tue Nov 15 07:01:35 2011 UTC (12 years, 5 months ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Correction des fuites de mémoire à l'ouverture de sqlite (lorsque la base est censée exister mais qu'elle n'existe pas)
Correction des makefiles pour qu'ils soient moins verbeux.
Ajout de l'écriture des fichiers binaires (listes, entiers, réels, complexes).

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

CVSweb interface <joel.bertrand@systella.fr>