Agena

Logiciel capture d'écran:
Agena
Détails logiciels:
Version: 2.11.5 Mise à jour
Date de transfert: 22 Jun 18
Développeur: Alexander Walz
Licence: Gratuit
Popularité: 23

Rating: nan/5 (Total Votes: 0)

Agena est un langage de programmation procédural open source, gratuit, multi-plateforme et facile à apprendre conçu pour un usage quotidien. Il peut être utilisé dans des environnements graphiques, scientifiques, linguistiques et éducatifs, ainsi que sur des applications de script, prenant en charge tous les systèmes d'exploitation courants.


Offre de nombreuses installations de contrôle de débit

L'application offre de nombreuses fonctionnalités de contrôle de flux, comme si, alors. elif, else conditions, cas de et else conditions, est opérateur, numérique pour, from, to, et by boucles, combiné numérique pour et while boucles, pour et dans les boucles, while et do / as boucles, une instruction skip, une pause déclaration, ainsi que la validation du type de données.


Fournit des attributions d'énumération

Parmi les autres fonctionnalités, citons une bibliothèque mathématique de précision arbitraire, une configuration facile de votre environnement personnel, un système de paquets facile à utiliser, des tâches d'énumération, un contrôle de portée via les mots-clés epoc / scope et bien d'autres fonctionnalités attrayantes.

Sous le capot et la disponibilité

Un rapide coup d'oeil sous le capot nous montrera que le projet est écrit dans les langages de programmation C, BASIC, Lua et ALGOL 68, ce qui signifie que sa syntaxe ressemble à la syntaxe de ces projets. Il fonctionne entièrement dans un environnement console / terminal, ce qui signifie qu'il ne dispose pas d'interface utilisateur graphique (GUI).


Expédié avec un éditeur simple

Malgré le fait que le logiciel Agena soit une application de ligne de commande, il est livré avec un simple logiciel graphique d'édition, appelé AgenaEdit, qui intègre un environnement Agena intégré et des capacités de mise en évidence de la syntaxe. Il est fortement inspiré par un éditeur similaire développé par Bill Spitzak pour la boîte à outils FLTK C ++ GUI.


Fonctionne sur Raspberry Pi

Les capacités graphiques d'Agena sont supportées sur les systèmes d'exploitation GNU / Linux, Solaris, Mac OS X, Microsoft Windows, eComStation - OS / 2 et DOS. Il peut être facilement déployé sur des plates-formes matérielles 64 bits et 32 ​​bits et a été testé avec succès sur la carte mère Raspberry Pi basée sur ARM.

Quoi de neuf cette version:

  • nouvelle fonction Calcul et statistiques

Quoi de neuf dans la version:

  • nouvelle fonction Calcul et statistiques

Quoi de neuf dans la version 2.9.4:

  • nouvelle fonction Calcul et statistiques

Quoi de neuf dans la version 2.8.5:

  • nouvelle fonction Calcul et statistiques

Quoi de neuf dans la version 2.8.2:

  • nouvelle fonction Calcul et statistiques

Quoi de neuf dans la version 2.6.1:

  • `stats.chauvenet` peut maintenant vérifier spécifiquement les valeurs aberrantes inférieures ou supérieures en passant l'option `outlier = 'lower'` ou` outlier =' upper'`, respectivement.
  • `bags.remove` a causé des fautes de segmentation. Cela a été corrigé. De plus, toutes les fonctions `bags` implémentées en C ont été modifiées en interne.
  • Les métaméthodes (non documentées) pour `+ ',` -` et `*` ne fonctionnaient pas si le paquet `bags` n'avait pas été invoqué avec la fonction` with` ou l'instruction `import / alias`. Cela a été corrigé.

Nouveautés dans la version 2.5.4:

  • `stats.chauvenet` peut maintenant vérifier spécifiquement les valeurs aberrantes inférieures ou supérieures en passant respectivement l'option` outlier = 'lower'` ou `outlier =' upper'`.
  • `bags.remove` a causé des fautes de segmentation. Cela a été corrigé. De plus, toutes les fonctions `bags` implémentées en C ont été modifiées en interne.
  • Les métaméthodes (non documentées) pour `+ ',` -` et `*` ne fonctionnaient pas si le paquet `bags` n'avait pas été invoqué avec la fonction` with` ou l'instruction `import / alias`. Cela a été corrigé.

Quoi de neuf dans la version 2.5.3:

  • `stats.chauvenet` peut maintenant vérifier spécifiquement les valeurs aberrantes inférieures ou supérieures en passant l'option `outlier = 'lower'` ou` outlier =' upper'`, respectivement.
  • `bags.remove` a causé des fautes de segmentation. Cela a été corrigé. De plus, toutes les fonctions `bags` implémentées en C ont été modifiées en interne.
  • Les métaméthodes (non documentées) pour `+ ',` -` et `*` ne fonctionnaient pas si le paquet `bags` n'avait pas été invoqué avec la fonction` with` ou l'instruction `import / alias`. Cela a été corrigé.

Quoi de neuf dans la version 2.4.2:

  • `stats.chauvenet` peut maintenant vérifier spécifiquement les valeurs aberrantes inférieures ou supérieures en passant respectivement l'option` outlier = 'lower'` ou `outlier =' upper'`.
  • `bags.remove` a causé des fautes de segmentation. Cela a été corrigé. De plus, toutes les fonctions `bags` implémentées en C ont été modifiées en interne.
  • Les métaméthodes (non documentées) pour `+ ',` -` et `*` ne fonctionnaient pas si le paquet `bags` n'avait pas été invoqué avec la fonction` with` ou l'instruction `import / alias`. Cela a été corrigé.

Nouveautés dans la version 2.3.0 RC1:

  • Les boucles numériques `for` prennent désormais en charge le mot clé` downto ', de sorte que vous pouvez compter à rebours sans utiliser une taille de pas négative obligatoire `by`. Dans le contexte "downto", la taille de pas "by" doit toujours être positive. les valeurs `from 'start et` to' stop sont obligatoires lors de l'utilisation du mot clé `downto '.
  • Les métaméthodes '__finite', '__entier' et '__sqrt' ne sont plus supportées. Au lieu de cela, trois nouveaux métathodes ont été ajoutés pour les opérations sur les structures: «union» pour les opérations syndicales, «__intersect» pour déterminer les intersections et «minus» pour les différences. Ainsi, le paquet `bags` prend désormais en charge ces trois opérations.
  • L'opérateur de division `` integer '' ne supportait pas son métaméthode et utilisait celui de la divison float (opérateur `/`) à la place. Cela a été corrigé.
  • La nouvelle fonction `stats.gini` détermine le coefficient de Gini, une mesure de (in) égalité.
  • La nouvelle fonction `stats.zscore` renvoie une fonction calculant le z-score (score standard) d'un échantillon - le nombre d'écarts-types que l'échantillon est supérieur ou inférieur à la moyenne d'une distribution.
  • `stats.sorted` utilise par défaut l'algorithme Introsort au lieu de Quicksort. Cela peut accélérer le temps de calcul trois fois dans des situations mal conditionnées (où Quicksort aurait besoin d'opérations O (n ^ 2)), sans pour autant sacrifier la performance dans des situations ordinaires. En fait, Introsort utilise Quicksort par défaut, puis passe automatiquement à Heapsort si la profondeur de récursivité atteint 2 * log (n, 2), où n est le nombre d'éléments dans une structure.
  • Vous pouvez remplacer cette logique en passant la nouvelle option 'quicksort' qui utilise uniquement la méthode de Quicksort récursive traditionnelle pour trier les nombres. En outre, `stats.sorted` peut également utiliser l'algorithme Heapsort uniquement si la nouvelle option 'heapsort' est passée, et un algorithme Quicksort non récursif conçu par Niklaus Wirth avec la nouvelle option 'nrquicksort'.
  • La nouvelle fonction `stats.meanmed` renvoie à la fois la moyenne arithmétique et la médiane d'une distribution, ou bien le quotient de la moyenne et de la médiane, accélérant les temps de calcul lorsque ces valeurs sont nécessaires d'environ 20%. li>
  • Amélioration du message d'erreur de l'opérateur `size`.

Nouveautés dans la version 2.1.1:

  • Nouvelles fonctions et correctifs:
  • `try / catch`: spécification explicite d'une variable d'erreur juste après que le jeton` catch` est maintenant optionnel. Si aucune variable d'erreur n'est donnée, le message d'erreur est automatiquement stocké dans la variable locale 'lasterror`, et le mot-clé `then` doit être omis:
  • & gt; essayez
  • & gt; erreur ('oups!')
  • & gt; attraper
  • & gt; print (lasterror)
  • & gt; yrt;
  • Oups!
  • L'instruction `try / catch` ne fonctionnait parfois pas dans les procédures (variable d'erreur non affectée). Cela a été corrigé.
  • La nouvelle fonction `net.wget` télécharge des pages HTML à partir du Web.
  • Accordé `skycrane.counter` de 10%. La fonction applique maintenant optionnellement le Kahan-Ozawa à la place de l'algorithme original de sommation de Kahan si le nouveau troisième argument est la chaîne 'ozawa'. Les sources C correspondantes ont été modifiées pour empêcher l'optimisation du compilateur, ce qui pourrait également annuler les optimisations.
  • `argerror` imprime maintenant le nom de type défini par l'utilisateur d'une valeur reçue dans son message d'erreur. Si une valeur n'a pas de type défini par l'utilisateur, alors son type de base est émis.
  • La nouvelle option 'a' de `debug.getinfo` renvoie le nombre d'arguments attendus par une procédure, grâce à LuaPowerPatch de Rob Hoelz.
  • Amélioration du message d'erreur "index out-of-range`" pour les chaînes.
  • Modifié les fichiers `stats.agn`,` linalg.agn`, `library.agn`, et` ansi.agn` en ce qui concerne la gestion des erreurs.

Nouveautés dans la version 2.1.0:

  • Pour un nouveau type de gestion des erreurs, la nouvelle instruction `try / catch` a été introduite. Il a été inventé et écrit par Hu Qiwei pour Lua 5.1 en 2008.
  • En général, toutes les instructions pour lesquelles une exception peut être attendue peuvent être placées dans une clause `try`. Si une erreur est générée par un appel explicite à la fonction `error` ou à toute autre expression, fonction ou instruction, le contrôle saute immédiatement à la clause` catch` correspondante si elle est présente ou à la fin de `try / yrt `statement si aucune clause` catch` n'a été donnée, ignorant les autres instructions suivantes dans la clause `try`.
  • Les fonctions de gestion des erreurs `protect / lasterror` sont toujours et seront toujours supportées. La nouvelle instruction de contrôle fonctionne également parfaitement avec les instructions break, skip, redo et return.
  • La nouvelle instruction `redo` redémarre l'itération en cours d'une boucle` for / to` et `for / in` depuis le début.
  • Le nouvel opérateur `recip` renvoie l'inverse d'un nombre x. C'est équivalent à l'expression 1 / x, mais plus rapide.
  • La nouvelle fonction `stats.ema` calcule la moyenne mobile exponentielle d'une distribution. La nouvelle fonction `stats.gema` renvoie une fonction d'itérateur retournant la moyenne mobile exponentielle respective d'une distribution.
  • `*%`, `+%`, et `-%` renvoyaient `undefined` au lieu d'un résultat correct si leur opérande droit avait été nul. Cela a été corrigé.
  • Correction d'un message d'erreur dans `net.survey`.
  • Messages d'erreur améliorés pour l'indexation hors pair des paires et des chaînes.
  • Dans les versions ANSI, Solaris et DOS, l'opérateur `int` a été accordé.
  • La nouvelle fonction de l'API C `agn_arraytoseq` convertit un tableau numérique en une séquence et pousse cette nouvelle séquence au sommet de la pile.
  • Mise à jour du manuel.

Nouveautés dans la version 2.1.0 RC:

  • La nouvelle instruction `redo` redémarre l'itération en cours d'une boucle` for / to` et `for / in` depuis le début. Exemple:
  • & gt; flag: = true; & gt; pour j dans [10, 11, 12] faites & gt; imprimer ('avant', j, drapeau); & gt; si flag et j = 11 alors & gt; effacer le drapeau; & gt; print ('- & gt;', j, flag, 'reculer') & gt; refaire & gt; Fi; & gt; imprimer ('après', j, drapeau) & gt; jusqu'à j & gt; 12; avant 10 vrai après 10 vrai avant 11 vrai - & gt; 11 false revient en arrière avant 11 false après 11 false avant 12 false après 12 false
  • Le nouvel opérateur `recip` renvoie l'inverse d'un nombre x. C'est équivalent à l'expression 1 / x, mais plus rapide.
  • La nouvelle fonction `stats.ema` calcule la moyenne mobile exponentielle d'une distribution. La nouvelle fonction `stats.gema` renvoie une fonction d'itérateur retournant la moyenne mobile exponentielle respective d'une distribution. Pour son utilisation, jetez un oeil dans le fichier source src / stats.c, C fonctions * ema.
  • `*%`, `+%`, et `-%` renvoyaient `undefined` au lieu d'un résultat correct si leur opérande droit avait été nul. Cela a été corrigé.
  • Correction d'un message d'erreur dans `net.survey`.
  • La nouvelle fonction de l'API C `agn_arraytoseq` convertit un tableau numérique en une séquence et pousse cette nouvelle séquence au sommet de la pile.

Nouveautés dans la version 2.0.0:

  • Nouvelles instructions et fonctions:
  • Agena 2.0 est compatible avec Agena 1.12, sauf que les jetons `import`,` alias`, `until` et` onsuccess` sont maintenant des mots-clés et ne peuvent plus être utilisés comme variables. Actuellement, il existe des programmes d'installation Solaris, Debian (x86, PowerPC, Raspberry Pi), Windows, Mac et DOS disponibles pour la version 2.0, y compris une mise à jour et une référence qui explique toutes les nouvelles fonctionnalités en détail.
  • Les nouvelles variantes de boucle `for / as` et` for / until` vérifient une condition à la fin de l'itération en cours et commencent l'itération suivante ou quittent la boucle. Cela fonctionne à la fois avec les boucles `for / to`, ainsi qu'avec` for / in`. En effet, les deux variantes exécutent une boucle au moins une fois jusqu'à ce que la condition donnée soit vérifiée.
  • Exemples:
  • & gt; pour i à 5 faire
  • & gt; imprimer (i)
  • & gt; comme je & lt; 3
  • & gt; pour moi dans [1, 2, 3, 4, 5] faire
  • & gt; imprimer (i)
  • & gt; jusqu'à ce que je & gt; = 3
  • La nouvelle boucle `do / until` itère jusqu'à ce qu'une condition soit remplie:
  • & gt; c: = 0;
  • & gt; fais
  • & gt; inc c;
  • & gt; print (c)
  • & gt; jusqu'à ce que c & gt; = 3
  • Dans les boucles numériques `for`, la clause` to` ne peut plus être donnée. Au lieu de cela, en omettant la clause `to`, la boucle se répète jusqu'à ce que le plus grand nombre représentable sur votre plate-forme, dans C HUGE_VAL, soit atteint:
  • & gt; car je fais
  • & gt; imprimer (i)
  • & gt; od
  • La nouvelle clause `onsuccess` dans les instructions` if` et `case` exécute un fragment si au moins l'une des conditions est vraie. Exemples:
  • & gt; flag: = false;
  • & gt; si 1 = 0 alors
  • & gt; print (0)
  • & gt; elif 1 = 1 puis
  • & gt; imprimer (1)
  • & gt; en échec
  • & gt; flag: = true
  • & gt; D'autre
  • & gt; print (-1)
  • & gt; fi;
  • & gt; imprimer (drapeau);
  • vrai
  • & gt; flag: = false;
  • & gt; si 1 = 0 alors
  • & gt; print (0)
  • & gt; elif 1 = 0 alors
  • & gt; imprimer (1)
  • & gt; en échec
  • & gt; flag: = true
  • & gt; D'autre
  • & gt; print (-1)
  • & gt; fi;
  • & gt; imprimer (drapeau);
  • faux
  • & gt; flag: = false;
  • & gt; a: = 2;
  • & gt; cas a
  • & gt; de 1 alors
  • & gt; imprimer (1)
  • & gt; de 2 alors
  • & gt; print (2)
  • & gt; en échec
  • & gt; flag: = true
  • & gt; D'autre
  • & gt; print (-1)
  • & gt; esac;
  • & gt; imprimer (drapeau);
  • vrai
  • La nouvelle instruction `import` permet d'importer une ou plusieurs bibliothèques sans mettre leurs noms entre guillemets, par ex. "import calc, stats" est équivalent à "readlib ('calc', 'stats')".
  • L'option `alias` de l'instruction` import` affecte un ou plusieurs noms abrégés aux fonctions de la bibliothèque initialisées, par ex. "import calc alias xpdiff" est équivalent à "with ('calc', 'xpdiff')", et "import calc alias" est équivalent à "with ('calc')".
  • Le nouvel opérateur `..` permet d'indexer des tables même si son opérande de gauche évalue à 'null`. Dans ce cas, `null` est renvoyé et aucune erreur de tentative d'indexation de champ ... (une valeur nulle)` n'est émise. Il est similaire à la fonction `getentry` mais est trois fois plus rapide. Exemples:
  • & gt; créer une table a;
  • & gt; a.b:
  • null
  • & gt; a.cb:
  • Erreur dans stdin, à la ligne 1:
  • tente d'indexer le champ `b` (une valeur nulle)
  • & gt; a..b..c:
  • null
  • & gt; créer une table a;
  • & gt; a [1]:
  • null
  • & gt; a [1] [2]:
  • Erreur dans stdin, à la ligne 1:
  • tente d'indexer le champ `?` (une valeur nulle)
  • & gt; a .. [1] .. [2]:
  • null
  • La nouvelle fonction `drem` évalue le reste d'une division entière x / y, mais contrairement à` irem`, arrondit le quotient interne x / y à l'entier le plus proche au lieu de zéro.
  • La nouvelle fonction `skycrane.todate` renvoie la date et l'heure actuelles sous la forme d'une chaîne formatée.
  • La nouvelle fonction `io.truncate` tronque un fichier à la position actuelle du fichier.
  • La nouvelle fonction `io.move` change la position du fichier d'un certain nombre de caractères à gauche ou à droite.
  • La nouvelle fonction `io.filesize` renvoie la taille d'un fichier.
  • `readlib` accepte maintenant les chaînes comme arguments, seulement. Les chiffres ne sont plus autorisés.
  • Si le dernier argument de `with 'est le booléen` false`, alors la fonction n'écrit pas de noms courts assignés à la console (stdout).
  • `strings.fields` accepte maintenant aussi une séquence de nombres d'index. Cependant, il n'accepte plus l'index `0`.
  • L'installateur Wheezy Debian de Raspberry Pi inclut maintenant le paquet graphique `gdi`.
  • Le fichier `change.log` est maintenant correctement affiché dans Windows.

Nouveautés dans la version 2.0.0 RC3:

  • Les nouvelles variantes de boucle `for / as` et` for / until` vérifient une condition à la fin de l'itération en cours et commencent l'itération suivante ou quittent la boucle. Cela fonctionne à la fois pour / pour, ainsi que pour / dans les boucles.

Nouveautés dans la version 2.0.0 RC2:

  • Les nouvelles variantes de boucle `for / as` et` for / until` vérifient une condition à la fin de l'itération en cours et commencent l'itération suivante ou laissent une boucle. Cela fonctionne à la fois pour / pour, ainsi que pour / dans les boucles.

Nouveautés dans la version 2.0.0 RC1:

  • La nouvelle instruction `import` permet d'importer une ou plusieurs bibliothèques sans mettre leurs noms entre guillemets, par ex. "import calc, stats" est équivalent à "readlib ('calc', 'stats')".
  • L'option `alias` de l'instruction` import` affecte un ou plusieurs noms abrégés aux fonctions de la bibliothèque initialisées, par ex. "import calc alias xpdiff" est équivalent à "with ('calc', 'xpdiff')", et "import calc alias" est équivalent à "with ('calc')".
  • Le nouvel opérateur `..` permet d'indexer des tables même si son opérande de gauche évalue à 'null`. Dans ce cas, `null` est renvoyé et aucune erreur de tentative d'indexation de champ ... (une valeur nulle)` n'est émise. Il est similaire à la fonction `getentry` mais est trois fois plus rapide.

Nouveautés dans la version 1.12.9:

  • Les nouvelles fonctions `io.getclip` et` io.putclip` échangent des textes entre Agena et le presse-papiers (Windows seulement).
  • `stats.prange` a été réécrit en C et est devenu jusqu'à 60% plus rapide.
  • `os.cpuinfo` renvoie maintenant des informations correctes et plus sur les systèmes ARM.
  • Dans les systèmes DOS et UNIX incluant Mac OS X et seulement dans le domaine complexe, l'exponentiation de la base 0 à l'exposant 0 + r * I, avec r tout flottant non nul, renvoyait `undefined` au lieu de 0. Cela a été corrigé.
  • Dans les systèmes DOS et UNIX incluant Mac OS X et seulement dans le domaine complexe, l'exponentiation de la base 0 à l'exposant r + 0 * I, avec r n'importe quel flottant positif, renvoyait `undefined` au lieu de 0. Cela a été corrigé.
  • `stats.obcount` et` stats.obpart` n'ont pas pu inclure de valeurs dans le sous-intervalle le plus à droite. Cela a été corrigé.
  • `calc.nakspline`,` calc.naksplinecoeffs`, `calc_clampedspline` et` calc_clampedsplinecoeffs` provoquaient des fautes de segmentation si elles étaient appelées avec une structure contenant trop peu de points, c'est-à-dire des paires. Cela a été corrigé en retournant `fail` dans ces cas.
  • Des erreurs potentielles de désallocation de mémoire ont été supprimées de `calc.neville`,` calc.interp`, `calc.newtoncoeffs`,` calc.naksplinecoeffs`, `calc.clampedsplinecoeffs`,` calc.nakspline`, et `calc.clampedspline`.
  • La nouvelle fonction de l'API C `agn_checkinteger` vérifie si un argument est un nombre et un entier et - contrairement à` luaL_checkinteger` - émet une erreur sinon.

Nouveautés dans la version 1.9.0:

  • La nouvelle fonction `alternate` renvoie son premier argument si son second argument est` null`. Sinon, il renvoie son deuxième argument.
  • L'option -b de l'exécutable Agena a été supprimée car sa sortie était identique à l'option -v.
  • Les versions Windows et UNIX / Mac de `strings.utf8size` contenaient une fuite de mémoire potentielle; Cela a été changé.
  • Toutes les DLL / SO binaires des bibliothèques plus ne contiennent plus de code inutilisé, leur taille pouvant atteindre 10%, selon le système d'exploitation. Le makefile et les sources qui importaient auparavant des fichiers d'en-tête inutilisés ont été modifiés. Par exemple, cela réduit la taille des binaires Windows de 55 Ko.
  • Extension de la suite de tests.
  • Mise à jour des fichiers du schéma.

Nouveautés dans la version 1.6.0:

  • Nouvelles fonctions et fonctionnalités:
  • La nouvelle fonction `checktype` détermine si toutes les valeurs d'une structure sont d'un type donné.
  • La nouvelle fonction `isint` vérifie si tous ses arguments sont des entiers.
  • La nouvelle fonction `strings.dleven` renvoie la distance Damerau-Levenshtein de deux chaînes.
  • La nouvelle fonction `stats.ad` détermine l'écart absolu de toutes les valeurs dans une structure.
  • La nouvelle fonction `stats.countentries` compte le nombre d'occurrences de tous les éléments d'une structure.
  • La nouvelle fonction `stats.deltalist` renvoie une structure des deltas des éléments voisins respectifs.
  • La nouvelle fonction `stats.gmean` renvoie la moyenne géométrique d'une structure.
  • La nouvelle fonction `stats.hmean` renvoie la moyenne harmonique d'une structure.
  • La nouvelle fonction `stats.ios` renvoie un indicateur prouvé sur la stabilité dans une distribution.
  • La nouvelle fonction `stats.iqr` renvoie la plage interquartile.
  • La nouvelle fonction `stats.issorted` vérifie si tous les nombres d'une structure sont triés par ordre croissant.
  • La nouvelle fonction `stats.moment` calcule le moment des données données sur une origine.
  • La nouvelle fonction `stats.numbperm` renvoie le nombre de permutations.
  • La nouvelle fonction `stats.percentile` détermine les centiles.
  • La nouvelle fonction `stats.skewness` renvoie l'asymétrie, un indicateur de la symétrie d'une distribution de probabilité.
  • La nouvelle fonction `stats.sumdata` résume tous les pouvoirs d'une structure sur une origine.
  • `stats.tovals` est maintenant une fonction de la bibliothèque C et est ainsi 40% plus rapide.
  • Avec une table ou une séquence vide, `stats.qmean`,` stats.mean`, `stats.gmean`,` stats.sd`, `stats.median`,
  • `stats.var` renvoie maintenant l'échec.
  • La longueur maximale d'une ligne de saisie dans l'interpréteur autonome a été modifiée de 512 à 2048 caractères.
  • La nouvelle variable d'environnement `environ.maxpathlength` stocke le nombre maximal de caractères pour un chemin de fichier (à l'exclusion du caractère C).
  • Les nouvelles variables d'environnement `environ.minnumber` et` environ.maxnumber` contiennent les valeurs minimale et maximale qu'un nombre Agena (actuellement un double ANSI-C) peut stocker.
  • La nouvelle variable d'environnement `environn.umaxlong` comprend la valeur intégrale maximale du type C non signé long sur les systèmes 32 bits, et non signé long sur les machines 16 bits.
  • API C:
  • La compatibilité à 100% de l'API C d'Agena avec l'API C de Lua a été rétablie en introduisant les fonctions de vidage de Lua *. Ainsi, vous êtes maintenant capable de stocker des fonctions dans une représentation binaire, par ex. en utilisant `strings.dump` ou lua_dump au niveau C.
  • Introduit la nouvelle fonction `agnL_optboolean` pour vérifier les arguments booléens optionnels et les retourner en cas de succès.
  • Corrections de bugs:
  • `environn.globals` quitte toujours avec une erreur, cela a été corrigé.
  • `assume` a renvoyé false avec ses deux arguments étant ou évaluant 'non défini'. Il retourne maintenant vrai dans ce cas.
  • Agena s'est écrasé en passant une table vide et un délimiteur à `join '- ceci a été corrigé.
  • L'option `colour` n'est plus ignorée par` gdi.plot`.
  • Avec les tables, `stats.minmax` a renvoyé une valeur incorrecte pour le minimum. Cela fonctionne maintenant correctement.
  • Avec une table vide, `stats.median` a retourné 0, maintenant il retourne fail.
  • Contrairement à la documentation, `strings.isending` a renvoyé 'true' avec les deux chaînes étant égales. Cela a été corrigé.
  • `run` a retourné` could not open file` si un script Agena existant comportait une erreur de syntaxe. Cela a été corrigé en réécrivant complètement la fonction.
  • Ajout du correctif 9 de Lua 5.1.4: "Génération de code incorrecte pour certaines expressions booléennes particulières [par exemple complexes]."
  • Ajout du patch 11 de Lua 5.1.4: "L'analyseur peut collecter un prototype en le construisant."
  • * Info: En ajoutant Lua 5.1.4 patch 10, "[__write / __ nouveau] index metamethod peut ne pas fonctionner si metatable est son propre metatable", Agena n'est pas nécessaire, car Agena fonctionne déjà correctement dans ce cas.
  • Suppression du mot clé non utilisé `default`.
  • Un durcissement des fonctions et des fonctionnalités.
  • Améliorations:
  • Ajout d'une version expérimentale de `io.anykey` à la version Mac. Cependant, au moins sur Lion, la touche appuyée est parfois répercutée sur le shell.
  • `utils.readcsv` peut maintenant retourner toutes les valeurs dans un fichier CSV dans une séquence plate.
  • Le paquet `clock` supporte maintenant l'opérateur de division` / `en l'ajoutant à la métatable de son opérateur` tm`.
  • Le comportement de `with 'a été modifié car il ne pouvait pas attribuer de noms courts à de nombreuses fonctions de la bibliothèque: Si des fonctions ont été placées dans la table .aux, n'attribuez pas de noms courts à ces noms de fonctions; sinon attribuez des noms courts pour toutes les autres fonctions du package. Ainsi: `package.register` pour enregistrer toutes les fonctions de la bibliothèque pour` with` pour assigner des noms courts, n'est plus nécessaire. Il sera déconseillé dans l'une des versions suivantes.
  • Amélioration de la suite de tests.
  • Manuel:
  • Amélioration du manuel et de l'index.
  • Cohérence:
  • Pour tous les renomings suivants, les anciens noms de variables suivants sont toujours pris en charge.
  • `environn.MinLong` a été renommé` environ.minlong`.
  • `environ.MaxLong` a été renommé en` environ.maxlong`.
  • `environn.BufferSize` a été renommé en` environ.buffersize`.
  • `environ.PathSep` a été renommé` `env.pathsep``.
  • `environn.More` a été renommé en` environ.more`.
  • `envir.WithProtected` a été renommé en` environ.withprotected`.
  • `environ.Os` a été renommé en` environ.os`.
  • `environ.Cpu` a été renommé` environ.cpu`.
  • `environ.Release` a été renommé` `environ.release``.
  • `environnement.GdiDefaultOptions` a été renommé en` environnement.gdidefaultoptions`.
  • Dans Windows, `os.login` et` os.computername` renvoient 'fail' comme le font les versions UNIX ou OS / 2.
  • Le commutateur `-DCOMPAT13` a finalement été retiré pour compiler une version conforme d'Agena 1.3.x.
  • Autre:
  • Le fichier `calc.fseq` obsolète a été supprimé. Veuillez utiliser `nseq` à la place.

Nouveautés dans la version 1.5.1:

  • Patch `strings.fields` qui ne fonctionnait pas du tout. En outre, il a été converti en une fonction de bibliothèque C et est donc 2,6 fois plus rapide.
  • `strings.words` accepte maintenant un troisième argument, s'il est défini sur` true`, les délimiteurs suivants sont ignorés.
  • Suppression d'une fuite de sécurité possible de `io.write` et` io.writeline` et amélioration de ses messages d'erreur.
  • Patché `binio.readchar` pour éviter les problèmes avec les fichiers de taille supérieure à 2 Go.
  • Messages d'erreur corrigés des fonctions `xbase.purge`,` xbase.readvalue`, `xbase.purge`,` ads.getvalues`, `binio.readshortstring`,` os.computername`, `os.login`, `os.fattrib`,` environ.kernel`, `paquet.register`.
  • Les téraoctets peuvent maintenant être entrés avec la notation T, où est un entier, et T est le caractère `T`. De même, g dénote des milliards, et t trillions. Voir la page 48 du manuel pour plus d'informations.
  • Mise à jour du manuel.
  • La plupart des commutateurs de compatibilité descendante dans le code source C ont été supprimés pour des raisons de nettoyage du code. Cela n'affecte que ceux qui tentent de recompiler Agena 1.5 ou plus avec une compatibilité ascendante complète avec Agena 1.3 et 1.4, et avec la plus grande compatibilité ascendante avec Lua 5.0 (à l'exception de la gestion des anciennes bibliothèques Lua 5.0).

Nouveautés dans la version 1.5.0:

  • `map` peut maintenant aussi traiter les chaînes données comme second argument. La fonction respective et ses arguments sont appliqués de façon consécutive à chaque caractère de gauche à droite, et le résultat est renvoyé dans une séquence.
  • `run`: Si vous voulez charger et exécuter du code à partir de fichiers avec un suffixe 'agn', vous n'avez plus besoin de spécifier le suffixe dans l'argument. Donc 'lancer' test 'et' lancer 'test.agn'` sont maintenant les mêmes.
  • Le mot-clé `is` est maintenant obligatoire pour définir les procédures. (Avec GCC, utilisez le commutateur -DCOMPAT14 pour compiler une version d'Agena où le mot-clé `is` est toujours facultatif.)
  • L'instruction `try` a été dépréciée et n'est plus supportée. (Avec GCC, utilisez le commutateur -DCOMPAT14 pour compiler une version d'Agena qui contient toujours cette instruction.)
  • Les fonctions `utils` suivantes ont été supprimées:` arraysize`, `getarray`,` getwholearray`, `newarray`,` searcharray`, `setarray`. Pour des raisons de compatibilité descendante, ils ont été ajoutés au fichier lib / compat.agn. (Avec GCC, utilisez le commutateur -DCOMPAT14 pour compiler une version d'Agena qui supporte toujours les fonctions utils d'origine.)
  • `utils.singlesubs` a été complètement réécrit. Il attend maintenant une séquence de nombres comme second argument au lieu de l'ancienne structure stringarray userdata. Il est 35% plus lent que l'ancienne version, mais la suppression de la structure stringarray était plus importante.
  • `strings.include` a planté s'il est appelé avec 0 comme deuxième argument. Cela a été corrigé.
  • Appliqué le correctif du 10 mai 2011 de Michael G. Schwern à ses fonctions auxiliaires de date `32 bits-Année 2038-Fix` utilisées par les paquets` os` et `xbase` (` Make mktime64 () corrige la structure tm entrante comme ISO C l'exige. »)
  • Optimisation du code interne: certaines fonctions d'initialisation de bibliothèque et de chargement de fichier C utilisaient la pile pour créer des chaînes de chemin et de nom de fichier. La nouvelle fonction C aux aux `concat` écrite par Solar Designer est maintenant utilisée à la place dans de nombreux cas.
  • L'API Agena C est maintenant 100% compatible avec l'API Lua C pour faciliter le portage des paquets C Lua vers Agena.
  • Les fonctions suivantes ont donc été renommées: lua_isnumber - & gt; agn_isnumber, lua_isstring - & gt; agn_isstring, luaL_optnumber - & gt; agnL_optnumber, luaL_checknumber - & gt; agnL_checknumber, luaL_optnumber - & gt; agnL_optnumber, luaL_checkinteger - & gt; agnL_checkinteger, luaL_optinteger - & gt; agnL_optinteger.
  • Les macros suivantes ont été renommées: luaL_checkint - & gt; agnL_checkint, luaL_optint - & gt; agnL_optint.
  • Contrairement à l'ancienne implémentation d'Agena, lua_tonumber renvoie maintenant 0 comme dans Lua dans le cas où un non-nombre a été passé, au lieu de retourner HUGE_VAL.
  • lua_setglobal2 a été retiré. Utilisez plutôt lua_pushvalue et lua_setglobal.

Nouveautés dans la version 1.4.2:

  • Si dans la liste de paramètres d'une procédure, des types définis par l'utilisateur ont été spécifiés, dans
  • appels de procédure aucune erreur n'a été émise et la procédure a été exécutée à la place, dans les cas suivants:
  • a) une table, un ensemble, une séquence, une paire ou une procédure - sans être défini par l'utilisateur
  • type - a été passé,
  • b) aucune valeur n'a été transmise pour le paramètre concerné.

Nouveautés dans la version 1.4.1:

  • Les noms courts pour `stats.quartiles` et` stats.mode` n'ont pas pu être assignés par la fonction `with`. Cela a été corrigé.
  • Par erreur, `with 'n'a pas pu attribuer un nom court à` gdi.settriangle`. Cela a été changé.
  • La gestion des erreurs de `calc.polygen` a été améliorée.
  • Amélioration du message d'erreur de `fractals.draw` pour les fichiers de carte FRACTINT manquants.
  • Suppression de la fonction `strings.rseek` dépréciée. Pour des raisons de compatibilité descendante, `strings.seek` a été ajouté au fichier lib / compat.agn.
  • Ajout du commutateur -d pour imprimer les informations de débogage lors du démarrage de l'interpréteur.
  • La version Windows d'Agena a maintenant été compilée avec GCC 4.5.2.
  • Mise à jour des fichiers de schéma de langue.
  • Le manuel a été mis à jour.

Nouveautés dans la version 1.4.0:

  • Modifications sémantiques:
  • Les variables de contrôle de boucle des boucles numériques `for / to` sont maintenant automatiquement locales à leurs blocs environnants au lieu de leurs corps de boucle (internes). Si une variable locale portant le même nom que la variable de contrôle de boucle a été déclarée et affectée avant
  • exécute une boucle numérique, elle est écrasée par la dernière valeur d'itération de la boucle. En tant que tel, le commutateur `external` dans les boucles numériques` for` n'est plus accepté. (Avec GCC, utilisez le commutateur -DCOMPAT13 pour compiler une version d'Agena qui reconnaît encore mais ignore le mot clé `external`.)
  • Avec la constante `fail`,` not` renvoyait `true`, mais avec` fail` assigné à une variable, `not` renvoyait false. Cela a été changé, à savoir 'a: = fail; not (a) 'renvoie maintenant `true`.
  • `stats.median` renvoie maintenant` fail` au lieu de 0 si la structure donnée est vide.
  • `utils.readcsv`: Si un seul espace blanc est passé avec l'option` delim` et si l'option `ignorespaces` n'a pas été donnée, les espaces blancs ne sont pas supprimés automatiquement avant de diviser chaque ligne du fichier en ses mots.
  • La fonction a également deux nouvelles options: `header` qui marque la première ligne d'un fichier, et` output` qui permet de stocker le contenu du fichier dans un dictionnaire avec ses noms de champs définis par l'en-tête du fichier. / li>
  • La notation de sous-chaîne `$` n'est plus supportée. (Avec GCC, utilisez le commutateur-DCOMPAT13 pour compiler une version d'Agena qui supporte toujours l'opérateur `$`.)
  • Extensions:
  • Des boucles infinies do / od ont été ajoutées. Ce type de boucle itère infiniment et ne peut être interrompu qu'avec les instructions `break` ou` return`. Ils sont le sucre syntaxique pour `alors que vrai faire ... od` boucles.
  • Avec les tables, `stats.minmax` fonctionnait uniquement avec les tableaux. Cela a été changé, c'est-à-dire que des valeurs avec des clés non positives correspondantes (par exemple des chaînes, des entiers non positifs, des flottants négatifs et positifs, etc.) sont maintenant correctement reconnues dans l'évaluation.
  • `stats.mean`,` stats.qmean`, `stats.sd`, et` stats.var` traitent maintenant des séquences.
  • La nouvelle fonction `stats.mode` renvoie toutes les valeurs dans une séquence ou une table avec le plus grand nombre d'occurrence, c'est-à-dire la fréquence la plus élevée.
  • La nouvelle fonction `stats.quartiles` renvoie les premier, deuxième et troisième quartiles d'une table ou d'une séquence _sorted_.
  • Les fonctionnalités non documentées de `linalg.matrix` ont été ajoutées au manuel et sa gestion des erreurs a été améliorée.
  • Amélioration du traitement des erreurs de `linalg.hilbert`.
  • `gdi.setinfo` accepte maintenant l'option` square`. Si `square = false`, alors les axes x et y n'auront pas la même échelle sur les graphes créés avec` gdi.plot`.
  • La fonction `gdi.plot` pour dessiner des graphiques n'a malheureusement pas été documentée. Cela a été changé.
  • `gdi.plot` accepte deux nouvelles options: L'option 'x' spécifie la plage horizontale sur laquelle un tracé est affiché, et l'option 'y' spécifie la plage verticale.
  • Si une structure PLOT est passée à `gdi.plot` qui ne contient que POINT, LINES, RECTANGLES, TRIANGLE, CIRCLE et ELLIPSE (y compris leurs variantes * FILLED), alors` gdi.plot` détermine automatiquement les échelles (` gdi.setinfo` n'a pas nécessairement besoin d'être appelé).
  • Les fonctions de POO héritées de Lua sont maintenant documentées dans l'annexe A9. L'auteur ne recommande pas la programmation orientée objet.
  • Réglage:
  • Ajusté l'opérateur `filled` d'environ 3%.
  • Tweaked `in`,` join`, `sadd`,` qsadd`, `replace`,` copy`, `unique`, et Cantor définissent les opérateurs sur les tables et définissent un bit.
  • Avec les tables, les opérateurs `top` et` bottom` sont maintenant 5% plus rapides maintenant.
  • L'opérateur `size` est au moins 8% plus rapide si une table n'inclut pas les valeurs nulles.
  • `linalg.mzip`,` linalg.mmul`, et `linalg.transpose` ont été réglés d'environ 3% chacun.
  • Les boucles numériques pour / à avec des tailles de pas fractionnaires ont été optimisées en réduisant de moitié le nombre de leurs variables de contrôle. Cependant, cela n'a pas permis d'augmenter la vitesse.
  • Patches:
  • Patché `linalg.ludecomp` pour détecter les matrices singulières. En outre, la fonction peut maintenant déterminer automatiquement l'ordre de la matrice donnée.
  • Contrairement au manuel, `gdi.plot` n'a pas automatiquement déterminé les plages horizontales et verticales. Cela a été corrigé.
  • `gdi.plot` n'ignore plus l'option` square` définie par `gdi.setinfo`.
  • `gdi.setinfo` a ajouté des paramètres aux structures INFO même s'ils étaient déjà présents. Cela a été changé.
  • Les cercles n'ont pas été tracés correctement par `gdi.plot`. Cela a été changé.
  • Dans la plupart des cas, la fonction `gdi.plot` ignorait la coloration individuelle des objets géométriques. Cela a été changé.
  • Le paquet gdi n'a pas assigné de noms courts à `gdi.settriangle`,` gdi.settrianglefilled`, `gdi.setrectangle`, et` gdi.setrectanglefilled`. Cela a été changé.
  • Le paquet fractals n'a pas assigné de noms courts aux fonctions du type 'esctime' défini par l'utilisateur. Cela a été changé. Correction du message d'erreur de `fractals.draw` si les arguments positionnels n'étaient pas des nombres.
  • Divers:
  • La fonctionnalité de `calc.fseq` a été fusionnée dans` nseq`. Pour la rétrocompatibilité, `calc.fseq` fait toujours partie du paquet calc, mais la fonction fait référence à l'implémentation` nseq`.
  • Ajout de la variable `environn.FractScreenUpdates` au paquet` fractals` pour indiquer le nombre de lignes verticales (un entier non négatif) après quoi une fractale sera mise à jour dans une fenêtre. La variable `environ.FractOptimised` a été dépréciée.
  • Les fonctions gdi auxiliaires ont été regroupées.

Nouveautés dans la version 1.3.3:

  • Patches à `instr`:
  • En mode regex, l'opérateur a renvoyé un mauvais résultat si une position de départ a été donnée.
  • En mode de recherche simple, l'opérateur a renvoyé une erreur hors plage si aucune position de départ n'a été donnée.
  • Sauf en mode de recherche inversée, si aucune correspondance n'a été trouvée, le premier argument a été retourné au lieu de `null`.
  • Correction du message d'erreur de l'instruction `create` par rapport aux séquences.
  • Dans AgenaEdit, lors de la sortie de plus d'une structure avec un seul appel à `print`, les structures n'étaient pas imprimées en pleine forme si la première structure comportait une métaméthode __tostring. Cela a été changé.

Nouveautés dans la version 1.3.2:

  • Cette version inclut des corrections de bogues, des extensions et un manuel amélioré:
  • `dimension` a créé des résultats intéressants si une structure a été passée en tant que
  • initialiser. Cela a été changé: `dimension` crée maintenant des copies indépendantes du
  • structure lors de l'initialisation de la table.
  • La fonctionnalité de `strings.rseek` a été ajoutée à l'opérateur` instr`.
  • Ainsi, `strings.rseek` a été déprécié. Pour la rétrocompatibilité,
  • `strings.rseek` a été ajouté au fichier lib / compat.agn.
  • `strings.hits` supporte maintenant les expressions régulières et les captures. Ce comportement
  • peut être désactivé en passant un booléen comme troisième argument.
  • `strings.isabbrev` et` strings.isending` utilisent maintenant automatiquement une recherche simple
  • si aucune expression ou capture régulière n'a été passée dans le cadre de la seconde
  • argument.
  • Tweaked `strings.ismagic` et` strings.isfloat`.
  • La fonction `log` est maintenant 13% plus rapide.
  • Lors de la sortie de plus d'une structure avec un seul appel à `print`,

  • Les structures
  • n'étaient pas imprimées en entier si la première structure comportait un __tostring
  • métaméthode. Cela a été changé.
  • Ajout de catégorisations de fonctions au chapitre 7 pour faciliter le démarrage de nouvelles
  • utilisateurs.

Nouveautés dans la version 1.3.1:

  • Il y a eu des problèmes avec les appels imbriqués aux opérateurs binaires suivants: `xor`,` atendof`, `& amp; & amp;`, `||`, `^^`, `::`, et `: - `, et donc aussi avec la jolie imprimante qui quitte avec une erreur lors de l'impression de structures imbriquées. Cela a été corrigé.
  • Quatre corrections à `os.list`: Si l'option 'r' a été transmise, le répertoire de travail actuel a été modifié par erreur après la fin de l'appel.
  • Si 'r' n'a pas été passé comme dernier argument, la fonction a émis une erreur.
  • `null` n'a pas été accepté comme premier argument pour désigner le répertoire de travail en cours.
  • Dans Windows 7, l'impression du contenu du répertoire racine ne fonctionnait pas, c'est-à-dire que os.list ('c:') renvoyait le contenu du répertoire de travail en cours.
  • Lorsqu'une chaîne a été indexée avec un non-numéro, par ex. "str [null]", Agena a renvoyé "null". Maintenant, une erreur est soulevée.
  • Si library.agn n'a pas été trouvé, le mauvais chemin a été sorti deux fois dans l'avertissement. Cela a été changé.

Nouveautés dans la version 1.2:

  • L'opérateur de sous-chaîne a été repensé mais l'ancienne version sera toujours disponible jusqu'à Agena 2.0: la nouvelle est: `str [de gauche à droite]`, l'ancienne a été: `str $ (gauche, droite)` . Un exemple: avant: `str: = 'chaîne'; print (str $ (2, 3)) `- & gt; 'tr' maintenant: `str: = 'chaîne'; print (str [2 à 3]) `- & gt; 'tr'
  • Vous pouvez maintenant déterminer les sous-listes de tableaux et de séquences avec la nouvelle syntaxe mentionnée ci-dessus: `s [de gauche à droite]`. Un exemple: maintenant: `a: = [10, 20, 30, 40]; print (a [2 à 3]) `- & gt; [20, 30] maintenant: `a: = seq (10, 20, 30, 40); print (a [2 à 3]) `- & gt; seq (20, 30)
  • La fonction `ops` permet maintenant de spécifier les valeurs à retourner en passant une séquence de leurs positions d'index comme premier argument, par ex. ops (seq (1, -1), 10, 20,
  • 30).
  • La nouvelle fonction `strings.include` insère une séquence de caractères dans une chaîne
  • à une position donnée.
  • Les fonctions suivantes génèrent maintenant une erreur au lieu de retourner simplement `fail` dans
  • cas d'échec: `os.remove`,` os.move`, `os.mkdir`,` os.rmdir`, `os.chdir`.
  • Améliorations des opérateurs suivants travaillant sur des ensembles et des séquences concernant le garbage collection: instruction `insert`,` union`, `intersection`,` minus`, `unique`,` copy`, `pop / top` et les instructions `pop / bottom` et les assignations de jeu.
  • Amélioration du message d'erreur de `fractals.draw` si le fichier de carte couleur FRACTINT n'a pas
  • n'a pas été trouvé.

Quoi de neuf dans la version 1.1.0:

  • Cette version inclut de nouvelles fonctionnalités et un espace de noms nettoyé.
  • Compatibilité avec Agena 1.0:
  • Certaines fonctions ont été supprimées d'Agena et certaines ont été converties en fonctions de paquets (voir ci-dessous). Si vous voulez toujours les utiliser, lancez readlib 'compat' sur la ligne de commande ou placez l'instruction ci-dessus dans votre fichier d'initialisation si vous préférez la compatibilité ascendante avec Agena 1.0.
  • Fonctionnalité étendue:
  • Les instructions `pop / top` et` pop / bottom` et les opérateurs `bottom` et` top` peuvent maintenant être appliqués aux tableaux de tables.
  • Lorsqu'il est appelé avec des arguments `null` ou aucun argument,` os.chdir` ne génère plus d'erreur mais retourne le répertoire de travail courant. Ainsi, l'ancienne fonction C «os.curdir» a été remplacée par une fonction écrite dans la langue d'Agena.
  • `os.list` traverse récursivement les sous-dossiers si la nouvelle option 'r' est donnée.
  • L'opérateur `join` accepte maintenant un délimiteur optionnel et supporte l'option de spécifier le premier et le dernier élément de la structure à concaténer.
  • `instr` peut maintenant chercher à partir de l'extrémité droite d'une chaîne en passant une position négative.
  • Si une table inclut d'autres tables, ensembles, séquences ou paires, `copy` sait maintenant gérer ces références correctement si elles se produisent plusieurs fois: Si une structure incorporée est incluse n fois, alors une copie réelle est faite et n-1 références à cette structure nouvellement créée sont insérées. Avant, n copies indépendantes ont été faites.
  • La nouvelle fonction `isnonposint` vérifie si les nombres donnés sont tous entiers et non positifs.
  • `io.close` peut maintenant fermer plusieurs fichiers avec un seul appel.
  • La fonction `with` n'a pas assigné de noms courts pour les procédures suivantes du package` math`: `convertbase`,` fraction`, `zeroin`,` todecimal`, `lcm`,` gcd`, et ` ndigits`. Cela a été corrigé.
  • La fonction `rwritemode` mentionnée dans le manuel n'existe pas. Il est maintenant disponible mais appelé `rmode`.
  • Les messages d'erreur de diverses fonctions ont été améliorés.
  • Nettoyage de l'espace de noms: fonctions renommées ou déplacées:
  • Les fonctions de la bibliothèque de base `register` et` loadclib` ont été déplacées dans la bibliothèque `package`.
  • Les anciennes fonctions `rdelete`,` rget`, `rinit`,` roinit`, `rmode`,` rset`, `remember`, et` defaults` de la bibliothèque de base ont été déplacées dans le nouveau paquet `rtable`
  • Renommer la table globale _Env en `environ`, qui contient maintenant des procédures pour accéder à l'environnement.
  • Les anciennes variables globales d'environnement `homedir` et` infolevel` ont été renommées respectivement `environ.homedir` et` environ.infolevel`.
  • Les anciennes fonctions suivantes de la bibliothèque de base ont été déplacées dans le paquet `environn`:` anames`, `attrib`,` gc`, `getfenv`,` globals`, `isselfref`,` pointer`, `setfenv` , `used`,` userinfo`, `__RESTART`,` __DOTTYPRINT`.
  • `mapm.xtoNumber` a été renommé en` mapm.xtonumber`, `mapm.xtoString` a été renommé en` mapm.xtostring`. Pour des raisons de compatibilité ascendante, les anciens noms de fonctions peuvent toujours être utilisés en exécutant le fichier lib / compat.agn (d'abord readlib le paquet `mapm`, puis chargez le fichier compat.agn).
  • Fonctions et variables obsolètes:
  • `strings.seek` a été abandonné. Sa fonctionnalité a été ajoutée à l'opérateur `instr`. Pour désactiver le mode d'appariement de `instr`, passez le début de la recherche comme troisième et` true` comme quatrième argument. `instr` est environ 40% plus rapide en mode non-pattern pattern que` strings.seek`. Pour des raisons de compatibilité descendante, `strings.seek` a été ajouté au fichier lib / compat.agn.
  • La fonction de bibliothèque de base `concat` a été supprimée. Utilisez `join` à la place. Pour des raisons de compatibilité ascendante, la première fonction a été ajoutée au fichier lib / compat.agn.
  • Les fonctions `hasrtable` et` hasrotable` ont été supprimées. Pour des raisons de compatibilité descendante, ils ont été ajoutés au fichier lib / compat.agn.
  • La fonction `pcall` a été dépréciée. Utilisez `protect` à la place. Pour des raisons de compatibilité ascendante, la fonction a été ajoutée au fichier lib / compat.agn.
  • La fonction `maptoset` a été dépréciée. Pour des raisons de compatibilité ascendante, la fonction a été ajoutée au fichier lib / compat.agn.
  • La fonction `os.alldirs` a été dépréciée. Utilisez plutôt les options 'dirs' et 'r' dans un appel à `os.list`. Pour des raisons de compatibilité ascendante, la fonction a été ajoutée au fichier lib / compat.agn.
  • `os.isMac`,` os.isSolaris`, `os.isLinux`,` os.isWin`, `os.isOS2`,` os.isDOS`, `os.isHaiku` ont été abandonnés. Veuillez utiliser les nouvelles variables d'environnement environ.Os et environ.Cpu à la place, ce qui accélère également le code. Pour des raisons de compatibilité ascendante, les fonctions ont été ajoutées au fichier lib / compat.agn.
  • La variable _VERSION non documentée a été supprimée. Pour des raisons de compatibilité descendante, son affectation a été ajoutée au fichier lib / compat.agn.
  • Autres modifications:
  • La fonction de l'API C lua_rawsetstringnumber mentionnée dans le manuel n'existe pas. Cela a été changé.
  • Optimisations de code pour l'analyseur.
  • Dans certains paquets, accidentellement quelques variables ont été déclarées implicitement globales. Cela a été corrigé.
  • Fichiers d'exemples d'initialisation corrigés et mis à jour.
  • AgenaEdit a été mis à jour.
  • Les fichiers de schéma de langage ont été mis à jour.
  • Les programmes d'installation de Linux incluent maintenant le paquet xBase.

Nouveautés dans la version 1.0.6:

  • Amélioration des messages d'erreur des opérateurs `join`,` copy` et `filled`, des fonctions` toset`, `toseq` et` totable`, des instructions `insert`,` delete`, `pop`, et des boucles `for`.
  • Avec les séquences, Agena plantait dans la séquence d'événements suivante: 1) une instruction `delete` avait été exécutée, 2) la séquence était vide, et 3) un nouvel élément avait été inséré de nouveau. Cela a été corrigé. (En interne, l'instruction `delete` ne réduit plus en interne la taille des séquences.)
  • Avec de grandes chaînes, `concat` s'est écrasé. Cela a été corrigé.
  • Avec des chaînes de 512 octets et plus, `join` et` replace` pourraient tomber en panne. Cela a été corrigé. Les deux opérateurs sont maintenant aussi beaucoup plus rapides que jamais.
  • `math.isprime` a renvoyé des résultats erronés avec les arguments & gt; 2 ^ 31 (mentionné vaguement dans le manuel). Cela a été corrigé en étendant la plage de l'argument à des entiers avec des valeurs allant jusqu'à +/- 2 ^ 63.
  • `math.nextprime` et` math.prevprime` avaient le même problème avec des arguments plus grands comme `math.isprime`. Cela a également été changé. Avec l'argument 2, `io.nextprime` a faussement retourné 5 au lieu de 3. Cela a également été corrigé.

Nouveautés dans la version 1.0.5:

  • `join` pourrait planter Agena et se comporter de façon inattendue si la chaîne résultante
  • a dépassé 512 octets. Cela a été changé.
  • Si `restart 'a été appelé après qu'une erreur a été émise dans la précédente
  • déclaration, Agena dans de rares occasions s'est écrasé en raison de la corruption de la pile. Cela a été
  • corrigé.
  • Avec les tables nouvellement créées contenant exactement un élément dans la partie hash, `attrib`
  • renvoie maintenant des résultats corrects pour le nombre d'emplacements de hachage alloués (1 au lieu de 0).
  • Corrigé les messages d'erreur de `qsadd` et` sadd`.
  • Amélioration des messages d'erreur des opérateurs `join`,` copy` et `filled`, et de` insert`

  • Les instructions
  • et `delete`.
  • La gestion des erreurs de `read`,` save` et `fractals.draw` a été améliorée.
  • Améliorations apportées aux makefiles.
  • Les tailles des tampons ont maintenant été normalisées dans les sources.

Nouveautés dans la version 1.0.4:

  • Étant donné que de rares plantages ont été signalés lors de l'initialisation (dans Windows XP SP 3 et OpenSolaris 134, dans certains cas), la récupération de place est désormais désactivée dans la phase d'initialisation. Ces failles de segmentation rares se sont produites dans OpenSolaris lors de l'exécution du binaire Agena dans son répertoire portatif en tant que root, et dans XP en cliquant sur l'icône du bureau Agena avec les droits d'administration locaux.
  • Introduit l'option -d dans les options de la ligne de commande afin d'imprimer des informations lors de l'initialisation d'Agena.
  • Introduit une gestion correcte des erreurs si la mémoire ne pouvait pas être allouée en interne à: `trim`,` upper`, `lower`,` os.curdir`, et `strings.rseek`.
  • Suppression des fuites de mémoire potentielles dans les fonctions C d'initialisation agenaL_initialise et agenaL_setLibname, et dans `io.write *` et `print`.

Nouveautés dans la version 1.0.3:

  • La nouvelle fonction `protect` appelle une procédure en mode protégé et intercepte toute erreur possible afin que le calcul ne soit pas interrompu. En cas d'erreur, il définit la chaîne d'erreur sur la variable globale `lasterror`. Il est lié à `pcall`, mais ne renvoie pas le code d'état comme premier résultat.
  • `attrib` renvoie maintenant des résultats corrects avec des structures vides. Avec des structures vides, la fonction comptait à tort un élément hash assigné auparavant.
  • `attrib` renvoie maintenant le nombre d'octets occupés par les tables, les ensembles et les séquences avec la nouvelle clé 'bytes'. Le nombre d'octets renvoyés est basé sur des informations parfois contradictoires disponibles sur le net.
  • `replace` a écrasé Agena si la chaîne résultante a dépassé 512 octets. Cela a été changé.
  • `assume` renvoie maintenant 'L'hypothèse a échoué.' au lieu de 'l'hypothèse a échoué.'
  • La nouvelle fonction de l'API C, lua_setglobal2, définit la valeur en haut de la pile sur un nom global. Contrairement à lua_setglobal, la valeur n'est pas affichée.
  • Nettoyage du code de lobject.h (structure de la table) et lapi.c (actnodesize macro). Correction d'un bug de la fonction API agn_deletertable dans le cas où Agena est compilé avec lua_assert non-nul. Passez à la valeur de retour de la fonction savestate utilisée lors de l'initialisation pour éviter la (légère) possibilité de corruption de la pile.

Nouveautés dans la version 1.0.2:

  • La nouvelle procédure `os.setenv` définit les variables d'environnement au niveau du système d'exploitation. La fonction a été écrite à l'origine par Mark Edgar.
  • Dans Windows, `os.getenv` appelle maintenant une fonction Windows API native afin d'obtenir les valeurs des variables d'environnement. Le code Windows a été écrit par Mark Edgar.
  • La nouvelle fonction `os.environ` renvoie toutes les variables d'environnement affectées dans une table. La fonction a été écrite à l'origine par Mark Edgar.
  • `io.open` ajoute maintenant le pointeur FILE, le nom et le mode d'un fichier ouvert avec succès dans la nouvelle table` io.openfiles`. `io.close` supprime l'entrée de` io.openfiles` si le fichier a pu être fermé avec succès.
  • Lorsqu'il est appelé sans arguments, `io.read` renvoie maintenant une erreur s'il est appelé sans arguments dans AgenaEdit (pour essayer de lire le clavier).
  • Si `io.anykey` et` io.getkey` sont appelés dans AgenaEdit, un message d'erreur correct est affiché.
  • L'une des sous-procédures d'initialisation a été modifiée pour éviter une éventuelle corruption de la pile (bien que des problèmes ne se soient jamais produits).
  • os.isMac ('ppc') fonctionne maintenant sur les machines PowerPC.
  • Les chapitres 4 et 6 du document d'introduction et de référence ont été révisés et étendus. Un index a été ajouté et beaucoup de produits cosmétiques ont également été réalisés.
  • Informations de version correcte stockées dans l'exécutable Windows.

Nouveautés dans la version 1.0:

  • Chers Mesdames et Messieurs,
  • après presque quatre années de développement, j'ai publié Agena 1.0, un langage de programmation procédural, dérivé des sources de Lua C.
  • Ma communauté est en fait très, très petite, mais certains utilisateurs m'ont dit que c'était bien, utile et stable.
  • Je serais très heureux si vous passiez en revue Agena et m'a informé de vos résultats. Si vous ne trouvez pas cela utile, dites-le moi personnellement, et donnez-moi une chance de résoudre les problèmes.

Nouveautés dans la version 0.34.1d:

  • Cette version inclut une version mise à jour de l'interface graphique d'AgenaEdit (voir le fichier exécutable agenaedit).

Nouveautés dans la version 0.34.1:

  • AgenaEdit avec moteur de mise en évidence de la syntaxe et moteur d'exécution intégré a été publié avec Agena 0.34.1.

Quoi de neuf dans la version 0.34.0:

  • AgenaEdit avec la mise en évidence de la syntaxe et le moteur d'exécution intégré a été publié avec Agena 0.34.0.

Nouveautés dans la version 0.33.2:

  • Agena 0.33.2 avec le support du fichier xBase a été publié.

Quoi de neuf dans la version 0.33.1:

  • Agena 0.33.1 avec le support du fichier xBase a été publié.

Nouveautés dans la version 0.33.0:

  • Le nouveau paquet `xbase` peut lire et écrire des fichiers xBase compatibles avec le standard dBASE III.
  • Les paquets `binio` et` ads` peuvent maintenant gérer des fichiers de 2 ^ 63 octets. Avant, ils ne pouvaient gérer que des fichiers de 2 ^ 31 octets.
  • Les nouvelles fonctions `io.lock`,` io.unlock`, `binio.lock`,` binio.unlock`, `ads.lock` et` ads.unlock` bloquent un fichier d'accès en lecture et écriture par autre Agena
  • fonctions ou même d'autres applications à condition que ce dernier utilise un protocole de verrouillage.
  • La fonction baselib `read` ne peut plus être remplacée par` with`.
  • Le nouveau `package.checkClib` vérifie si un paquet stocké dans une bibliothèque dynamique C a été initialisé. Sinon, il renvoie un avertissement imprimé à l'écran et crée une table de paquetage vide. Sinon, cela ne fait rien.
  • Le port Haiku prend désormais en charge les bibliothèques de liens dynamiques.

Nouveautés dans la version 0.32.3:

  • Agena 0.32.3 avec de nouvelles fonctions de calcul ont été publiées.
  • Les utilisateurs Mac n'ont plus besoin d'installer de bibliothèques de dépendances supplémentaires.
  • Un port Haiku est maintenant disponible.

Quoi de neuf dans la version 0.31.5:

  • Cette version contient des graphiques intégrés, des maths de précision arbitraires et des fonctionnalités améliorées.

Quoi de neuf dans la version 0.31.3:

  • Ajout du paquet fractals pour dessiner facilement des fractales sous Solaris, Mac, Linux et Windows.
  • Sur Solaris et Linux, `gdi.mouse` renvoie maintenant des valeurs standard pour les boutons de souris pressés (les mêmes que les éditions Mac et Windows).
  • Avec l'option -v, Agena n'exécute plus les fichiers d'initialisation.
  • Sous UNIX ou Mac, les noms des fichiers d'initialisation doivent toujours être `.agenainit`, qu'ils se trouvent dans / usr / agena / lib ou dans le dossier personnel.
  • La distribution binaire Mac pour les processeurs Intel tourne environ 30% plus vite que les versions précédentes.
  • La fonction `io.getkey` est maintenant disponible dans l'édition de Mac OS X.
  • Sur Mac, `os.system` renvoie maintenant des informations complètes sur le système d'exploitation et le type de CPU. Notez qu'il renvoie des informations sur le noyau Darwin, et que la première entrée dans la table résultante est maintenant `Darwin` au lieu de` MacOSX`.
  • `os.memstate`,` os.freemem` et `os.beep` supportent maintenant Mac OS X.
  • `io.anykey` est disponible sur toutes les plateformes, mais retourne` fail` sur DOS et Mac. Ainsi, `gdi.draw` ne jettera plus d'erreurs sur Mac en utilisant l'option` mouse`.
  • `os.listcore` a été étendu pour renvoyer uniquement les noms de fichier, de répertoire ou de lien. '.' et '..' ne sont jamais retournés.
  • `os.list` n'a reconnu aucune option et a renvoyé une liste vide à la place. Cela a été corrigé. En outre, les options peuvent maintenant être combinées. '.' et '..' comme le premier argument sont maintenant correctement reconnus.
  • `os.curdir` remplace maintenant automatiquement les barres obliques inverses dans le chemin déterminé par des barres obliques.
  • `os.fstat` et` ads.attrib` ont écrasé Agena si la date d'un fichier dépassait le mardi 19 janvier 2038. Cela a été corrigé en retournant une table vide pour la clé de date (os.fstat), ou 0/0/01 00:00:00, (ads.attrib).
  • `utils.calendar` a écrasé Agena si son argument était nul, négatif ou trop grand. Cela a été changé. En outre, si une date est au-delà du mardi 19 janvier 2038, la date correcte est renvoyée.
  • Les nouvelles fonctions `os.screensize` et` os.mousebuttons` renvoient respectivement la résolution de l'écran et le nombre de boutons de la souris attachée (Windows uniquement).
  • Le fichier agena.ini.sample a été renommé en .agenainit.sample dans les distributions UNIX / Mac.
  • Un nouveau makefile pour Solaris est maintenant livré avec la liaison mapm Agena pour compiler entièrement les sources MAPM d'origine écrites par Michael C. Ring.

Nouveautés dans la version 0.31.2:

  • Le paquetage mapm pour la précision mathématique des arbitres est maintenant disponible dans l'édition DOS d'Agena.
  • Le nombre de chiffres utilisés par le paquet mapm est initialisé à 17 chiffres au démarrage d'Agena pour DOS ou OS / 2 Warp. Avant, la valeur par défaut était 1 chiffre.
  • Le code C pour la liaison MAPM a été standardisé. Avant, les fichiers source DOS et OS / 2 différaient de ceux d'UNIX et de Windows.
  • Petites améliorations apportées aux programmes d'installation Windows et Mac OS X.
  • Sur Mac, la documentation est maintenant disponible dans Library / Documentation / Agena au lieu de / Users / Share / Agena.
  • Les fonctions sin, cos, arcsin, arccos et arctan retournent -0 au lieu de 0 comme unité imaginaire, ce qui conduit à des résultats erronés si le retour de ces fonctions a été appliqué à d'autres fonctions telles que ln (ie le signe de l'unité imaginaire du résultat de ces autres fonctions était incorrecte). Ceci a été corrigé en mettant l'unité imaginaire -0 à 0 dans le retour de sin, cos, arcsin, arccos et arctan.
  • Les fonctions arcsin et arccos ont renvoyé des résultats erronés pour les arguments z, si abs (real ((z))) & lt; 1. Ceci a été corrigé.
  • Dans OS / 2, la plupart des fonctions arithmétiques complexes renvoyaient undefined. Cela a été corrigé.
  • Notez que dans OS / 2 et DOS, dans le domaine complexe, il y a toujours des problèmes avec les opérateurs arccos et arcsin qui retournent indéfini dans certaines situations.
  • Les versions de Windows, i386 Solaris 10 et Linux ont maintenant été compilées avec GCC 4.4.x (et sans xmath86.h) ce qui réduit considérablement le nombre d'erreurs dans l'arithmétique complexe. En fait, les cas complexes de tests mathématiques complexes renvoient zéro erreur. La version Sparc a été compilée avec GCC 4.3.3 pour Sun Sparc et contient moins de bogues dans l'arithmétique des nombres complexes que la version 0.31.1.
  • Renommé les fichiers include suivants: config.h - & gt; agncfg.h, chelpers.h - & gt; agnhlps.h, agnxlib.h - & gt; agnxlib.h.
  • Sur Mac, gdi.mouse renvoie maintenant les valeurs standard pour les boutons de la souris.

Nouveautés dans la version 0.31.1:

  • Agena 0.31 inclut tous les outils de base pour tracer des points, des lignes, des cercles, des ellipses, des rectangles, des arcs. etc., pour contrôler la taille de l'image et les couleurs.

Nouveautés dans la version 0.31.0:

  • Une version de cohérence linguistique avec correction de bogue a été publiée. Consultez le journal des modifications pour savoir ce qui a changé.

Quoi de neuf dans la version 0.30.4:

  • Agena propose désormais des graphismes intégrés. Cela vous permettra de tracer des graphiques, des images, etc. dans les fenêtres X11 ou Win32 ou dans des fichiers GIF, PNG, JPEG, FIG ou PostScript, sous Solaris, Linux et Windows. Agena se lie à la bibliothèque graphique g2 écrite par Ljubomir Milanovic et Horst Wagner, pour fournir ces nouvelles capacités.
  • Agena 0.30 inclut tous les outils de base pour tracer des points, des lignes, des cercles, des ellipses, des rectangles, des arcs. etc., pour contrôler la taille de l'image et les couleurs.
  • & gt; avec 'gdi';
  • paquet gdi v0.1.4 en date du 20 décembre 2009

  • arc, arcfilled, arrière-plan, cercle, circlefilled, clearpalette, fermer, elliptique, ellipsefilled, flush, taille de la fonte, initpalette, encre, lastaccessed, ligne, newline, newpoint, ouvert, intrigue, plotfn, point, rectangle, rectanglefilled , reset, resetpalette, setinfo, setoptions, structure, texte, épaisseur, triangle, trianglefilled, useink

  • La fonction plotfn dessine un ou plusieurs graphes de fonctions dans un réel, éventuellement avec les axes tracés dans une couleur définie par l'utilisateur. La plage pour l'axe des ordonnées peut également être donnée, sinon Agena détermine le meilleur réglage. Il existe diverses autres options qui peuvent être définies avec la fonction setoptions et qui s'appliqueront à tous les graphiques produits dans une session: la résolution de la fenêtre, la carte de couleurs, l'épaisseur de la ligne et la couleur d'arrière-plan. Bien sûr, l'utilisateur peut remplacer certaines ou toutes les options pour un tracé spécifique. Les singularités sont correctement traitées.

Nouveautés dans la version 0.30.3:

  • Agena 0.30.3 avec des graphismes intégrés, des maths de précision arbitraires et des fonctionnalités améliorées a été publié.

Nouveautés dans la version 0.30.2:

  • Agena propose désormais des graphismes intégrés. Cela vous permettra de tracer des graphiques, des images, etc. dans les fenêtres X11 ou Win32 ou dans des fichiers GIF, PNG, JPEG, FIG ou PostScript, sous Solaris, Linux et Windows. Agena se lie à la bibliothèque graphique g2 écrite par Ljubomir Milanovic et Horst Wagner, pour fournir ces nouvelles capacités.
  • Agena 0.30 inclut tous les outils de base pour tracer des points, des lignes, des cercles, des ellipses, des rectangles, des arcs. etc., pour contrôler la taille de l'image et les couleurs.
  • & gt; avec 'gdi';
  • paquet gdi v0.1.4 en date du 20 décembre 2009

  • arc, arcfilled, arrière-plan, cercle, circlefilled, clearpalette, fermer, elliptique, ellipsefilled, flush, taille de la fonte, initpalette, encre, lastaccessed, ligne, newline, newpoint, ouvert, intrigue, plotfn, point, rectangle, rectanglefilled , reset, resetpalette, setinfo, setoptions, structure, texte, épaisseur, triangle, trianglefilled, useink

  • La fonction plotfn dessine un ou plusieurs graphes de fonctions dans un réel, éventuellement avec les axes tracés dans une couleur définie par l'utilisateur. La plage pour l'axe des ordonnées peut également être donnée, sinon Agena détermine le meilleur réglage. Il existe diverses autres options qui peuvent être définies avec la fonction setoptions et qui s'appliqueront à tous les graphiques produits dans une session: la résolution de la fenêtre, la carte de couleurs, l'épaisseur de la ligne et la couleur d'arrière-plan. Bien sûr, l'utilisateur peut remplacer certaines ou toutes les options pour un tracé spécifique. Les singularités sont correctement traitées.

Nouveautés dans la version 0.29.0:

  • Agena propose désormais des graphismes intégrés. Cela vous permettra de tracer des graphiques, des images, etc. dans une fenêtre ou dans un fichier GIF, PNG, JPEG, FIG ou PostScript sous Solaris, Linux et Windows, en incluant une liaison à la bibliothèque graphique g2 écrite par Ljubomir Milanovic et Horst Wagner.
  • Agena 0.29.0 dispose de tous les outils de base pour tracer des points, des lignes, des cercles, des ellipses, des rectangles, des arcs. etc., pour gérer la couleur et créer des fichiers image ou ouvrir des fenêtres X11 ou Win32.
  • Dans l'une des prochaines mises à jour, une interface utilisateur de haut niveau avec les fonctions gdi.plotfn et gdi.plot vous permet de tracer des fonctions univariées et des ensembles de points à la volée. Les deux fonctions sont déjà incluses dans Agena 0.29.0, mais sont toujours bêta. Voici un aperçu:
  • & gt; avec 'gdi';
  • paquet gdi v0.1.0 au 24 novembre 2009
  • arc, arrière-plan, cercle, clearpalette, fermer, tiret, ellipse, rempliArc, filledCircle, rempliEllipse, rempliRectangle,
  • filledTriangle, flush, fontsize, initpalette, ink, lastaccessed, ligne, ouvert, plot, plotfn, point, rectangle, reset,
  • resetpalette, setinfo, setoptions, structure, texte, épaisseur, triangle, useink
  • La fonction plotfn dessine le graphe d'une fonction dans un réel, éventuellement avec les axes tracés dans une couleur définie par l'utilisateur. La plage pour l'axe des y peut également être donnée, sinon Agena essaye de déterminer le meilleur réglage. Il existe diverses autres options qui peuvent être définies avec la fonction setoptions et qui s'appliqueront à tous les graphiques produits dans une session: la résolution de la fenêtre, la carte de couleurs, l'épaisseur de la ligne et la couleur d'arrière-plan. Bien sûr, l'utilisateur peut remplacer certaines ou toutes les options pour un tracé spécifique. Les singularités sont correctement traitées.
  • plotfn (sin (x) * x & gt; & gt ;, -5, 5, couleur ~ 'blue', axiscolour ~ 'grey', res ~ 640: 480);

Nouveautés dans la version 0.27.2:

  • La nouvelle fonction basetib de toSet convertit une chaîne en un ensemble de ses caractères, et une table ou une séquence en un ensemble.
  • io.readlines a été corrigé pour traiter les lignes de plus de 2048 caractères. La fonction génère également une erreur si l'allocation de mémoire interne échoue. La taille du tampon interne a été réduite de 2048 octets à 512 octets. Vous pouvez changer cela en affectant une autre valeur à AGN_IOREADLINES_MAXLINESIZE dans le fichier agnconf.h.
  • io.readlines accepte désormais les handles de fichiers. Lorsque vous utilisez des handles de fichiers, par opposition aux noms de fichiers, notez que vous devez fermer le fichier manuellement après avoir utilisé io.readlines.
  • io.readlines ne retourne plus une table vide si le fichier n'existe pas. Au lieu de cela, il émet une erreur.
  • toSeq renvoie maintenant une erreur au lieu d'échouer s'il ne reçoit pas de chaîne, de set ou de table.
  • La fonction baselib utilisée a été étendue et peut renvoyer l'utilisation de la mémoire en octets, kbytes et gbytes. C'est une fonction C maintenant.
  • La fonction gcinfo non documentée a été supprimée. Sa fonctionnalité a été prise par utilisé.
  • La nouvelle fonction de l'API C agn_usedbytes renvoie le nombre d'octets utilisés par le système.
  • Corrigé un message d'erreur incorrect de toTable.
  • a renommé la fonction C AOI `agn_isioforcerror` en` agn_isioforceerror`.

Nouveautés dans la version 0.27.0:

  • Ajout de la fonction d'erreur math.erf, et de la fonction d'erreur complémentaire math.erfc.
  • Ajout de la fonction Bessel du premier type math.besselj, et de la fonction Bessel du second type math.bessely. L'ordre est donné par le premier argument, l'argument comme deuxième argument.
  • Si la nouvelle variable d'environnement _EnvIoForceError est définie sur une valeur non nulle (la valeur par défaut), les io.open, io.readlines et les diverses fonctions binio se terminent par une erreur au lieu de simplement retourner normalement.
  • binio.readbytes et binio.readchar ont retourné une séquence vide au lieu d'échouer au cas où le fichier à lire n'existait pas. Cela a été changé: échec ou une erreur est maintenant retournée.
  • arcsin et arccos sont maintenant des opérateurs et donc environ 40% plus rapides.
  • Ajout de l'opérateur xor qui effectue une opération OU booléenne exclusive sur les valeurs évaluées comme true, false, fail et null.
  • Ajout de l'opérateur atendof qui vérifie si un mot se termine dans une phrase donnée et retourne sa position sous forme de nombre. L'opérateur renvoie null si les chaînes ont la même longueur, au moins l'une d'entre elles est la chaîne vide, ou le mot ne se termine pas dans le modèle donné.
  • hasrtable ne renvoie maintenant que true, s'il possède une table de lecture-écriture (mise à jour par l'instruction return).
  • La nouvelle fonction hasrotable détermine si une fonction possède une table de rappel en lecture seule (qui ne peut pas être mise à jour par l'instruction return) et renvoie true ou false.
  • Les nouveaux opérateurs gethigh et getlow récupèrent les octets supérieur et inférieur d'un nombre (c.-à-d. double C).
  • Les nouveaux opérateurs sethigh et setlow définissent les octets supérieur et inférieur à un nombre (c.-à-d. double C).
  • Les nouveaux opérateurs band, bor, bxor et bnot effectuent des opérations au niveau du bit et, ou, des opérations exclusives ou complémentaires sur les nombres.
  • La nouvelle fonction `kernel` configure les paramètres du noyau Agena. Actuellement, il peut modifier le fonctionnement interne des opérateurs de bits (utilisation d'entiers signés ou non signés) et l'impression des nombres.
  • Avec les nombres réels x, math.argument retourne maintenant Pi au lieu de 0 si x & lt; 0.
  • En raison d'un bogue dans les fonctions de la bibliothèque C ANSI sous-jacente, arcsin et arccos produisaient des résultats erronés avec des nombres complexes si leur partie imaginaire était nulle dans les systèmes UNIX. Cela a été corrigé.
  • math.isPrime a signalé false avec le numéro 2. Cela a été corrigé.
  • Contrairement au manuel, abs retourné 2 avec échouer. Maintenant, il renvoie -1 comme documenté.
  • Le paquet de bits a été supprimé.
  • Ajout de la nouvelle fonction de l'API C agn_isioforcerror qui vérifie si _EnvIoForceError a été défini sur une valeur non nulle.
  • La nouvelle fonction de l'API C agn_setbitwise détermine si les opérateurs band, bor, bnot, bxor et shift calculent en interne avec des entiers signés ou non signés.
  • La nouvelle fonction de l'API C agn_getbitwise renvoie le mode défini par agn_setbitwise.
  • La nouvelle fonction de l'API C, agn_setdigits, définit le nombre de chiffres utilisés pour l'impression des nombres.
  • La nouvelle fonction de l'API C agn_getdigits détermine le nombre de chiffres utilisés pour l'impression des nombres.
  • Internal: Suppression de l'entrée "REPL" obsolète de luaP_opnames.
  • Le programme d'installation de Windows a été amélioré en cherchant maintenant une version d'Agena précédemment installée, en empêchant que le programme d'installation soit démarré si une autre instance est déjà en cours d'exécution et par d'autres petites améliorations.

Exigences :

  • Ncurses
  • GNU Readline

Logiciel similaire

phc
phc

3 Jun 15

Darning
Darning

20 Feb 15

Polygen
Polygen

3 Jun 15

pyPEG
pyPEG

14 Apr 15

Commentaires à Agena

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!