Nimrod er en åpen kildekode, gratis, statisk skrevet, viktig programmeringsspråk utviklet for å støtte prosessuelle, objekt-orientert, generiske og funksjonelle programmerings stiler, mens resterende effektiv og enkel.
Nimrod er i stand til å abstrakt syntaks treet (AST) som en del av spesifikasjonen, slik at en kraftig makro system som kan brukes til å opprette domene bestemte språk. A funksjoner arvet fra Lisp.
Programvaren har egen kode generasjon, søppelrydding, null-overhead iteratorer, brukerdefiner operatører, høyt nivå datatyper, kompilering evaluering, frem kompabilitet, GTK2, Windows API, POSIX API bindinger, en pluggbar parser system, en dokumentasjon generator, og en Pascal til Nimrod konvertering verktøyet.
Nimrod er bærbar, noe som betyr at den kan kjøres på Linux, BSD, Mac OS & nbsp; X & nbsp; og Windows-operativsystemer
Hva er nytt i denne utgaven:.
- Bugfikses:
- Den gamle GC aldri samlet sykluser riktig. Løst, men det kan forårsake ytelses regresjoner. Men du kan deaktivere syklusen samler med GC_disableMarkAndSweep og kjøre det eksplisitt på et passende tidspunkt eller ikke i det hele tatt. Det er også en ny GC du kan aktivere med --gc:. MarkAndSweep som ikke har dette problemet, men er tregere generelt og har ingen realtime garantier
- cast for flyttyper gjør nå det bitcast som angitt i bruksanvisningen. Dette bryter kode som feilaktig bruker cast å konvertere forskjellige flytende poengverdi.
- SCGI modul ytelse er blitt mye bedre, det vil ikke lenger blokkere på mange samtidige forespørsler.
- Totalt fast over 70 GitHub problemstillinger og fusjonert over 60 pull forespørsler.
- Bibliotek Tilgang:
- Det er en ny eksperimentell mark og feie GC som kan være raskere (eller mye tregere) enn standard GC. Aktiver med --gc:. MarkAndSweep
- Lagd system.onRaise å støtte en tilstand system.
- Lagd system.locals som gir tilgang til en proc er lokalbefolkningen.
- Lagt macros.quote for AST kvasi-sitering.
- Lagd system.unsafeNew å støtte Hacky variabel lengde stedene.
- system.fields og system.fieldPairs støtte objekt også; de pleide å bare støtte tupler.
- Lagd system.CurrentSourcePath tilbake hele filsystem banen for gjeldende kildefilen.
- makroer modulen inneholder nå mange nyttige hjelpere for å bygge opp abstrakte syntakstrær.
- Endringer som påvirker bakoverkompatibilitet:
- delt er et nøkkelord nå.
- Foreldet sockets.recvLine og asyncio.recvLine, lagt readline i stedet.
- Måten innrykk blir håndtert i parseren endret seg betydelig. Imidlertid påvirker dette svært lite (om noen) virkelige verden koden.
- Uttrykket / uttalelse forening har blitt implementert. Igjen dette bare påvirker edge saker og ingen kjente virkelige verden koden.
- Endret async grensesnittet av scgi modulen.
- WideStrings er nå søppel samles som andre strengtypene.
- Iler Tilgang:
- doc2 kommandoen ikke genererer utgang for hele prosjektet lenger. Bruk den nye --project bryteren for å aktivere denne atferden.
- Kompilatoren kan nå advare om skygget lokale variabler. Men dette må være slått på eksplisitt via --warning [ShadowIdent]:. På
- Kompilatoren støtter nå nesten hver pragma i en push pragma.
- Generiske omformere er iverksatt.
- Lagt til en svært eksperimentell noforward pragma muliggjør en spesiell samling modus som i stor grad eliminerer behovet for termin erklæringer.
- Språk Tilgang:
- case uttrykk støttes nå.
- Tabell konstruktører nå etterligne nærmere syntaksen av saken uttalelse.
- Nimrod kan nå antyde returtypen av en proc fra kroppen sin.
- Lagt til en mixinen erklæring for å påvirke symbol bindende regler i generika.
- Unntak sporing har blitt lagt og doc2 kommandoen annotates mulige unntak for deg.
- Brukerdefinerte effekter (& quot; tags & quot;). Sporing har blitt lagt og doc2 kommandoen annotates mulige koder for deg
- Typer kan annotert med den nye syntaksen ikke null som eksplisitt uttrykker null er ikke tillatt. Men for tiden kompilatoren utfører ingen avansert statisk sjekker for dette; for nå er det bare for dokumentasjonsformål.
- En eksport uttalelsen har blitt lagt til språket: Den kan brukes for symbol videresending slik at klientmoduler ikke trenger å importere en modulens avhengig eksplisitt .
- overbelastning basert på ASTS har blitt implementert.
- Generics støttes nå for flere metoder.
- Objekter kan bli initialisert via et objekt konstruktør uttrykk.
- Det er en ny syntaktisk konstruksjon (;) samlende uttrykk og uttalelser .
- Du kan nå bruke fra modul import null hvis du vil importere modulen, men ønsker å håndheve fullt kvalifisert tilgang til alle symbol i modulen.
Hva er nytt i versjon 0.8.14:.
- Fikset en alvorlig minnekorrupsjon om meldingsutveksling
- Fikset en alvorlig bug om ulike forekomster av en generisk proc.
- Fast en nylig innført bug der en feil EIO unntak ble reist på slutten av filen for tekstfiler som ikke ender med et linjeskift.
- Bugfix c2nim, c2pas: den --out alternativet har aldri jobbet skikkelig .
- Rettelse:. Videresending av generiske procs aldri jobbet
- Noen flere feilrettinger for makroer og kompilere-time evaluering.
- GC tar nå hensyn til interiør tips om stabelen som kan innføres av aggressive C optimizer.
- Nimrod innfødte måler / GC fungerer nå på PowerPC.
- Mange andre feilrettinger. Altfor mange til å liste dem alle
Hva er nytt i versjon 0.8.6:
- Bugfikses:
- De pragmas hint [X]: av og advarsel [X]: off nå jobbe .
- Metode samtale syntaks for iteratorer fungerer igjen (for x i lines.split ()).
- Fikset en skrivefeil i removeDir for POSIX som fører til en uendelig rekursjon.
- Kompilatoren sjekker nå at modul filnavn er gyldige identifikatorer.
- Tomme mønstre for dynlib pragma er nå mulig.
- os.parseCmdLine returnert feil resultater for avsluttende mellomrom.
- inconsequent tuppel bruk (med samme tuppel med og uten navngitte felt) ikke krasjer koden generator lenger.
- En bedre feilmelding leveres når lasting av en proc innenfor et dynamisk lib svikter.
- Tilgang:
- Lagd system.contains for åpne arrays.
- PEG-modul støtter nå søke sløyfe operatør @.
- Grammatikk / parser: SAD | IND er tillatt før noen form for lukking brakett. Dette åpner for mer fleksibel kildekode attering.
- Kompilatoren bruker nå et bind tabell for symbol lookup innenfor et bind sammenheng. (Se manual.html # maler for detaljer.)
- Forkast & quot; & quot; & quot; min lange kommentar & quot; & quot; & quot; er nå optimalisert unna.
- Nye --floatChecks: på | av brytere og pragmas for bedre debugging av flyttallsoperasjoner. (Se manual.html # forhåndsdefinerte-flyttalls-typer for detaljer.)
- Den manuelle har blitt forbedret. (Mange takk til Philippe Lhoste!)
- Endringer som påvirker bakoverkompatibilitet:
- Kompilatoren ikke hoppe ikke knytte skritt lenger selv hvis ingen fil er endret.
- os.splitFile (& quot; .xyz & quot;) returnerer nå (& quot; & quot ;, & quot; .xyz & quot ;, & quot; & quot;) i stedet for (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). Filnavn som starter med en prikk håndteres forskjellig.
- strutils.split (s: string, seps: set [røye]) aldri gir den tomme strengen lenger. Denne oppførselen er nok mer passende for mellomrom splitting.
- Kompilatoren stopper nå etter --version kommandolinjebryteren.
- Fjernet støtte for enum arv i parser; enum arv har aldri blitt dokumentert uansett.
- msg innen system.E_base har nå den type streng, i stedet for cstring. Dette forbedrer hukommelsen sikkerhet.
Hva er nytt i versjon 0.8.2:
- Bugfikses:
- Passing --hint [X]: off eller --warning [X]:. Off som kommandolinjeargumenter til kompilatoren fungerer nå
- Standard parametere for maler fungere nå.
- Fast sikkerhetsproblem i system.copy.
- String saken uten en andre del genererte feil kode.
- Ulike feilrettinger for osproc modul; det nå fungerer på Windows.
- Tilgang:
- Gjennomførte multi-metoder.
- Kompilatoren registrerer nå antall tilgjengelige prosessorer og utfører C-kompilator samtidig. Dette kan justeres ved --parallel_build:. Number_of_processors kommandolinjebryteren
- PEG-basert mønstergjenkjenning via knagger modulen.
- Lagd system.definedInScope.
- Lagd system.accumulateResult.
- Lagd os.walkDirRec.
- Lagd osproc.countProcessors.
- Lagd osproc.execProcesses.
- Konfigurasjonssystemet støtter nå $ cc.options.linker.
- Sammenslåtte expr og typeDesc i grammatikk / parser:. Dette vil gi rom for anonyme procs uten lambda
- Mange skript har ikke behov for en GC: Den nye --gc: ingen kommandolinjebryteren kan brukes til å ekskludere GC fra kjørbar .
- Endringer som påvirker bakover kompabilitet:
- Ta adressen til et objekt diskriminant er nå ugyldig.
- Passerer en proc til en proc Var er kun tillatt for procs merket med procvar eller et kall konvensjonen! = Nimcall. For nå er dette bare fører til en advarsel, men dette vil slå inn en feil snart.
- system. & Og system.add nå motta openArray istedenfor seq parametere.
- Fjernet strutils.findSubStr og strutils.findChars. De har blitt frarådet for tre versjoner.
- unicode modulen bruker en distinkt type for TRune.
- Foreldet strutils.toString: bruke $ i stedet .
- Foreldet os.splitPath:. Bruk os.splitPath som returnerer et tuppel i stedet
- Foreldet os.extractDir:. Bruke splitFile (bane) .dir stedet
- Foreldet os.splitFilename: bruk splitFile stedet .
- Foreldet os.extractFileExt: bruk splitFile stedet .
- Foreldet os.extractFileTrunk: bruk splitFile stedet .
- Foreldet os.appendFileExt: bruk os.addFileExt stedet .
- Foreldet os.executeShellCommand: bruk os.execShellCmd stedet .
- Foreldet os.iterOverEnvironment:. Bruk os.envPairs stedet
- Foreldet parseopt.init: bruk parseopt.initOptParser stedet .
- Foreldet parseopt.getRestOfCommandLine: bruk parseopt.cmdLineRest stedet .
- Foreldet os.pcDirectory: bruk os.pcDir stedet .
- Foreldet os.pcLinkToDirectory: bruk os.pcLinkToDir stedet .
- Foreldet osproc.executeProcess: bruk osproc.execProcess stedet .
- Foreldet osproc.executeCommand: bruk osproc.execCmd stedet .
Hva er nytt i versjon 0.8.0:
- Bugfikses:
- fikset en liten bug som forårsaket kompilatoren å ikke rapportere ubrukte belastet symboler
- fikset en liten bug angå symbol overbelastning
- fikset en skrivefeil: det er & quot; tvetydig & quot ;, ikke & quot; ambigious & quot; ; -)
- kompilatoren nå oppdager rekursiv inkluderer filer
- system.card skal fungere igjen
- elementer for settet [røye] og matrise [røye, T] skal fungere nå
- Tilgang:
- implementert generiske typer og to fase symbol oppslag i generiske rutiner
- malparameterne kan nå være reelle typer
- implementert gener rå strenger: ident & quot; abc & quot; er en snarvei for ident (r & quot; abc & quot;)
- i overbelastning oppløsning iteratorer er atskilt fra procs; iteratorer nå kan ha samme navn + signatur som procs
- symbol oppslag i maler kan bli påvirket av den nye bind ordet
- kompilatoren godtar nå en --no_main bryter for bedre kobling interoperabilitet med andre kompilerte språk
- implementert tuppel utpakking i Var seksjoner
- avgir koden generator standard: __assume (0); for Visual C ++ (for optimalisering)
- kompilatoren sjekker nå om en proc har bivirkninger; procs som er erklært å ha noen bivirkninger blir avvist hvis kompilatoren ikke kan bekrefte dette
- de format operatør strutils.% Støtter nå $ # for automatisk argument telling
- implementert strutils.join
- Endringer som påvirker bakover kompabilitet:
- to fase symbol oppslag utføres i generiske rutiner
- bind er nå et reservert ord; Unntaket er ikke reservert ord lenger
- abstrakte typer har blitt omdøpt til forskjellige typer; dermed tydelig er nå et reservert ord; abstrakt er ikke reservert ord lenger
- system.openFile foreldet: bruk system.open stedet
- system.closeFile foreldet: bruk system.close stedet
- strutils.replaceStr foreldet: bruk strutils.replace stedet
- strutils.deleteStr foreldet: bruk strutils.delete stedet
- strutils.splitSeq foreldet: bruk strutils.split stedet
- strutils.splitLinesSeq foreldet: bruk strutils.splitLines stedet
- strutils.parseFloat godtar ikke en ekstra start parameter lenger
- Dokumentasjon:
- manualen har blitt forbedret
Hva er nytt i versjon 0.7.6:
- Bugfikses:
- installasjon på Windows Vista kan nå fungere ut av boksen; prøv!
- fikset en bug som holdt & quot; rekursive moduler & quot; eksempel fra arbeid
- blande navngitte og ikke navngitte parametre i et prosedyrekall nå fungerer
- oktale tall med prefikset 0C er nå riktig støttes
- enumerations nå kan starte med negative verdier
- parseInt, ParseBiggestInt nå kaster et unntak hvis strengen slutter ikke etter at analyseres nummer
- kompilatoren håndterer nå toppnivå uttalelser riktig
- generert nimcache katalogen aldri ender i en skråstrek
- createDir jobber nå for globale katalog under UNIX (& quot; / somepath / her & quot;)
- kompilatoren utfører nå den kjørbare med en ledende & quot; ./& quot; henhold UNIX
- kompilatoren støtter nå konstant matriser av prosedyre pekere
- elif i tilfelle uttalelser fungerer nå
- iteratorer ved hjelp av en åpen rekke parameter nå jobbe
- fikset en bug der i noen sammenhenger $ myEnum ikke fungerte
Hva er nytt i versjon 0.7.4:
- installasjon på Windows skal fungere nå hvis katalogen inneholder mellomrom
- dokumentasjonen generator nå bare gjengir dokumentasjons kommentarer
- `` `` er tillatt for operatører som manualen sier
- i sjeldne tilfeller, indeksen sjekk har blitt optimalisert unna, selv om det ville ha vært nødvendig
- flere feilrettinger for tuppel typer
- lagt til en `` unicode`` modul for UTF-8 håndtering
- lagt HOSTOS og hostCPU magics til `` system`` modul
- system.echo aksepterer nå flere argumenter
- lagt optimalisering: I noen tilfeller inlining av iteratorer produserer nå vesentlig bedre kode
- lagt hele programmet døde kode eliminering
- magien `` `operatør arbeider nå for enumerations
- i `` const`` seksjoner avansert kompilering evalueringen er gjort
- omdøpt `` in_Operator`` til `` contains``: `` in`` er nå en mal som kan oversettes til `` contains``
- endret `` strutils.quoteIfSpaceExists`` til `` strutils.quoteIfContainsWhite``
- er parser nå mye mer kresen om missings komma, etc. Hvis dette påvirker koden din for mye, kan du prøve å kjøre koden gjennom ganske skriveren.
- den `` macros`` API er ikke lenger en del av `` system`` modul, for å bruke denne API du nå nødt til å importere `` macros`` modul
- lagt en tutorial
Hva er nytt i versjon 0.7.2:
- Dette er en bugfix utgivelse. Dette viktigste fix er at Nimrod fungerer nå igjen på AMD64 (x86_64) prosessorer.
- Ingen nye funksjoner har blitt implementert.
Hva er nytt i versjon 0.7.0:
- diverse feilrettinger, for mange til å liste dem her
- installasjonen for UNIX-baserte systemer er ikke avhengig av Python lenger
- den `` koch.py`` skriptet fungerer nå med eldre Python-versjoner (inkludert 1.5.2)
- endret heltall operasjoner og konverter regler
- lagt `` GC_ref`` og `` GC_unref`` procs
- sekvenser nå må bygges med `` @ `` operatør. Dette fører til mindre uklarheter.
- kompilatoren bruker nå mindre minne og er mye raskere
- GC er nå mye raskere
- nye bindinger: zlib, SDL, Xlib, OpenGL, ODBC, Lua
- den genererte C-kode er mye raskere å optimalisere med GCC
- nye biblioteker: bekker, zipfiles
- Nimrod-kompilatoren har blitt oversatt til FreeBSD: det skal fungere på andre BSD er for
Krav :
- Python
Kommentarer ikke funnet