Pas de fichiers indexés non formatés ou de type flow !
Pas de fichiers directs de type flow

#define NEED_EXTERN_PC dans terminal.c de readline pour NetBSD.

RESTRICTIONS
Si(X) dans le retour de giac -> sinus intégral

gcc -dM -E - </dev/null renvoie les defines par defaut.

Coller les exemples dans shared pour le deb.

ABORD ne fonctionne pas dans la fonction de SORT.

RECORD => |[ <[ 'index' 'valeur' ]> <[ 203 403 ]> ]|
-> dans formateur mais pas dans les fichiers ou les sockets
Rajouter dans les pages d'aide

RUNAS
int setreuid(uid_t ruid, uid_t euid);
int setregid(gid_t rgid, gid_t egid);
DESCRIPTION
       getuid returns the real user ID of the current process.

       geteuid returns the effective user ID of the current process.

       The  real  ID corresponds to the ID of the calling process.  The effective
       ID corresponds to the set ID bit on the file being executed.



(/ /) -> polynôme

rpl_arguments rend rplexternals.h non réentrant.

Rajouter un type pour les entier, réels et complexes longs
123~ -> entier long INL
123_
123.34E2_53

123.34E2~53 -> flottant long (avec sa précision) RLL
(123.42E~253, 14~) -> complexe long CXL

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.


Mettre l'indicateur de debug dans une pile pour ne pas debugguer les fonctions
appelées.

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.

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.

{ <[ { "character*(*)" } 2 ]> } = { <[ "character*(*)" "character*(*)" ]> }
{ <[ { <[ "character*(*)" "standard*(*)" ]> 2 } ]> } =
		{ <[ <[ "character*(*)" "standard*(*)" ]> <[ "character*(*)"
		"standard*(*)" ]> ]> }

Utiliser Frama-c + why + alt-argo pour rechercher les erreurs.

Ajouter la translitération dans l'écriture des fichiers.

À FAIRE : SOCKET DE TYPE FLOW (LENGTH*(*) ET LENGTH*(N))

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).

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

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.

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
<<
>>

IMPORT -> installe à chaud de nouvelles définitions. Écrase les anciennes
si nécessaire.

Prévoir un drapeau pour tester les interfaces (34)
-> désarmé : test des interfaces
-> armé : on ne teste rien

colorspec pour les couleurs des graphiques de gnuplot

TRIGGER attaché à un objet (fonction appelée dès la modification de l'objet)
-> vérification de contrainte...

Decomposition de Hessenberg dgehrd, zgehrd; dorghr, zunghr for computing P
dgehd2.f+dgebal.f

Pseudo inverse dgelss, zgelss

Tables dans interface_tex

Pour le fonctionnement en cluster
ADDNODE
DELNODE

{ arguments } << programme >> << interruption >> SUBMIT
arg1 ... argn n << programme >> << interruption >> SUBMIT

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.

ADDNOTE envoie les variables de niveau 0 au noeud client.
SUBMIT envoie l'adresse de création des variables 'foreign' au client
// Maître
<< foreign 1 -> X
	<<
		<< foreign -> X << 'X' incr >> >> << >> submit
	>>
>>

================================================================================

Compilation -> faire un exécutable qui appelle rpl par rpl -S

Verification des erreurs mémoire dans le cas d'erreur avant l'appel au
séquenceur dans rpl.c

Coller un fichier ~/.rpl qui contient les valeurs par défaut des drapeaux

'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 !

Evaluation symbolique des fonction ?

SQL sur des données binaires

La manière standard de faire est d'utiliser des wchar_t pour représenter les
caractères (à distinguer des bytes).
Il y a plein de choses dans la bibliothèque standard :
- mbtowc et compagnie, et aussi mbrtowc et compagnie, une variante
probablement identique dans ton cas
- fgetwc, fputwc, fwprintf etc. pour les entrées-sorties
- wcs*() qui remplace les fonctions en str*()

Vérifier la cohérence des arguments de OPEN

TO DO
	File support : SEEK, SUPPRESS, REWRITE

Mettre des tableaux dans les formats binaires

SLOPEFIELD

Simplification des expressions : convertir la notation polonaise en
arbre.

Problème d'indentation de
select
	case then end <- sur la même ligne
