--- rpl/LIMITATIONS 2010/06/20 17:06:25 1.23 +++ rpl/LIMITATIONS 2015/09/10 10:51:33 1.171 @@ -1,102 +1,180 @@ RESTRICTIONS - Only sequential formatted files are supported. -Voir test15.rpl +Retirer le KEEPALIVE de OPEN pour le mettre sur ACCEPT. -Économisons notre mépris eut égard au nombre de nécessiteux. -Chateaubriand. +Rajouter un type pour les entier, réels et complexes longs +123~ -> entier long INL +123.34E2~53 -> flottant long (avec sa précision) RLL +(123.42E~253, 14~) -> complexe long CXL + +Mettre un allocateur dans lib$motif +(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 les __CATCH_SYSTEM_ERROR__ dans rplexternals.h + +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. + +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. -Mettre les variables dans un arbre avec une liste chaîne des niveaux dans -chaque maillon de la pile système. -> version 4.1 +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. -Mettre les variables dans un arbre mis à plat : -[ niveau 1 ][ niveau 2,1 ][ niveau 2,5 ][ niveau 3,1 ]... -avec des pointeur relatifs pour pouvoir copier rapidement par un -memcpy() l'ensemble de la structure de description des variables lors -d'un spawn. +{ <[ { "character*(*)" } 2 ]> } = { <[ "character*(*)" "character*(*)" ]> } +{ <[ { <[ "character*(*)" "standard*(*)" ]> 2 } ]> } = + { <[ <[ "character*(*)" "standard*(*)" ]> <[ "character*(*)" + "standard*(*)" ]> ]> } -Empêcher les interruptions ctrlC dans les appels récursifs (evaluation et -sequenceur) -Connexion au terminal de contrôle perdue ! +Utiliser Frama-c + why + alt-argo pour rechercher les erreurs. -Routing library unloaded. +Ajouter la translitération dans l'écriture des fichiers. -+++Erreur : Type d'argument invalide pour la commande SWAP [27630] +À FAIRE : SOCKET DE TYPE FLOW (LENGTH*(*) ET LENGTH*(N)) -+++Information : Génération du fichier rpl-core [27630] -+++Erreur : Type d'argument invalide pour la commande GET [27630] +Ajouter une évaluation des listes. -+++Erreur : Type d'argument invalide pour la commande >> [27630] -+++Information : Génération du fichier rpl-core [27630] +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. -+++Erreur : Type d'argument invalide pour la commande > [27630] -+++Information : Génération du fichier rpl-core [27630] +Translitération des fichiers (avec un pointeur sur la localisation du fichier +dans la structure du fichier). -+++Information : Génération du fichier rpl-core [27630] -tchaikovski:[~/rpl/cvs/optimisation] > ./serveur.rpl +Traiter BACKSPACE pour les fichiers non formatés. +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 + +Traiter SIGTERM +RUN +Ajouter MULTICAST (pour les sockets) +Rajouter le test des dépassements pour INCR et DECR --> toujours une erreur de type _type d'argument invalide_ ! +Ajouter TeXmacs Dessiner les niveaux sur les graphes { "main" { "default" } { "automatic" 10 } } axes redraw Ne fonctionne pas... +-> I:integer scalar, J:integer scalar << >> + // Teste les interfaces d'entrée et de sortie d'une fonction. Une fonction // peut avoir plusieurs interfaces. -FONCTION -<< - INTERFACE - ALTERN - RESULT - REQUIRES - END - END ->> -fonction - INTERFACE - generic - integer scalar - real matrix - complex vector - table - list - binary - name - string - algebraic - expression - file - socket - library - process - sql - mutex - semaphore - CONSTRAINED - 4 pick size 6 pick size same - RESULT - type - END - - INTERFACE - integer - real matrix - integer/real/complex vector - table - list - RESULT - type - END -REQUIRES - variables globales ou définitions -PROVIDES +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 << >> -Traiter les expressions et les noms dans les fichiers. Rajouter un -type de format pour les binaires non formatés (LOGICAL) - IMPORT -> installe à chaud de nouvelles définitions. Écrase les anciennes si nécessaire. @@ -116,19 +194,25 @@ Pseudo inverse dgelss, zgelss Tables dans interface_tex -Fichiers à accès direct -> entretenir une table en mémoire (hsearch()) -Les enregistrements sont de la forme : -[Position enregistrement suivant][enregistrement] +Pour le fonctionnement en cluster ADDNODE DELNODE { arguments } << 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) +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. @@ -153,8 +237,6 @@ 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. Si a est une liste ou une table : une seule dimension possible ! -[[ 1 2 ]]3 est valide ! - Evaluation symbolique des fonction ? SQL sur des données binaires @@ -167,8 +249,6 @@ probablement identique dans ton cas - fgetwc, fputwc, fwprintf etc. pour les entrées-sorties - wcs*() qui remplace les fonctions en str*() -FLOW (utilise en lecture FORMAT) - Vérifier la cohérence des arguments de OPEN TO DO @@ -176,9 +256,6 @@ TO DO Mettre des tableaux dans les formats binaires -Fichier en accès direct -> 12 {} puis entretenir un fichier d'index. -Fichiers flow - SLOPEFIELD Simplification des expressions : convertir la notation polonaise en