Nimrod

Screenshot Software:
Nimrod
Detalii soft:
Versiune: 0.9.2
Incarca data: 20 Feb 15
Producător: Andreas Rumpf
Licenţă: Gratuit
Popularitate: 16

Rating: nan/5 (Total Votes: 0)

Nimrod este un open source, gratuit, static tastat, limbaj de programare imperativă conceput pentru a sprijini stiluri de programare generice și funcționale procedural,-obiect orientate,, rămânând în același timp eficient și simplu.
Nimrod este capabil să arbore abstract de sintaxa (AST), ca parte a unui caiet de sarcini, care să permită un sistem macro puternic, care poate fi folosit pentru a crea anumite limbi domeniu. Un caracteristici moștenit de la Lisp.
Software-ul dispune de generare nativ cod, de colectare a gunoiului, iteratori zero aeriene, operatorii defineable de utilizator, tipuri de date de nivel înalt, compila evaluare timp, înainte compability, GTK2, Windows API, POSIX legaturi API, un sistem parser plugable, un generator de documentare, iar o Pascal a Nimrod utilitar de conversie.
Nimrod este portabil, ceea ce înseamnă că poate rula pe Linux, BSD, Mac OS & nbsp; X & nbsp; sisteme de operare și Windows

Ce este nou în această versiune:.

  • Remedieri de erori:
  • nu vechi GC colectat cicluri corect. Fixe dar aceasta poate provoca regresii de performanță. Totuși, puteți dezactiva colector ciclu cu GC_disableMarkAndSweep și rulați-l în mod explicit la momentul potrivit sau deloc. Există, de asemenea, un nou GC puteți activa cu --gc:. MarkAndSweep care nu are această problemă, dar este mai lentă, în general, și are nici o garantie in timp real
  • exprimate pentru tipurile de virgulă mobilă are acum bitcast după cum se specifică în manualul. Acest cod va sparge care utilizează în mod eronat exprimate pentru a converti diferite valori cu virgulă mobilă.
  • performanță modul SCGI a fost îmbunătățit foarte mult, nu va mai bloca pe mai multe cereri concurente.
  • În total stabilit peste 70 de chestiuni GitHub și care a fuzionat peste 60 de cereri de tragere.
  • Library Adaosuri:
  • Nu este o nouă marcă și mătura experimental GC, care poate fi mai rapid (sau mult mai lent), decât implicit GC. Activare cu --gc:. MarkAndSweep
  • Adăugat system.onRaise pentru a sprijini un sistem stare.
  • system.locals a adăugat că oferă acces la localnici un proc de.
  • macros.quote Adaugata pentru AST cvasi cita.
  • Adăugat system.unsafeNew pentru a sprijini Hacky obiecte de lungime variabilă.
  • system.fields și obiect sprijin system.fieldPairs prea; au folosit numai tuple de sprijin.
  • Adăugat system.CurrentSourcePath revenind calea completă sistem de fișiere a fișierului sursă de curent.
  • Modulul macro-uri conține acum o mulțime de ajutoare utile pentru construirea copaci abstracte de sintaxă.
  • Schimbările care afectează compatibilitate:
  • comun este un cuvânt cheie acum.
  • depreciată sockets.recvLine și asyncio.recvLine, a adăugat readline loc.
  • mod adâncitura este manipulat în parser-ul sa schimbat semnificativ. Cu toate acestea, acest lucru afectează foarte puțin (daca este cazul) codul din lumea reală.
  • expresie / Declarație de unificare a fost pusă în aplicare. Din nou, acest lucru afectează numai cazuri de margine și nu cunoaște codul din lumea reală.
  • schimbată interfața asincron a modulului scgi.
  • WideStrings sunt acum gunoi colectate ca și alte tipuri de coarde.
  • Compiler Adaosuri:
  • Comanda doc2 nu mai generează ieșire pentru întregul proiect. Utilizați noul comutatorul --project pentru a activa acest comportament.
  • compilatorul poate avertiza acum despre variabile locale umbrite. Cu toate acestea, acest lucru trebuie să fie pornit în mod explicit, prin intermediul --warning [ShadowIdent]:. Pe
  • Compilatorul suportă acum aproape fiecare pragma într-o pragma împingere.
  • convertoare generice au fost puse în aplicare.
  • Adaugata o pragma noforward foarte experimental care permite un mod special compilație care elimină în mare măsură nevoia de declarații înainte.
  • Adaosuri Limba:
  • de caz expresii acum sunt suportate.

  • Constructori
  • Masa imita acum mai îndeaproape sintaxa declarației de caz.
  • Nimrod poate deduce acum tipul de returnare a unui proc din corpul său.
  • Adaugata o declarație mixin să afecteze simbol norme obligatorii în generice.
  • urmărire Excepție a fost adăugat și comanda doc2 adnotează posibile excepții pentru tine.
  • definite de utilizator efecte (& quot; tag-uri & quot;). Urmărire a fost adăugat și comanda doc2 adnotează posibile tag-uri pentru tine
  • Tipuri poate fi adnotat cu noua sintaxa nu zero să afirme în mod explicit că nulă nu este permisă. Cu toate acestea în prezent compilatorul efectuează nici o verificare de acest statice avansat; pentru acum este pur și simplu pentru documentare.
  • O declarație de export a fost adăugat la limba: Se poate folosi de expediere simbol atât de module client nu trebuie să importe dependențele ale modulului explicit
  • .
  • Supraîncărcarea bazat pe AST a fost pusă în aplicare.
  • Generice sunt acum susținute pentru metodele mai multe.
  • Obiectele pot fi initializate prin intermediul unui expresie obiect constructor.
  • Este o nouă construcție sintactic (;) expresii de unificare și declarații
  • .
  • Puteți folosi acum de modul zero import, dacă doriți să importați modulul, dar doriți să aplice acces deplin calificat la fiecare simbol în modul.

Ce este nou în versiunea 0.8.14:.

  • Fixed o corupere de memorie serios cu privire la mesajul care trece
  • Fixed un bug serios cu privire la diferite instanțieri ale unei proc generic.
  • Fixed un bug nou introdus în cazul în care un ordin european de anchetă excepție greșit a fost ridicat de la sfârșitul de fișier pentru fișiere text care nu se termină cu o linie nouă.
  • c2nim Bugfix, c2pas: opțiunea --out nu a funcționat corect
  • .
  • Bugfix:. Transmiterea procs generice nu au lucrat
  • Unele mai multe rezolvări ale unor probleme de macro-uri și compila-time evaluare.
  • GC acum ia în considerare indicii de interior de pe stivă care pot fi introduse de optimizatori C agresive.
  • repartizare nativ lui Nimrod / GC lucreaza acum pe PowerPC.
  • O multime de alte rezolvări ale unor probleme:. Prea multe pentru a le enumera

Ce este nou în versiunea 0.8.6:

  • Remedieri de erori:
  • pragmas aluzie [X]: off și avertizare [X]: off lucra acum
  • .
  • Metoda sintaxă apel pentru iteratori lucrări din nou (pentru x în lines.split ()).
  • fix unei greșeli în removeDir pentru POSIX care duce la o recursivitate infinita.
  • compilator verifică acum că numele fișierelor module sunt identificatori valide.
  • modele goale pentru pragma dynlib sunt acum posibile.
  • os.parseCmdLine returnat rezultate eronate pentru trailing spațiu.
  • utilizare tuplu inconsecvente (utilizând aceeași tuplul cu și fără câmpuri cu numele de) nu crash generatorul de cod mai.
  • Un mesaj de eroare mai bine este prevăzută în cazul în care încărcarea unui proc într-un lib dinamic nu.
  • Adaosuri:
  • system.contains Adăugat de tablouri deschise.
  • Modulul PEG suportă acum operatorului buclă căutare @.
  • gramatică / parser: DAU | IND este permisă înainte de orice fel de închidere suport. Acest lucru permite pentru mai flexibil codul sursă formatări.
  • Compilatorul foloseste acum un tabel bind pentru simbolul căutare într-un context obligati. (A se vedea # template-uri manual.html pentru detalii.)
  • Renunțați & quot; comentariul meu lung & quot;, & quot; & quot & quot; & quot; este acum optimizat departe.
  • Noi --floatChecks: pe | off comutatoare și pragmas pentru o mai bună depanare a operațiunile cu virgulă mobilă. (A se vedea manual.html # pre-definite de puncte,-tipuri plutitoare pentru detalii.)
  • Manualul a fost îmbunătățit. (Multe mulțumiri lui Philippe Lhoste!)
  • Schimbările care afectează compatibilitate:
  • Compilatorul nu sări peste pasul leagă mai, chiar dacă nici un fișier sa schimbat.
  • os.splitFile (& quot; .xyz & quot;) returnează acum (& quot; & quot ;, & quot; .xyz & quot ;, & quot; & quot;) în loc de (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). Numele de fișiere care încep cu un punct sunt tratate diferit.
  • strutils.split (s: string, Transelectrica: setați [char]) nu se obține un șir gol mai. Acest comportament este, probabil, mult mai potrivit pentru despicare spațiu.
  • Compilatorul oprește acum, după trecerea liniei --version comandă.
  • sprijin eliminat moștenire enumerare în analizorul; enum moștenire nu a fost documentată oricum.
  • domeniul Mesaj de system.E_base are acum șir tip, în loc de CString. Acest lucru îmbunătățește siguranța memorie.

Ce este nou în versiunea 0.8.2:

  • Remedieri de erori:
  • Pase --hint [X]: off sau --warning [X]:. Off ca argumente în linia de comandă pentru compilatorul lucrează acum
  • parametri implicite pentru șabloane de lucru acum.
  • problema de securitate fixe în system.copy.
  • caz String fără o parte mai generat cod greșit.
  • Diverse remedieri pentru modulul osproc; funcționează acum pe Windows.
  • Adaosuri:
  • multi-metode implementate.
  • Compilatorul detectează acum numărul de procesoare disponibile și execută compilatorul C concomitent. Acest lucru poate fi ajustată prin --parallel_build:. Comutatorul de number_of_processors linie de comandă
  • model PEG-based de potrivire prin intermediul modulului cuie.
  • Adaugat system.definedInScope.
  • Adaugat system.accumulateResult.
  • Adaugat os.walkDirRec.
  • osproc.countProcessors Adăugat.
  • Adaugat osproc.execProcesses.
  • sistemul de configurare suportă acum $ cc.options.linker.
  • unita expr și typeDesc în gramatică / parser:. Acest lucru va permite PROC anonime fără lambda
  • Multe scripturi nu au nevoie de un GC: Noul --gc: nici unul comutator de linie de comandă pot fi folosite pentru a exclude GC de la executabilul
  • .
  • Schimbările care afectează înapoi compability:
  • Având adresa unui discriminante obiect este acum invalid.
  • Trecerea un proc la un var proc este permisă numai pentru PROC marcate cu procvar sau o convenție de asteptare! = Nimcall. Pentru moment acest lucru duce doar un avertisment, dar acest lucru se va transforma într-o eroare în curând.
  • sistem. & Și system.add acum primi openArray în loc de parametri urm.
  • îndepărtat strutils.findSubStr și strutils.findChars. Acestea au fost depreciate, timp de 3 versiuni.
  • Modulul unicode folosește un tip distinct de TRune.
  • depreciată strutils.toString: folosi $ în loc
  • .
  • depreciată os.splitPath:. Utilizare os.splitPath care returnează un tuplu în loc
  • depreciată os.extractDir:. Utilizați splitFile (cale) .dir loc
  • depreciată os.splitFilename: folosiți splitFile loc
  • .
  • depreciată os.extractFileExt: folosiți splitFile loc
  • .
  • depreciată os.extractFileTrunk: folosiți splitFile loc
  • .
  • depreciată os.appendFileExt: folosiți os.addFileExt loc
  • .
  • depreciată os.executeShellCommand: folosiți os.execShellCmd loc
  • .
  • depreciată os.iterOverEnvironment:. Utilizare os.envPairs loc
  • parseopt.init Deprecated: folosiți parseopt.initOptParser loc
  • .
  • depreciată parseopt.getRestOfCommandLine: folosiți parseopt.cmdLineRest loc
  • .
  • depreciată os.pcDirectory: folosiți os.pcDir loc
  • .
  • depreciată os.pcLinkToDirectory: folosiți os.pcLinkToDir loc
  • .
  • depreciată osproc.executeProcess: folosiți osproc.execProcess loc
  • .
  • depreciată osproc.executeCommand: folosiți osproc.execCmd loc
  • .

Ce este nou în versiunea 0.8.0:

  • Remedieri de erori:
  • fix un bug mic care a cauzat compilatorul nu a raporta simboluri supraîncărcate neutilizate
  • fix un bug mic în ceea ce privește simbol supraîncărcarea
  • fix o greșeală de scriere: e & quot; & quot ;, ambiguu nu & quot; ambigious & quot; -)
  • compilatorul detectează acum recursiv includ fișiere
  • system.card ar trebui să lucreze din nou
  • articolele pentru set [char] și matrice [char, T] ar trebui să lucreze acum
  • Adaosuri:
  • tipurilor generice implementate și în două faze simbol căutare în rutine generice
  • parametri de șabloane pot fi acum tipuri reale
  • implementate un sir de caractere brut generalizate: ident & quot; ABC & quot; este o scurtătură pentru ident (r & quot; ABC & quot;)
  • în supraîncărcare iteratori de soluționare sunt separate de procs; iteratori acum pot avea același nume + semnătură ca procs
  • simbol căutare în șabloane pot fi afectate de noua cheie de legare
  • compilatorul acceptă acum un comutator --no_main pentru interoperabilitate legătură mai bună cu alte limbi compilate
  • tuplu implementat despachetarea în secțiunile var
  • generatorul de cod emite implicit: __assume (0); pentru Visual C ++ (pentru optimizarea)
  • compilatorul verifică acum dacă un proc are efecte secundare; PROC care sunt declarate nu au efecte secundare sunt respinse în cazul în care compilatorul nu poate verifica acest
  • strutils operatorului format.% Suportă acum $ # pentru numărarea automată argument
  • strutils.join implementat
  • Schimbările care afectează înapoi compability:
  • două simbolul căutare fază se realizează în rutine generice
  • legare este acum un cuvânt rezervat; excepție nici un cuvânt rezervat mai
  • tipuri abstracte au fost redenumite pentru tipuri distincte; astfel distinct este acum un cuvânt rezervat; abstract este nici un cuvânt rezervat mai
  • system.openFile depreciate: utilizare system.open loc
  • system.closeFile depreciate: utilizare system.close loc
  • strutils.replaceStr depreciate: utilizare strutils.replace loc
  • strutils.deleteStr depreciate: utilizare strutils.delete loc
  • strutils.splitSeq depreciate: utilizare strutils.split loc
  • strutils.splitLinesSeq depreciate: utilizare strutils.splitLines loc
  • strutils.parseFloat nu acceptă un parametru adițional început mai
  • Documentație:
  • manualul a fost îmbunătățit

Ce este nou în versiunea 0.7.6:

  • Remedieri de erori:
  • instalare pe Windows Vista pot lucra acum din cutie; vă rugăm să încercați
  • !
  • Fixed un bug care a păstrat & quot; module recursive & quot; exemplu de lucru
  • amestecare parametrii nume și fără nume într-un apel de procedură lucrează acum
  • numere octale cu 0C prefix sunt acum susținute în mod corespunzător
  • enumerările acum ar putea începe cu valori negative
  • parseInt, ParseBiggestInt arunca acum o excepție în cazul în care șirul nu se încheie după numărul de analizat
  • compilatorul se ocupă acum declaratii de nivel superior corect
  • Director nimcache generate nu se termină niciodată într-un slash
  • createDir acum lucreaza pentru directoare la nivel mondial sub UNIX (& quot; / somepath / aici & quot;)
  • compilatorul execută acum executabil cu un lider & quot; ./& quot; sub UNIX
  • compilatorul suportă acum matrici constante de pointeri procedură
  • Elif în situațiile de caz lucrează acum
  • iteratori folosind un parametru tablou deschis lucra acum
  • fix un bug în cazul în care, în anumite contexte $ myEnum nu au de lucru

Ce este nou în versiunea 0.7.4:

  • instalare pe Windows ar trebui să funcționeze acum în cazul în care directorul conține Spatii
  • generatorul de documentare acum redă doar comentarii documentație
  • `` `` este permis pentru operatori ca manualul spune
  • în cazuri rare, verificarea indicele a fost optimizat departe, chiar dacă ar fi fost necesar
  • de mai multe bug fixat pentru tipurile de tuple
  • adăugat un `` modul unicode`` pentru UTF-8 manipulare
  • adăugat Hostos și hostCPU magia pentru `` modulul system``
  • system.echo acceptă acum mai multe argumente
  • optimizare a adăugat: în unele cazuri plasare inline de iteratori produce acum cod substanțial mai bine
  • adăugat întreg program de eliminare cod mort
  • magia `` `operator de acum lucreaza pentru enumerările
  • în `` secțiunile const`` avansat timpul de compilare evaluare se face
  • redenumit `` `` in_Operator`` la contains``: `` in`` este acum un șablon care se traduce `` contains``
  • schimbat `` `` strutils.quoteIfSpaceExists`` la strutils.quoteIfContainsWhite``
  • parser este acum mult mai pretentios despre missings virgule, etc. Dacă acest lucru afectează codul prea mult, încercați să executați codul prin imprimantă destul de.
  • `` API macros`` nu mai face parte din `` modulul system``, pentru a folosi acest API va trebui acum să importe `` macros`` modul
  • adăugat un tutorial

Ce este nou în versiunea 0.7.2:

  • Aceasta este o versiune bugfix. Această remediere cel mai important este faptul că Nimrod acum lucreaza din nou pe AMD64 (x86_64) procesoare.
  • Nu noi caracteristici au fost implementate.

Ce este nou în versiunea 0.7.0:

  • diferite bug fixat, prea multe pentru a le enumera aici
  • instalarea pentru sistemele bazate pe UNIX nu depinde de Python nici mai mult
  • `` script koch.py`` acum funcționează cu versiuni mai vechi Python (inclusiv 1.5.2)
  • operațiuni schimbat întregi și Normele de conversii
  • adăugat `` `` GC_ref`` și procs GC_unref``
  • secvențe trebuie acum să fie construită cu `` @ `` operatorului. Acest lucru duce la mai puține ambiguități.
  • compilatorul utilizează acum mai puțin de memorie și este mult mai rapid
  • GC este acum mult mai rapid
  • noi legături: zlib, SDL, Xlib, OpenGL, ODBC, Lua
  • codul C generat este mult mai rapid pentru a optimiza cu GCC
  • biblioteci noi: fluxuri, zipfiles
  • compilatorul Nimrod a fost adaptată pentru FreeBSD: ar trebui să funcționeze pe alte BSD prea

Cerințe :

  • Python

Software similare

Octave
Octave

2 Jun 15

CIL
CIL

20 Feb 15

Stratego/XT
Stratego/XT

3 Jun 15

Comentarii la Nimrod

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!