Agena

Screenshot der Software:
Agena
Softwarebeschreibung:
Version: 2.11.5 Aktualisiert
Upload-Datum: 22 Jun 18
Entwickler: Alexander Walz
Lizenz: Frei
Popularität: 23

Rating: nan/5 (Total Votes: 0)

Agena ist eine Open Source-, kostenlose, plattformübergreifende und einfach zu erlernende prozedurale Programmiersprache, die für den täglichen Gebrauch entwickelt wurde. Es kann in grafischen, wissenschaftlichen, linguistischen und pädagogischen Umgebungen sowie in Skriptanwendungen verwendet werden, die alle gängigen Betriebssysteme unterstützen.


Bietet zahlreiche Durchflusskontrolleinrichtungen

Die Anwendung bietet zahlreiche Möglichkeiten zur Flusskontrolle, wie wenn, dann. elif, else Bedingungen, case of und else Bedingungen, ist operator, numerisch für, from, to und by Schleifen, kombiniert numerische for und while Schleifen, für und in Schleifen, while und do / as Schleifen, eine Skip-Anweisung, eine Pause Anweisung sowie Validierung des Datentyps.


Stellt Aufzählungszuweisungen bereit

Unter anderem können wir eine beliebige mathematische Präzisionsbibliothek, eine einfache Konfiguration Ihrer persönlichen Umgebung, ein einfach zu verwendendes Paketsystem, Aufzählungszuweisungen, eine Bereichskontrolle über die Schlüsselwörter epocs / scope und viele andere attraktive Funktionen erwähnen.

Unter der Haube und Verfügbarkeit

Ein kurzer Blick unter die Haube zeigt uns, dass das Projekt in den Programmiersprachen C, BASIC, Lua und ALGOL 68 geschrieben ist, was bedeutet, dass seine Syntax der Syntax dieser Projekte ähnelt. Es läuft vollständig in einer Konsole / Terminal-Umgebung, was bedeutet, dass es keine grafische Benutzeroberfläche (GUI) bietet.


Wird mit einem einfachen Editor ausgeliefert

Trotz der Tatsache, dass die Agena-Software eine Befehlszeilenanwendung ist, wird sie mit einer einfachen grafischen Editorsoftware namens AgenaEdit ausgeliefert, die eine integrierte Agena-Umgebung und Syntaxhervorhebungsfunktionen bietet. Es wurde stark von einem ähnlichen Editor inspiriert, der von Bill Spitzak für das plattformübergreifende C ++ - GUI-Toolkit FLTK entwickelt wurde.


Funktioniert auf Raspberry Pi

Agenas grafische Funktionen werden unter den Betriebssystemen GNU / Linux, Solaris, Mac OS X, Microsoft Windows, eComStation - OS / 2 und DOS unterstützt. Es kann problemlos auf 64-Bit- und 32-Bit-Hardwareplattformen bereitgestellt werden und wurde erfolgreich auf der ARM-basierten Raspberry Pi-Computerplatine getestet.

Was ist neu in Diese Version:

  • neue Funktion "Kalküle und Statistik"

Was ist neu in der Version:

  • neue Funktion "Kalküle und Statistik"

Was ist neu in Version 2.9.4:

  • neue Funktion "Kalküle und Statistik"

Was ist neu in Version 2.8.5:

  • neue Funktion "Kalküle und Statistik"

Was ist neu in Version 2.8.2:

  • neue Funktion "Kalküle und Statistik"

Was ist neu in Version 2.6.1:

  • `stats.chawenet` kann jetzt gezielt nachsehen untere oder obere Ausreißer durch Übergeben der Option 'Ausreißer =' Nieder 'bzw.' Ausreißer = 'Ober'.
  • `bags.remove` verursachte Segmentierungsfehler. Dies wurde behoben. Darüber hinaus wurden alle in C implementierten Taschenfunktionen intern geändert.
  • Die (undokumentierten) Metamethoden für `+`, `-` und` * `funktionierten nicht, wenn das` bags`-Paket nicht mit der `with` -Funktion oder der` import / alias` Anweisung aufgerufen wurde. Dies wurde behoben.

Was ist neu in Version 2.5.4:

  • `stats.chawenet` kann nun gezielt nach unteren oder oberen Ausreißern suchen, indem die Option 'Ausreißer =' Untere 'bzw.' Ausreißer = 'Obere' 'übergeben wird.
  • `bags.remove` verursachte Segmentierungsfehler. Dies wurde behoben. Darüber hinaus wurden alle in C implementierten Taschenfunktionen intern geändert.
  • Die (undokumentierten) Metamethoden für `+`, `-` und` * `funktionierten nicht, wenn das` bags`-Paket nicht mit der `with` -Funktion oder der` import / alias` Anweisung aufgerufen wurde. Dies wurde behoben.

Was ist neu in Version 2.5.3:

  • `stats.chawenet` kann jetzt gezielt nachsehen untere oder obere Ausreißer durch Übergeben der Option 'Ausreißer =' Nieder 'bzw.' Ausreißer = 'Ober'.
  • `bags.remove` verursachte Segmentierungsfehler. Dies wurde behoben. Darüber hinaus wurden alle in C implementierten Taschenfunktionen intern geändert.
  • Die (undokumentierten) Metamethoden für `+`, `-` und` * `funktionierten nicht, wenn das` bags`-Paket nicht mit der `with` -Funktion oder der` import / alias` Anweisung aufgerufen wurde. Dies wurde behoben.

Was ist neu in Version 2.4.2:

  • `stats.chawenet` kann nun gezielt nach unteren oder oberen Ausreißern suchen, indem die Option 'Ausreißer =' Untere 'bzw.' Ausreißer = 'Obere' übergeben wird.
  • `bags.remove` verursachte Segmentierungsfehler. Dies wurde behoben. Darüber hinaus wurden alle in C implementierten Taschenfunktionen intern geändert.
  • Die (undokumentierten) Metamethoden für `+`, `-` und` * `funktionierten nicht, wenn das` bags`-Paket nicht mit der `with` -Funktion oder der` import / alias` Anweisung aufgerufen wurde. Dies wurde behoben.

Was ist neu in Version 2.3.0 RC1:

  • Numerische `for`-Loops unterstützen nun das` downto'-Schlüsselwort, so dass Sie rückwärts zählen können, ohne eine obligatorische negative "by" -Schrittgröße zu verwenden. Im `downto'-Kontext sollte die 'by' Schrittweite immer positiv sein. `from 'start and` to' stop Werte sind obligatorisch, wenn das Schlüsselwort 'downto' verwendet wird.
  • Die Metamethoden '__finite', '__entier' und '__sqrt' werden nicht mehr unterstützt. Stattdessen wurden drei neue Metathoden für Operationen an Strukturen hinzugefügt: "__union" für Gewerkschaftsoperationen, "__intersect" zur Bestimmung von Schnittpunkten und "__minus" für Unterschiede. So unterstützt das Paket "Taschen" nun auch diese drei Operationen.
  • Der "Integer Divisionsoperator" hat sein Metamethod nicht unterstützt und stattdessen den einen für float divison (`/` operator) benutzt. Dies wurde behoben.
  • Die neue Funktion `stats.gini` bestimmt den Gini-Koeffizienten, ein Maß für (Un-) Gleichheit.
  • Die neue Funktion `stats.zscore` gibt eine Funktion zurück, die den z-Score (Standard-Score) einer Stichprobe berechnet - die Anzahl der Standardabweichungen, um die die Stichprobe über oder unter dem Mittelwert einer Verteilung liegt.
  • `stats.sorted` verwendet jetzt standardmäßig den Introsort-Algorithmus anstelle von Quicksort. Dies kann die Berechnungszeit in schlecht konditionierten Situationen dreimal beschleunigen (wobei Quicksort O (n ^ 2) -Operationen benötigen würde), während die Leistung in normalen Situationen nicht beeinträchtigt wird. Tatsächlich verwendet Introsort standardmäßig Quicksort und wechselt dann automatisch zu Heapsort, wenn die Rekursionstiefe 2 * log (n, 2) erreicht, wobei n die Anzahl der Elemente in einer Struktur ist.
  • Sie können diese Logik überschreiben, indem Sie die neue Option 'quicksort' übergeben, die ausschließlich die traditionelle rekursive Quicksort-Methode zum Sortieren von Zahlen verwendet. Außerdem kann `stats.sorted` nun auch den Heapsort-Algorithmus nur dann verwenden, wenn die neue Option 'heapsort' übergeben wird, und einen nicht-rekursiven Quicksort-Algorithmus von Niklaus Wirth mit der neuen Option 'nrquicksort'.
  • Die neue Funktion `stats.meanmed` gibt sowohl das arithmetische Mittel als auch den Median einer Verteilung oder alternativ den Quotienten aus Mittelwert und Median zurück und beschleunigt dadurch die Rechenzeit, wenn diese Werte um etwa 20 Prozent benötigt werden.
  • Verbesserte die Fehlermeldung des Operators `size`.

Was ist neu in Version 2.1.1:

  • Neue Funktionen und Patches:
  • `try / catch`: explizite Angabe einer Fehlervariable direkt nach dem` catch` Token ist nun optional. Wenn keine Fehlervariable angegeben wird, wird die Fehlernachricht automatisch in der lokalen Variablen 'lasterror' gespeichert, und das Schlüsselwort `then` muss weggelassen werden:
  • & gt; probiere
  • aus
  • & gt; Fehler ('oops!')
  • & gt; fange
  • & gt; drucken (lasterror)
  • & gt; yrt;
  • Hoppla!
  • Die Anweisung "try / catch" funktionierte manchmal nicht in Prozeduren (nicht zugewiesene Fehlervariable). Dies wurde behoben.
  • Die neue Funktion `net.wget` lädt HTML-Seiten aus dem Web herunter.
  • Tuned `skycrane.counter` um 10%. Die Funktion wendet nun optional den Kahan-Ozawa anstelle des ursprünglichen Kahan-Summenalgorithmus an, wenn das neue dritte Argument die Zeichenfolge 'ozawa' ist. Die entsprechenden C-Quellen wurden modifiziert, um eine Compiler-Optimierung zu verhindern, die auch die Optimierungen aufheben könnte.
  • `argerror` gibt jetzt den benutzerdefinierten Typnamen eines Werts aus, der in seiner Fehlermeldung empfangen wurde. Wenn ein Wert keinen benutzerdefinierten Typ hat, wird sein Basistyp ausgegeben.
  • Die neue Option 'a' für 'debug.getinfo' gibt die Anzahl der Argumente zurück, die von einer Prozedur erwartet werden, dank Rob Hoelz 'LuaPowerPatch.
  • Verbesserte `index out-of-range` Fehlermeldung für Strings.
  • Die Dateien `stats.agn`,` linalg.agn`, `library.agn` und` ansi.agn` wurden hinsichtlich ihrer Fehlerbehandlung modifiziert.

Was ist neu in Version 2.1.0:

  • Für eine neue Art der Fehlerbehandlung wurde die neue `try / catch`-Anweisung eingeführt. Es wurde 2008 von Hu Qiwei für Lua 5.1 erfunden und geschrieben.
  • Im Allgemeinen können alle Anweisungen, bei denen eine Ausnahme erwartet werden kann, in eine "try" -Klausel gesetzt werden. Wenn ein Fehler ausgegeben wird, der durch einen expliziten Aufruf der Funktion "error" oder eines anderen Ausdrucks, einer Funktion oder einer Anweisung generiert wird, springt die Steuerung sofort zur entsprechenden "catch" -Klausel, falls vorhanden, oder bis zum Ende von "try / yrt" `Anweisung, wenn keine` catch'-Klausel angegeben wurde, wobei alle anderen nachfolgenden Anweisungen in der 'try'-Klausel ignoriert werden.
  • Die "protect / lasterror" -Fehlerbehebungseinrichtungen werden immer noch unterstützt und werden immer unterstützt. Die neue Steueranweisung funktioniert auch mit den Anweisungen "break", "skip", "redo" und "return" einwandfrei.
  • Die neue `redo`-Anweisung startet die aktuelle Iteration einer 'for / to'- und` for / in`-Schleife von Anfang an neu.
  • Der neue `recip`-Operator gibt die Umkehrung einer Zahl x zurück. Es entspricht dem Ausdruck 1 / x, aber schneller.
  • Die neue Funktion `stats.ema` berechnet den exponentiellen gleitenden Durchschnitt einer Verteilung. Die neue Funktion `stats.gema` gibt eine Iteratorfunktion zurück, die den jeweiligen exponentiellen gleitenden Durchschnitt einer Verteilung zurückgibt.
  • `*%`, `+%` und `-%` haben `undefined` anstelle eines korrekten Ergebnisses zurückgegeben, wenn ihr rechter Operand Null war. Dies wurde behoben.
  • Eine Fehlermeldung in `net.survey` wurde behoben.
  • Verbesserte Fehlermeldungen für die Indizierung von Paaren und Zeichenfolgen außerhalb des Bereichs.
  • In den Versionen ANSI, Solaris und DOS wurde der Operator 'int' optimiert.
  • Die neue C-API-Funktion `agn_arraytoseq` konvertiert ein numerisches Array in eine Sequenz und schiebt diese neue Sequenz auf den Stack.
  • Das Handbuch wurde aktualisiert.

Was ist neu in Version 2.1.0 RC:

  • Die neue `redo`-Anweisung startet die aktuelle Iteration einer` for / to`- und `for / in`-Schleife von Anfang an neu. Beispiel:
  • & gt; flag: = wahr; & gt; für j in [10, 11, 12] tun & gt; Druck ('vorher', j, Flagge); & gt; Wenn Flag und j = 11, dann & gt; klare Flagge; & gt; Drucken ('- & gt;', j, Flagge, 'zurückspringen') & gt; Wiederholen & gt; fi; & gt; Druck ('nach', j, Flagge) & gt; bis j & gt; 12; vor 10 wahr nach 10 wahr vor 11 wahr - & gt; 11 falscher Sprung zurück vor 11 false nach 11 false vorher 12 false nach 12 false
  • Der neue `recip`-Operator gibt die Umkehrung einer Zahl x zurück. Es entspricht dem Ausdruck 1 / x, aber schneller.
  • Die neue Funktion `stats.ema` berechnet den exponentiellen gleitenden Durchschnitt einer Verteilung. Die neue Funktion `stats.gema` gibt eine Iteratorfunktion zurück, die den jeweiligen exponentiellen gleitenden Durchschnitt einer Verteilung zurückgibt. Schauen Sie für die Verwendung in die Quelldatei src / stats.c, C functions * ema.
  • `*%`, `+%` und `-%` haben `undefined` anstelle eines korrekten Ergebnisses zurückgegeben, wenn ihr rechter Operand Null war. Dies wurde behoben.
  • Eine Fehlermeldung in `net.survey` wurde behoben.
  • Die neue C-API-Funktion `agn_arraytoseq` konvertiert ein numerisches Array in eine Sequenz und schiebt diese neue Sequenz auf den Stack.

Was ist neu in Version 2.0.0:

  • Neue Aussagen und Funktionen:
  • Agena 2.0 ist abwärtskompatibel zu Agena 1.12, außer dass die Token `import`,` alias`, `bis` und` onsuccess` nun Schlüsselwörter sind und nicht mehr als Variablen verwendet werden können. Derzeit sind Solaris-, Debian- (x86, PowerPC, Raspberry Pi), Windows-, Mac- und DOS-Installer für 2.0 verfügbar, einschließlich eines aktualisierten Primers und einer Referenz, die alle neuen Funktionen im Detail erklärt.
  • Die neuen Schleifenvarianten `for / as` und` for / bis` prüfen eine Bedingung am Ende der aktuellen Iteration und beginnen entweder die nächste Iteration oder verlassen die Schleife. Dies funktioniert sowohl mit "for / to" als auch mit "for / in" Loops. Tatsächlich führen beide Varianten mindestens einmal eine Schleife aus, bis die angegebene Bedingung überprüft wird.
  • Beispiele:
  • & gt; für i bis 5 tun
  • & gt; drucken (i)
  • & gt; als i & lt; 3
  • & gt; denn ich in [1, 2, 3, 4, 5] mache
  • & gt; drucken (i)
  • & gt; bis ich & gt; = 3
  • Die neue `do / bis'-Schleife wiederholt sich, bis eine bestimmte Bedingung erfüllt ist:
  • & gt; c: = 0;
  • & gt; mach
  • & gt; inc c;
  • & gt; Druck (c)
  • & gt; bis c & gt; = 3
  • In numerischen for-Schleifen darf die to-Klausel nicht mehr angegeben werden. Stattdessen wird die Schleife solange durchlaufen, bis die größte Zahl, die auf Ihrer Plattform in C HUGE_VAL darstellbar ist, erreicht wurde:
  • & gt; weil ich
  • mache
  • & gt; drucken (i)
  • & gt; od
  • Die neue `onsuccess`-Klausel in` if`- und `case`-Anweisungen führt einen Chunk aus, wenn mindestens eine der Bedingungen wahr ist. Beispiele:
  • & gt; flag: = false;
  • & gt; wenn 1 = 0 dann
  • & gt; Drucken (0)
  • & gt; elif 1 = 1 dann
  • & gt; drucken (1)
  • & gt; Erfolgserfolg
  • & gt; flag: = true
  • & gt; sonst
  • & gt; Drucken (-1)
  • & gt; fi;
  • & gt; Drucken (Flagge);
  • wahr
  • & gt; flag: = false;
  • & gt; wenn 1 = 0 dann
  • & gt; Drucken (0)
  • & gt; elif 1 = 0 dann
  • & gt; drucken (1)
  • & gt; Erfolgserfolg
  • & gt; flag: = true
  • & gt; sonst
  • & gt; Drucken (-1)
  • & gt; fi;
  • & gt; Drucken (Flagge);
  • falsch
  • & gt; flag: = false;
  • & gt; a: = 2;
  • & gt; Fall a
  • & gt; von 1 dann
  • & gt; drucken (1)
  • & gt; von 2 dann
  • & gt; drucken (2)
  • & gt; Erfolgserfolg
  • & gt; flag: = true
  • & gt; sonst
  • & gt; Drucken (-1)
  • & gt; esac;
  • & gt; Drucken (Flagge);
  • wahr
  • Die neue `import` -Anweisung ermöglicht es, eine oder mehrere Bibliotheken zu importieren, ohne ihre Namen in Anführungszeichen zu setzen, z. "import calc, stats" entspricht "readlib ('calc', 'stats')".
  • Die Option "alias" für die Anweisung "import" weist den initialisierten Bibliotheksfunktionen, z. "import calc alias xpdiff" entspricht "mit ('calc', 'xpdiff')" und "import calc alias" entspricht "mit ('calc')".
  • Der neue Operator `..` erlaubt es, Tabellen zu indizieren, selbst wenn sein linker Operand 'null' ergibt. In diesem Fall wird 'null' zurückgegeben und kein `Versuch, das Feld zu indexieren ... (ein Nullwert) 'wird ausgegeben. Es ist ähnlich wie die `getentry` Funktion, ist aber dreimal schneller. Beispiele:
  • & gt; Erstelle Tabelle a;
  • & gt; a.b:
  • null
  • & gt; a.b.c:
  • Fehler in der Standardeingabe in Zeile 1:
  • versucht das Feld "b" (einen Nullwert) zu indizieren
  • & gt; a..b..c:
  • null
  • & gt; Erstelle Tabelle a;
  • & gt; a [1]:
  • null
  • & gt; a [1] [2]:
  • Fehler in der Standardeingabe in Zeile 1:
  • versucht, das Feld `?` (ein Nullwert) zu indizieren
  • & gt; a .. [1] .. [2]:
  • null
  • Die neue Funktion `drem` berechnet den Rest einer ganzzahligen Division x / y, aber im Gegensatz zu` irem` rundet sie den internen Quotienten x / y auf die nächste Ganzzahl und nicht auf Null.
  • Die neue Funktion `skycrane.todate` gibt das aktuelle Datum und die Uhrzeit als formatierten String zurück.
  • Die neue Funktion `io.truncate` schneidet eine Datei an der aktuellen Dateiposition ab.
  • Die neue Funktion `io.move` ändert die Dateiposition um eine bestimmte Anzahl von Zeichen nach links oder rechts.
  • Die neue Funktion `io.filesize` gibt die Größe einer Datei zurück.
  • `readlib` akzeptiert jetzt nur Zeichenfolgen als Argumente. Zahlen sind nicht mehr erlaubt.
  • Wenn das letzte Argument von `with` das Boolean` false` ist, schreibt die Funktion keine zugewiesenen kurzen Namen in die Konsole (stdout).
  • `strings.fields` akzeptiert jetzt auch eine Sequenz von Indexnummern. Der Index '0' wird jedoch nicht mehr akzeptiert.
  • Der Raspberry Pi Wheezy Debian Installer enthält jetzt das `gdi` Grafikpaket.
  • Die Datei `change.log` wird jetzt in Windows korrekt angezeigt.

Was ist neu in Version 2.0.0 RC3:

  • Die neuen Schleifenvarianten `for / as` und` for / bis` prüfen eine Bedingung am Ende der aktuellen Iteration und beginnen entweder die nächste Iteration oder verlassen die Schleife. Dies funktioniert sowohl mit / für als auch für / in Schleifen.

Was ist neu in Version 2.0.0 RC2:

  • Die neuen Loop-Varianten `for / as` und` for / bis` prüfen eine Bedingung am Ende der aktuellen Iteration und starten entweder die nächste Iteration oder verlassen eine Schleife. Dies funktioniert sowohl mit / für als auch für / in Schleifen.

Was ist neu in Version 2.0.0 RC1:

  • Die neue `import` -Anweisung ermöglicht es, eine oder mehrere Bibliotheken zu importieren, ohne ihre Namen in Anführungszeichen zu setzen, z. "import calc, stats" entspricht "readlib ('calc', 'stats')".
  • Die Option "alias" für die Anweisung "import" weist den initialisierten Bibliotheksfunktionen, z. "import calc alias xpdiff" entspricht "mit ('calc', 'xpdiff')" und "import calc alias" entspricht "mit ('calc')".
  • Der neue Operator `..` erlaubt es, Tabellen zu indizieren, selbst wenn sein linker Operand 'null' ergibt. In diesem Fall wird 'null' zurückgegeben und kein `Versuch, das Feld zu indexieren ... (ein Nullwert) 'wird ausgegeben. Es ist ähnlich wie die "getentry" -Funktion, ist aber dreimal schneller.

Was ist neu in Version 1.12.9:

  • Die neuen Funktionen `io.getclip` und` io.putclip` tauschen Texte zwischen Agena und der Zwischenablage aus (nur Windows).
  • `stats.range` wurde in C neu geschrieben und ist bis zu 60% schneller geworden.
  • `os.cpuinfo` liefert nun korrekte und weitere Informationen zu ARM-basierten Systemen.
  • In DOS- und UNIX-Systemen, einschließlich Mac OS X und nur in der komplexen Domäne, lieferte die Exponentiation der Basis 0 zum Exponenten 0 + r * I mit r, die nicht von 0 verschieden ist, 'undefined' anstelle von 0. Dies wurde behoben.
  • In DOS- und UNIX-Systemen, einschließlich Mac OS X und nur in der komplexen Domäne, hat die Potenzierung der Basis 0 zum Exponenten r + 0 * I mit r jedem positiven float 'undefined' anstelle von 0 zurückgegeben wurde behoben.
  • `stats.obcount` und` stats.obpart` konnten keine Werte in das rechte Subintervall einfügen. Dies wurde behoben.
  • `calc.nakspline`,` calc.naksplinecoeffs`, `calc_clampedspline` und` calc_clampedsplinecoeffs` provozierten Segmentierungsfehler, wenn sie mit einer Struktur aufgerufen wurden, die zu wenige Punkte, d. h. Paare, enthielt. Dies wurde behoben, indem in diesen Fällen `fail` zurückgegeben wurde.
  • Mögliche Speicherfreigaben wurden aus `calc.neville`,` calc.interp`, `calc.newtoncoeffs`,` calc.naksplinecoeffs`, `calc.clampedsplinecoeffs`,` calc.nakspline` entfernt. und `calc.clampedspline`.
  • Die neue C-API-Funktion `agn_checkinteger` prüft, ob ein Argument eine Zahl und eine ganze Zahl ist und - im Gegensatz zu` luaL_checkinteger` - sonst einen Fehler ausgibt.

Was ist neu in Version 1.9.0:

  • Die neue Funktion `alternate` gibt ihr erstes Argument zurück, wenn das zweite Argument 'null` ist. Andernfalls gibt es das zweite Argument zurück.
  • Der Schalter -b zur ausführbaren Agena-Datei wurde entfernt, da seine Ausgabe mit der Option -v identisch war.
  • Die Windows- und UNIX / Mac-Versionen von `strings.utf8size` enthielten ein mögliches Speicherleck; Das wurde geändert.
  • Alle binären DLLs / SOs der Plus-Bibliotheken enthalten keinen unbenutzten Code mehr, wodurch ihre Größe je nach Betriebssystem um bis zu 10 Prozent abnimmt. Das Makefile und die Quellen, die zuvor nicht verwendete Headerdateien importiert haben, wurden geändert. Zum Beispiel reduziert dies die Größe der Windows-Binärdateien um 55 kBytes.
  • Erweiterte Testsuite.
  • Die Schemadateien wurden aktualisiert.

Was ist neu in Version 1.6.0:

  • Neue Funktionen und Features:
  • Die neue Funktion `checktype` bestimmt, ob alle Werte in einer Struktur einen bestimmten Typ haben.
  • Die neue Funktion `isint` prüft, ob alle Argumente Ganzzahlen sind.
  • Die neue Funktion `strings.dleven` gibt die Damerau-Levenshtein-Distanz zweier Strings zurück.
  • Die neue Funktion `stats.ad` bestimmt die absolute Abweichung aller Werte in einer Struktur.
  • Die neue Funktion `stats.countentries` zählt die Anzahl der Vorkommen aller Elemente in einer Struktur.
  • Die neue Funktion `stats.deltalist` gibt eine Struktur der Deltas der jeweils benachbarten Elemente zurück.
  • Die neue Funktion `stats.gmean` gibt das geometrische Mittel einer Struktur zurück.
  • Die neue Funktion `stats.hmean` gibt das harmonische Mittel einer Struktur zurück.
  • Die neue Funktion `stats.ios` liefert einen bewährten Indikator für die Stabilität in einer Distribution.
  • Die neue Funktion `stats.iqr` gibt den Interquartilsabstand zurück.
  • Die neue Funktion `stats.issorted` prüft, ob alle Nummern in einer Struktur aufsteigend sortiert sind.
  • Die neue Funktion `stats.moment` berechnet den Moment der gegebenen Daten über einen Ursprung.
  • Die neue Funktion `stats.numbperm` gibt die Anzahl der Permutationen zurück.
  • Die neue Funktion `stats.percentile` bestimmt Perzentile.
  • Die neue Funktion `stats.skewness` liefert die Schiefe, ein Indikator für die Symmetrie einer Wahrscheinlichkeitsverteilung.
  • Die neue Funktion `stats.sumdata` fasst alle Kräfte einer Struktur um einen Ursprung zusammen.
  • `stats.tovals` ist jetzt eine C-Bibliotheksfunktion und ist somit bis zu 40 Prozent schneller.
  • Mit einer leeren Tabelle oder Sequenz, `stats.qmean`,` stats.mean`, `stats.gmean`,` stats.sd`, `stats.median`,
  • `stats.var` gibt nun fail zurück.
  • Die maximale Länge einer Eingabezeile im eigenständigen Interpreter wurde von 512 auf 2048 Zeichen geändert.
  • Die neue Umgebungsvariable `environ.maxpathlength` speichert die maximale Anzahl von Zeichen für einen Dateipfad (ausgenommen das Zeichen von C).
  • Die neuen Umgebungsvariablen `environ.minnumber` und` environ.maxnumber` enthalten den minimalen und maximalen Wert, den eine Agena-Nummer (derzeit ein ANSI-C-Double) speichern kann.
  • Die neue Umgebungsvariable `environ.umaxlong` enthält den maximalen Ganzzahlwert des C-Typs auf 32-Bit-Systemen ohne Vorzeichen und auf 16-Bit-Systemen auf Vorzeichen ohne Vorzeichen.
  • C API:
  • Die 100% ige Kompatibilität der Agena C API mit der Lua's C API wurde durch Einführung der Lua's Dump-Funktionen wiederhergestellt. Somit können Sie nun Funktionen in einer binären Darstellung speichern, z. mit `strings.dump` oder lua_dump auf der C-Ebene.
  • Einführung der neuen `agnL_optboolean`-Funktion, um nach optionalen booleschen Argumenten zu suchen und sie im Erfolgsfall zurückzugeben.
  • Fehlerbehebungen:
  • `environ.globals` wird immer mit einem Fehler beendet, dies wurde behoben.
  • `nehme an 'hat false zurückgegeben, wobei beide Argumente" unbestimmt "sind. Es gibt jetzt in diesem Fall true zurück.
  • Agena stürzte beim Übergeben eines leeren Tisches und eines Delimitors auf `Join` ab - das wurde behoben.
  • Die `colour` Option wird nicht mehr von` gdi.plot` ignoriert.
  • Bei Tabellen gab `stats.minmax` einen falschen Wert für das Minimum zurück. Es funktioniert jetzt korrekt.
  • Bei einer leeren Tabelle hat "stats.median" den Wert 0 zurückgegeben, jetzt gibt es einen Fehler zurück.
  • Im Gegensatz zur Dokumentation hat `strings.isending` 'wahr' zurückgegeben, wobei beide Zeichenfolgen gleich sind. Dies wurde behoben.
  • `run` hat` Datei nicht öffnen` zurückgegeben, wenn ein bestehendes Agena-Skript einen Syntaxfehler enthielt. Dies wurde durch vollständiges Umschreiben der Funktion behoben.
  • Hinzugefügt Lua 5.1.4 Patch 9: "Falsche Codegenerierung für bestimmte [z. B. komplexe] boolesche Ausdrücke."
  • Hinzugefügt: Lua 5.1.4 Patch 11: "Parser kann während der Erstellung einen Prototyp sammeln."
  • * Info: Hinzufügen von Lua 5.1.4 Patch 10, "[__write / __ new] index metamethod funktioniert möglicherweise nicht, wenn metatable ein eigenes Metatable ist", zu Agena ist nicht notwendig, denn Agena funktioniert in diesem Fall bereits korrekt.
  • Das nicht verwendete Schlüsselwort `default` wurde entfernt.
  • Etwas Verhärtung von Funktionen und Features.
  • Verbesserungen:
  • Der Mac-Version wurde eine _experimentelle_ Version von "io.anykey" hinzugefügt. Aber zumindest auf Lion wird die gedrückte Taste manchmal auf der Shell wiedergegeben.
  • `utils.readcsv` kann jetzt optional alle Werte in einer CSV-Datei in einer flachen Reihenfolge zurückgeben.
  • Das Paket `clock` unterstützt nun den Divisionsoperator` / `, indem er es dem Metatable des` tm`-Operators hinzufügt.
  • Das Verhalten von `with` wurde geändert, da es für viele Bibliotheksfunktionen keine Kurznamen zuweisen konnte: Wenn Funktionen in die Tabelle .aux eingegeben wurden, sollten Sie keine Kurznamen für diese Funktionsnamen vergeben. Ansonsten vergeben Sie kurze Namen für alle anderen Paketfunktionen. Also: `package.register`, um alle Bibliotheksfunktionen für` mit` zu registrieren, um kurze Namen zu vergeben, wird nicht mehr benötigt. Es wird in einer der folgenden Versionen nicht weiter unterstützt.
  • Die Testsuite wurde verbessert.
  • Handbuch:
  • Verbesserte das Handbuch und den Index.
  • Konsistenz:
  • Für alle folgenden Umbenennungen werden die folgenden alten Variablennamen weiterhin unterstützt.
  • `environ.MinLong` wurde in` environ.minlong` umbenannt.
  • `environ.MaxLong` wurde umbenannt in` environ.maxlong`.
  • `environ.BufferSize` wurde umbenannt in` environ.buffersize`.
  • `environ.PathSep` wurde in` environ.pathsep` umbenannt.
  • `environ.More` wurde umbenannt in` environ.more`.
  • `environ.WithProtected` wurde in` environ.withprotected` umbenannt.
  • `environ.Os` wurde umbenannt in` environ.os`.
  • `environ.Cpu` wurde in` environ.cpu` umbenannt.
  • `environ.Release` wurde in` environ.release` umbenannt.
  • `environ.GdiDefaultOptions` wurde umbenannt in` environ.gdidefaultoptions`.
  • In Windows geben `os.login` und` os.computername` nun 'fail' zurück, wie es bei den UNIX- oder OS / 2-Versionen der Fall ist.
  • Der Schalter "-DOMPAT13" wurde endgültig entfernt, um eine Version 1.3.x von Agena zu kompilieren.
  • Andere:
  • Veraltet "calc.fseq" wurde gelöscht. Bitte verwenden Sie stattdessen `nseq`.

Was ist neu in Version 1.5.1:

  • Gepatchte `strings.fields`, die überhaupt nicht funktionierten. Außerdem wurde es in eine C-Bibliotheksfunktion umgewandelt und ist somit 2,6-mal schneller.
  • `strings.words` akzeptiert jetzt ein drittes Argument, wenn es auf` true` gesetzt ist, werden nachfolgende Trennzeichen ignoriert.
  • Ein mögliches Sicherheitsleck wurde von "io.write" und "io.writeline" entfernt und die Fehlermeldungen wurden verbessert.
  • Gepatchte `binio.readchar`, um Probleme mit Dateien mit einer Größe von mehr als 2 GByte zu vermeiden.
  • Korrigierte Fehlermeldungen der Funktionen `xbase.purge`,` xbase.readvalue`, `xbase.purge`,` ads.getvalues`, `binio.readshortstring`,` os.computername`, `os.login`, `os.fattrib`,` environ.kernel`, `package.register`.
  • Terabyte können jetzt mit der Schreibweise T eingegeben werden, wobei eine Ganzzahl und T das Zeichen "T" ist. Ebenso bezeichnet g Milliarden und t Billionen. Weitere Informationen finden Sie auf Seite 48 des Handbuchs.
  • Das Handbuch wurde aktualisiert.
  • Meistens wurden alle Rückwärtskompatibilitätsschalter im C-Quellcode aus Gründen der Codebereinigung entfernt. Dies betrifft nur diejenigen, die versuchen, Agena 1.5 oder höher mit voller Abwärtskompatibilität zu Agena 1.3 und 1.4 zu kompilieren, und mit der größten Abwärtskompatibilität zu Lua 5.0 (mit Ausnahme der alten Lua 5.0-Bibliotheksverwaltung).

Was ist neu in Version 1.5.0:

  • `map` kann nun auch Strings verarbeiten, die als zweites Argument angegeben sind. Die jeweilige Funktion und ihre Argumente werden fortlaufend auf jedes Zeichen von links nach rechts angewendet, und das Ergebnis wird in einer Sequenz zurückgegeben.
  • `run`: Wenn Sie Code aus Dateien mit einem 'agn' Suffix laden und ausführen wollen, müssen Sie das Suffix nicht mehr im Argument angeben. Also 'run' test'` und `run 'test.agn'' sind jetzt gleich.
  • Das `is` Schlüsselwort ist jetzt obligatorisch um Prozeduren zu definieren. (Verwenden Sie bei GCC die Option -DCOMPAT14, um eine Version von Agena zu kompilieren, bei der das Schlüsselwort `is 'noch optional ist.)
  • Die Anweisung "try" wurde eingestellt und wird nicht mehr unterstützt. (Mit GCC verwenden Sie die Option -DCOMPAT14, um eine Version von Agena zu kompilieren, die diese Anweisung noch enthält.)
  • Die folgenden `utils'-Funktionen wurden entfernt:` arraysize`, `getarray`,` getwholearray`, `newarray`,` searcharray`, `setarray`. Aus Gründen der Abwärtskompatibilität wurden sie der Datei lib / compat.agn hinzugefügt. (Mit GCC verwenden Sie die Option -DCOMPAT14, um eine Version von Agena zu kompilieren, die noch die ursprünglichen utils-Funktionen unterstützt.)
  • `utils.singlesubs` wurde komplett neu geschrieben. Es erwartet jetzt eine Sequenz von Zahlen als das zweite Argument anstelle der früheren stringarray userdata Struktur. Es ist 35% langsamer als die vorherige Version, aber das Entfernen der Stringarray-Struktur war wichtiger.
  • `strings.include` stürzte ab, wenn es mit 0 als zweitem Argument aufgerufen wurde. Dies wurde behoben.
  • Applied Michael G. Schwerns Patch vom 10. Mai 2011 auf sein `32-bit-Year 2038-Fix` Datum Hilfsfunktionen, die von den` os` und `xbase` Paketen verwendet werden (` Make mktime64 () korrigiert die eingehende tm Struktur wie ISO C fordert. ")
  • Optimierung des internen Codes: Einige Bibliotheksinitialisierungs- und Dateilade-C-Funktionen verwendeten den Stapel zum Erstellen von Pfad- und Dateinamenstrings. Die neue C aux-Funktion `concat`, geschrieben von Solar Designer, wird nun in vielen Fällen verwendet.
  • Die Agena C API ist nun 100% kompatibel zur Lua C API, um die Portierung von C Lua Paketen auf Agena zu ermöglichen.
  • Folgende Funktionen wurden umbenannt: lua_isnumber - & gt; agn_isnumber, lua_isstring - & gt; agn_isstring, luaL_optnumber - & gt; agnL_optnumber, luaL_checknumber - & gt; agnL_checknummer, luaL_optnummer - & gt; agnL_optnumber, luaL_checkinteger - & gt; agnL_checkinteger, luaL_optinteger - & gt; agnL_optinteger.
  • Die folgenden Makros wurden umbenannt: luaL_checkint - & gt; agnL_checkint, luaL_optint - & gt; agnL_optint.
  • Im Gegensatz zur früheren Implementierung von Agena gibt lua_tonumber jetzt 0 zurück, wie in Lua, wenn eine Nicht-Nummer übergeben wurde, anstatt HUGE_VAL zurückzugeben.
  • lua_setglobal2 wurde entfernt. Verwenden Sie stattdessen lua_pushvalue und lua_setglobal.

Was ist neu in Version 1.4.2:

  • Wenn in der Parameterliste einer Prozedur benutzerdefinierte Typen angegeben wurden, in
  • Prozeduraufrufe wurden in den folgenden Fällen keine Fehler ausgegeben und die Prozedur wurde stattdessen ausgeführt:
  • a) eine Tabelle, einen Satz, eine Sequenz, ein Paar oder eine Prozedur - ohne von einem benutzerdefinierten
  • zu sein
  • type - wurde übergeben,
  • b) für den betreffenden Parameter wurde überhaupt kein Wert übergeben.

Was ist neu in Version 1.4.1:

  • Kurznamen für `stats.quartiles` und` stats.mode` konnten nicht mit der Funktion `with` zugewiesen werden. Dies wurde behoben.
  • Irrtümlicherweise konnte "with" keinen kurzen Namen für "gdi.settriangle" vergeben. Dies wurde geändert.
  • Die Fehlerbehandlung von `calc.polygen` wurde verbessert.
  • Verbesserte Fehlermeldung von `fractals.draw` für fehlende FRACTINT-Kartendateien.
  • Die veraltete Funktion `strings.seek` wurde entfernt. Aus Gründen der Abwärtskompatibilität wurde `strings.seek` zur Datei lib / compat.agn hinzugefügt.
  • Die Option -d wurde hinzugefügt, um während des Starts des Interpreters Debugging-Informationen zu drucken.
  • Die Windows-Version von Agena wurde jetzt mit GCC 4.5.2 kompiliert.
  • Aktualisierte Sprachschemadateien.
  • Das Handbuch wurde aktualisiert.

Was ist neu in Version 1.4.0:

  • Semantische Änderungen:
  • Schleifensteuerungsvariablen von numerischen `for / to'-Schleifen sind jetzt automatisch lokal zu ihren umgebenden Blöcken anstatt ihrer (inneren) Schleifenkörper. Wenn eine lokale Variable mit demselben Namen wie die Schleifensteuerungsvariable deklariert und vor
  • zugewiesen wurde
  • Beim Ausführen einer numerischen Schleife wird diese durch den letzten Iterationswert der Schleife überschrieben. Daher wird der externe Schalter in numerischen For-Schleifen nicht mehr akzeptiert. (Mit GCC verwenden Sie die Option -DCOMPAT13, um eine Version von Agena zu kompilieren, die das Schlüsselwort "external" weiterhin erkennt, aber ignoriert.)
  • Mit der Konstante `fail`,` not` hat `true` zurückgegeben, aber mit` fail` wurde einer Variablen zugewiesen, `not` hat false zurückgegeben. Dies wurde geändert, d.h. 'a: = fail; nicht (a) 'gibt jetzt' wahr 'zurück.
  • `stats.median` gibt jetzt` fail` anstelle von 0 zurück, wenn die angegebene Struktur leer ist.
  • `utils.readcsv`: Wenn ein einzelnes Leerzeichen mit der Option` delim` übergeben wird und die Option 'ignorespaces` nicht angegeben wurde, werden Leerstellen nicht mehr automatisch entfernt, bevor die einzelnen Zeilen der Datei aufgeteilt werden seine Worte.
  • Die Funktion hat auch zwei neue Optionen: `header`, der die erste Zeile in einer Datei markiert, und` output`, mit dem der Inhalt der Datei in einem Wörterbuch gespeichert werden kann, dessen Feldnamen durch den Dateikopf definiert sind.
  • Die Zeichenkette "$" wird nicht mehr unterstützt. (Verwenden Sie bei GCC den Schalter -DCOMPAT13, um eine Version von Agena zu kompilieren, die noch den Operator `$` unterstützt.)
  • Erweiterungen:
  • Unendlich viele Schleifen wurden hinzugefügt. Diese Art von Schleife iteriert unendlich und kann nur mit den Anweisungen "break" oder "return" unterbrochen werden. Sie sind syntaktischer Zucker für "während wahre Do ... od" Schleifen.
  • Bei Tabellen arbeitete `stats.minmax` früher nur mit Arrays. Dies wurde geändert, d. H. Werte mit entsprechenden nichtpositiven Schlüsseln (z. B. Strings, nichtpositive ganze Zahlen, negative und positive Schwebungszeichen usw.) werden nun in der Auswertung richtig erkannt.
  • `stats.mean`,` stats.qmean`, `stats.sd` und` stats.var` verarbeiten nun auch Sequenzen.
  • Die neue Funktion "stats.mode" gibt alle Werte in einer Sequenz oder Tabelle mit der größten Anzahl von Vorkommen zurück, d. h. höchste Häufigkeit.
  • Die neue Funktion "stats.quartiles" gibt das erste, zweite und dritte Quartil einer _sorted_ Tabelle oder Sequenz zurück.
  • Zuvor wurden undokumentierte Funktionen von `linalg.matrix` dem Handbuch hinzugefügt und dessen Fehlerbehandlung wurde verbessert.
  • Verbesserte Fehlerbehandlung von `linalg.hilbert`.
  • `gdi.setinfo` akzeptiert nun die` square` Option. Wenn `square = false 'ist, haben die x- und y-Achsen nicht die gleiche Skalierung für Plots, die mit` gdi.plot` erstellt wurden.
  • Die `gdi.plot` Funktion zum Zeichnen von Grafiken wurde leider nicht dokumentiert. Dies wurde geändert.
  • `gdi.plot` akzeptiert zwei neue Optionen: Die Option 'x' gibt den horizontalen Bereich an, über den ein Diagramm angezeigt wird, und die Option 'y' gibt den vertikalen Bereich an.
  • Wenn eine PLOT-Struktur an `gdi.plot` übergeben wird, die nur POINTs, LINESs, RECTANGLES, TRIANGLEs, CIRCLEs und ELLIPSEs (einschließlich ihrer * FILLED-Varianten) enthält, bestimmt` gdi.plot` automatisch die Skalen (` gdi.setinfo` muss nicht unbedingt aufgerufen werden).
  • Die von Lua geerbten OOP-Merkmale sind nun in Anhang A9 dokumentiert. Der Autor empfiehlt keine objektorientierte Programmierung.
  • Abstimmung:
  • Abgestimmter "gefüllter" Operator um ca. 3%.
  • Tweaked `in`,` join`, `sadd`,` qsadd`, `replace`,` copy`, `unique` und Cantor setzen Operatoren auf Tabellen und setzen etwas.
  • Bei Tabellen sind die Operatoren "top" und "bottom" jetzt um 5% schneller.
  • Der Operator `size` ist mindestens 8% schneller, wenn eine Tabelle keine Nullen enthält.
  • `linalg.mzip`,` linalg.mmul` und `linalg.transpose` wurden um jeweils etwa 3% angepasst.
  • Numerische for / to-Schleifen mit Teilschrittgrößen wurden optimiert, indem die Anzahl ihrer Kontrollvariablen um die Hälfte reduziert wurde. Dies hat jedoch keine Steigerung der Geschwindigkeit erreicht.
  • Patches:
  • Gepatcht `linalg.ludecomp`, um singuläre Matrizen zu erkennen. Außerdem kann die Funktion jetzt automatisch die Reihenfolge der gegebenen Matrix bestimmen.
  • Im Gegensatz zum Handbuch hat `gdi.plot` nicht automatisch horizontale und vertikale Bereiche bestimmt. Dies wurde behoben.
  • `gdi.plot` ignoriert nicht mehr die` square` Option, die von `gdi.setinfo` gesetzt wurde.
  • `gdi.setinfo` hat Einstellungen zu INFO-Strukturen hinzugefügt, auch wenn sie bereits vorhanden waren. Dies wurde geändert.
  • Kreise wurden von `gdi.plot` nicht richtig gezeichnet. Dies wurde geändert.
  • Die Funktion "gdi.plot" ignorierte in den meisten Fällen die individuelle Einfärbung geometrischer Objekte. Dies wurde geändert.
  • Das gdi-Paket hat keine Kurznamen für `gdi.settriangle`,` gdi.settrianglefilled`, `gdi.setrectangle` und` gdi.setrectanglefilled` vergeben. Dies wurde geändert.
  • Das fractals-Paket hat keine Kurznamen für Funktionen vom benutzerdefinierten Typ 'esctime' zugewiesen. Dies wurde geändert. Die Fehlermeldung 'fractals.draw' wurde korrigiert, wenn Positionsargumente keine Zahlen waren.
  • Verschiedenes:
  • Die Funktionalität von `calc.fseq` wurde in` nseq` zusammengeführt. Aus Gründen der Abwärtskompatibilität ist "calc.fseq" immer noch Teil des calc-Pakets, aber die Funktion bezieht sich eigentlich auf die "nseq" -Implementierung.
  • Die `environ.FractScreenUpdates` -Variable wurde dem` fractals-Paket` hinzugefügt, um die Anzahl der vertikalen Linien (eine nicht negative ganze Zahl) anzugeben, nach der ein Fraktal in einem Fenster aktualisiert wird. Die Variable 'environ.FractOptimised' ist veraltet.
  • Hilfsgdi-Funktionen wurden neu gruppiert.

Was ist neu in Version 1.3.3:

  • Patches zu `instr`:
  • Im Regex-Modus gab der Operator ein falsches Ergebnis zurück, wenn eine Startposition angegeben wurde.
  • Im normalen Suchmodus gab der Operator einen Fehler außerhalb des Bereichs zurück, wenn keine Startposition angegeben wurde.
  • Außer im umgekehrten Suchmodus, wenn keine Übereinstimmung gefunden wurde, wurde das erste Argument anstelle von 'null' zurückgegeben.
  • Korrigierte Fehlermeldung der `create` Anweisung in Bezug auf Sequenzen.
  • In AgenaEdit wurden Strukturen bei der Ausgabe von mehr als einer Struktur mit nur einem Aufruf von `print` nicht in voller Form gedruckt, wenn die erste Struktur eine __tostring-Metamethode enthielt. Dies wurde geändert.

Was ist neu in Version 1.3.2:

  • Diese Version enthält Fehlerbehebungen, Erweiterungen und ein verbessertes Handbuch:
  • `dimension` erzeugte interessante Ergebnisse, wenn eine Struktur als
  • übergeben wurde
  • Initialisierer. Dies wurde geändert: `dimension` erstellt nun unabhängige Kopien des
  • Struktur beim Initialisieren der Tabelle.
  • Die Funktionalität von `strings.seek` wurde dem` instr`-Operator hinzugefügt.
  • Daher wurde "strings.seek" abgelehnt. Aus Gründen der Abwärtskompatibilität
  • `strings.seek` wurde zur Datei lib / compat.agn hinzugefügt.
  • `strings.hits` unterstützt jetzt reguläre Ausdrücke und Captures. Dieses Verhalten
  • kann ausgeschaltet werden, indem ein Boolean als drittes Argument übergeben wird.
  • `strings.isabbrev` und` strings.isending` verwenden jetzt automatisch eine einfache Suche
  • wenn keine regulären Ausdrücke oder Captures als Teil des zweiten
  • übergeben wurden
  • Argument.
  • Optimierte "strings.ismagic" und "strings.isfloat".
  • Die log-Funktion ist jetzt 13% schneller.
  • Bei der Ausgabe von mehr als einer Struktur mit nur einem Aufruf von `print`,
  • Strukturen wurden nicht in voller Form gedruckt, wenn die erste Struktur einen __Tostring
  • enthielt
  • Metamethod. Dies wurde geändert.
  • Zu Kapitel 7 wurden Kategorisierungen von Funktionen hinzugefügt, um den Start für neue
  • zu erleichtern
  • Benutzer.

Was ist neu in Version 1.3.1:

  • Es gab Probleme mit verschachtelten Aufrufen der folgenden binären Operatoren: `xor`,` atendof`, `& amp; & amp;`, `||`, `^^`, `::` und `: - `, und damit auch mit dem hübschen Drucker, der beim Drucken verschachtelter Strukturen mit einem Fehler quittiert. Dies wurde behoben.
  • Vier Korrekturen an "os.list": Wenn die Option 'r' übergeben wurde, wurde das aktuelle Arbeitsverzeichnis nach Abschluss des Aufrufs falsch geändert.
  • Wenn 'r' nicht als letztes Argument übergeben wurde, gab die Funktion einen Fehler aus.
  • `null` wurde nicht als erstes Argument für das aktuelle Arbeitsverzeichnis akzeptiert.
  • Unter Windows 7 funktionierte das Drucken des Inhalts des Stammverzeichnisses nicht, d. h. os.list ('c:') gab den Inhalt des aktuellen Arbeitsverzeichnisses zurück.
  • Wenn eine Zeichenfolge mit einer Nicht-Nummer indexiert wurde, z. "str [null]", Agena gab 'null' zurück. Jetzt wird ein Fehler ausgelöst.
  • Wenn library.agn nicht gefunden wurde, wurde in der Warnung der falsche Pfad zweimal ausgegeben. Dies wurde geändert.

Was ist neu in Version 1.2:

  • Der Substring-Operator wurde überarbeitet, aber die alte Version ist noch verfügbar bis Agena 2.0: Die neue ist: str [von links nach rechts], die alte war: str $ (links, rechts) . Ein Beispiel: before: `str: = 'string'; print (str $ (2, 3)) `- & gt; 'tr' jetzt: `str: = 'string'; print (str [2 bis 3]) `- & gt; 'tr'
  • Sie können jetzt Unterlisten von Tabellenarrays und Sequenzen mit der oben erwähnten neuen Syntax bestimmen: `s [von links nach rechts]`. Ein Beispiel: jetzt: `a: = [10, 20, 30, 40]; drucken (a [2 bis 3]) `- & gt; [20, 30] jetzt: `a: = seq (10, 20, 30, 40); drucken (a [2 bis 3]) `- & gt; Seq (20, 30)
  • Die Funktion "ops" erlaubt es nun, die Werte anzugeben, die zurückgegeben werden, indem eine Sequenz ihrer Indexpositionen als erstes Argument übergeben wird, z. ops (seq (1, -1), 10, 20,
  • 30).
  • Die neue Funktion `strings.include` fügt eine Zeichenfolge in eine Zeichenfolge
  • ein
  • an einer bestimmten Position.
  • Die folgenden Funktionen geben jetzt einen Fehler aus, anstatt nur `fail` in
  • zurückzugeben
  • Fall eines Fehlers: `os.remove`,` os.move`, `os.mkdir`,` os.rmdir`, `os.chdir`.
  • Verbesserungen der folgenden Operatoren, die an Mengen und Sequenzen bezüglich der Garbage Collection arbeiten: `insert` Statement,` union`, `intersection`,` minus`, `unique`,` copy`, `pop / top` und `pop / bottom'-Anweisungen und setzen Zuweisungen.
  • Verbesserte Fehlermeldung von `fractals.draw`, wenn die FRACTINT-Farbzuordnungsdatei nicht
  • lautet
  • wurde nicht gefunden.

Was ist neu in Version 1.1.0:

  • Diese Version enthält neue Funktionen und einen bereinigten Namespace.
  • Kompatibilität zu Agena 1.0:
  • Einige Funktionen wurden von Agena entfernt und einige wurden in Paketfunktionen umgewandelt (siehe unten). Wenn Sie sie dennoch verwenden möchten, geben Sie in der Befehlszeile 'compat' aus, readlib, oder fügen Sie die obige Anweisung in Ihre Initialisierungsdatei ein, wenn Sie die Abwärtskompatibilität zu Agena 1.0 bevorzugen.
  • Erweiterte Funktionalität:
  • Die Befehle `pop / top` und` pop / bottom` sowie `bottom` und` top` können nun auch auf Tabellenfelder angewendet werden.
  • Wenn os.chdir` mit `null` oder ohne Argumente aufgerufen wird, gibt es keinen Fehler mehr, sondern gibt das aktuelle Arbeitsverzeichnis zurück. Daher wurde die frühere `os.curdir` C-Funktion durch eine in der Agena-Sprache geschriebene ersetzt.
  • `os.list` durchläuft jetzt rekursiv Unterordner, wenn die neue 'r'-Option angegeben ist.
  • Der Operator `join` akzeptiert nun auch einen optionalen Begrenzer und unterstützt die Option, das erste und das letzte Element der zu verkettenden Struktur anzugeben.
  • `instr` kann nun vom rechten Ende eines Strings aus suchen, indem eine negative Position übergeben wird.
  • Wenn eine Tabelle andere Tabellen, Mengen, Sequenzen oder Paare enthält, weiß `copy` nun, wie diese Verweise korrekt behandelt werden, wenn sie mehrfach vorkommen: Wenn eine eingebettete Struktur n mal enthalten ist, wird eine echte Kopie erstellt und n-1 Verweise auf diese neu erstellte Struktur werden eingefügt. Vorher wurden n unabhängige Kopien erstellt.
  • Die neue `isnosposint'-Funktion prüft, ob die angegebenen Zahlen ganzzahlig und nicht positiv sind.
  • `io.close` kann jetzt mehrere Dateien mit nur einem Anruf schließen.
  • Die Funktion `with` hat den folgenden Prozeduren des` math` -Pakets keine Kurznamen zugewiesen: `convertbase`,` fraction`, `zeroin`,` todezimal`, `lcm`,` gcd` und ` ndigits. Dies wurde korrigiert.
  • Die im Handbuch erwähnte `rwritemode'-Funktion war nicht vorhanden. Es ist jetzt verfügbar, heißt aber `rmode`.
  • Fehlermeldungen verschiedener Funktionen wurden verbessert.
  • Namensraumbereinigung: Umbenannte oder verschobene Funktionen:
  • Die Bibliotheksfunktionen `register` und` loadclib` wurden in die Bibliothek `package` verschoben.
  • Die Funktionen `rdelete`,` rget`, `rinit`,` roinit`, `rmode`,` rset`, `remember` und` defaults` der Basisbibliothek wurden in das neue `rtable`-Paket verschoben .
  • Die globale _Env-Tabelle wurde in 'environ' umbenannt, die jetzt auch Prozeduren für den Zugriff auf die Umgebung enthält.
  • Die früheren globalen Umgebungsvariablen `homedir` und` infolevel` wurden in `environ.homedir` bzw.` environ.infolevel` umbenannt.
  • Die folgenden früheren Basisbibliotheksfunktionen wurden in das `environ'-Paket verschoben:` anames`, `attrib`,` gc`, `getfenv`,` globals`, `isselfref`,` pointer`, `setfenv` , `used`,` userinfo`, `__RESTART`,` __DOTTYPRINT`.
  • `mapm.xtoNumber` wurde umbenannt in` mapm.xtonumber`, `mapm.xtoString` wurde in` mapm.xtostring` umbenannt. Aus Gründen der Abwärtskompatibilität können die alten Funktionsnamen weiterhin verwendet werden, indem Sie die Datei lib / compat.agn ausführen (zuerst readlib das Paket `mapm` und dann die Datei compat.agn).
  • Veraltete Funktionen und Variablen:
  • `strings.seek` ist veraltet. Seine Funktionalität wurde dem "Instr" -Operator hinzugefügt. Um den Musterübereinstimmungsmodus von "instr" auszuschalten, übergeben Sie den Suchbeginn als drittes und "true" als viertes Argument. `Instr` ist im Nicht-Pattern-Matching-Modus um 40% schneller als` strings.seek`. Aus Gründen der Abwärtskompatibilität wurde `strings.seek` zur Datei lib / compat.agn hinzugefügt.
  • Die `concat` Basisbibliotheksfunktion wurde entfernt. Verwenden Sie stattdessen "Join". Aus Gründen der Abwärtskompatibilität wurde die frühere Funktion zur Datei lib / compat.agn hinzugefügt.
  • Die Funktionen hasrtable und hasrotable wurden entfernt. Aus Gründen der Abwärtskompatibilität wurden sie der Datei lib / compat.agn hinzugefügt.
  • Die Funktion `pcall` ist veraltet. Verwenden Sie stattdessen `protect`. Aus Gründen der Abwärtskompatibilität wurde die Funktion der Datei lib / compat.agn hinzugefügt.
  • Die Funktion 'maptoset' ist veraltet. Aus Gründen der Abwärtskompatibilität wurde die Funktion der Datei lib / compat.agn hinzugefügt.
  • Die Funktion "os.alldirs" ist veraltet. Verwenden Sie stattdessen die Optionen "dirs" und "r" in einem Aufruf von "os.list". Aus Gründen der Abwärtskompatibilität wurde die Funktion der Datei lib / compat.agn hinzugefügt.
  • os.isMac, os.isSolaris, os.isLinux, os.isWin, os.isOS2, os.isDOS, os.isHaiku sind veraltet. Bitte verwenden Sie stattdessen die neuen Umgebungsvariablen environ.Os und environ.Cpu, die ebenfalls den Code beschleunigen. Aus Gründen der Abwärtskompatibilität wurden die Funktionen der Datei lib / compat.agn hinzugefügt.
  • Die undokumentierte Variable _VERSION wurde entfernt. Aus Gründen der Abwärtskompatibilität wurde seine Zuweisung der Datei lib / compat.agn hinzugefügt.
  • Andere Änderungen:
  • Die im Handbuch erwähnte C-API-Funktion lua_rawsetstringnumber existierte nicht. Dies wurde geändert.
  • Code-Optimierungen für den Parser.
  • In einigen Paketen wurden versehentlich einige Variablen implizit als global deklariert. Dies wurde behoben.
  • Korrigierte und aktualisierte Initialisierungsprobendateien.
  • AgenaEdit wurde aktualisiert.
  • Die Sprachschema-Dateien wurden aktualisiert.
  • Die Linux-Installer enthalten jetzt das xBase-Paket.

Was ist neu in Version 1.0.6:

  • Verbesserte Fehlermeldungen von `join`,` copy` und `filled` Operatoren, von` toset`, `toseq` und` totable` Funktionen, von `insert`,` delete`, `pop` Anweisungen, und von `for` Schleifen.
  • Bei Sequenzen stürzte Agena in folgender Reihenfolge ab: 1) eine `delete` Anweisung wurde ausgeführt, 2) die Folge war leer und 3) ein neues Element wurde wieder eingefügt. Dies wurde behoben. (Intern reduziert die Anweisung `delete 'intern nicht mehr die Größe von Sequenzen.)
  • Bei großen Strings ist `concat` abgestürzt. Dies wurde behoben.
  • Bei Strings von 512 und mehr Bytes können `join` und` replace` abstürzen. Dies wurde behoben. Die beiden Betreiber sind jetzt auch viel schneller als je zuvor.
  • `math.isprime` lieferte falsche Ergebnisse mit Argumenten & gt; 2 ^ 31 (vage im Handbuch erwähnt). Dies wurde behoben, indem der Argumentbereich auf ganze Zahlen mit Werten bis +/- 2 ^ 63 erweitert wurde.
  • `math.nextprime` und` math.prevprime` hatten das gleiche Problem mit größeren Argumenten wie `math.isprime`. Dies wurde ebenfalls geändert. Mit Argument 2 hat "io.nextprime" fälschlicherweise 5 anstelle von 3 zurückgegeben. Dies wurde ebenfalls korrigiert.

Was ist neu in Version 1.0.5:

  • `join` kann Agena abstürzen und verhält sich ansonsten unerwartet, wenn die resultierende Zeichenfolge
  • ist
  • hat 512 Bytes überschritten. Dies wurde geändert.
  • Wenn `restart` aufgerufen wurde, nachdem im vorherigen
  • ein Fehler ausgegeben wurde
  • Aussage, Agena in seltenen Fällen abgestürzt wegen Stapel Korruption. Das war
  • behoben.
  • Bei neu erstellten Tabellen, die genau ein Element im Hash-Teil enthalten, `attrib`
  • liefert nun korrekte Ergebnisse für die Anzahl der zugewiesenen Hash-Slots (1 statt 0).
  • Korrigierte Fehlermeldungen von `qsadd` und` sadd`.
  • Verbesserte Fehlermeldungen von `join`, `copy` und` filled` Operatoren und von `insert`
  • und `lösche` Anweisungen.
  • Die Fehlerbehandlung von `read`,` save` und `fractals.draw` wurde verbessert.
  • Verbesserungen der Makefiles.
  • Puffergrößen sind jetzt in den Quellen standardisiert.

Was ist neu in Version 1.0.4:

  • Da während der Initialisierung seltene Abstürze gemeldet wurden (unter bestimmten Umständen in Windows XP SP 3 und OpenSolaris 134), wird die Garbage Collection in der Initialisierungsphase jetzt deaktiviert. Diese seltenen Segmentierungsfehler traten in OpenSolaris auf, wenn die Agena-Binärdatei in ihrem Beherbergungsverzeichnis als Root ausgeführt wurde, und in XP, wenn auf das Agena-Desktopsymbol mit lokalen Administratorrechten geklickt wurde.
  • Einführung des Befehls -d in die Befehlszeilenoptionen, um Informationen während der Initialisierung von Agena zu drucken.
  • Eine korrekte Fehlerbehandlung wurde eingeführt, wenn der Speicher intern nicht zugewiesen werden konnte: `trim`,` upper`, `lower`,` os.curdir` und `strings.seek`.
  • Mögliche Speicherlecks in den Initialisierungs-C-Funktionen agenaL_initialise und agenaL_setLibname sowie in `io.write *` und `print` entfernt.

Was ist neu in Version 1.0.3:

  • Die neue Funktion `protect` ruft eine Prozedur im geschützten Modus auf und fängt jeden möglichen Fehler ab, so dass die Berechnung nicht unterbrochen wird. Im Falle eines Fehlers wird die Fehlerzeichenfolge auf die globale Variable "lasterror" gesetzt. Es bezieht sich auf `pcall`, gibt aber den Statuscode nicht als erstes Ergebnis zurück.
  • `attrib` gibt nun korrekte Ergebnisse mit leeren Strukturen zurück. Bei leeren Strukturen hat die Funktion zuvor ein zugewiesenes Hash-Element falsch gezählt.
  • `attrib` gibt jetzt die Anzahl der Bytes zurück, die von Tabellen, Mengen und Sequenzen zusammen mit dem neuen 'Bytes'-Schlüssel belegt sind. Die Anzahl der zurückgegebenen Bytes basiert auf manchmal widersprüchlichen Informationen, die im Internet verfügbar sind.
  • `replace` stürzte Agena ab, wenn die resultierende Zeichenfolge 512 Bytes überschritt. Dies wurde geändert.
  • `nehme an 'gibt jetzt' Annahme ist fehlgeschlagen 'zurück. statt "Annahme fehlgeschlagen."
  • Die neue C-API-Funktion lua_setglobal2 setzt den Wert am Anfang des Stapels auf einen globalen Namen. Im Gegensatz zu lua_setglobal wird der Wert nicht ausgegeben.
  • Code-Reinigung von lobject.h (Tabellenstruktur) und lapi.c (acctnodesize-Makro). Bugfix für C-API-Funktion agn_deleterable, falls Agena mit nicht-void lua_assert kompiliert wird. Ändern Sie den Rückgabewert der Savestate-Funktion, die während der Initialisierung verwendet wird, um die (leichte) Möglichkeit einer Stapelbeschädigung zu verhindern.

Was ist neu in Version 1.0.2:

  • Die neue `os.setenv`-Prozedur legt Umgebungsvariablen auf der Betriebssystemebene fest. Die Funktion wurde ursprünglich von Mark Edgar geschrieben.
  • In Windows ruft "os.getenv" jetzt eine native Windows-API-Funktion auf, um die Werte von Umgebungsvariablen abzurufen. Der Windows-Code wurde von Mark Edgar geschrieben.
  • Die neue Funktion "os.environ" gibt alle zugewiesenen Umgebungsvariablen in einer Tabelle zurück. Die Funktion wurde ursprünglich von Mark Edgar geschrieben.
  • `io.open` fügt nun den FILE-Pointer, den Namen und den Modus einer erfolgreich geöffneten Datei in die neue Tabelle` io.openfiles` ein. `io.close` löscht den Eintrag aus` io.openfiles`, wenn die Datei erfolgreich geschlossen werden konnte.
  • Wenn 'io.read' ohne Argumente aufgerufen wird, gibt 'io.read' jetzt einen Fehler zurück, wenn er in AgenaEdit ohne Argumente aufgerufen wird (beim Versuch, die Tastatur zu lesen).
  • Wenn "io.anykey" und "io.getkey" in AgenaEdit aufgerufen werden, wird eine entsprechende Fehlermeldung angezeigt.
  • Eines der Initialisierungs-Unterverfahren wurde geändert, um eine mögliche Stapelkorruption zu vermeiden (obwohl Probleme nie auftraten).
  • os.isMac ('ppc') funktioniert jetzt auf PowerPC-Rechnern.
  • Kapitel 4 und 6 des Primers und der Referenz wurden überarbeitet und erweitert. Ein Index wurde hinzugefügt und viele Kosmetika wurden ebenfalls gemacht.
  • Gespeicherte korrekte Versionsinformation zur ausführbaren Windows-Datei.

Was ist neu in Version 1.0:

  • Sehr geehrte Damen und Herren,
  • nach fast vier Jahren Entwicklung habe ich Agena 1.0 veröffentlicht, eine prozedurale Programmiersprache, die von Lua C Quellen abgeleitet ist.
  • Meine Community ist wirklich sehr, sehr klein, aber einige Benutzer haben mir gesagt, dass es in Ordnung, nützlich und stabil ist.
  • Ich würde mich sehr freuen, wenn Sie Agena überprüft und mich über Ihre Ergebnisse informiert hätten. Wenn Sie es nicht nützlich finden, sagen Sie es mir bitte persönlich und geben Sie mir eine Chance, die Probleme zu beheben.

Was ist neu in Version 0.34.1d:

  • Diese Version enthält eine aktualisierte GUI-Version von AgenaEdit (siehe ausführbare Datei agenaedit).

Was ist neu in Version 0.34.1:

  • AgenaEdit mit Syntax-Highlighting und integrierter Laufzeit-Engine wurde mit Agena 0.34.1 veröffentlicht.

Was ist neu in Version 0.34.0:

  • AgenaEdit mit Syntax-Highlighting und integrierter Laufzeit-Engine wurde mit Agena 0.34.0 veröffentlicht.

Was ist neu in Version 0.33.2:

  • Agena 0.33.2 mit Unterstützung von xBase-Dateien wurde veröffentlicht.

Was ist neu in Version 0.33.1:

  • Agena 0.33.1 mit Unterstützung von xBase-Dateien wurde veröffentlicht.

Was ist neu in Version 0.33.0:

  • Das neue `xbase`-Paket kann xBase-Dateien lesen und schreiben, die mit dem dBASE-III-Standard kompatibel sind.
  • Die Pakete `binio` und` ads` können nun Dateien mit bis zu 2 ^ 63 Bytes verarbeiten. Vorher konnten sie nur Dateien mit Größen von bis zu 2 ^ 31 Bytes verarbeiten.
  • Die neuen Funktionen "io.lock", "io.unlock", "binio.lock", "binio.unlock", "ads.lock" und "ads.unlock" sperren eine Datei vor Lese- und Schreibzugriff andere Agena
  • Funktionen oder sogar andere Anwendungen, sofern letztere ein Locking-Protokoll verwenden.
  • Die baselib-Funktion `read` kann nicht mehr mit` with`.
  • überschrieben werden
  • Das neue `package.checkClib` überprüft, ob ein in einer C-dynamischen Bibliothek gespeichertes Paket initialisiert wurde. Ist dies nicht der Fall, wird eine Warnung auf dem Bildschirm ausgegeben und eine leere Paketetabelle erstellt. Ansonsten tut es nichts.
  • Der Haiku-Port unterstützt jetzt dynamische Link-Bibliotheken.

Was ist neu in Version 0.32.3:

  • Agena 0.32.3 mit neuen und abgestimmten Calculus-Funktionen wurde veröffentlicht.
  • Mac-Benutzer müssen keine zusätzlichen Abhängigkeitsbibliotheken mehr installieren.
  • Ein Haiku-Port ist jetzt verfügbar.

Was ist neu in Version 0.31.5:

  • Diese Version enthält integrierte Grafiken, mathematische Berechnungen mit beliebiger Genauigkeit und verbesserte Funktionen.

Was ist neu in Version 0.31.3:

  • Das Fraktalpaket wurde hinzugefügt, um Fraktale unter Solaris, Mac, Linux und Windows einfach zeichnen zu können.
  • Unter Solaris und Linux gibt `gdi.mouse` jetzt Standardwerte für gedrückte Maustasten zurück (wie die Mac- und Windows-Editionen).
  • Wenn die Option -v angegeben wird, führt Agena die Initialisierungsdateien nicht mehr aus.
  • Unter UNIX oder Mac müssen die Dateinamen der Initialisierungsdateien immer ".agenainit" lauten, unabhängig davon, ob sie sich in / usr / agena / lib oder im persönlichen Ordner befinden.
  • Die binäre Mac-Distribution für Intel-CPUs läuft ca. 30% schneller als die vorherigen Versionen.
  • Die Funktion "io.getkey" ist jetzt in der Mac OS X Edition verfügbar.
  • Am Mac gibt `os.system` nun vollständige Informationen über das Betriebssystem und den CPU-Typ zurück. Beachten Sie, dass Informationen zum Darwin-Kernel zurückgegeben werden und dass der erste Eintrag in der resultierenden Tabelle jetzt "Darwin" statt "MacOSX" ist.
  • `os.memstate`,` os.freemem` und `os.beep` unterstützen jetzt Mac OS X.
  • `io.anykey` ist auf allen Plattformen verfügbar, gibt aber` fail` auf DOS und Mac zurück. Daher wird `gdi.draw` keine Fehler mehr auf dem Mac auslösen, wenn die 'Maus'-Option verwendet wird.
  • `os.listcore` wurde erweitert, um nur Datei-, Verzeichnis- oder Linknamen zurückzugeben. "." und '..' werden jetzt nie zurückgegeben.
  • `os.list` hat keine Optionen erkannt und stattdessen eine leere Liste zurückgegeben. Dies wurde behoben. Außerdem können Optionen jetzt kombiniert werden. "." und '..' als erstes Argument werden jetzt richtig erkannt.
  • `os.curdir` ersetzt jetzt automatisch Backslashes in dem mit Schrägstrichen bestimmten Pfad.
  • `os.fstat` und` ads.attrib` stürzten Agena ab, wenn das Datum einer Datei am Dienstag, den 19. Januar 2038 überschritten wurde. Dies wurde behoben, indem entweder eine leere Tabelle für den Datumsschlüssel (os.fstat) zurückgegeben wurde, oder 0/0/01 00:00:00, (ads.attrib).
  • `utils.calendar` stürzte Agena ab, wenn das Argument ungültig, negativ oder zu groß war. Dies wurde geändert. Wenn ein Datum über Dienstag, den 19. Januar 2038 hinausgeht, wird das korrekte Datum zurückgegeben.
  • Die neuen Funktionen `os.screensize` und` os.mousebuttons` geben jeweils die aktuelle Bildschirmauflösung und die Anzahl der Buttons der angeschlossenen Maus zurück (nur Windows).
  • Die Datei agena.ini.sample wurde in den UNIX / Mac-Distributionen in .agenainit.sample umbenannt.
  • Ein neues Makefile für Solaris wird jetzt mit der Bindung von mapm Agena ausgeliefert, um die ursprünglichen von Michael C. Ring geschriebenen MAPM-Quellen vollständig zu kompilieren.

Was ist neu in Version 0.31.2:

  • Das mapm-Paket für arbitrary math precision ist jetzt auch in der DOS-Version von Agena verfügbar.
  • Die Anzahl der vom mapm-Paket verwendeten Ziffern wird beim Start von Agena für DOS oder OS / 2 Warp auf 17 Stellen initialisiert. Vorher war der Standardwert 1 Ziffer.
  • Der C-Code für die MAPM-Bindung wurde standardisiert. Vorher unterschieden sich die DOS- und OS / 2-Quelldateien von denen für UNIX und Windows.
  • Kleine Verbesserungen für die Windows- und Mac OS X-Installer.
  • Auf Mac ist die Dokumentation jetzt in Bibliothek / Dokumentation / Agena statt / Users / Share / Agena verfügbar.
  • Die Funktionen sin, cos, arcsin, arccos und arctan gaben -0 anstelle von 0 als imaginäre Einheit zurück, was zu falschen Ergebnissen führte, wenn die Rückgabe dieser Funktionen auf andere Funktionen wie ln (dh das Zeichen) angewendet wurde der imaginären Einheit des Ergebnisses dieser anderen Funktionen war falsch). Dies wurde behoben, indem die imaginäre Einheit -0 bei der Rückgabe von sin, cos, arcsin, arccos und arctan auf 0 gesetzt wurde.
  • Die Funktionen arcsin und arccos haben für die Argumente z falsche Ergebnisse zurückgegeben, wenn abs (real ((z))) & lt; 1. Das wurde behoben.
  • In OS / 2 haben die meisten komplexen arithmetischen Funktionen undefined zurückgegeben. Dies wurde behoben.
  • Beachten Sie, dass es in OS / 2 und DOS in der komplexen Domäne immer noch Probleme mit den Operatoren arccos und arcsin gibt, die in bestimmten Situationen undefiniert zurückgegeben werden.
  • Die Versionen für Windows, i386 Solaris 10 und Linux wurden jetzt mit GCC 4.4.x (und ohne xmath86.h) kompiliert, wodurch die Anzahl der Fehler in der komplexen Arithmetik erheblich reduziert wurde. In der Tat liefern ausgeklügelte komplexe mathematische Testfälle Nullfehler. Die Sparc-Version wurde mit GCC 4.3.3 für Sun Sparc kompiliert und hat weniger Fehler in der komplexen Zahlenarithmetik als die Version 0.31.1.
  • Die folgenden Include-Dateien wurden umbenannt: config.h - & gt; agncfg.h, chelpers.h - & gt; agnhlps.h, agnxlib.h - & gt; agnxlib.h.
  • Unter Mac gibt gdi.mouse nun Standardwerte für gedrückte Maustasten zurück.

Was ist neu in Version 0.31.1:

  • Agena 0.31 enthält alle grundlegenden Werkzeuge zum Zeichnen von Punkten, Linien, Kreisen, Ellipsen, Rechtecken und Bögen. usw., um Bildgröße und Farben zu steuern.

Was ist neu in Version 0.31.0:

  • Eine Sprachkonsistenzversion mit einem Bugfix wurde veröffentlicht. Weitere Informationen finden Sie im Änderungsprotokoll.

Was ist neu in Version 0.30.4:

  • Agena verfügt jetzt über integrierte Grafiken. Damit können Sie Grafiken, Bilder usw. in X11- oder Win32-Fenstern oder in GIF-, PNG-, JPEG-, FIG- oder PostScript-Dateien unter Solaris, Linux und Windows plotten. Agena bindet sich an die g2-Grafikbibliothek von Ljubomir Milanovic und Horst Wagner, um diese neuen Fähigkeiten zu bieten.
  • Agena 0.30 enthält alle grundlegenden Werkzeuge zum Zeichnen von Punkten, Linien, Kreisen, Ellipsen, Rechtecken und Bögen. usw., um Bildgröße und Farben zu steuern.
  • & gt; mit 'gdi';
  • gdi package v0.1.4 vom 20. Dezember 2009
  • arc, arcfilled, Hintergrund, Kreis, circlefilled, clearpalette, schließen, Bindestrich, Ellipse, ellipsefilled, bündig, Schriftgröße, initpalette, Tinte, lastaccessed, Linie, newline, newpoint, offen, plot, plotfn, Punkt, Rechteck, rechteckig gefüllt , reset, resetpalette, setinfo, setoptions, struktur, text, dicke, dreieck, dreieckfüllung, useink
  • Die plotfn-Funktion zeichnet einen oder mehrere Graphen von Funktionen in einem Real, optional zusammen mit den Achsen, die in einer benutzerdefinierten Farbe gezeichnet werden. Der Bereich für die y-Achse kann ebenfalls angegeben werden, ansonsten ermittelt Agena die beste Einstellung. Es gibt verschiedene andere Optionen, die mit der setoptions-Funktion eingestellt werden können und die für alle in einer Sitzung erzeugten Graphen gelten: die Fensterauflösung, die Farbkarte, die Linienstärke und die Hintergrundfarbe. Natürlich kann der Benutzer einige oder alle Optionen für ein bestimmtes Diagramm überschreiben. Singularitäten werden richtig behandelt.

Was ist neu in Version 0.30.3:

  • Agena 0.30.3 mit integrierter Grafik, willkürlicher Genauigkeit und verbesserten Funktionen wurde veröffentlicht.

Was ist neu in Version 0.30.2:

  • Agena verfügt jetzt über integrierte Grafiken. Damit können Sie Grafiken, Bilder usw. in X11- oder Win32-Fenstern oder in GIF-, PNG-, JPEG-, FIG- oder PostScript-Dateien unter Solaris, Linux und Windows plotten. Agena bindet sich an die g2-Grafikbibliothek von Ljubomir Milanovic und Horst Wagner, um diese neuen Fähigkeiten zu bieten.
  • Agena 0.30 enthält alle grundlegenden Werkzeuge zum Zeichnen von Punkten, Linien, Kreisen, Ellipsen, Rechtecken und Bögen. usw., um Bildgröße und Farben zu steuern.
  • & gt; mit 'gdi';
  • gdi package v0.1.4 vom 20. Dezember 2009
  • arc, arcfilled, Hintergrund, Kreis, circlefilled, clearpalette, schließen, Bindestrich, Ellipse, ellipsefilled, bündig, Schriftgröße, initpalette, Tinte, lastaccessed, Linie, newline, newpoint, offen, plot, plotfn, Punkt, Rechteck, rechteckig gefüllt , reset, resetpalette, setinfo, setoptions, struktur, text, dicke, dreieck, dreieckfüllung, useink
  • Die plotfn-Funktion zeichnet einen oder mehrere Graphen von Funktionen in einem Real, optional zusammen mit den Achsen, die in einer benutzerdefinierten Farbe gezeichnet werden. Der Bereich für die y-Achse kann ebenfalls angegeben werden, ansonsten ermittelt Agena die beste Einstellung. Es gibt verschiedene andere Optionen, die mit der setoptions-Funktion eingestellt werden können und die für alle in einer Sitzung erzeugten Graphen gelten: die Fensterauflösung, die Farbkarte, die Linienstärke und die Hintergrundfarbe. Natürlich kann der Benutzer einige oder alle Optionen für ein bestimmtes Diagramm überschreiben. Singularitäten werden richtig behandelt.

Was ist neu in Version 0.29.0:

  • Agena verfügt jetzt über integrierte Grafiken. Damit können Sie Diagramme, Bilder usw. in einem Fenster oder in einer GIF-, PNG-, JPEG-, FIG- oder PostScript-Datei unter Solaris, Linux und Windows plotten, indem Sie eine Bindung an die von Ljubomir Milanovic geschriebene grafische Bibliothek g2 einfügen und Horst Wagner.
  • Agena 0.29.0 enthält alle grundlegenden Werkzeuge zum Zeichnen von Punkten, Linien, Kreisen, Ellipsen, Rechtecken und Bögen. usw., um Farben zu verwalten und Bilddateien zu erstellen oder X11- oder Win32-Fenster zu öffnen.
  • In einem der kommenden Updates können Sie auf einer High-Level-Benutzeroberfläche mit den Funktionen gdi.plotfn und gdi.plot univariate Funktionen und Punktmengen im Handumdrehen darstellen. Die beiden Funktionen sind bereits in Agena 0.29.0 enthalten, sind aber immer noch Beta. Hier ist eine Vorschau:
  • & gt; mit 'gdi';
  • gdi package v0.1.0 vom 24. November 2009
  • Bogen, Hintergrund, Kreis, Clearpalette, schließen, Strich, Ellipse, gefüllterArc, gefüllter Kreis, gefüllterEllipse, gefüllterRektwinkel,
  • filledTriangle, flush, fontsize, initpalette, Tinte, lastaccessed, line, open, plot, plotfn, point, rectangle, reset,
  • resetpalette, setinfo, setoptions, struktur, text, dicke, dreieck, useink
  • Die Funktion plotfn zeichnet den Graphen einer Funktion in einem reellen Wert, optional zusammen mit den in einer benutzerdefinierten Farbe gezeichneten Achsen. Der Bereich für die y-Achse kann ebenfalls angegeben werden, andernfalls versucht Agena, die beste Einstellung zu ermitteln. Es gibt verschiedene andere Optionen, die mit der setoptions-Funktion eingestellt werden können und die für alle in einer Sitzung erzeugten Graphen gelten: die Fensterauflösung, die Farbkarte, die Linienstärke und die Hintergrundfarbe. Natürlich kann der Benutzer einige oder alle Optionen für ein bestimmtes Diagramm überschreiben. Singularitäten werden richtig behandelt.
  • plotfn (sin (x) * x & gt; & gt;, -5, 5, Farbe ~ 'blau', Achsenfarbe ~ 'grau', res ~ 640: 480);

Was ist neu in Version 0.27.2:

  • Die neue Funktion "toSet baselib" konvertiert eine Zeichenfolge in eine Menge ihrer Zeichen und eine Tabelle oder Sequenz in eine Gruppe.
  • io.readlines wurde zur Verarbeitung von Zeilen mit mehr als 2048 Zeichen gepatcht. Die Funktion gibt jetzt auch einen Fehler aus, wenn die interne Speicherzuordnung fehlschlägt. Die interne Puffergröße wurde von 2048 Byte auf 512 Byte verringert. Sie können dies ändern, indem Sie AGN_IOREADLINES_MAXLINESIZE in der Datei agnconf.h einen anderen Wert zuweisen.
  • io.readlines akzeptiert jetzt auch Dateigriffe. Beachten Sie, dass Sie die Datei bei Verwendung von Dateihandles im Gegensatz zu Dateinamen manuell schließen müssen, nachdem Sie io.readlines verwendet haben.
  • io.readlines gibt keine leere Tabelle mehr zurück, wenn die Datei nicht existiert. Stattdessen wird ein Fehler ausgegeben.
  • toSeq gibt jetzt einen Fehler zurück, anstatt fehlzuschlagen, wenn er keine Zeichenfolge, keinen Satz oder keine Tabelle erhält.
  • Die verwendete baselib-Funktion wurde erweitert und kann die Speicherbelegung in Byte, KByte und GByte zurückgeben. Es ist jetzt eine C-Funktion.
  • Die undokumentierte gcinfo-Funktion wurde gelöscht. Seine Funktionalität wurde von verwendet.
  • Die neue C-API-Funktion agn_usedbytes gibt die Anzahl der vom System verwendeten Bytes zurück.
  • Korrigierte falsche Fehlermeldung von toTable.
  • umbenannt C AOI-Funktion `agn_isioforcerror` zu` agn_isioforceerror`.

Was ist neu in Version 0.27.0:

  • Die Fehlerfunktion math.erf und die komplementäre Fehlerfunktion math.erfc.
  • wurden hinzugefügt
  • Hinzugefügt die Bessel-Funktion der ersten Art math.besselj, und die Bessel-Funktion der zweiten Art math.bessely. Die Reihenfolge ergibt sich aus dem ersten Argument, das Argument aus dem zweiten Argument.
  • Wenn die neue Umgebungsvariable _EnvIoForceError auf einen Nicht-Null-Wert (den Standardwert) gesetzt ist, werden io.open, io.readlines und die verschiedenen binio-Funktionen mit einem Fehler beendet, anstatt nur normal zurückzukehren.
  • binio.readbytes und binio.readchar haben eine leere Sequenz anstelle von fail zurückgegeben, falls die zu lesende Datei nicht existiert. Dies wurde geändert: Fehler oder ein Fehler wird jetzt zurückgegeben.
  • arcsin und arccos sind jetzt Operatoren und damit rund 40% schneller.
  • Der xor-Operator wurde hinzugefügt, der eine boolesche Exklusiv-ODER-Operation für Werte ausführt, die evaluieren oder wahr sind, false, fail und null.
  • Es wurde der Operator atendof hinzugefügt, der prüft, ob ein Wort in einer bestimmten Phrase endet und seine Position als Zahl zurückgibt. Der Operator gibt null zurück, wenn die Zeichenfolgen die gleiche Länge haben, mindestens eine davon die leere Zeichenfolge ist oder das Wort nicht mit dem angegebenen Muster endet.
  • hasrtable gibt nur dann true zurück, wenn es eine Lese / Schreib-Erinnerungstabelle hat (aktualisiert durch die return-Anweisung).
  • Die neue Funktion hasrotable bestimmt, ob eine Funktion eine schreibgeschützte Erinnerungstabelle hat (die durch die return-Anweisung nicht aktualisiert werden kann) und gibt true oder false zurück.
  • Die neuen Operatoren gethigh und getlow rufen das höhere und das niederwertige Byte von einer Zahl ab (d. h. C double).
  • Die neuen Operatoren sethigh und setlow setzen die höheren und die niedrigeren Bytes auf eine Zahl (d. h. C double).
  • Die neuen Operatoren band, bor, bxor und bnot führen bitweise und / oder exklusive oder komplementäre Operationen mit Zahlen aus.
  • Die neue `kernel'-Funktion konfiguriert die Einstellungen des Agena-Kernels. Gegenwärtig kann es die Art ändern, wie die bitweisen Operatoren intern arbeiten (Verwendung von Ganzzahlen mit oder ohne Vorzeichen) und wie Zahlen gedruckt werden.
  • Bei reellen Zahlen x gibt math.argument jetzt Pi statt 0 zurück, wenn x & lt; 0.
  • Aufgrund eines Fehlers in den zugrunde liegenden ANSI C-Bibliotheksfunktionen erzeugten arcsin und arccos falsche Ergebnisse mit komplexen Zahlen, wenn ihr Imaginärteil in UNIX-Systemen Null war. Dies wurde behoben.
  • math.isPrime wurde mit Nummer 2 falsch gemeldet. Dies wurde korrigiert.
  • Im Gegensatz zum Handbuch gab abs 2 mit fail zurück. Jetzt gibt es -1 zurück, wie dokumentiert.
  • Das Bitpaket wurde entfernt.
  • Die neue C-API-Funktion agn_isioforcerror wurde hinzugefügt, die überprüft, ob _EnvIoForceError auf einen Wert ungleich null gesetzt wurde.
  • Die neue C-API-Funktion agn_setbitwise legt fest, ob die Operatoren band, bor, bnot, bxor und shift intern entweder mit Ganzzahlen mit oder ohne Vorzeichen berechnet werden.
  • Die neue C-API-Funktion agn_getbitwise gibt den von agn_setbitwise festgelegten Modus zurück.
  • Die neue C-API-Funktion agn_setdigits legt die Anzahl der Ziffern fest, die zum Drucken von Zahlen verwendet werden.
  • Die neue C-API-Funktion agn_getdigits bestimmt die Anzahl der Ziffern, die zum Drucken von Zahlen verwendet werden.
  • Intern: Entfernt den veralteten Eintrag "REPL" von luaP_opnames.
  • Das Windows-Installationsprogramm wurde verbessert, indem jetzt nach einer zuvor installierten Version von Agena gesucht wird, indem verhindert wird, dass das Installationsprogramm gestartet wird, wenn bereits eine andere Instanz ausgeführt wird, und durch einige andere kleine Verbesserungen.

Anforderungen :

  • Ncurses
  • GNU Readline

Ähnliche Software

byacc
byacc

3 Jun 15

Toka
Toka

3 Jun 15

TinyCOBOL
TinyCOBOL

11 May 15

Kommentare zu Agena

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!