Agena este un limbaj de programare deschis, gratuit, multi-platformă și ușor de învățat, programat pentru utilizarea de zi cu zi. Acesta poate fi folosit în medii grafice, științifice, lingvistice și educaționale, precum și în aplicații de scripting, care susțin toate sistemele de operare obișnuite.
Oferă numeroase facilități de control al fluxului
Aplicația oferă numeroase facilități de control al debitului, cum ar fi dacă, atunci. elif, alte condiții, caz și altceva condiții, este operator, numeric pentru, de la, la, și prin bucle, combinate numerice pentru și în timp bucle, pentru și în bucle, în timp ce și ca / ca bucle, o declarație skip, o pauză precum și validarea tipului de date.
Oferă sarcini de enumerare
Printre alte caracteristici, putem menționa o bibliotecă matematică de precizie arbitrară, configurarea ușoară a mediului dvs. personal, un sistem de pachete ușor de utilizat, sarcini enumerare, controlul domeniului prin intermediul cuvintelor cheie epocă / domeniu și multe alte caracteristici atractive.
Sub capota și disponibilitate
O privire rapidă sub capotă ne va arăta că proiectul este scris în limbile de programare C, BASIC, Lua și ALGOL 68, ceea ce înseamnă că sintaxa sa seamănă cu sintaxa acestor proiecte. Se execută în întregime într-un mediu de consolă / terminal, ceea ce înseamnă că nu are o interfață grafică (GUI).
Navele cu un simplu editor
În ciuda faptului că software-ul Agena este o aplicație de linie de comandă, acesta este livrat cu un simplu software grafic de editor, numit AgenaEdit, care prezintă un mediu integrat al Agena și capabilități de evidențiere a sintaxelor. Este puternic inspirat de un editor similar dezvoltat de Bill Spitzak pentru setul de instrumente FLTK cross-platform C ++ GUI.
Lucrări pe zmeura Pi
Capabilitățile grafice ale Agena sunt suportate pe sistemele de operare GNU / Linux, Solaris, Mac OS X, Microsoft Windows, eComStation - OS / 2 și DOS. Acesta poate fi implementat cu ușurință atât pe platformele hardware pe 64 de biți, cât și pe 32 de biți, și a fost testat cu succes pe placa de bază Raspberry Pi bazată pe ARM.
Ce este nou în această versiune:
- noua funcție Calcul și statistică
Ce este nou în versiune:
- noua funcție Calcul și statistică
Ce este nou în versiunea 2.9.4:
Ce este nou în versiunea 2.8.5:
Ce este nou în versiunea 2.8.2:
Ce este nou în versiunea 2.6.1:
- `stats.chauvenet` inferior sau superior, trecând opțiunea `outlier = 'lower'` sau` outlier =' upper'`, respectiv.
- "bags.remove" a cauzat defecțiuni de segmentare. Asta a fost rezolvată. Mai mult, toate funcțiile "pungilor" implementate în C au fost modificate intern.
Metodologiile (nedocumentate) pentru `+`, `-` și` * `nu au funcționat dacă pachetul" pungi "nu a fost invocat cu funcția` with` sau cu 'import / alias`. Acest lucru a fost rezolvat.
Ce este nou în versiunea 2.5.4:
- "stats.chauvenet" poate verifica în mod specific pentru cele mai mici sau superioare prin trecerea opțiunii `outlier = 'lower'` sau` outlier =' upper'`.
- "bags.remove" a cauzat defecțiuni de segmentare. Asta a fost rezolvată. Mai mult, toate funcțiile "pungilor" implementate în C au fost modificate intern.
Metodologiile (nedocumentate) pentru `+`, `-` și` * `nu au funcționat dacă pachetul" pungi "nu a fost invocat cu funcția` with` sau cu 'import / alias`. Acest lucru a fost rezolvat.
Ce este nou în versiunea 2.5.3:
- `stats.chauvenet` inferior sau superior, trecând opțiunea `outlier = 'lower'` sau` outlier =' upper'`, respectiv.
- "bags.remove" a cauzat defecțiuni de segmentare. Asta a fost rezolvată. Mai mult, toate funcțiile "pungilor" implementate în C au fost modificate intern.
Metodologiile (nedocumentate) pentru `+`, `-` și` * `nu au funcționat dacă pachetul" pungi "nu a fost invocat cu funcția` with` sau cu 'import / alias`. Acest lucru a fost rezolvat.
Ce este nou în versiunea 2.4.2:
- "stats.chauvenet" poate verifica în mod specific pentru cele mai mici sau superioare prin trecerea opțiunii `outlier = 'lower'` sau` outlier =' upper'`, respectiv.
- "bags.remove" a cauzat defecțiuni de segmentare. Asta a fost rezolvată. Mai mult, toate funcțiile "pungilor" implementate în C au fost modificate intern.
Metodologiile (nedocumentate) pentru `+`, `-` și` * `nu au funcționat dacă pachetul" pungi "nu a fost invocat cu funcția` with` sau cu 'import / alias`. Acest lucru a fost rezolvat.
Ce este nou în versiunea 2.3.0 RC1:
- Buclele numerice `pentru` suportă acum cuvântul cheie` downto ', astfel încât să puteți conta în jos fără a utiliza o dimensiune obligatorie negativă `după` pas. În contextul "downto", dimensiunea pasului "după" ar trebui să fie întotdeauna pozitivă. `de la 'start' și 'to' sunt valabile obligațiile când se folosește cuvântul cheie` downto '.
- Metamodele "__finite", "__entier" și "__sqrt" nu mai sunt acceptate. În schimb, au fost adăugate trei meta-metode noi pentru operațiile pe structuri: "__union" pentru operațiuni sindicale, "__intersect" pentru a determina intersecțiile și __minus pentru diferențe. Astfel, pachetul "pungi" acum acceptă și aceste trei operații.
- Operatorul diviziei întregi nu și-a susținut metamododul și a folosit-o pe cea pentru divizarea flotorului (`/` operator). Acest lucru a fost rezolvat.
- Noua funcție `stats.gini` determină coeficientul Gini, o măsură a egalității (in-).
- Noua funcție `stats.zscore` returnează o funcție care compară scorul z (scorul standard) dintr-un eșantion - numărul de abateri standard eșantionul este peste sau sub media unei distribuții.
- "stats.sorted" acum utilizează în mod implicit algoritmul Introsort în loc de Quicksort. Acest lucru poate accelera timpul de calcul de trei ori în situații nepotrivite (unde Quicksort ar avea nevoie de operațiuni O (n ^ 2)), fără a sacrifica performanța în situații obișnuite. De fapt, Introsort utilizează în mod implicit Quicksort și apoi trece automat la Heapsort dacă adâncimea de recursiune ajunge la 2 * log (n, 2), unde n este numărul elementelor dintr-o structură.
- Puteți să ignorați această logică prin trecerea noii opțiuni "quicksort" care folosește numai metoda tradițională recursivă Quicksort pentru a sorta numere. De asemenea, "stats.sorted" poate folosi algoritmul Heapsort exclusiv în cazul în care se trece noua opțiune "heapsort" și un algoritm Quicksort non-recursiv elaborat de Niklaus Wirth cu noua opțiune "nrquicksort".
- Noua funcție `stats.meanmed` returnează atât media aritmetică, cât și mediana unei distribuții sau, alternativ, coeficientul mediei și medianului, accelerarea timpilor de calcul atunci când aceste valori sunt necesare cu aproximativ 20%. li>
- Îmbunătățiți mesajul de eroare al operatorului "size".
Ce este nou în versiunea 2.1.1:
- Funcții noi și patch-uri:
- "încercați / capturați": specificarea explicită a unei variabile de eroare imediat după ce simbolul "catch" este acum opțională. Dacă nu este dată nici o variabilă de eroare, atunci mesajul de eroare este stocat automat la variabila locală `lasterror`, iar cuvântul cheie` then` trebuie să fie lăsat afară:
- & gt; încerca
- & gt; eroare ("oops!")
- & gt; captura
- & gt; print (lasterror)
- & gt; YRT;
- Oops!
- Instrucțiunea `try / catch` uneori nu a funcționat în proceduri (variabila de eroare neasignată). Acest lucru a fost rezolvat.
- Noua funcție `net.wget` descarcă pagini HTML de pe Web.
- Acordat "skycrane.counter" cu 10%. Funcția acum folosește opțional Kahan-Ozawa în locul algoritmului inițial de sumare Kahan dacă noul al treilea argument este șirul "ozawa". Sursele C corespunzătoare au fost modificate pentru a împiedica optimizarea compilatorului, care ar putea anula optimizările.
- "argerror" imprimă acum numele tipului definit de utilizator al unei valori primite în mesajul său de eroare. Dacă o valoare nu are un tip definit de utilizator, atunci se eliberează tipul de bază.
- Noua opțiune 'a' la `debug.getinfo` returnează numărul de argumente așteptate de o procedură, mulțumită lui Rob Hoelz 'LuaPowerPatch.
- Mesaj de eroare îmbunătățit `index out-of-range` pentru șiruri de caractere.
- Modificat fișierele `stats.agn`,` linalg.agn`, `library.agn` și` ansi.agn` cu privire la gestionarea erorilor.
Ce este nou în versiunea 2.1.0:
- Pentru un nou tip de eroare, noua instrucțiune `try / catch` a fost introdusă. Acesta a fost inventat și scris de Hu Qiwei pentru Lua 5.1 înapoi în 2008.
- În general, orice declarație în care se poate aștepta o excepție poate fi introdusă într-o clauză `try`. Dacă se emite o eroare, generată printr-un apel explicit la funcția de eroare sau la orice altă expresie, funcție sau instrucțiune, controlul sare imediat la clauza "catch" corespunzătoare dacă este prezentă sau la sfârșitul încercării / yrt "dacă nu a fost dată nici o clauză" catch ", ignorând orice alte declarații ulterioare din clauza` try '.
- Facilitățile de gestionare a erorilor "protect / lasterror" sunt și vor fi întotdeauna susținute. Noua declarație de control funcționează, de asemenea, cu instrucțiunile `break`,` skip`, `redo` și` return` fără probleme.
- Noua instrucțiune `redo` reîncepe iterația curentă a unei buclduri` for / to` și `for / in` de la început.
- Noul operator `recipec` returnează inversul unui număr x. Este echivalent cu expresia 1 / x, dar mai rapidă.
- Funcția "stats.ema" nouă calculează media mobilă exponențială a unei distribuții. Noua funcție `stats.gema` returnează o funcție de iterator care returnează media mobilă exponențială a unei distribuții.
- `*%`, `+%` și `-%` s-au întors `undefined` în locul unui rezultat corect dacă operanzii lor au fost zero. Acest lucru a fost rezolvat.
- S-a stabilit un mesaj de eroare în "net.survey".
- Mesaje de eroare îmbunătățite pentru indexarea în afara intervalului de perechi și șiruri de caractere.
- În versiunile ANSI, Solaris și DOS, operatorul `int` a fost reglat.
- Noua funcție C API "agn_arraytoseq" convertește o matrice numerică într-o secvență și împinge această secvență nouă în partea de sus a stiva.
- Actualizați manualul.
Ce este nou în versiunea 2.1.0 RC:
- Noua instrucțiune `redo` reîncepe iterația curentă a unei buclduri` for / to` și `for / in` de la început. Exemplu:
- & gt; flag: = true; & Gt; pentru j în [10, 11, 12] do> print ("înainte", j, pavilion); & Gt; dacă pavilionul și j = 11, atunci & gt; flag transparent; & Gt; print ('- & gt;', j, flag, 'salt back')> redo & gt; Fi; & Gt; print ('după', j, pavilion) & gt; până la j> 12; înainte de 10 adevărat după 10 adevărat înainte de 11 true - & gt; 11 sari fals înapoi înainte de 11 false după 11 false înainte de 12 false după 12 false
- Noul operator `recipec` returnează inversul unui număr x. Este echivalent cu expresia 1 / x, dar mai rapidă.
- Noua funcție "stats.ema" calculează media mobilă exponențială a unei distribuții. Noua funcție `stats.gema` returnează o funcție de iterator care returnează mediul mobil exponențial corespunzător unei distribuții. Pentru utilizarea sa, vă rugăm să aruncați o privire în fișierul sursă src / stats.c, funcțiile C * ema.
- `*%`, `+%` și `-%` s-au întors `undefined` în locul unui rezultat corect dacă operanzii lor au fost zero. Acest lucru a fost rezolvat.
- S-a stabilit un mesaj de eroare în "net.survey".
- Noua funcție C API "agn_arraytoseq" convertește o matrice numerică într-o secvență și împinge această secvență nouă în partea superioară a stiva.
Ce este nou în versiunea 2.0.0:
- Declarații și funcții noi:
- Agena 2.0 este compatibilă în jos cu Agena 1.12, cu excepția faptului că importurile de jetoane, pseudonimul, pînă la, și `onsuccess` sunt acum cuvinte-cheie și nu mai pot fi folosite ca variabile. În prezent, există versiuni de instalare Solaris, Debian (x86, PowerPC, Raspberry Pi), Windows, Mac și DOS disponibile pentru versiunea 2.0, inclusiv un Primer and Reference actualizat care explică în detaliu toate caracteristicile noi.
- Variantele de buclă noi `pentru / as` și` pentru / până 'verifică o condiție la sfârșitul iterației curente și fie încep simpla iterație, fie părăsesc bucla. Aceasta funcționează atât cu buclele `for / to`, cît și cu 'for / in`. De fapt, ambele variante execută o buclă cel puțin o dată până când se verifică condiția dată.
- Exemple:
- & gt; pentru i până la 5
- & gt; print (i)
- & gt; ca i < 3
- & gt; pentru i în [1, 2, 3, 4, 5] nu
- & gt; print (i)
- & gt; până la i> = 3
- Noua buclă `do / until` repetă până când o anumită condiție este îndeplinită:
- & gt; c: = 0;
- & gt; do
- & gt; inc c;
- & gt; print (c)
- & gt; până la c> 3
- În bucle numerice `for`, este posibil ca clauza` to` să nu mai fie dată. În schimb, atunci când se elimină clauza `to`, bucla iterează până când cel mai mare număr care poate fi reprezentat pe platforma dvs., în C HUGE_VAL, a fost atins:
- & gt; pentru că fac
- & gt; print (i)
- & gt; od
- Noua clauză `onsuccess` din instrucțiunile` if` și `case` execută o bucată dacă cel puțin una dintre condiții este adevărată. Exemple:
- & gt; flag: = false;
- & gt; dacă 1 = 0 atunci
- & gt; print (0)
- & gt; elif 1 = 1 atunci
- & gt; print (1)
- & gt; onsuccess
- & gt; flag: = adevărat
- & gt; altfel
- & gt; print (-1)
- & gt; Fi;
- & gt; print (flag);
- true
- & gt; flag: = false;
- & gt; dacă 1 = 0 atunci
- & gt; print (0)
- & gt; elif 1 = 0 atunci
- & gt; print (1)
- & gt; onsuccess
- & gt; flag: = adevărat
- & gt; altfel
- & gt; print (-1)
- & gt; Fi;
- & gt; print (flag);
- false
- & gt; flag: = false;
- & gt; a: = 2;
- & gt; caz a
- & gt; de 1 atunci
- & gt; print (1)
- & gt; din 2 atunci
- & gt; print (2)
- & gt; onsuccess
- & gt; flag: = adevărat
- & gt; altfel
- & gt; print (-1)
- & gt; esac;
- & gt; print (flag);
- true
- Noua instrucțiune "import" permite importul uneia sau mai multor biblioteci fără a-și pune numele în ghilimele, de ex. "import calc, stats" este echivalent cu "readlib ('calc', 'stats')".
- Opțiunea `alias` la instrucțiunea` import` atribuie unuia sau mai multor nume scurte funcțiilor bibliotecii inițializate, de ex. "import calc alias xpdiff" este echivalent cu "cu (" calc "," xpdiff ")" și "import calc alias" echivalează cu "cu (" calc ")".
- Noul operator `..` permite indexarea tabelelor chiar dacă operandul din partea stângă este evaluat la` null`. În acest caz, `null` este returnat și nu se emite nici o încercare de indexare a câmpului ... (o valoare nulă)`. Acesta este similar cu funcția `getentry`, dar este de trei ori mai rapidă. Exemple:
- & gt; creați tabelul a;
- & gt; a.b:
- null
- & gt; a.b.c:
- Eroare la stdin, la linia 1:
- încercați să indexați câmpul `b` (o valoare nulă)
- & gt; a..b..c:
- null
- & gt; creați tabelul a;
- & gt; o [1]:
- null
- & gt; o [1] [2]:
- Eroare la stdin, la linia 1:
- încercați să indexați câmpul "?" (o valoare nulă)
- & gt; o .. [1] .. [2]:
- null
- Noua funcție `drem` evaluează restul unei diviziuni întregi x / y, dar contrar` irem`, rotunjește coeficientul intern x / y la cel mai apropiat număr întreg în loc de zero.
- Noua funcție `skycrane.todate` returnează data și ora curente ca șir formatat.
- Noua funcție `io.truncate` trunchiază un fișier la poziția curentă a fișierului.
- Funcția nouă "io.move" modifică poziția fișierului cu un număr dat de caractere la stânga sau la dreapta.
- Noua funcție `io.filesize` returnează dimensiunea unui fișier.
- "readlib" acceptă acum șiruri ca argumente, numai. Numerele nu mai sunt permise.
- Dacă ultimul argument pentru `with` este Boolean` false`, atunci funcția nu scrie nume scurte atribuite consolei (stdout).
- "strings.fields" acceptă de asemenea o secvență de numere de index. Cu toate acestea, nu acceptă indicele "0".
- Programul de instalare Raspberry Pi Wheezy Debian include acum pachetul grafic `gdi`.
- Fișierul `change.log` este afișat corect în Windows.
Ce este nou în versiunea 2.0.0 RC3:
- Variantele de buclă noi `pentru / as` și` pentru / până 'verifică o condiție la sfârșitul iterației curente și fie încep simpla iterație, fie părăsesc bucla. Aceasta funcționează atât pentru / pentru, cât și pentru / în bucle.
Ce este nou în versiunea 2.0.0 RC2:
- Variantele de buclă noi `pentru / ca` și `pentru / până 'verifică o condiție la sfârșitul iterației curente și fie începe următoarea iterație, fie părăsește o buclă. Aceasta funcționează atât pentru / pentru, cât și pentru / în bucle.
Ce este nou în versiunea 2.0.0 RC1:
- Noua instrucțiune "import" permite importul uneia sau mai multor biblioteci fără a-și pune numele în ghilimele, de ex. "import calc, stats" este echivalent cu "readlib ('calc', 'stats')".
- Opțiunea `alias` la instrucțiunea` import` atribuie unuia sau mai multor nume scurte funcțiilor bibliotecii inițializate, de ex. "import calc alias xpdiff" este echivalent cu "cu (" calc "," xpdiff ")" și "import calc alias" echivalează cu "cu (" calc ")".
- Noul operator `..` permite indexarea tabelelor chiar dacă operandul din partea stângă este evaluat la` null`. În acest caz, `null` este returnat și nu se emite nici o încercare de indexare a câmpului ... (o valoare nulă)`. Este similară cu funcția `getentry`, dar este de trei ori mai rapidă.
Ce este nou în versiunea 1.12.9:
- Noile funcții `io.getclip` și` io.putclip` fac schimb de texte între Agena și clipboard (numai pentru Windows).
- "stats.prange" a fost rescris în C și a devenit cu până la 60% mai rapid.
- `os.cpuinfo` returnează acum informații corecte și mai multe despre sistemele bazate pe ARM.
- În sistemele DOS și UNIX, inclusiv în Mac OS X și numai în domeniul complex, exponentierea bazei 0 la exponentul 0 + r * I, cu r orice flotor diferit de zero, a returnat "undefined" în loc de 0. Acest lucru a fost rezolvat.
- În sistemele DOS și UNIX, inclusiv în Mac OS X și numai în domeniul complex, exponentierea bazei 0 la exponentul r + 0 * I, cu r orice float pozitiv, a revenit "undefined" în loc de 0. Aceasta a fost fixat.
- "stats.obcount" și "stats.obpart" nu pot include valori în subintervalul din dreapta. Acest lucru a fost rezolvat.
- Erorile potențiale de dealocare a memoriei au fost eliminate de la "calc.neville", "calc.interp", "calc.newtoncoeffs", "calc.naksplinecoeffs", "calc.clampedsplinecoeffs", "calc.nakspline" și "calc.clampedspline".
- Noua funcție C API "agn_checkinteger" verifică dacă un argument este un număr și un număr întreg și, spre deosebire de `luaL_checkinteger`, emite o eroare altfel.
Ce este nou în versiunea 1.9.0:
- Noua funcție "alternativă" returnează primul argument dacă al doilea argument este "null". În caz contrar, returnează al doilea argument.
- Comutarea -b la executabilul Agena a fost eliminată, deoarece ieșirea acesteia a fost aceeași cu opțiunea -v.
- Versiunile Windows și UNIX / Mac ale `strings.utf8size` au conținut o scurgere de memorie potențială; acest lucru a fost schimbat.
- Toate DLL-urile binare ale Bibliotecilor plus nu mai conțin cod neutilizat, slăbind dimensiunile lor cu până la 10%, în funcție de sistemul de operare. Sincronizarea și sursele de import care au importat anterior fișiere antet au fost modificate. De exemplu, acest lucru reduce dimensiunea binarelor Windows cu 55 kBytes.
- Extinderea suitei de testare.
- S-au actualizat fișierele schemei.
Ce este nou în versiunea 1.6.0:
- Noi funcții și caracteristici:
- Noua funcție `checktype` determină dacă toate valorile dintr-o structură sunt de un anumit tip.
- Noua funcție `isint` verifică dacă toate argumentele sale sunt numere întregi.
- Noua funcție `strings.dleven` returnează distanța Damerau-Levenshtein de două șiruri.
- Funcția nouă "stats.ad" determină abaterea absolută a tuturor valorilor dintr-o structură.
- Funcția nouă "stats.countentries" numără numărul de apariții a tuturor elementelor dintr-o structură.
- Noua funcție `stats.deltalist` returnează o structură a deltaselor elementelor vecine respective.
- Noua funcție `stats.gmean` returnează mediul geometric al unei structuri.
- Noua funcție `stats.hmean` returnează media armonică a unei structuri.
- Noua funcție `stats.ios` returnează un indicator dovedit privind stabilitatea într-o distribuție.
- Noua funcție `stats.iqr` returnează intervalul interquartilat.
- Noua funcție `stats.issorted` verifică dacă toate numerele dintr-o structură sunt sortate în ordine crescătoare.
- Noua funcție `stats.moment` calculează momentul datelor date despre o origine.
- Noua funcție `stats.numbperm` returnează numărul de permutări.
- Funcția nouă "stats.percentile" determină percentile.
- Noua funcție `stats.skewness` returnează skewness-ul, un indicator al simetriei unei distribuții de probabilitate.
- Funcția nouă "stats.sumdata" însumează toate puterile unei structuri referitoare la o origine.
- "stats.tovals" este acum o funcție de bibliotecă C și astfel este cu până la 40% mai rapidă.
- Cu o masă sau o secvență goală, "stats.qmean", "stats.mean", "stats.gmean", "stats.sd", "stats.median",
- "stats.var" se întoarce acum.
- Lungimea maximă pentru o linie de intrare în interpretul autonom a fost modificată de la 512 la 2048 de caractere.
- Noua variabilă de mediu `environ.maxpathlength` stochează numărul maxim de caractere pentru o cale de fișier (excluzând caracterul C).
- Noile variabile de mediu `environ.minnumber` și` environ.maxnumber` păstrează valoarea minimă și maximă pe care o poate stoca un număr Agena (în prezent un dublu ANSI-C).
- Noua variabilă de mediu `environ.umaxlong` include valoarea integrală maximă a lungimii nesemnate de tip C pe sistemele cu 32 de biți și lungimea nesemnată pe mașinile de 16 biți.
- C API:
- 100% compatibilitatea API-ului Agena C cu API-ul Lua C a fost restabilită prin introducerea funcțiilor de descărcare Lua *. Astfel, acum puteți să stocați funcții într-o reprezentare binară, de ex. folosind "strings.dump" sau lua_dump la nivelul C.
- A introdus noua funcție `agnL_optboolean` pentru a verifica argumentele booleale opționale și pentru a le reveni în caz de succes.
- Remedieri de erori:
- "environ.globals" întotdeauna renunțați la o eroare, aceasta a fost rezolvată.
- "presupune" a revenit fals, ambele argumente fiind sau "evaluat" la "nedefinit". Se întoarce acum adevărat în acest caz.
- Agena sa prăbușit atunci când a trecut o masă goală și un delimitator pentru a "alătura" - aceasta a fost rezolvată.
- Opțiunea `color` nu mai este ignorată de` gdi.plot`.
- Cu tabele, "stats.minmax" a returnat o valoare greșită pentru minim. Acum funcționează corect.
- Cu o masă goală, `stats.median` a returnat 0, acum returnă eșuează.
- Contrar documentației, "strings.isending" a returnat "true", ambele șiruri fiind egale. Acest lucru a fost rezolvat.
- "run" a returnat "nu a putut deschide fișierul" dacă un script existent Agena a inclus o eroare de sintaxă. Aceasta a fost rezolvată prin rescrierea completă a funcției.
- Adăugat patch-ul Lua 5.1.4 9: "Generarea de coduri greșite pentru anumite expresii booleene [de exemplu complexe]".
- Adăugat Lua 5.1.4 patch 11: "Parserul poate colecta un prototip în timp ce îl construiește."
- * Info: Adăugarea patch-urilor Lua 5.1.4 10, "[__write / __ nou] indicele metamethod nu poate funcționa dacă metatabila este metatabila proprie", pentru Agena nu este necesară, deoarece Agena funcționează corect în acest caz. li>
- ați eliminat cuvântul cheie nefolosit "implicit".
- Unele rigidizare a funcțiilor și a caracteristicilor.
- Îmbunătățiri:
- A fost adăugată o versiune _perimentală a versiunii `io.keykey` pe versiunea Mac. Cu toate acestea, cel puțin pe Leu, cheia care este presată uneori este reluată pe coajă.
- `utils.readcsv` poate returna opțional toate valorile dintr-un fișier CSV într-o secvență netedă.
- Pachetul `clock` acceptă operatorul diviziei` / `prin adăugarea acestuia la metatabila operatorului` tm`.
- Comportamentul "cu" a fost schimbat deoarece nu a putut atribui nume scurte pentru multe funcții ale bibliotecii: Dacă funcțiile au fost introduse în tabela .aux, nu atribuiți nume scurte pentru aceste nume de funcții; altfel, să atribuiți nume scurte pentru toate celelalte funcții ale pachetului. Astfel: "register.register" pentru a înregistra toate funcțiile bibliotecii pentru "cu" pentru a atribui nume scurte, nu mai este necesar. Acesta va fi depreciat într-una din următoarele versiuni.
- Îmbunătățiți suita de testare.
- Manual:
- Îmbunătățiți manualul și indexul.
- Consistenta:
- Pentru toate redenumitările următoare, următoarele nume vechi de variabile sunt încă acceptate.
- `environ.MinLong` a fost redenumit la` environ.minlong`.
- `environ.MaxLong` a fost redenumit la` environ.maxlong`.
- "environ.BufferSize" a fost redenumit la "environ.buffersize".
- `environ.PathSep` a fost redenumit la` environ.pathsep`.
- "environ.More` a fost redenumit la" environ.more ".
- "environ.WithProtected" a fost redenumit la "environ.withprotected".
- `environ.Os` a fost redenumit la` environ.os`.
- `environ.Cpu` a fost redenumit la` environ.cpu`.
- "environ.Release" a fost redenumit la "environ.release".
- `environ.GdiDefaultOptions` a fost redenumit la` environ.gdidefaultoptions`.
- În Windows, `os.login` și` os.computername` se întorc acum 'eșuează' ca versiunile UNIX sau OS / 2.
- Comutatorul `-DCOMPAT13` a fost în cele din urmă eliminat pentru compilarea unei versiuni compilante Agena 1.3.x.
- Altele:
- A fost anulată calc.fseq`. Utilizați în schimb "nseq".
Ce este nou în versiunea 1.5.1:
- Patched `strings.fields` care nu au funcționat deloc. De asemenea, a fost transformată într-o funcție de bibliotecă C și astfel este de 2,6 ori mai rapidă.
- "strings.words" acceptă acum un al treilea argument, dacă este setat la "true", delimitatorii succesorali sunt ignorați.
- S-a eliminat o eventuală scurgere de securitate de la "io.write" și "io.writeline" și sa îmbunătățit mesajele de eroare.
- Patched `binio.readchar` pentru a evita problemele cu fișiere de dimensiuni mai mari de 2 GBytes.
- Mesaje de eroare corectate ale funcțiilor `xbase.purge`,` xbase.readvalue`, `xbase.purge`,` ads.getvalues`, `binio.readshortstring`,` os.computername`, `os.login`, `os.fattrib`,` environ.kernel`, `package.register`.
- Terabytele pot fi introduse acum cu notația T, unde este un număr întreg, iar T este caracterul `T`. De asemenea, g înseamnă miliarde și trilioane. Pentru informații suplimentare, consultați pagina 48 din manual.
- Actualizați manualul.
- În general, toate comutatoarele de compatibilitate înapoi în codul sursă C au fost eliminate pentru motive de curățare a codurilor. Acest lucru afectează numai pe cei care încearcă să recompileze Agena 1.5 sau o versiune superioară cu compatibilitate completă cu Agena 1.3 și 1.4, și cu cea mai mare parte a compatibilității cu Lua 5.0 (cu excepția manipulării bibliotecii vechi Lua 5.0).
Ce este nou în versiunea 1.5.0:
- "map" poate procesa, de asemenea, siruri de caractere date ca al doilea argument. Funcția respectivă și argumentele acesteia sunt aplicate consecutiv fiecărui caracter de la stânga la dreapta, iar rezultatul este returnat într-o secvență.
- `run ': Dacă doriți să încărcați și să executați codul din fișiere cu un sufix' agn ', nu mai trebuie să specificați sufixul în argument. Deci, testul "run" și "run" test.agn'` sunt la fel.
- Cuvântul "este" este acum obligatoriu pentru a defini procedurile. (Cu GCC, utilizați comutatorul -DCOMPAT14 pentru a compila o versiune de Agena unde cuvântul cheie `is` este încă opțional.)
- Instrucțiunea `try` a fost depreciată și nu mai este acceptată. (Cu GCC, utilizați comutatorul -DCOMPAT14 pentru a compila o versiune a Agena care încă include această afirmație.)
- Următoarele funcții `utils` au fost eliminate:` arraysize`, `getarray`,` getwholearray`, `newarray`,` searcharray`, `setarray`. Pentru compatibilitate înapoi, au fost adăugate în fișierul lib / compat.agn. (Cu GCC, utilizați comutatorul -DCOMPAT14 pentru a compila o versiune a Agena care încă suporta funcțiile originale utils.)
- `utils.singlesubs` a fost complet rescris. Se așteaptă acum că o secvență de numere este al doilea argument în locul structurii fostului ghid de date stringarray. Este cu 35% mai lent decât versiunea anterioară, dar eliminarea structurii stringarray a fost mai importantă.
- "strings.include" se prăbușește dacă este numit cu 0 ca al doilea argument. Acest lucru a fost rezolvat.
- A fost aplicat patch-ul lui Michael G. Schwern pe data de 10 mai 2011 la funcțiile sale auxiliare de date "32-bit-Year 2038-Fix" utilizate de pachetele `os` și` xbase` (`Make mktime64 () așa cum impune standardul ISO. ")
- Optimizarea codului intern: unele inițializări ale bibliotecii și funcțiile C de încărcare a fișierelor au utilizat stiva pentru a construi șiruri de caractere și nume de fișiere. Noua funcție C aux `concat` scrisă de Solar Designer este acum folosită în multe cazuri.
- API-ul Agena C este acum compatibil cu API-ul Lua C pentru a facilita portarea pachetelor C Lua către Agena.
- Următoarele funcții au fost redenumite: 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.
- Următoarele macrocomenzi au fost redenumite: luaL_checkint - & gt; agnL_checkint, luaL_optint - & gt; agnL_optint.
- Spre deosebire de implementarea anterioară a Agenei, lua_tonumber se întoarce acum ca în Lua în cazul în care a fost trecut un număr neschimbat, în loc să se întoarcă HUGE_VAL.
- lua_setglobal2 a fost eliminat. În schimb, utilizați lua_pushvalue și lua_setglobal.
Ce este nou în versiunea 1.4.2:
- Dacă în lista de parametri a unei proceduri definite de utilizator au fost specificate, în
- procedurile de apel nu au fost emise erori și procedura a fost executată în loc, în următoarele cazuri:
- a) un tabel, set, secvență, pereche sau procedură - fără a fi definit de utilizator
- tip - a fost trecut,
- b) pentru parametrul în cauză nu a fost introdusă nicio valoare.
Ce este nou în versiunea 1.4.1:
- Numele scurte pentru "stats.quartiles" și "stats.mode" nu pot fi atribuite prin funcția `with`. Acest lucru a fost rezolvat.
- În mod eronat, "cu" nu a putut atribui un scurt nume pentru "gdi.settriangle". Acest lucru a fost schimbat.
- Eroarea de manipulare a calc.polygen a fost îmbunătățită.
- Mesaj de eroare îmbunătățit al "fractals.draw" pentru fișierele hartă FRACTINT lipsă.
- A fost eliminată funcția `strings.rseek` depreciată. Pentru compatibilitatea înapoi, fișierul `strings.seek` a fost adăugat în fișierul lib / compat.agn.
- A fost adăugat comutatorul -d pentru a imprima informațiile de depanare la pornirea interpretului.
- Versiunea Windows a Agenei a fost acum compilate cu GCC 4.5.2.
- Fișiere de schemă de limbă actualizate.
- Manualul a fost actualizat.
Ce este nou în versiunea 1.4.0:
- Schimbări semantice:
- Variabilele de control al buclelor de bucle numerice `pentru / to` sunt acum automat locale la blocurile din jur, în loc de corpurile lor (interioare). Dacă o variabilă locală cu același nume ca variabila de control a buclă a fost declarată și atribuită înainte de
- executând o buclă numerică, este suprascrisă de ultima valoare de iterație a buclă. Ca atare, comutatorul `extern` în bucle numerice` pentru `nu mai este acceptat. (Cu GCC, utilizați comutatorul -DCOMPAT13 pentru a compila o versiune de Agena care recunoaște încă, dar ignoră cuvântul cheie "extern".)
- Cu constanta `fail`,` not` a returnat `true`, dar cu` fail` atribuit unei variabile, `not` a revenit false. Acest lucru a fost modificat, adică "a: = eșec; nu (a) "întoarce acum" true ".
- `stats.median` returnează acum 'fail' în loc de 0 dacă structura dată este goală.
- `utils.readcsv`: Dacă se trece un singur spațiu alb cu opțiunea` delim` și dacă opțiunea `ignorespaces` nu a fost dată, spațiile albe nu mai sunt eliminate automat înainte de a diviza fiecare linie a fișierului cuvintele sale.
- Funcția are, de asemenea, două opțiuni noi: "header" care marchează prima linie dintr-un fișier și "ieșire" care permite stocarea conținutului fișierului într-un dicționar cu numele câmpurilor definite de antetul fișierului. / li>
- Notația substringului `$ 'nu mai este acceptată. (Cu GCC, utilizați comutatorul DCOMPAT13 pentru a compila o versiune de Agena care încă suporta operatorul `$`).
- Extensii:
- Buclele do / od infinite au fost adăugate. Acest tip de buclă se repetă infinit și poate fi întrerupt numai cu instrucțiunile "break" sau "return". Acestea sunt zahăr sintactic pentru buclele "în timp ce adevărat nu ...".
- Cu tabele, "stats.minmax" anterior a lucrat numai cu matrice. Acest lucru a fost modificat, adică valorile cu chei non-pozitive corespunzătoare (de exemplu, șiruri de caractere, numere întregi pozitive, flotoare negative și pozitive etc.) sunt acum recunoscute în mod corespunzător în evaluare.
- "stats.mean", "stats.qmean", "stats.sd" și "stats.var" acum procesează și secvențe.
- Noua funcție "stats.mode" returnează toate valorile dintr-o secvență sau tabel cu cel mai mare număr de apariții, adică cea mai mare frecvență.
- Noua funcție "stats.quartiles" returnează primul, al doilea și al treilea trimestru dintr-un tabel sau dintr-o secvență descrisă.
- Caracteristicile anterioare nedocumentate ale "linalg.matrix" au fost adăugate manualului, iar manipularea erorilor a fost îmbunătățită.
- Îmbunătățirea procesului de gestionare a erorilor la "linalg.hilbert".
- `gdi.setinfo` acceptă acum opțiunea` pătrat`. Dacă `square = false`, atunci axele x și y nu vor avea aceeași scală pe parcelele create cu` gdi.plot`.
- Funcția `gdi.plot` pentru a desena grafica, din păcate, nu a fost documentată. Acest lucru a fost schimbat.
- `gdi.plot` acceptă două noi opțiuni: Opțiunea 'x' specifică intervalul orizontal pe care este afișat un grafic și opțiunea 'y' specifică intervalul vertical.
- Dacă o structură PLOT este trecută la `gdi.plot` care conține numai POINT, LINES, RECTANGLES, TRIANGLEs, CIRCLE și ELLIPSE (inclusiv variantele lor * FILLED), atunci gdi.plot determină automat scările gdi.setinfo` nu trebuie neapărat să fie chemat).
- Caracteristicile OOP moștenite de la Lua sunt acum documentate în Anexa A9. Autorul nu recomandă programarea orientată pe obiecte.
- Tuning:
- Operatorul "umplut" tunat cu aproximativ 3%.
- Tweaked `` `` `` `join`,` sadd`, `qsadd`,` replace`, `copy`,` unic`, și Cantor setați operatorii pe tabele și stabilește un pic.
- Cu mese, operatorii `top` și` bottom` sunt acum cu aproximativ 5% mai rapizi.
- Operatorul "size" este cel puțin 8% mai rapid dacă un tabel nu include nulls.
- `linalg.mzip`,` linalg.mmul` și `linalg.transpose` au fost reglate cu câte 3% fiecare.
- Numeric pentru / la bucle cu dimensiuni fracționare pas au fost optimizate prin reducerea la jumătate a numărului de variabile de control. Acest lucru, cu toate acestea, nu a atins nici o creștere a vitezei.
- Patches:
- Patched `linalg.ludecomp` pentru a detecta matrici singulare. De asemenea, funcția poate determina automat ordinea matricei date.
- Spre deosebire de manual, gdi.plot nu a determinat automat intervale orizontale și verticale. Acest lucru a fost rezolvat.
- `gdi.plot` nu mai ignoră opțiunea` pătrat` stabilită de `gdi.setinfo`.
- `gdi.setinfo` a adăugat setările structurilor INFO, chiar dacă acestea au fost deja prezente. Acest lucru a fost schimbat.
- Cercurile nu au fost reprezentate corespunzător de graficul `gdi.plot`. Acest lucru a fost schimbat.
- Funcția `gdi.plot` în majoritatea cazurilor a ignorat colorarea individuală a obiectelor geometrice. Acest lucru a fost schimbat.
- Pachetul gdi nu a atribuit nume scurte pentru "gdi.settriangle", "gdi.settrianglefilled", "gdi.setrectangle" și "gdi.setrectanglefilled". Acest lucru a fost schimbat.
- Pachetul de fracturi nu a atribuit nume scurte pentru funcțiile de tip "esctime" definite de utilizator. Acest lucru a fost schimbat. Mesaj de eroare corectat de "fractals.draw" dacă argumentele poziționale nu erau numere.
- Diverse:
- Funcționalitatea lui `calc.fseq` a fost îmbinată în` nseq`. Pentru compatibilitatea înapoi, `calc.fseq` este încă parte a pachetului calc, dar funcția se referă efectiv la implementarea` nseq`.
- A fost adăugată variabila `environ.FractScreenUpdates` în pachetul` fractals` pentru a indica numărul de linii verticale (un număr întreg negativ) după care un fractal va fi actualizat într-o fereastră. Variabila `environ.FractOptimised` a fost depreciată.
- Funcțiile auxiliare gdi au fost regrupate.
Ce este nou în versiunea 1.3.3:
- Patches la `instr`:
- Când este în modul regex, operatorul a returnat un rezultat greșit dacă a fost dată o poziție de început.
- În modul de căutare simplu, operatorul a returnat o eroare de depășire dacă nu a fost dată nici o poziție de început.
- Cu excepția modului de căutare inversă, dacă nu s-a găsit niciun rezultat, primul argument a fost returnat în loc de "null".
- Mesaj de eroare corectat al instrucțiunii `create` cu privire la secvențe.
- În AgenaEdit, când se emite mai mult de o structură cu un singur apel pentru a "tipări", structurile nu au fost tipărite în formă completă dacă prima structură a prezentat un metamod __tostring. Acest lucru a fost schimbat.
Ce este nou în versiunea 1.3.2:
- Această versiune include corecții de erori, extensii și un manual îmbunătățit:
- "dimension" a creat rezultate interesante dacă o structură a fost trecută ca
- initialiser. Acest lucru a fost modificat: "dimension" creează acum copii independente ale
- structură la inițializarea tabelului.
- Funcționalitatea `strings.rseek` a fost adăugată operatorului` instr`.
- Astfel, "strings.rseek" a fost depreciat. Pentru compatibilitate înapoi,
- "strings.rseek` a fost adăugat în fișierul lib / compat.agn.
- "strings.hits" acceptă acum expresii și capturi regulate. Acest comportament
- poate fi oprit prin trecerea unui boolean ca al treilea argument.
- `strings.isabbrev` și` strings.isending` utilizează automat o căutare simplă
- dacă nu au fost transmise expresii regulate sau capturi ca parte a celui de-al doilea
- argument.
- Tweaked `strings.ismagic` și` strings.isfloat`.
- Funcția `log` este acum cu 13% mai rapidă.
- Când trimiteți mai mult de o structură cu un singur apel pentru a "tipări",
- Structurile nu au fost tipărite în formă completă dacă prima structură include o __tostring
- metamethod. Acest lucru a fost schimbat.
- Au fost adăugate categorii de funcții la Capitolul 7 pentru a facilita pornirea pentru noi
- utilizatorii.
Ce este nou în versiunea 1.3.1:
- Au existat probleme cu apelurile imbricate la următorii operatori binari: `xor`,` atendof`, `& amp;` `,` || `,` ^^ `,` :: `și`: - `și, astfel, și cu imprimanta drăguță care a renunțat cu o eroare la tipărirea structurilor imbricate. Acest lucru a fost rezolvat.
- Patru fixări la `os.list`: Dacă opțiunea 'r' a fost trecută, actualul director de lucru a fost schimbat greșit după finalizarea apelului.
- Dacă "r" nu a fost trecut ca ultimul argument, funcția a dat o eroare.
- `null` nu a fost acceptat ca primul argument pentru a desemna directorul curent de lucru.
- În Windows 7, imprimarea conținutului directorului rădăcină nu a funcționat, adică os.list ('c:') a returnat conținutul directorului curent de lucru.
- Atunci când un șir a fost indexat cu un număr nedeclarat, de ex. "str [null]", Agena a întors "null". Acum apare o eroare.
- În cazul în care library.agn nu a fost găsit, calea greșită a fost scoasă de două ori în avertisment. Acest lucru a fost schimbat.
Ce este nou în versiunea 1.2:
- Operatorul substring a fost reproiectat, dar vechea versiune va fi încă disponibilă până la Agena 2.0: cea nouă este: `str [din stânga la dreapta]`, cea veche a fost: `str $ (stânga, dreapta) . Un exemplu: înainte: `str: = 'string'; print (str $ (2, 3)) `- & gt; 'tr' acum: `str: = 'string'; print (str [2 - 3]) `- & gt; 'Tr'
- Acum poți determina subliste ale tablourilor și secvențelor de tabelă cu noua sintaxă menționată mai sus: `s [la stânga la dreapta]`. Un exemplu: acum: `a: = [10, 20, 30, 40]; print (a [2 la 3]) `- & gt; [20, 30] acum: `a: = seq (10, 20, 30, 40); print (a [2 la 3]) `- & gt; seq (20, 30)
- Funcția `ops` permite acum specificarea valorilor care trebuie returnate prin trecerea unei secvențe a pozițiilor lor index ca primul argument, de ex. ops (seq (1, -1), 10, 20,
- 30).
- Noua funcție `strings.include` introduce o secvență de caractere într-un șir
- la o anumită poziție.
- Următoarele funcții generează acum o eroare în loc să se întoarcă doar "fail" în
- caz de eșec: `os.remove`,` os.move`, `os.mkdir`,` os.rmdir`, `os.chdir`.
- Îmbunătățiri pentru următorii operatori care lucrează la seturi și secvențe referitoare la colectarea gunoiului: instrucțiunea "inserați", "union", "intersecție", "minus", "unic", "copie" și declarațiile "pop / bottom" și stabiliți asignări.
- Mesaj de eroare îmbunătățit de "fractals.draw" dacă fișierul de hartă color FRACTINT nu a
- nu a fost găsit.
Ce este nou în versiunea 1.1.0:
- Această versiune prezintă noi funcționalități și un spațiu de nume curățat.
- Compatibilitate cu Agena 1.0:
- Unele funcții au fost eliminate din Agena, iar unele au fost transformate în funcții de pachete (vezi mai jos). Dacă totuși doriți să le utilizați, emiteți readlib 'compat' pe linia de comandă sau puneți instrucțiunea de mai sus în fișierul de inițializare dacă preferați compatibilitatea cu Agena 1.0 înapoi.
- Funcționalitate extinsă:
- Declarațiile `pop / top` și` pop / bottom` și operatorii `bottom` și` top` pot fi aplicați acum și la tablourile de tabelă.
- Când este apelat cu "null" sau nu există argumente, `os.chdir` nu mai emite o eroare, ci returnează directorul curent de lucru. Astfel, funcția "os.curdir" C a fost înlocuită cu una scrisă în limba Agena.
- `os.list` traversează în mod recursiv subfoldere dacă este dată noua opțiune 'r'.
- Operatorul `join` acum acceptă și un delimitator opțional și acceptă opțiunea de a specifica primul și ultimul element al structurii care urmează să fie concatenată.
- `instr` poate căuta acum din capătul drept al unui șir prin trecerea unei poziții negative.
- Dacă o tabelă include alte tabele, seturi, secvențe sau perechi, `copy` acum știe cum să se ocupe corect de aceste referințe în cazul în care acestea apar de mai multe ori: Dacă o structură încorporată este inclusă n de ori, Se introduc n-1 referiri la această structură nou creată. Înainte, au fost efectuate copii independente.
- Noua funcție `isnonposint` verifică dacă numerele date sunt întregi și non-pozitive.
- "io.close" poate închide acum mai multe fișiere cu un singur apel.
- Funcția `with` nu a atribuit nume scurte pentru următoarele proceduri din pachetul` math`: `convertbase`,` fraction`, `zeroin`,` todecimal`, `lcm`,` gcd` și ` ndigits`. Acest lucru a fost corectat.
- Funcția "rwritemode" menționată în manual nu există. Acum este disponibil dar numit `rmode`.
- Au fost îmbunătățite mesajele de eroare ale diferitelor funcții.
- Curățarea spațiului de nume: funcții redenumite sau mutate:
- Funcțiile bibliotecii `register` și` loadclib` au fost mutate în biblioteca `package`.
- Formatele `rdelete`,` rget`, `rinit`,` roinit`, `rmode`,` rset`, `amintesc` și funcțiile bibliotecii de bază` defaults` au fost mutate în noul pachet `rtable` .
- A fost redenumit tabelul _Env global la `environ`, care acum conține și proceduri de accesare a mediului.
- Vechile variabile globale `homedir` și` infolevel` au fost redenumite la `environ.homedir` și` environ.infolevel`, respectiv.
- Următoarele funcții ale fostei baze de bibliotecă au fost mutate în pachetul `environ`:` anames`, `attrib`,` gc`, `getfenv`,` globals`, `isselfref`,` pointer`, `setfenv` , `used`,` userinfo`, `__RESTART`,` __DOTTYPRINT`.
- mapm.xtoNumber` a fost redenumit la `mapm.xtonumber`,` mapm.xtoString` a fost redenumit la `mapm.xtostring`. Pentru compatibilitatea înapoi, vechile nume de funcții pot fi utilizate în continuare prin executarea fișierului lib / compat.agn (mai întâi, readlib pachetul `mapm` și apoi încărcarea fișierului compat.agn).
- Funcții și variabile depreciate:
- "strings.seek` a fost depreciat. Funcționalitatea sa a fost adăugată operatorului `instr`. Pentru a dezactiva modul de potrivire a modelului `instr`, treceți începutul căutării ca al treilea și` adevărat` ca al patrulea argument. `instr` este în jur de 40% mai rapid în modul de potrivire non-pattern decât` strings.seek`. Pentru compatibilitatea înapoi, fișierul `strings.seek` a fost adăugat în fișierul lib / compat.agn.
- Funcția "concat" a fost eliminată. În schimb, utilizați "join". Pentru compatibilitate înapoi, fosta funcție a fost adăugată la fișierul lib / compat.agn.
- Funcțiile `hasrtable` și` hasrotable` au fost eliminate. Pentru compatibilitate înapoi, au fost adăugate în fișierul lib / compat.agn.
- Funcția `pcall` a fost depreciată. Utilizați "protect" în schimb. Pentru compatibilitate înapoi, funcția a fost adăugată la fișierul lib / compat.agn.
- Funcția `maptoset` a fost depreciată. Pentru compatibilitate înapoi, funcția a fost adăugată la fișierul lib / compat.agn.
- Funcția `os.alldirs` a fost depreciată. Utilizați opțiunile "dirs" și "r" într-un apel către `os.list` în schimb. Pentru compatibilitate înapoi, funcția a fost adăugată la fișierul lib / compat.agn.
- `os.isMac`,` os.isSolaris`, `os.isLinux`,` os.isWin`, `os.isOS2`,` os.isDOS`, `os.isHaiku` au fost respinse. Utilizați, în schimb, noile variabile de mediu environ.Os și environ.Cpu, care de asemenea accelerează codul. Pentru compatibilitate înapoi, funcțiile au fost adăugate la fișierul lib / compat.agn.
- Variabila _VERSION nedocumentată a fost eliminată. Pentru compatibilitate înapoi, atribuirea sa a fost adăugată în fișierul lib / compat.agn.
- Alte modificări:
- Funcția C API lua_rawsetstringnumber menționată în manual nu există. Acest lucru a fost schimbat.
- Optimizări de cod pentru parser.
- În unele pachete, în mod accidental, câteva variabile au fost implicit declarate globale. Acest lucru a fost rezolvat.
- Fișiere de eșantionare inițializate corectate și actualizate.
- AgenaEdit a fost actualizat.
- Fișierele schemei de limbă au fost actualizate.
- Instalatorii Linux includ acum pachetul xBase.
Ce este nou în versiunea 1.0.6:
- Mesajele de eroare îmbunătățite ale operatorilor `join ',` copy' și `full` ale funcțiilor` toset`, `toseq` și` totable`, de inserare, și a buclelor "for".
- Cu șiruri mari, concat sa prăbușit. Acest lucru a fost rezolvat.
- Cu șiruri de 512 și mai mulți octeți, "join" și "replace" ar putea să se prăbușească. Asta a fost rezolvată. Cei doi operatori sunt acum mult mai rapizi decât oricând.
- `math.isprime` a returnat rezultate greșite cu argumente & gt; 2 ^ 31 (menționat vag în manual). Aceasta a fost rezolvată prin extinderea intervalului argumentului la întregi cu valori de până la +/- 2 ^ 63.
- `math.nextprime` și` math.prevprime` au avut aceeași problemă cu argumente mai mari, cum ar fi `math.isprime`. Acest lucru a fost de asemenea schimbat. Cu argumentul 2, "io.nextprime" a returnat în mod fals 5 în loc de 3. Acest lucru a fost fixat, de asemenea.
Cu secvențe, Agena sa prăbușit în următoarea secvență de evenimente: 1) a fost executată o declarație `delete`, 2) secvența de după aceea a fost goală și 3) un nou element a fost introdus din nou. Asta a fost rezolvată. (În mod intern, instrucțiunea `delete` nu mai reduce în mod intern dimensiunea secvențelor.)
Ce este nou în versiunea 1.0.5:
- "join" ar putea să prăbușească Agena și să se comporte în mod neașteptat dacă sirul rezultat
- a depășit 512 octeți. Acest lucru a fost schimbat.
- Dacă a fost apelat `restart` după ce o eroare a fost emisă în anterior
- , Agena, în cazuri rare, sa prăbușit din cauza corupției în stivă. Acest lucru a fost
- fix.
- Cu tabelele nou create care conțin exact un element din partea hash, `attrib`
- returnează acum rezultatele corecte pentru numărul de sloturi hash alocate (1 în loc de 0).
- Mesajele de eroare corectate ale `qsadd` și` sadd`.
- Mesaje de eroare îmbunătățite pentru operatorii `join`,` copy` și `full`, precum și pentru` insert`
- și
. - Eroarea de manipulare a "read", "save" și "fractals.draw" a fost îmbunătățită.
- Îmbunătățiri ale fișierelor de creație.
- Dimensiunile bufferelor au fost acum standardizate în surse.
declarația
Ce este nou în versiunea 1.0.4:
- Deoarece în timpul inițializării au fost raportate accidente rar întâlnite (în Windows XP SP 3 și OpenSolaris 134, în anumite circumstanțe), acumularea de gunoi este dezactivată în faza de inițializare. Aceste erori de segmentare rare au apărut în OpenSolaris atunci când rulează binarul Agena în directorul său portofoliu ca root și în XP când faceți clic pe pictograma desktop Agena cu drepturi de administrare locale.
- a introdus comutatorul -d la opțiunile din linia de comandă pentru a imprima informații în timpul inițializării Agena.
- Introducerea corectă a gestionării erorilor în cazul în care memoria nu ar putea fi alocată intern: "trim", "superior", "inferior", "os.curdir" și ,, strings.rseek ".
- S-au eliminat scurgeri de memorie potențiale în funcțiile de inițializare C agenaL_initialise și agenaL_setLibname, și în "io.write *" și "print".
Ce este nou în versiunea 1.0.3:
- Noua funcție `protect` solicită o procedură în modul protejat și captează orice eroare posibilă pentru ca calculul să nu fie întrerupt. În cazul unei erori, setează șirul de eroare la variabila globală `lasterror`. Este legat de "pcall", dar nu returnează codul de stare ca primul rezultat.
- `attrib` returnează acum rezultatele corecte cu structuri goale. Cu structuri goale, funcția a numărat greșit un element de hash atribuit înainte.
- `attrib` returnează acum numărul de octeți ocupați de tabele, seturi și secvențe împreună cu noua cheie 'octeți'. Numărul de octeți returnat se bazează pe informații uneori contradictorii disponibile pe net.
- "înlocuiți" agena dacă sirul rezultat depășește 512 octeți. Acest lucru a fost schimbat.
- "presupune" revine acum "Adormirea nu a reușit". în loc de "presupunerea a eșuat".
- Noua funcție C API lua_setglobal2 stabilește valoarea de la partea de sus a stivei la un nume global. Contrar lua_setglobal, valoarea nu este afișată.
- Curățarea de cod a lobject.h (structura tabelului) și lapi.c (macro actnodesize). Funcția Bugfix pentru C API agn_deletertable în cazul în care Agena este compilată cu non-void lua_assert. Schimbați la valoarea returnată a funcției savestate care este utilizat în timpul initialisation pentru a preveni (ușoară) posibilitatea de corupție stivă.
Ce este nou în versiunea 1.0.2:
- Noua procedură `os.setenv` stabilește variabile de mediu la nivelul sistemului de operare. Funcția a fost inițial scrisă de Mark Edgar.
- În Windows, `os.getenv` numește acum o funcție nativă Windows API pentru a obține valorile variabilelor de mediu. Codul Windows a fost scris de Mark Edgar.
- Noua funcție `os.environ` returnează toate variabilele de mediu atribuite într-un tabel. Funcția a fost inițial scrisă de Mark Edgar.
- `io.open` adaugă acum pointerul FILE, numele și modul unui fișier deschis cu succes în tabelul nou` io.openfiles`. "io.close" șterge intrarea din "io.openfiles" dacă fișierul ar putea fi închis cu succes.
- Când este chemat fără argumente, `io.read` returnează o eroare dacă este chemat fără argumente în AgenaEdit (în încercarea de a citi tastatura).
- Dacă sunt chemați "AgendaEdit" și "io.keykey", este afișat un mesaj de eroare adecvat.
- Una dintre subprocesele de inițializare a fost modificată pentru a evita posibila corupere a stiva (deși nu au apărut niciodată probleme).
- os.isMac ("ppc") funcționează acum pe mașinile PowerPC.
- Capitolele 4 și 6 din "Primer and Reference" au fost revizuite și prelungite. A fost adăugat un index și s-au făcut și multe produse cosmetice.
- S-au stocat informații despre versiunea corectă a executabilului Windows.
Ce este nou în versiunea 1.0:
- Dragi doamnelor și domnilor,
- după aproape patru ani de dezvoltare am publicat Agena 1.0, un limbaj de programare procedural, derivat din surse Lua C.
- Comunitatea mea este de fapt foarte, foarte mică, dar unii utilizatori mi-au spus că este bine, util și stabil.
- Aș fi foarte fericit dacă ați revizuit Agena și mi-ați informat despre rezultatele dvs. Dacă nu considerați că este util, vă rog să-mi spuneți personal și dați-mi șansa să remediați problemele.
Ce este nou în versiunea 0.34.1d:
- Această versiune include o versiune actualizată GUI a AgenaEdit (vezi fișierul executabil agenaedit).
Ce este nou în versiunea 0.34.1:
- AgenaEdit a fost lansat cu Agena 0.34.1
Ce este nou în versiunea 0.34.0:
- AgenaEdit cu evidențierea sintaxei și motorul de execuție încorporat a fost lansat cu Agena 0.34.0.
Ce este nou în versiunea 0.33.2:
- Agena 0.33.2 cu suport pentru fișiere xBase a fost lansat.
Ce este nou în versiunea 0.33.1:
- Agena 0.33.1 cu suport pentru fișiere xBase a fost lansat.
Ce este nou în versiunea 0.33.0:
- Noul pachet `xbase` poate citi și scrie fișiere xBase compatibile cu standardul dBASE III.
- Pachetele `binio` și` ads` pot gestiona fișiere de până la 2 ^ 63 octeți. Înainte de a putea gestiona numai fișiere cu dimensiuni de până la 2 ^ 31 octeți.
- Noile funcții `io.lock`,` io.unlock`, `binio.lock`,` binio.unlock`, `ads.lock` și` ads.unlock` blochează un fișier din accesul de citire și scriere prin alte Agena
- funcții sau chiar alte aplicații, cu condiția ca acestea din urmă să utilizeze un protocol de blocare.
- Funcția baselib "citită" nu mai poate fi suprascrisă cu "cu".
- noul pachet.checkClib verifică dacă un pachet stocat într-o bibliotecă dinamică C a fost inițializat. Dacă nu, acesta returnează un avertisment imprimat pe ecran și creează o tabelă de pachete goale. Altfel nu face nimic.
- Portul Haiku acceptă acum biblioteci dinamice de legătură.
Ce este nou în versiunea 0.32.3:
- Agena 0.32.3 cu funcții de calcul noi și reglate au fost lansate.
- Utilizatorii de Mac nu au nevoie să mai instaleze biblioteci de dependență suplimentare.
- Acum este disponibil un port Haiku.
Ce este nou în versiunea 0.31.5:
- Această versiune conține grafice încorporate, matematică de precizie arbitrară și caracteristici îmbunătățite.
Ce este nou în versiunea 0.31.3:
- A fost adăugat pachetul fractal pentru a desena fractali cu ușurință în Solaris, Mac, Linux și Windows.
- Pe Solaris și Linux, `gdi.mouse` returnează acum valorile standard pentru butoanele mouse-ului apăsate (la fel ca și edițiile Mac și Windows).
- Când este dată opțiunea -v, Agena nu mai execută fișierele de inițializare.
- Pe UNIX sau Mac, numele fișierelor fișierelor de inițializare trebuie să fie întotdeauna `.agenainit`, indiferent dacă sunt în / usr / agena / lib sau folderul personal.
- Distribuția binară Mac pentru procesoarele Intel rulează cu aproximativ 30% mai rapid decât versiunile anterioare.
- Funcția `io.getkey` este acum disponibilă în ediția Mac OS X.
- Pe Mac, `os.system` returnează acum informații complete despre sistemul de operare și tipul de procesor. Rețineți că returnează informații despre kernelul Darwin și că prima intrare din tabelul rezultat este acum "Darwin" în loc de "MacOSX".
- `os.memstate`,` os.freemem` și `os.beep` acceptă acum Mac OS X.
- `io.keykey` este disponibil pe toate platformele, dar returnează` fail 'pe DOS și Mac. Astfel, "gdi.draw" nu va mai arunca erori pe Mac atunci când folosește opțiunea "mouse".
- `os.listcore` a fost extins doar pentru a returna nume de fișier, director sau nume de link-uri. '' și ".." nu sunt returnate niciodată.
- `os.list` nu a recunoscut nicio opțiune și a returnat o listă goală în schimb. Asta a fost rezolvată. De asemenea, opțiunile pot fi acum combinate. '' și ".." ca primul argument sunt acum recunoscute în mod corespunzător.
- `os.curdir` acum înlocuiește automat spatele în direcția determinată cu tălpi.
- `os.fstat` și` ads.attrib` au spart Agena dacă data unui fișier a depășit marți, 19 ianuarie 2038. Aceasta a fost rezolvată fie prin returnarea unei tabele goale pentru cheia de date (os.fstat) sau 0/0/01 00:00:00, (ads.attrib).
- `utils.calendar` a spart Agena dacă argumentul său a fost nul, negativ sau prea mare. Acest lucru a fost schimbat. În plus, dacă o dată depășește marți, 19 ianuarie 2038, data corectă este returnată.
- Noile funcții `os.screensize` și` os.mousebuttons` returnează rezoluția curentă a ecranului și numărul de butoane ale mouse-ului atașat, respectiv (numai Windows).
- Fișierul agena.ini.sample a fost redenumit la .agenainit.sample în distribuțiile UNIX / Mac.
- Un nou makefile pentru Solaris este acum livrat împreună cu legătura hartă Agena pentru a compila complet sursele originale MAPM scrise de Michael C. Ring.
Ce este nou în versiunea 0.31.2:
- Pachetul mapm pentru precizia math arbitraj este acum disponibil și în ediția DOS a Agenei.
- Numărul de cifre utilizate de pachetul mapm este inițializat la 17 cifre la pornirea Agena pentru DOS sau OS / 2 Warp. Înainte, setarea implicită era de 1 cifră.
- Codul C pentru legarea MAPM a fost standardizat. Înainte, fișierele sursă DOS și OS / 2 diferă de cea pentru UNIX și Windows.
- Îmbunătățiri mici pentru instalatorii Windows și Mac OS X.
- Pe Mac, documentația este acum disponibilă în Bibliotecă / Documentație / Agena în loc de / Users / Share / Agena.
- Funcțiile sin, cos, arcsin, arccos și arctan au revenit -0 în loc de 0 ca unitate imaginară, ceea ce a condus la rezultate greșite dacă revenirea acestor funcții a fost aplicată altor funcții precum ln (adică semnul a unității imaginare a rezultatului acestor alte funcții a fost incorectă). Acest lucru a fost stabilit prin setarea unității imaginare de la -0 la 0 în revenirea păcatului, cos, arcsin, arccos și arctan.
- Funcțiile arcsin și arccos au returnat rezultate greșite pentru argumentele z, dacă abs (real ((z))) 1. Aceasta a fost rezolvată.
- În OS / 2, cele mai complexe funcții aritmetice au revenit nedefinite. Acest lucru a fost rezolvat.
- Rețineți că în sistemele OS / 2 și DOS, în domeniul complex, există încă probleme cu operatorii arccos și arcsin care se întorc nedefinit în anumite situații.
- Versiunile Windows, i386 Solaris 10 și Linux au fost acum compilate cu GCC 4.4.x (și fără xmath86.h) care a redus semnificativ numărul de erori în aritmetică complexă. De fapt, elaborarea unor cazuri complexe de testare în matematică returnează erori zero. Versiunea Sparc a fost compilată cu GCC 4.3.3 pentru Sun Sparc și are mai puține bug-uri în numărul aritmetic complex decât ar fi lansat 0.31.1.
- Redenumiți următoarele fișiere include: config.h - & gt; agncfg.h, chelpers.h - & gt; agnhlps.h, agnxlib.h -> agnxlib.h.
- Pe Mac, gdi.mouse revine acum valorile standard pentru butoanele apăsate ale mouse-ului.
Ce este nou în versiunea 0.31.1:
- Agena 0.31 include toate instrumentele de bază pentru a compila puncte, linii, cercuri, elipse, dreptunghiuri, arce. etc, pentru a controla dimensiunea imaginii și culorile.
Ce este nou în versiunea 0.31.0:
- O versiune de consistență a limbajului cu o soluție de remediere a erorilor - a fost lansată. Consultați jurnalul de modificări pentru ceea ce sa modificat.
Ce este nou în versiunea 0.30.4:
- Agena dispune acum de o grafică încorporată. Acest lucru vă va permite să plotați grafice, imagini etc. în ferestre X11 sau Win32 sau în fișiere GIF, PNG, JPEG, FIG sau PostScript, atât în Solaris, Linux, cât și în Windows. Agena se leagă de biblioteca grafică g2 scrisă de Ljubomir Milanovic și Horst Wagner, pentru a oferi aceste noi capacități.
- Agena 0.30 include toate instrumentele de bază pentru a complota puncte, linii, cercuri, elipse, dreptunghiuri, arce. etc, pentru a controla dimensiunea imaginii și culorile.
- & gt; cu "gdi";
- pachetul gdi v0.1.4 la 20 decembrie 2009
- arc, arcfilled, fundal, cerc, circlefilled, clearpalette, close, liniuță, elipsă, elipsefilled, culoare, fontsize, initpalette, cerneală, lastaccessed, line, newline, newpoint, open, plot, plotfn, point, rectanglefilled , reset, resetpalette, setinfo, setoptions, structură, text, grosime, triunghi, triunghiular, useink
- Funcția plotfn atrage unul sau mai multe grafice de funcții într-un singur real, opțional împreună cu axele plotate într-o culoare definită de utilizator. Intervalul pentru axa y poate fi de asemenea dat, altfel Agena determină cea mai bună setare. Există diferite alte opțiuni care pot fi setate cu funcția setoptions și care se vor aplica tuturor grafurilor produse într-o sesiune: rezoluția ferestrei, harta culorii, grosimea liniei și culoarea de fundal. Desigur, utilizatorul poate ignora unele sau toate opțiunile pentru o anumită scenă. Singularitățile sunt tratate corespunzător.
Ce este nou în versiunea 0.30.3:
- Agena 0.30.3 cu grafică încorporată, matematică de precizie arbitrară și caracteristici îmbunătățite au fost lansate.
Ce este nou în versiunea 0.30.2:
- Agena dispune acum de o grafică încorporată. Acest lucru vă va permite să plotați grafice, imagini etc. în ferestre X11 sau Win32 sau în fișiere GIF, PNG, JPEG, FIG sau PostScript, atât în Solaris, Linux, cât și în Windows. Agena se leagă de biblioteca grafică g2 scrisă de Ljubomir Milanovic și Horst Wagner, pentru a oferi aceste noi capacități.
- Agena 0.30 include toate instrumentele de bază pentru a complota puncte, linii, cercuri, elipse, dreptunghiuri, arce. etc, pentru a controla dimensiunea imaginii și culorile.
- & gt; cu "gdi";
- pachetul gdi v0.1.4 la 20 decembrie 2009
- arc, arcfilled, fundal, cerc, circlefilled, clearpalette, close, liniuță, elipsă, elipsefilled, culoare, fontsize, initpalette, cerneală, lastaccessed, line, newline, newpoint, open, plot, plotfn, point, rectanglefilled , reset, resetpalette, setinfo, setoptions, structură, text, grosime, triunghi, triunghiular, useink
- Funcția plotfn atrage unul sau mai multe grafice de funcții într-un singur real, opțional împreună cu axele plotate într-o culoare definită de utilizator. Intervalul pentru axa y poate fi de asemenea dat, altfel Agena determină cea mai bună setare. Există diferite alte opțiuni care pot fi setate cu funcția setoptions și care se vor aplica tuturor grafurilor produse într-o sesiune: rezoluția ferestrei, harta culorii, grosimea liniei și culoarea de fundal. Desigur, utilizatorul poate ignora unele sau toate opțiunile pentru o anumită scenă. Singularitățile sunt tratate corespunzător.
Ce este nou în versiunea 0.29.0:
- Agena dispune acum de o grafică încorporată. Acest lucru vă va permite să plotați grafice, imagini etc. într-o fereastră sau într-un fișier GIF, PNG, JPEG, FIG sau PostScript în Solaris, Linux și Windows, prin includerea unei legături la biblioteca grafică g2 scrisă de Ljubomir Milanovic și Horst Wagner.
- Agena 0.29.0 oferă toate instrumentele de bază pentru a compila puncte, linii, cercuri, elipse, dreptunghiuri, arce. etc, pentru a gestiona culoarea și pentru a crea fișiere imagine sau pentru a deschide ferestrele X11 sau Win32.
- Într-una dintre actualizările care urmează, o interfață de utilizator de nivel înalt cu funcțiile gdi.plotfn și gdi.plot vă permite să complotați funcții univariate și seturi de puncte în zbor. Cele două funcții sunt deja incluse în Agena 0.29.0, dar sunt încă beta. Iată o previzualizare:
- & gt; cu "gdi";
- pachetul gdi v0.1.0 din 24 noiembrie 2009
- arc, fundal, cerc, clearpalette, închide, liniuță, elipsă, filledArc, filledCircle, filledEllipse, filledRectangle,
- completatTriangle, culoare, fontsize, initpalette, cerneală, lastaccessed, linie, deschis, plot, plotfn, punct, dreptunghi, resetare
- resetpalette, setinfo, setoptions, structură, text, grosime, triunghi, useink
- Funcția plotfn trage graficul unei funcții într-o singură reală, opțional alături de axele reprezentate într-o culoare definită de utilizator. Intervalul pentru axa y poate fi de asemenea dat, altfel Agena încearcă să determine cea mai bună setare. Există diferite alte opțiuni care pot fi setate cu funcția setoptions și care se vor aplica tuturor grafurilor produse într-o sesiune: rezoluția ferestrei, harta culorii, grosimea liniei și culoarea de fundal. Desigur, utilizatorul poate ignora unele sau toate opțiunile pentru o anumită scenă. Singularitățile sunt tratate corespunzător.
- plotfn (sin (x) * x> & gt ;, -5, 5, culoare ~ 'albastru', ax 660:
Ce este nou în versiunea 0.27.2:
- Funcția new toSet baselib convertește un șir într-un set de caractere și o tabelă sau o secvență într-un set.
- io.readlines a fost patch-uri pentru procesarea liniilor cu mai mult de 2048 de caractere. De asemenea, funcția emite o eroare dacă alocarea memoriei interne nu reușește. Dimensiunea bufferului intern a fost redusă de la 2048 octeți la 512 octeți. Puteți modifica acest lucru atribuind o altă valoare lui AGN_IOREADLINES_MAXLINESIZE în fișierul agnconf.h.
- io.readlines acceptă acum și mânere de fișiere. Când utilizați mânere de fișiere, spre deosebire de numele fișierelor, rețineți că trebuie să închideți manual fișierul după ce utilizați linii io.readlines.
- io.readlines nu mai întoarce o tabelă gol dacă fișierul nu există. În schimb, emite o eroare.
- toSeq returnează acum o eroare în loc să eșueze dacă nu primește un șir, un set sau un tabel.
- Funcția baselib folosită a fost extinsă și poate readuce utilizarea memoriei în bytes, kbytes și gbytes. Este o funcție C acum.
- Funcția gcinfo nedocumentată a fost ștearsă. Funcționalitatea sa a fost utilizată.
- Noua funcție C API agn_usedbytes returnează numărul de octeți folosiți de sistem.
- A fost corectat mesajul de eroare greșit al lui toTable.
- redenumit C funcția AOI "agn_isioforcerror" la "agn_isioforceerror".
Ce este nou în versiunea 0.27.0:
- A fost adăugată funcția de eroare math.erf și funcția de eroare complementară math.erfc.
- A fost adăugată funcția Bessel de primul fel mateh.besselj, iar funcția Bessel a celui de-al doilea tip matematic. Ordinea este dată de primul argument, argumentul ca al doilea argument.
- Dacă noua variabilă de mediu _EnvIoForceError este setată la o valoare non-null (implicită), funcțiile io.open, io.readlines și diferitele funcții binio se opresc cu o eroare în loc să se întoarcă în mod normal.
- binio.readbytes și binio.readchar au returnat o secvență goală în locul eșecului în cazul în care fișierul care trebuie citit nu există. Acest lucru a fost modificat: eșuează sau se întoarce o eroare.
- arcsin și arccos sunt acum operatori și deci aproximativ 40% mai rapizi.
- A adăugat operatorul xor care efectuează un Boolean exclusive-OR pe valori care se evaluează sau sunt adevărate, false, eșuate și nulă.
- A adăugat operatorul atendof care verifică dacă un cuvânt se termină într-o expresie dată și își returnează poziția ca număr. Operatorul returneaza null daca sirurile de caractere au aceeasi lungime, cel putin unul dintre ele fiind sirul gol, sau cuvantul nu se termina in modelul dat.
- arertable returnează numai adevărat, dacă are un tabel de memorare read-write (actualizat de declarația returnată).
- Noua funcție isrotable determină dacă o funcție are o tabelă de reamintire numai pentru citire (care nu poate fi actualizată prin instrucțiunea returnată) și returnează true sau false.
- Noii operatori gethigh și getlow regăsesc octeții mai mari și inferiori dintr-un număr (de exemplu C dublu).
- Noii operatori stabilesc și stabilesc setările de octeți mai mici și inferiori către un număr (de exemplu C dublu).
- Noua bandă de operatori, bor, bxor și nu conduc biți și nici operațiuni exclusive sau complementare pe numere.
- Noua funcție `kernel` configurează setările kernelului Agena. În prezent, acesta poate schimba modul în care operatorii bitului funcționează intern (utilizarea numerelor întregi semnate sau nesemnate) și modul în care sunt tipărite numerele.
- Cu numere reale x, math.argument întoarce acum Pi în loc de 0 dacă x < 0.
- Din cauza unei erori în funcțiile de bază ale bibliotecii ANSI C, arcsin și arccos au produs rezultate greșite cu numere complexe dacă partea lor imaginară era zero în sistemele UNIX. Acest lucru a fost rezolvat.
- math.isPrime a raportat fals cu numărul 2. Aceasta a fost corectată.
- Spre deosebire de manual, absul a returnat 2 cu eșec. Acum se întoarce -1 așa cum este documentat.
- Pachetul de biți a fost eliminat.
- A fost adăugată noua funcție C API agn_isioforcerror care verifică dacă _EnvIoForceError a fost setat la o valoare non-null.
- Noua funcție C API agn_setbitwise determină dacă banda de operatori, bor, bnot, bxor și schimbare interne se calculează fie cu numere întregi semnate, fie nesemnate.
- Noua funcție C API agn_getbitwise returnează modul setat de agn_setbitwise.
- Noua funcție C API agn_setdigits stabilește numărul de cifre utilizate pentru tipărirea numerelor.
- Noua funcție C API agn_getdigits determină numărul de cifre utilizate pentru tipărirea numerelor.
- Internal: A fost eliminată intrarea "REPL" depreciată de la luaP_opnames.
- Programul de instalare Windows a fost îmbunătățit, verificând deja o versiune instalată anterior a Agena, împiedicând pornirea programului de instalare dacă o altă instanță a acestuia este deja instalată și alte îmbunătățiri minore.
Cerințe :
- Ncurses
- GNU Readline
Comentariile nu a fost găsit