Diff for /rpl/LIMITATIONS between versions 1.5 and 1.165

version 1.5, 2010/02/10 09:29:57 version 1.165, 2015/03/23 17:09:42
Line 1 Line 1
 RESTRICTIONS  RESTRICTIONS
     Only sequential formatted files are supported.  
   
 Rajouter les options de compilation dans mkrplso et les versions et dates dans  Rajouter un type pour les entier, réels et complexes longs
 les pages de manuel.  123~23 valeur~nombre_de_bits
   
 Économisons notre mépris eut égard au nombre de nécessiteux.  1 -> Y 'Z' ne renvoie pas 'nom implicite indéfini'
 Chateaubriand.  
   
 Mettre les variables dans un arbre avec une liste chaîne des niveaux dans  Mettre un allocateur dans lib$motif
 chaque maillon de la pile système. -> version 4.1  (tableau avec une liste chaînée des éléments disponibles, si liste vide, on
   réalloue et on maintient la liste triée.)
   
 Vérifier la translitération dans les fichiers graphiques  Mettre un allocateur pour les chaînes. Ne pas oublier de le modifier aussi
   dans rplexternals.h
   
 CONSTANTES (?)  Vérifier les __CATCH_SYSTEM_ERROR__ dans rplexternals.h
 kb (constante de Boltzmann) 1.3806504*10-23 J.K-1  
 ec (charge électrique) 1.602176487*10-19 C  
 µ0  
 e0  
 h  
 c  
 n  
   
   Ne passe pas sur une socket.
   { "STAT" 0 { { } { 5 55 } { 4 51 } { 3 50 } { 3 51 } { 3 50 } { 17 78 } { 4 52
   } { 3 50 } { 3 50 } } # 257B521B6513F2h }
   Idem avec une table.
   
 Ajouter un support sqlite.  Réduire le nombre de pipes entre deux processus.
   Remonter une erreur de format en cas de lecture sur un fichier ou une socket
   formatée ou non formatée.
   
 L'assembleur VAX peut lire des listes chaînées  Échapper les caractères dans LOGGER
   
 Assembleur sparc  Virer mutex_sections_critiques _avant_ l'exécution de AT_EXIT.
   Faut-il tuer les processus fils avant l'exécution de AT_EXIT ?
   ABORT ne lance pas ATEXIT.
   
 SPARC:ROUTINE  { <[ { "character*(*)" } 2 ]> } = { <[ "character*(*)" "character*(*)" ]> }
 <<  { <[ { <[ "character*(*)" "standard*(*)" ]> 2 } ]> } =
     .level v8          { <[ <[ "character*(*)" "standard*(*)" ]> <[ "character*(*)"
           "standard*(*)" ]> ]> }
   
     // Arguments d'entrée :   Utiliser Frama-c + why + alt-argo pour rechercher les erreurs.
 -> fonctionne pour INT, REL, CPL, CHN  
     label1: sethi $g1,$hi(12524)  
   
     call next // fournit le prochain élément de la liste  Ajouter la translitération dans l'écriture des fichiers.
   
 $g1 contient la base de la pile  À FAIRE : SOCKET DE TYPE FLOW (LENGTH*(*) ET LENGTH*(N))
     La question est : comment charger des objets ?  
   
     .pull   $l0  Ajouter une évaluation des listes.
 >>  
   3 'D(4)' sto/save
   << 4 D >> L'avant dernier token est un tableau, une liste, un vecteur ou une
   matrice. On teste pour savoir si l'élément existe avec un coup d'évaluation()
   puis on l'enregistre.
   
   Ajouter STOSIG CLRSIG SIGLOCK SIGUNLOCK SIGQUEUE ISIG WFSIG RCLSIG SIGSTATUS
   Mettre un masque des signaux dans structure_processus et les
   tableaux des signaux en variable globale (buffer circulaire protégé par un mutex
   avec un trylock()).
   
   rplss signal processus
   
   Économisons notre mépris eut égard au nombre de nécessiteux.
   Chateaubriand.
   
   Translitération des fichiers (avec un pointeur sur la localisation du fichier
   dans la structure du fichier).
   
   Fichiers non formatés : restent à coder pour les écritures :
            * 0010 00 00               vecteur integer*1 (dimensions integer*1)
            * 0010 01 00               vecteur integer*1 (dimensions integer*2)
            * 0010 10 00               vecteur integer*1 (dimensions integer*4)
            * 0010 11 00               vecteur integer*1 (dimensions integer*8)
            * 0010 00 01               vecteur integer*2 (dimensions integer*1)
            * 0010 01 01               vecteur integer*2 (dimensions integer*2)
            * 0010 10 01               vecteur integer*2 (dimensions integer*4)
            * 0010 11 01               vecteur integer*2 (dimensions integer*8)
            * 0010 00 10               vecteur integer*4 (dimensions integer*1)
            * 0010 01 10               vecteur integer*4 (dimensions integer*2)
            * 0010 10 10               vecteur integer*4 (dimensions integer*4)
            * 0010 11 10               vecteur integer*4 (dimensions integer*8)
            * 0010 00 11               vecteur integer*8 (dimensions integer*1)
            * 0010 01 11               vecteur integer*8 (dimensions integer*2)
            * 0010 10 11               vecteur integer*8 (dimensions integer*4)
            * 0010 11 11               vecteur integer*8 (dimensions integer*8)
            * 0011 00 00               matrice integer*1 (dimensions integer*1)
            * 0011 01 00               matrice integer*1 (dimensions integer*2)
            * 0011 10 00               matrice integer*1 (dimensions integer*4)
            * 0011 11 00               matrice integer*1 (dimensions integer*8)
            * 0011 00 01               matrice integer*2 (dimensions integer*1)
            * 0011 01 01               matrice integer*2 (dimensions integer*2)
            * 0011 10 01               matrice integer*2 (dimensions integer*4)
            * 0011 11 01               matrice integer*2 (dimensions integer*8)
            * 0011 00 10               matrice integer*4 (dimensions integer*1)
            * 0011 01 10               matrice integer*4 (dimensions integer*2)
            * 0011 10 10               matrice integer*4 (dimensions integer*4)
            * 0011 11 10               matrice integer*4 (dimensions integer*8)
            * 0011 00 11               matrice integer*8 (dimensions integer*1)
            * 0011 01 11               matrice integer*8 (dimensions integer*2)
            * 0011 10 11               matrice integer*8 (dimensions integer*4)
            * 0011 11 11               matrice integer*8 (dimensions integer*8)
   
            * 1001 0 XXX               table de longueur XXX
            * 1001 10 00               table de longueur integer*1
            * 1001 10 01               table de longueur integer*2
            * 1001 10 10               table de longueur integer*4
            * 1001 10 11               table de longueur integer*8
            *
            * 1010 00 10               vecteur real*4 (dimensions integer*1)
            * 1010 01 10               vecteur real*4 (dimensions integer*2)
            * 1010 10 10               vecteur real*4 (dimensions integer*4)
            * 1010 11 10               vecteur real*4 (dimensions integer*8)
            * 1010 00 11               vecteur real*8 (dimensions integer*1)
            * 1010 01 11               vecteur real*8 (dimensions integer*2)
            * 1010 10 11               vecteur real*8 (dimensions integer*4)
            * 1010 11 11               vecteur real*8 (dimensions integer*8)
            * 1011 00 10               vecteur complex*8 (dimensions integer*1)
            * 1011 01 10               vecteur complex*8 (dimensions integer*2)
            * 1011 10 10               vecteur complex*8 (dimensions integer*4)
            * 1011 11 10               vecteur complex*8 (dimensions integer*8)
            * 1011 00 11               vecteur complex*16 (dimensions integer*1)
            * 1011 01 11               vecteur complex*16 (dimensions integer*2)
            * 1011 10 11               vecteur complex*16 (dimensions integer*4)
            * 1011 11 11               vecteur complex*16 (dimensions integer*8)
            * 1100 00 10               matrice real*4 (dimensions integer*1)
            * 1100 01 10               matrice real*4 (dimensions integer*2)
            * 1100 10 10               matrice real*4 (dimensions integer*4)
            * 1100 11 10               matrice real*4 (dimensions integer*8)
            * 1100 00 11               matrice real*8 (dimensions integer*1)
            * 1100 01 11               matrice real*8 (dimensions integer*2)
            * 1100 10 11               matrice real*8 (dimensions integer*4)
            * 1100 11 11               matrice real*8 (dimensions integer*8)
            * 1101 00 10               matrice complex*8 (dimensions integer*1)
            * 1101 01 10               matrice complex*8 (dimensions integer*2)
            * 1101 10 10               matrice complex*8 (dimensions integer*4)
            * 1101 11 10               matrice complex*8 (dimensions integer*8)
            * 1101 00 11               matrice complex*16 (dimensions integer*1)
            * 1101 01 11               matrice complex*16 (dimensions integer*2)
            * 1101 10 11               matrice complex*16 (dimensions integer*4)
            * 1101 11 11               matrice complex*16 (dimensions integer*8)
   
   Utiliser clock() et clock_t pour émuler getrusage sous OS/2
   
   Regarder les d_ep_division_par_zero pour coller un undef à la place.
   
   ->TAG TAG-> DTAG
   ->UNIT UNIT-> DUNIT
   
   Convertir avec le nouveau système de la gestion de la mémoire :
   - READ FLOW (longueur_effective ligne 2815)
   rpl/src/'`instructions_w1-conv.c
   instructions_w1-conv.c: In function ‘librpl_instruction_write’:
   instructions_w1-conv.c:1603: warning: ‘ios’ may be used uninitialized in this
   function
   instructions_w1-conv.c:431: warning: ‘chaine’ may be used uninitialized in this
   function
   
   Traiter SIGTERM
   RUN
   Ajouter MULTICAST (pour les sockets)
   Rajouter le test des dépassements pour INCR et DECR
   
   Ajouter TeXmacs
   
 Dessiner les niveaux sur les graphes  Dessiner les niveaux sur les graphes
 { "main" { "default" } { "automatic" 10 } } axes redraw   { "main" { "default" } { "automatic" 10 } } axes redraw 
 Ne fonctionne pas...  Ne fonctionne pas...
   
   -> I:integer scalar, J:integer scalar << >>
   
 // Teste les interfaces d'entrée et de sortie d'une fonction. Une fonction  // Teste les interfaces d'entrée et de sortie d'une fonction. Une fonction
 // peut avoir plusieurs interfaces.  // peut avoir plusieurs interfaces.
 ROUTINE  
   INTERFACE fonction  
     ALTERN  
         integer  
         real matrix  
         integer/real/complex vector  
         table  
         list  
     RESULT  
         type  
     END  
   END  
 REQUIRES  
 PROVIDES  
 CONTAINS  
 <<  
 >>  
   
 ROUTINE  constrained FONCTION
       interface STANDARD
           integer scalar, generic, real scalar
       returns
           real scalar
       or
           integer scalar
       requires
           VARIABLE FONCTION2
       end
   
       interface SPECIFIQUE
           scalar, ...
       returns
           scalar
       requires
       end
   provides
 <<  <<
     -> I  
     <<  
     >>  
 >>  >>
   
   Ajouter un champs dans RPN et ADR pour pointer vers une liste.
   
   Types :
   generic
   scalar (integer/real/complex)
   vector (integer/real/complex)
   matrix (integer/real/complex)
   table
   list
   binary
   name
   string
   algebraic
   expression
   file
   socket
   library
   process
   sql
   mutex
   semaphore
   
 Traiter les expressions et les noms dans les fichiers. Rajouter un  Traiter les expressions et les noms dans les fichiers. Rajouter un
 type de format pour les binaires non formatés (LOGICAL)  type de format pour les binaires non formatés (LOGICAL)
   
Line 97  Pseudo inverse dgelss, zgelss Line 230  Pseudo inverse dgelss, zgelss
   
 Tables dans interface_tex  Tables dans interface_tex
   
 Fichiers à accès direct -> entretenir une table en mémoire  Fichiers à accès direct -> entretenir une table en mémoire (hsearch())
 Les enregistrements sont de la forme :  Les enregistrements sont de la forme :
 [Position enregistrement suivant][enregistrement]  [Position enregistrement suivant][enregistrement]
 ADDNODE  ADDNODE
Line 105  DELNODE Line 238  DELNODE
   
 { arguments } << programme >> << interruption >> SUBMIT  { arguments } << programme >> << interruption >> SUBMIT
 arg1 ... argn n << programme >> << interruption >> SUBMIT  arg1 ... argn n << programme >> << interruption >> SUBMIT
 n BATCH (lance N threads simultanés en boucle) Arrêt lorsque DELNODE est  
 appelé du noeud maître  rpl -b (batch) 32 (nombre de threads)
   
 FOREIGN (pour les variables)  FOREIGN (pour les variables)
   
   Côté esclave
   foreign -> X Y Z << >>
   FVARLOCK
   FVARUNLOCK
   
   Côté maître
   foreign -> X Y Z << >> (il faut savoir si on est sur le mêtre ou sur un esclave)
   
   FOREIGN permet à un esclave d'accéder à une variable partagée
   du maître.
   
 ADDNOTE envoie les variables de niveau 0 au noeud client.  ADDNOTE envoie les variables de niveau 0 au noeud client.
 SUBMIT envoie l'adresse de création des variables 'foreign' au client  SUBMIT envoie l'adresse de création des variables 'foreign' au client
 // Maître  // Maître
Line 131  Coller un fichier ~/.rpl qui contient le Line 275  Coller un fichier ~/.rpl qui contient le
 'a(3)+a(3,4)' ne doit pas provoquer d'erreur si a est du type liste ou table.  'a(3)+a(3,4)' ne doit pas provoquer d'erreur si a est du type liste ou table.
 Si a est une liste ou une table : une seule dimension possible !  Si a est une liste ou une table : une seule dimension possible !
   
 [[ 1 2 ]]3 est valide !  
   
 Evaluation symbolique des fonction ?  Evaluation symbolique des fonction ?
   
 SQL sur des données binaires  SQL sur des données binaires
Line 145  probablement identique dans ton cas Line 287  probablement identique dans ton cas
 - fgetwc, fputwc, fwprintf etc. pour les entrées-sorties  - fgetwc, fputwc, fwprintf etc. pour les entrées-sorties
 - wcs*() qui remplace les fonctions en str*()  - wcs*() qui remplace les fonctions en str*()
   
 FLOW (utilise en lecture FORMAT)  
   
 Vérifier la cohérence des arguments de OPEN  Vérifier la cohérence des arguments de OPEN
   
 TO DO  TO DO
Line 154  TO DO Line 294  TO DO
   
 Mettre des tableaux dans les formats binaires  Mettre des tableaux dans les formats binaires
   
 Fichier en accès direct -> 12 {} puis entretenir un fichier d'index.  
 Fichiers flow  
   
 SLOPEFIELD  SLOPEFIELD
   
 Simplification des expressions : convertir la notation polonaise en  Simplification des expressions : convertir la notation polonaise en

Removed from v.1.5  
changed lines
  Added in v.1.165


CVSweb interface <joel.bertrand@systella.fr>