Historique de Papp

Revision: $Id: Changes,v 1.20 1995/04/09 18:18:11 bousch Exp $

v 0.75
La syntaxe a ete legerement modifiee pour etre davantage independante de la mise en oeuvre de PAPP. La syntaxe des zones d'insertion a egalement ete legerement amelioree. Enfin, le bug qui empechait de liberer certaines chaines renvoyees par l'analyseur lexical est repare. Ces modifications sont signalees dans "papp.man".
v 0.76
Il est maintenant possible de faire entrer ou sortir tous les joueurs inscrits (c'est surtout utile pour les finales). Le programme a ete renomme en "papp.tos" puisqu'il sera habituellement lance sans ligne de commande. On peut maintenant afficher les fiches individuelles des joueurs. Le programme attend que l'utilisateur tape une touche si PAPP a ete lance a partir du bureau et s'il y a eu une erreur (ceci ne concerne pas les assertions).
v 0.77
PAPP localise les erreurs dans le fichier intermediaire, au lieu de faire echouer une assertion; le controle est egalement meilleur. Le programme peut sauvegarder les fichiers Elo. Dans le fichier intermediaire, PAPP signale les joueurs inconnus (typiquement, quand le fichier des nouveaux joueurs est absent).
v 0.78
La penalite de flottement quand on joue contre Bip a ete modifiee. Maintenant, Bip est suppose avoir le score le plus faible de tous les joueurs a apparier. Ceci garantit qu'on ne "sature" pas tout de suite la penalite de flottement, et empeche que le joueur le mieux classe joue contre Bip. La fonction numero_inscription() a ete reecrite avec des pointeurs pour etre plus rapide.
v 0.79
Le departage de Brightwell a ete enfin implante. La lecture du fichier des joueurs utilise maintenant un alloc-ring; ca ne va pas beaucoup plus vite, mais la memoire est beaucoup moins fragmentee maintenant. La pile fait maintenant 64K par defaut, ce qui devrait autoriser jusqu'a 70 joueurs.
v 0.80
La table des symboles a ete enlevee de l'executable, economisant 10K. Le laius sur la pile a ete modifie en consequence. Les strdup() ont ete reecrits; maintenant, l'allocation de memoire est "sure", cad que la valeur de retour est toujours testee. La taille du buffer de FLEX a ete reduite a 2K pour que la lecture soit plus rapide avec les disquettes. Remise a jour de la documentation. L'optimisation se fait maintenant en deux passes: la premiere determine une estimation de la tolerance, et cette valeur est utilisee pour la deuxieme passe. Je serais curieux de savoir si cela ameliore notablement les performances.
v 0.81
En soi, non; mais si de plus "on rend les parois infiniment hautes" alors le programme selectionne correctement le sommet a choisir comme pivot. J'ai ainsi gagne un facteur trois pour les appariements de la cinquieme ronde entre 29 joueurs! Desormais, quand l'utilisateur interrompt la recherche, PAPP ne s'arrete pas tout de suite, mais explore toutes les branches a la profondeur zero, sinon on risquerait de passer a cote de quelque chose. PAPP semble donc repondre un peu plus "mollement".
v 0.82
Suite a une suggestion de Marc Tastet, le score de Bip est inferieur d'un demi-point a celui du dernier "vrai" joueur, afin d'etre plus volontiers apparie avec les derniers joueurs. Sur l'insistance de Stephane Nicolet, une penalite de "flottement cumule" est introduite pour empecher un joueur de flotter deux fois de suite dans le meme sens.
v 0.83
La commande `L' ne fait plus preceder les joueurs presents d'une etoile; au contraire, elle fait preceder les joueurs absents d'un `-'. Ceci pour mieux les faire ressortir. Un nouveau type d'appariement, `fort-faible', est introduit pour la premiere ronde: les n/2 joueurs forts jouent contre les n/2 joueurs faibles. Les mots-cles `desequilibree' et `forts-faibles' sont egalement acceptes. Le calcul des penalites a ete dramatiquement accelere (par un facteur entre 10 et 100) et ne prend plus qu'une seconde ou deux! J'en ai profite pour augmenter les plafonds du flottement et de la couleur.
v 0.90
Le programme repasse sur le billot: il est important que chaque joueur joue environ autant de fois Noir que Blanc, et les penalites de couleur doivent refleter ceci. Du systeme precedent ne subsiste que la penalite `de-suite' si un joueur joue deux fois avec la meme couleur. Merci a Marc Tastet pour m'avoir rappele les regles. Finalement, l'idee de rendre les parois infiniment hautes etait mauvaise, ou alors il faut que je trouve autre chose!
v 0.91
Si les penalites _p[i][j] et _p[j][i] sont egales, alors on attribue les couleurs selon les regles habituelles (i.e., on regarde la ronde la plus recente ou les 2 joueurs avaient des couleurs differentes, et on inverse). Merci Marc! Quelques modifications d'ordre cosmetique: le departage est entre crochets (partout ailleurs, un nombre entre parentheses signifiait le numero Elo d'un joueur), et les numeros Elo a l'interieur du fichier intermediaire sont au moins sur quatre chiffre, non seulement pour avoir de beaux alignements, mais aussi pour faciliter les substitutions de numeros. Un nouveau joueur pouvait etre sauvegarde plusieurs fois; ce bug est repare. L'ordre d'exploration de l'arbre a ete modifie, ce qui accelere encore un peu la recherche, et la gestion de l'interruption a ete modifiee pour renvoyer des resultats plus "fiables". Grand nettoyage du code: (presque) toutes les fonctions et variables sont prototypees; la fonction toucher_appariements() a disparu. Plutot, elle est appelee implicitement par valeur_couple(). La fonction inscrire_joueur() initialise maintenant tous les champs (score, departage, etc.); auparavant, ca "marchait" parce que tous les tableaux sont initialises a zero!
v 0.92
L'allocation de memoire pour l'optimisation est maintenant entierement dynamique, et on n'est plus limite que par le nombre maximum d'inscriptions, a savoir 128 joueurs. Et par la memoire de l'Atari, bien entendu. Aargh! Quand on est bete, c'est pour longtemps. Il manquait des parentheses dans les macros d'allocation memoire, si bien que les zones allouees etaient parfois trop petites, et donc se chevauchaient, provoquant des erreurs inexplicables. Repare. Le debug des penalites et de l'optimisation est controle par les macros DEBUG_PEN et DEBUG_OPT. La ligne 'spi=0' n'etait pas au bon endroit, ce qui faisait que l'arbre n'etait pratiquement pas elague. Repare. L'optimisation est controlee par les macros PAROIS_HAUTES et MEDIANE.
v 0.93
Quand un joueur quittait le tournoi "dans le fichier intermediaire", son appariement n'etait pas automatiquement detruit. Repare. Le "bug du 13 janvier", qui se produisait quand il etait "evidemment" impossible d'apparier les joueurs avec une tolerance donnee, est repare. Les scores sont desormais toujours ecrits sur deux chiffres dans le fichier intermediaire. L'option `F' du menu principal a ete dupliquee dans le sous-menu des appariements manuels. Petit toilettage de la documentation. Correction du "job control" dans global.c; PAPP marche beaucoup mieux avec MiNT 0.99 maintenant. Dans pap.y, changement de %d en %ld, pour -mshort (quicksort semble mieux marcher qu'avant).
v 0.94
Il n'etait pas possible d'inscrire de nouveaux programmes. Repare. Comment ne m'en suis-je pas rendu compte plus tot ? PAPP verifie qu'un coupon n'a pas deja ete entre (peut-etre avec un autre score). Ajout d'un fichier "bugs" a la distribution. Le bug qui faisait que PAPP "oubliait" le resultat de la premiere passe (et echouait a la seconde) est enfin repare. Le signal SIGABRT est maintenant gere, si bien que l'on peut attendre la pression d'une touche si une assertion a echoue. Dans elo.c, les signaux sont bloques durant la sauvegarde. La taille de la fenetre (ou de l'ecran) est obtenue par un ioctl, de toute facon les librairies appelleront la ligne A si necessaire. De plus, le signal SIGWINCH est maintenant gere.
v 0.95
Une anti-penalite est introduite au cas ou un joueur flotterait deux fois de suite en sens oppose. C'est assez inelegant, et complique encore la documentation, mais certaines personnes semblaient y tenir, donc voila. (Soupir) Desormais PAPP refuse de valider les resultats d'une ronde s'il y a deux joueurs ou plus non apparies. Pendant l'optimisation, PAPP affiche un "i" des qu'il detecte que l'utilisateur a presse les deux touches Shift. Ceci pour eviter que des brutes n'exterminent le clavier en pensant que l'interruption n'a pas ete prise en compte. Amelioration de la detection des erreurs dans l'analyse lexicale et syntaxique; les messages d'erreurs devraient etre plus informatifs. Mise a jour de la documentation. Modifications radicales du code: toutes les fonctions dependant de la machine ont ete placees dans more.c. Tout ce qui concerne les signaux n'est compile que si le symbole "atarist" est defini. Le port sur d'autres machines devrait etre beaucoup plus simple maintenant. Le numero de version (et le nom de l'auteur!) s'affichent maintenant des le demarrage du programme. Dans main.c, le code de retour est -999 si jamais nous revenons de la fonction main_menu. Cela ne devrait jamais se produire! Dans global.h, les prototypes de stricmp et strnicmp sont ajoutes, si necessaire, certains compilateurs ne les definissent pas dans string.h. La macro INLINE remplace le mot-cle inline (toujours pour des considerations de portabilite). Papp n'affiche que les 15 premieres erreurs de syntaxe dans les fichiers de configuration ou de joueurs, puis avorte. Ces fichiers textes peuvent maintenant contenir des caracteres >= 128 sans faire planter Papp. Il serait donc possible de mettre des caracteres accentues dans les noms de joueurs, mais cela poserait des problemes de portabilite. La macro SWAP de appari.c a ete reecrite, et les tableaux de taille variable ne sont declares que si __GNUC__ existe.
v 0.96
Le pseudo-commentaire %! dans un fichier de configuration (ou de joueurs) permet d'afficher un message a l'ecran. Les messages de debug de lire_fichier() ont ete reactives. Si Papp ne trouve pas de fichier de configuration, il en cree un contenant ses reglages par defaut. Il est possible de supprimer papp.cfg de la distribution maintenant. (Ceci a permis de corriger un gros bug, la variable nom_fichier_config apparaissait en double). Le fichier intermediaire s'appelle desormais "__papp__" au lieu de "#papp#" par defaut. Les penalites infinies sont ecrites sous la forme "INFINI" dans le fichier de configuration au lieu de 2147483647, moins parlant. Nouveau fichier, ttrondes.c, pour la gestion des tournois toutes-rondes (ou plusieurs fois toutes-rondes). Mise a jour du makefile et des dependances. Mise a jour de la documentation pour la version 0.96. Les doublons dans les fichiers de joueurs provoquent toujours des erreurs fatales, mais le message d'erreur devrait etre beaucoup plus informatif maintenant.
v 0.97
Possibilite de sauver le classement vers un fichier (voire un fichier special) ou un pipe. Suppression de la table des tolerances: l'optimisation se fait desormais en une seule passe. La penalite maximum descend de deux milliards a dix millions! Ceci est rendu necessaire pour des raisons de compatibilite avec les versions ulterieures.
v 0.98
Essai d'implementation d'un algorithme d'optimisation en temps polynomial.
v 0.98.1
Echec total, donc nous revenons a l'ancien algorithme, exponentiel. Modification du prototype de la fonction "apparie", et diverses modifs un peu partout dans le code pour supporter des jeux ou il y a plus de 64 pions. Ainsi nous sommes prets pour l'Othello 10x10. Les scores ne sont plus supposes "tenir" sur deux chiffres. Sont egalement prevues les situations ou le "total de pions" est un nombre impair (l'exemple typique est le Go), et celles ou Bip gagne ses parties ou fait nulle. Support ajoute pour les jeux "sans score" tels que les echecs, ie le departage se fait au Buchholz. Le nombre maximum d'inscrits passe de 128 a 192, mieux vaut prevoir large. L'analyseur syntaxique est desormais Bison. Les modifications correspondantes ont ete faites dans le Makefile. Les fonctions popen/pclose ont ete enlevees du code; elles ne marchent pas sur l'Atari. Nous gagnons ainsi 5ko environ. Controle un peu plus strict de la syntaxe dans pap.y.
v 0.98.2
Si le symbole TERMCAP est defini, les sequences d'affichage a l'ecran sont obtenues par les fonctions termcap. (Nous reprenons ainsi quelques kilos...) Les terminaux non-auto-wrap sont egalement supportes. Les signaux sont compiles quand le symbole `SIGNAUX' est present, non plus `atarist', pour faciliter le portage sous Unix. Lors de l'optimisation, le signal ^C (SIGINT) permet d'interrompre les calculs, et donc ne tue pas le programme. L'avancement des calculs est signale par des `_' ou des `.' selon qu'une interruption a ete detectee ou non. Le terminal est parametre par gtty/stty, et les caracteres sont lus avec read(), pour compatibilite avec BSD. Quelques modifs mineures pour eviter les warnings du Gcc 2.3.3. J'ai remis les fonctions popen/pclose, maintenant qu'elles sont correctement implementees dans les librairies MiNT (patchlevel 34).
v 0.98.3
Nous revenons aux librairies MiNT PL28 parce que les PL34 sont incompatibles avec la Portable Math Library. Par consequent, nous enlevons popen/pclose. L'optimisation utilise desormais l'algorithme d'Edmonds-Johnson pour la recherche d'un couplage de poids maximum dans un graphe.
v 0.98.4
Possibilite de modifier la nationalite d'un joueur (ces modifs sont sauvegardees dans le fichier des nouveaux joueurs). Ajout d'une penalite de chauvinisme (quand deux joueurs d'un meme pays jouent ensemble) pouvant dependre du numero de ronde. Suppression de la directive `premiere-ronde', que personne n'utilisait de toute facon. La premiere ronde est maintenant traitee comme les autres, par optimisation (avec un doigt de hasard). Correction d'un bug dans la completion des noms, quand deux joueurs ont les memes noms et prenoms (mais pas le meme numero). Suppression de toutes les references au type d'appariement de la premiere ronde. La fonction appariement_optimal() ne doit plus etre appelee directement, et est donc redefinie comme statique dans son module (penalite.c). Nettoyage de pap.y: les tokens n'ayant aucune valeur semantique sont declares comme tels. Dans edmonds.c, nous nous appretons a utiliser les "long long", le jour ou ceux-ci fonctionneront correctement.
v 0.98.5
Diverses optimisations dans edmonds.c (en particulier dans la fonction recalcule_e_star), la recherche va maintenant deux a trois fois plus vite.
v 0.98.6
Correction d'un henaurme bug dans edmonds.c (delta_2 ne contenait que la moitie de ce qu'il aurait du contenir); merci a Emmanuel Lazard pour m'avoir signale le probleme. Ajout, un peu partout (pap.y, penalite.c, edmonds.c) d'avertissements quand une penalite depasse le maximum autorise. Auparavant ces penalites etaient silencieusement tronquees. Dans more.c, les dimensions de l'ecran sont determinees a partir de l'entree termcap si ioctl(TIOCGWINSZ...) revoie zero.
v 0.98.7
Recompilation des sources avec les librairies MiNT @ patchlevel 39, et le symbole P_OPEN. Suppression de la fonction Getshift() dans more.c, puisqu'elle n'est plus utilisee nulle part. Le nom de la machine n'est plus code en dur dans version.h, mais doit etre defini dans le Makefile. Quand papp.cfg n'existe pas, nous le creons avec permission d'execution, et #!/usr/local/bin/papp comme premiere ligne (ceci concerne surtout les systemes Unix). Mise a jour de la documentation.
v 0.99
Possibilite d'ajouter des commentaires a la fiche d'un joueur; ceci peut etre utile pour savoir qui est a jour de cotisation. Declaration de erreur_fatale() corrigee dans global.c. Dans le menu principal, l'option S (suspendre) a ete enlevee; il n'y a que sous Unix qu'on peut suspendre un job, et sous Unix c'est ^Z la touche consacree. Toujours pour garder le "look and feel" Unix, on a ajoute ^R (redessiner), bien que ca fasse quadruple emploi avec ^M, ^J et ^L. Recompilation avec GCC 2.5.8. Reecriture du manuel en LaTeX.
v 1.00
Remplacement, un peu partout, d'allocations de chaines de taille fixe par des appels a new_string(). Dans joueurs.c, HASHSIZE est maintenant une puissance de deux. Dans more.c, une definition plausible de `int hasard(int)'. Integration (conditionnelle) des diffs de B.de la Boisserie pour la compilation sous __MSDOS__. Suppression de tous les fichiers, symboles, references aux echantillons: personne ne les voulait, nous gagnons ainsi 10Ko dans l'executable, et enormement dans les sources. Cela simplifie aussi le Makefile. Ajout du fichier `a_faire' dans la distribution. Suppression des references a KW_FEDERATION dans pap.l et pap.y.
v 1.01
Integration des modifs pour __THINKC__; correction d'un gros bug dans pap.l -- le "commentaire" suivant un joueur ne s'arretait pas a la fin de la ligne. Modification de fiche_individuelle() afin de pouvoir afficher les renseignements sur un joueur meme avant la premiere ronde. Plusieurs options du menu principal changent de nom, les moins utilisees disparaissent de la liste et ne sont plus accessibles que par Ctrl+Lettre. Ajout dans le Makefile des symboles NO_STRICMP et NO_RAISE indiquant si les fonctions correspondantes sont reconnues ou non. Modification des penalites par defaut, et (surtout) du texte les accompagnant. Modifications dans more.c, afin de pouvoir ecrire dans un fichier tout ce qui est, normalement, ecrit a l'ecran. Modifs correspondantes dans plein d'autres fichiers! Ajout des options ^V et ^F dans le menu principal (pour sauvegarder les appariements et les fiches, respectivement). Modification de __THINKC__ en __THINK_C__ pour le Macintosh.
v 1.02
Les tableaux de penalites de couleur et de flottement ont ete rendus dynamiques. Ce n'est pas le cas du tableau de penalites de chauvinisme, dont la taille est suffisamment grande (NMAX_RONDES), cette derniere constante etant affichee en meme temps que le nombre maximum de joueurs. Modification (simplification) de pap.y pour le rendre conforme a la syntaxe decrite dans la documentation. Si un bloc `penalites{...}' apparait, toutes les penalites sont remises a zero; auparavant, c'etait la declaration d'une section qui remettait a zero les penalites de cette section. Modifications des paths de certains fichiers a inclure (types.h, signal.h, ioctl.h) pour compatibilite avec Sun. Modification de `pts' en `dpt' (dans le classement des joueurs) et de `points' en `demi-points' dans les fiches individuelles, puisque c'est de demi-points dont il s'agit veritablement. (Cela ne suffira pas a satisfaire Stephane, je sais...)
v 1.03
Grosse erreur dans les specifications: il est tout a fait significatif de comparer les penalites correspondant a des ecarts chromatiques de parites differentes. En particulier, on ne peut pas supposer que p_coul[1]==0, et ceci signifie egalement qu'il y a un terme de penalite de couleur meme quand on joue contre Bip. Ajout de l'option de compilation MELANGE pour rendre les appariements un peu plus aleatoires (ie non deterministes). Implementation du systeme Tastet pour les toutes-rondes; le precedent algorithme etait sous-optimal pour l'attribution des couleurs. Dans penalite.c, le score minimum (necessaire pour estimer le flottement contre Bip) est calcule sur tous les joueurs presents, pas uniquement sur les joueurs presents et non encore apparies. Correction du systeme Tastet. Relecture de la documentation. Augmentation des penalites de flottement et de repetition dans global.c.
v 1.04
Correction du departage de Brightwell dans le cas ou le nombre de pions est impair; le departage est alors donne en demi-points. Prise en compte (enfin!) de NO_TERMCAP_H dans more.c. Grosses modifications dans le Makefile, afin de faciliter la compilation sur les machines autres que l'Atari. Les completions sont (enfin) affichees par ordre alphabetique. Les deux fonctions de lecture d'une chaine au clavier (celle pour les inscriptions, et l'autre) ont ete unifiees. Ajout de ^T pour transposer les deux dernieres lettres. Modification des noms de fichiers joueurs.[cho] en joueur.[cho], sinon make est induit en erreur par la presence du fichier "joueurs", qu'il considere comme un executable dependant de joueurs.c. La macro d'allocation memoire dans edmonds.c n'etait pas sure: si le code etait compile avec NDEBUG (donc sans les assertions), les erreurs d'allocation memoire auraient pu passer inapercues; ce n'est plus le cas maintenant, elles provoquent un abort().
v 1.05
Ajout de l'option de compilation CURSEUR pour les machines sur lesquelles le curseur est invisible (elles se reconnaitront elles-memes...) Les chaines de caracteres sont maintenant allouees avec un "allocateur trivial" tres economique (tant qu'on ne cherche pas a les desallouer, car c'est impossible). Nous gagnons environ 60ko de memoire sur l'Atari, soit 50 octets par joueur (sur d'autres machines, le gain dependra de la mise en oeuvre de malloc). Dans joueur.c, HASHSIZE passe de 128 a 512, vu qu'il y a plus d'un millier de joueurs. Dans more.c, modification de la macro CTRL en CCTL (pour eviter un conflit de nom sous SunOS).
v 1.06
Deux modifications dans more.c pour le portage sous Linux (lecture d'une touche, et gestion de SIGWINCH). Grosses modifications dans le makefile, notamment afin de pouvoir utiliser l'option -j de GNU make, et suppression de tout ce qui etait specifique Atari. Dans pap.l, on definit yywrap() de maniere a ne pas etre oblige de linker avec libfl.a (que tout le monde n'a pas forcement). Quelques modifications dans papp_doc.tex afin que latex2e puisse le lire (il y a avait des problemes avec \verb). Modification du nom du programme `test' en `testp' pour eviter un conflit avec le programme Unix du meme nom :-) Documentation de quelques autres options de compilation dans le makefile, ajout de STR_CASECMP, suppression de raise.c (raise() est desormais une macro) et ajout d'un prototype manquant.
v 1.07
Implementation du verrouillage, du moins pour Linux. Lors de l'entree des resultats, la touche Tab affiche la liste des coupons (d'abord ceux qui sont remplis, puis les vides). Deplacement de la routine de calcul du departage dans un module plus approprie (penalite.c -> resultat.c). Support pour les jeux de caracteres 8 bits (oubliez cela si vous avez autre chose qu'Iso-Latin-1), et ajout d'un nouveau symbole (SYSV) pour tout ce qui est specifique a SVR4, i.e. il n'y a plus de #ifdef linux ... #endif. Modification des declarations des fonctions qui ne reviennent jamais, GCC 2.x n'utilisant plus `volatile'. Modifications importantes du Makefile afin de pouvoir cross-compiler vers ms-dos en utilisant go32crs. Capitalisation de certains noms de fichiers (notamment Makefile). Plusieurs modifications dans more.c pour compatibilite avec go32. Ajout d'un programme supplementaire (edtest) pour tester automatiquement un ensemble de matrices de penalites. Actuellement, ce test prend environ vingt minutes sur un 486 DX2-66. Utilisation de RCS (enfin!) pour le controle de version. Acceleration de edtest: il prend quatre fois moins de temps.
v 1.08
Dans le sous-menu d'entree des resultats, la demande de validation n'est plus automatique. Tout au plus PAPP indique-t-il que les resultats sont complets et que l'utilisateur peut les confirmer en tapant `!'. Dans le meme sous-menu, on peut taper `?' si on veut que PAPP complete les coupons de maniere aleatoire. Affichage "en clair" des coupons immediatement apres leur entree.
v 1.09
Dans ce meme sous-menu, il suffit maintenant d'entrer le numero et le score de l'un des joueurs (a moins que le symbole COUPONS_COMPLETS n'ait ete defini a la compilation). De plus, le tampon d'entree n'est plus entierement efface en cas d'erreur, PAPP essayant de sauver ce qui peut l'etre... Le mini-editeur de ligne reconnait ^W pour l'effacement du dernier mot. Possibilite d'effacer un coupon incorrect, par exemple "-145" efface le score du joueur 145 et celui de son adversaire. Ce n'est pas indispensable, mais reduit les risques d'erreurs. Verification de la monotonie des penalites. Davantage de tests (maintenant trente) dans edtest.
v 1.10
Correction d'un bug dans edmonds.c qui se manifestait par des boucles infinies (detecte grace a edtest). Ajout d'un programme supplementaire, "contest", analogue a edtest mais qui peut tourner aussi longtemps qu'on veut -- il ne verifie pas les resultats, mais s'assure simplement que Edmonds ne plante pas.
v 1.11
L'heure sauvegardee dans les fichiers Elo est maintenant l'heure locale (au lieu de l'heure GMT), au format AAAA/MM/JJ. Les appariements sont desormais tries dans l'ordre decroissant du score des joueurs. Correction d'un bug dans le pager: maintenant, une ligne exactement aussi longue que le terminal s'affichera sur une seule ligne (au lieu de deux). Reorganisation du code dans more.c afin de n'initialiser/reinitialiser le terminal qu'au debut et a la fin du programme (et quand PAPP est suspendu); ceci devrait eviter que les caracteres tapes a l'avance ne soient perdus, comme sur le Sun. PAPP reconnait maintenant la `fin de fichier' sur l'entree standard, ce qui provoque sa terminaison normale, avec sauvegarde. Implementation du verrouillage pour les systemes non-Unix mais neanmoins vaguement multitaches (MacOS, Ouinedose).
v 1.12
Reorganisation du code de traitement des signaux; tout est maintenant dans global.c. Les erreurs fatales ne provoquent plus de core-dump. Sur le Mac, au lieu de quitter immediatement le programme en cas d'erreur fatale, nous attendons une pression de touche. Correction d'un bug dans resultat.c qui empechait de modifier un coupon deja rempli.
v 1.13
Les corrections de flottement cumule etaient calculees en fonction d'une grandeur qui aurait du etre le flottement de la derniere ronde, mais qui etait le plus souvent la somme des flottements des rondes precedentes. Corrige. Modification de diverses interfaces internes au programme. Mise a jour du fichier Bugs.
v 1.14
Il est possible d'associer d'autres couleurs que "Noir" et "Blanc" au premier et au second joueur. Cette facilite n'est utilisee que dans l'affichage des fiches individuelles.
v 1.15
Les tournois plusieurs fois toutes-rondes ne marchaient pas du tout. Repare, ainsi qu'un bug introduit a la version immediatement precedente dans l'affichage des fiches individuelles.
v 1.16
Nous n'affichons le departage d'un joueur que s'il differe de celui du joueur precedent (ou si les scores sont differents), afin de reperer plus facilement les ex-aequo. Nettoyage du code en differents endroits. Les zones d'insertion sont desormais allouees dynamiquement et il peut y en avoir plusieurs par pays; de plus, les zones nationales seront toujours examinees avant les zones internationales. Correction d'un bug dans l'analyseur lexical (une ligne de commentaire vide pouvait "avaler" la ligne suivante). PAPP supporte maintenant deux types d'affichage des pions: absolu comme a Othello, ou relatif a l'adversaire comme au Go. Les resultats peuvent etre entres sous forme relative egalement. Quand plusieurs joueurs ont meme score et meme departage, nous les classons par ordre alphabetique (c'est surtout utile lors de l'inscription des joueurs).
v 1.17
Traduction en anglais des messages et des menus -- les mots-cles du fichier de configuration restent en francais. Le module elo.c supposait qu'il y avait 64 pions; repare. PAPP ne fait plus de distinction entre programmes et joueurs ordinaires; en particulier, un programme peut avoir n'importe quelle nationalite; pour PAPP, c'est simplement un joueur dont le nom contient des parentheses. Modification des conditions de distribution; le programme est maintenant sous la GPL (licence publique GNU). Ajout des fichiers COPYING et papp.lsm a l'archive.
[Back]