Nimrod

Software screenshot:
Nimrod
Software detaljer:
Version: 0.9.2
Upload dato: 20 Feb 15
Udvikler: Andreas Rumpf
Licens: Gratis
Popularitet: 88

Rating: 1.5/5 (Total Votes: 2)

Nimrod er en open source, gratis, statisk skrevet, bydende nødvendigt programmeringssprog designet til at understøtte proceduremæssige, objekt-orienteret, generiske og funktionelle programmering stilarter, mens de resterende effektiv og enkel.
Nimrod er i stand til abstrakt syntaks træ (AST) som en del af en specifikation, der giver en kraftig makro system, der kan bruges til at oprette domæne specifikke sprog. Et træk arvet fra Lisp.
Softwaren har native kode generation, garbage collection, nul-overhead-iteratorer, bruger-defineable operatører niveau datatyper høje, kompilere tid evaluering, fremad kompatibilitet, GTK2, Windows API, POSIX API bindinger, et tilkoblelig parser-system, en dokumentation generator, og en Pascal til Nimrod konvertering nytte.
Nimrod er bærbar, hvilket betyder, at det kan køre på Linux, BSD, Mac OS & nbsp; X & nbsp; og Windows-operativsystemer

Hvad er nyt i denne udgivelse:.

  • Fejlrettelser:
  • Den gamle GC aldrig indsamlet cykler korrekt. Fast men det kan forårsage ydeevne regressioner. Men du kan deaktivere cyklus opkøber med GC_disableMarkAndSweep og køre det udtrykkeligt på et passende tidspunkt, eller slet ikke. Der er også en ny GC du kan aktivere med --gc:. MarkAndSweep, som ikke har dette problem, men er langsommere i almindelighed og har ingen realtime garanti
  • støbt til floating point typer nu gør bitcast som angivet i manualen. Dette bryder kode, fejlagtigt bruger støbt til at konvertere forskellige flydende komma værdier.
  • SCGI modulets ydeevne er blevet forbedret betydeligt, vil det ikke længere blokere på mange samtidige anmodninger.
  • I alt fast over 70 GitHub spørgsmål og fusioneret over 60 pull anmodninger.
  • Bibliotek Tilgang:
  • Der er en ny eksperimenterende Mark & ​​feje GC, som kan være hurtigere (eller meget langsommere) end standard GC. Aktiver med --gc:. MarkAndSweep
  • Tilføjet system.onRaise at støtte en betingelse system.
  • Tilføjet system.locals der giver adgang til en proc s lokale.
  • Tilføjet macros.quote for AST kvasi-citere.
  • Tilføjet system.unsafeNew at støtte Hacky variable objekter længde.
  • system.fields og system.fieldPairs support objekt også; de bruges til kun support tupler.
  • Tilføjet system.CurrentSourcePath returnering stien til den aktuelle kildefil sagsmappe-system.
  • makroer modul indeholder nu masser af nyttige hjælpere til opbygning af abstrakte syntaks træer.
  • Ændringer vedrørende bagudkompatibilitet:
  • delt er et nøgleord nu.
  • Forældet sockets.recvLine og asyncio.recvLine, tilføjede readline i stedet.
  • Den måde indrykning håndteres i parseren ændret sig væsentligt. Men dette påvirker meget lidt (hvis nogen) virkelige verden kode.
  • Udtrykket / sætning forening er blevet gennemført. Igen kun påvirker kant tilfælde og ingen kendte virkelige verden kode.
  • Ændret async grænsefladen af ​​scgi modulet.
  • WideStrings nu skrald indsamles ligesom andre string typer.
  • Compiler Tilgang:
  • dok2 Kommandoen ikke genererer output for hele projektet længere. Brug den nye --project kontakten for at aktivere denne adfærd.
  • compiler kan nu advare om skygget lokale variable. Det er imidlertid nødvendigt, at dette skal tændes eksplicit via --warning [ShadowIdent]:. På
  • compiler understøtter nu næsten hver pragma i en push pragma.
  • Generiske omformere er blevet gennemført.
  • Tilføjet en meget eksperimenterende noforward pragma muliggør en speciel samling tilstand, stort set eliminerer behovet for fremadrettede erklæringer.
  • Sprog Tilgang:
  • case udtryk understøttes nu.
  • Tabel konstruktører nu efterligne tættere syntaksen af ​​sagen erklæring.
  • Nimrod kan nu udlede tilbagevenden type af en proc fra sin krop.
  • Tilføjet en MixIn erklæring påvirke symbol bindende regler i generiske lægemidler.
  • Undtagelse sporing er blevet tilføjet og dok2 kommandoen annotates mulige undtagelser for dig.
  • Brugerdefineret virkninger (& quot; tags & quot;). Sporing er blevet tilføjet og dok2 kommandoen annotates mulige tags til dig
  • typer kan kommenteret med den nye syntaks ikke nul til udtrykkeligt, at nul er ikke tilladt. Men i øjeblikket compileren udfører nogen avanceret statisk kontrol for dette; for nu er det blot som dokumentation.
  • En eksport erklæring er blevet tilføjet til sproget: Det kan bruges til symbol videresendelse så klient-moduler ikke behøver at importere en modulets afhængigheder præcist
  • .
  • Overbelastning baseret på ASTs er blevet gennemført.
  • Generics understøttes nu for multi metoder.
  • Objekter kan initialiseres via et objekt konstruktøren udtryk.
  • Der er en ny syntaktisk konstruktion (;) samlende udtryk og udsagn
  • .
  • Du kan nu bruge fra modul import nul, hvis du ønsker at importere modulet, men ønsker at håndhæve fuldt kvalificeret adgang til alle symbol i modul.

Hvad er nyt i version 0.8.14:.

  • Rettet en alvorlig ødelæggelse af hukommelsen vedrørende besked passerer
  • Rettet en alvorlig fejl vedrørende forskellige instantieringer af generisk proc.
  • Rettet en nyligt indført fejl hvor en forkert EIO undtagelse blev rejst i slutningen af ​​filen for tekstfiler, der ikke slutter med en ny linje.
  • Bugfix c2nim, c2pas: den --out mulighed har aldrig fungeret ordentligt
  • .
  • Bugfix:. Videresendelse af generiske procs aldrig arbejdet
  • Nogle flere fejlrettelser til makroer og kompilere-tid evaluering.
  • GC nu tager højde interiør pejlemærker på stakken, der kan indføres ved aggressive C Optimizers.
  • Nimrod indfødte fordelingsnøgle / GC arbejder nu på PowerPC.
  • Masser af andre fejlrettelser:. Alt for mange til at nævne dem alle

Hvad er nyt i version 0.8.6:

  • Fejlrettelser:
  • pragmas tip [X]: off og advarsel [X]: off nu arbejde
  • .
  • metodekald syntaks for iteratorer virker igen (for x i lines.split ()).
  • Rettet en slåfejl i removeDir for POSIX, der fører til en uendelig rekursion.
  • compiler nu kontrollerer, at modul filnavne er gyldige id'er.
  • Tomme mønstre for den dynlib pragma er nu muligt.
  • os.parseCmdLine returnerede forkerte resultater for afsluttende blanke tegn.
  • inkonsekvent tupel forbrug (med samme tupel med og uden navngivne felter) ikke crashe kodegenerator længere.
  • En bedre fejlmeddelelse gives, når lastningen af ​​en proc inden for et dynamisk lib mislykkes.
  • Tilgang:
  • Tilføjet system.contains til åbne arrays.
  • PEG-modulet understøtter nu søge loop operatør @.
  • Grammatik / parser: SAD | IND er tilladt før nogen form for lukning beslag. Dette giver mulighed for en mere fleksibel kildekode formatering.
  • compiler bruger nu en binde tabel for symbol opslag inden for en binder sammenhæng. (Se manual.html # skabeloner til detaljer.)
  • udsmid & quot; & quot; & quot; min lange kommentar & quot; & quot; & quot; er nu optimeret væk.
  • Nye --floatChecks: Til | Fra afbrydere og pragmas for bedre debugging af operationer med flydende komma. (Se manual.html # foruddefinerede-floating-point-typer for detaljer.)
  • Manualen er blevet forbedret. (Mange tak til Philippe Lhoste!)
  • Ændringer vedrørende bagudkompatibilitet:
  • compiler ikke springe forbinder skridt længere, selv om ingen fil er ændret.
  • os.splitFile (& quot; .xyz & quot;) nu returnerer (& quot; & quot ;, & quot; .xyz & quot ;, & quot; & quot;) i stedet for (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). Filnavne starter med punktum håndteres forskelligt.
  • strutils.split (s: string, SEPS: sæt [char]) aldrig giver den tomme streng længere. Denne adfærd er nok mere passende for mellemrum spaltning.
  • compiler stopper nu efter --version kommandolinjeparameter.
  • Fjernet støtte til enum Arv i parser; enum arv er aldrig blevet dokumenteret alligevel.
  • msg området system.E_base nu strengen typen, i stedet for CString. Dette forbedrer hukommelsen sikkerhed.

Hvad er nyt i version 0.8.2:

  • Fejlrettelser:
  • Passing --hint [X]: slukket eller --warning [X]:. Ud som kommandolinjeargumenter til compiler nu virker
  • Standard parametre for skabeloner nu arbejde.
  • Fast sikkerhedsproblem i system.copy.
  • String tilfælde uden en andet del genereret forkert kode.
  • Diverse rettelser til osproc modul; det nu virker på Windows.
  • Tilgang:
  • Gennemførte multi-metoder.
  • compiler registrerer nu antallet af tilgængelige processorer og udfører C compiler samtidigt. Dette kan justeres ved --parallel_build:. Number_of_processors kommandolinjeparameter
  • PEG-baserede mønstertilpasning via pløkker modul.
  • Tilføjet system.definedInScope.
  • Tilføjet system.accumulateResult.
  • Tilføjet os.walkDirRec.
  • Tilføjet osproc.countProcessors.
  • Tilføjet osproc.execProcesses.
  • Konfigurationen understøtter nu $ cc.options.linker.
  • Flettet Udtr og typeDesc i grammatikken / parser:. Dette vil give mulighed for anonyme procs uden lambda
  • Mange scripts har ikke brug for en GC: Den nye --gc: ingen kommandolinjeparameter kan bruges til at udelukke GC fra den eksekverbare
  • .
  • Ændringer vedrørende baglæns kompatibilitet:
  • Under adressen på et objekt diskriminant er nu ugyldig.
  • Passing en proc til en proc var er kun tilladt for procs markeret med procvar eller en kaldekonvention! = Nimcall. For nu det kun forårsager en advarsel, men det bliver til en fejl snart.
  • system. På & og system.add nu modtage openArray stedet for seq parametre.
  • Fjernet strutils.findSubStr og strutils.findChars. De er blevet forældet i 3 versioner.
  • Unicode-modulet anvender en særskilt form for TRune.
  • Deprecated strutils.toString: Brug $ i stedet
  • .
  • Deprecated os.splitPath:. Brug os.splitPath der returnerer en tupel i stedet
  • Deprecated os.extractDir:. Brug splitFile (sti) .dir stedet
  • Deprecated os.splitFilename: brug splitFile stedet
  • .
  • Deprecated os.extractFileExt: brug splitFile stedet
  • .
  • Deprecated os.extractFileTrunk: brug splitFile stedet
  • .
  • Deprecated os.appendFileExt: brug os.addFileExt stedet
  • .
  • Deprecated os.executeShellCommand: brug os.execShellCmd stedet
  • .
  • Deprecated os.iterOverEnvironment:. Brug os.envPairs stedet
  • Forældet parseopt.init: brug parseopt.initOptParser stedet
  • .
  • Deprecated parseopt.getRestOfCommandLine: brug parseopt.cmdLineRest stedet
  • .
  • Deprecated os.pcDirectory: brug os.pcDir stedet
  • .
  • Deprecated os.pcLinkToDirectory: brug os.pcLinkToDir stedet
  • .
  • Deprecated osproc.executeProcess: brug osproc.execProcess stedet
  • .
  • Deprecated osproc.executeCommand: brug osproc.execCmd stedet
  • .

Hvad er nyt i version 0.8.0:

  • Fejlrettelser:
  • fast en lille fejl, der forårsagede compileren til ikke rapportere ubrugte overbelastede symboler
  • fast en lille fejl om symbol overbelastning
  • fast en tastefejl: det er & quot; tvetydig & quot ;, ikke & quot; er usikkerhed & quot; ; -)
  • compileren registrerer nu rekursive omfatter filer
  • system.card bør arbejde igen
  • elementer til sæt [char] og array [char, T] bør arbejde nu
  • Tilgang:
  • gennemført generiske typer og to fase symbol opslag i generiske rutiner
  • Skabelon parametre kan nu være rigtige typer
  • implementeret generaliserede rå Strenglitteraler: ident & quot; abc & quot; er en genvej til ident (r & quot; abc & quot;)
  • i overbelastning opløsning iteratorer er adskilt fra procs; iteratorer nu kan have samme navn + signatur som procs
  • symbol opslag i skabeloner kan blive påvirket af den nye binder nøgleord
  • compileren accepterer nu en --no_main kontakt til bedre link interoperabilitet med andre kompileret sprog
  • implementeret tupel udpakning i Var sektioner
  • koden generator udsender default: __assume (0); Visual C ++ (til optimering)
  • compileren kontrollerer nu, hvis en proc har bivirkninger; procs, der er anmeldt for at have nogen bivirkninger afvises, hvis oversætteren ikke kan bekræfte dette
  • formatet operatør strutils.% Understøtter nu $ # til automatisk argument optælling
  • implementeret strutils.join
  • Ændringer vedrørende baglæns kompatibilitet:
  • to fase symbol opslag udføres i generiske rutiner
  • binder nu et reserveret ord; undtagelse er ingen reserverede ord længere
  • abstrakte typer er blevet omdøbt til forskellige former; således adskiller nu et reserveret ord; abstract er ingen reserverede ord længere
  • system.openFile Deprecated: brug system.open stedet
  • system.closeFile forældet: brug system.close stedet
  • strutils.replaceStr forældet: brug strutils.replace stedet
  • strutils.deleteStr forældet: brug strutils.delete stedet
  • strutils.splitSeq forældet: brug strutils.split stedet
  • strutils.splitLinesSeq forældet: brug strutils.splitLines stedet
  • strutils.parseFloat accepterer ikke en ekstra starte parameter længere
  • Dokumentation:
  • manualen er blevet forbedret

Hvad er nyt i version 0.7.6:

  • Fejlrettelser:
  • installation på Windows Vista, kan nu arbejde ud af kassen; prøv!
  • rettet en fejl, der holdt & quot; rekursive moduler & quot; eksempel fra arbejde
  • blande navngivne og unavngivne parametre i en procedure call nu virker
  • oktale numre med præfikset 0C er nu understøttet korrekt
  • tællinger nu kan begynde med negative værdier
  • parseInt, ParseBiggestInt nu kaste en undtagelse, hvis strengen ikke udløber efter parset nummer
  • compileren håndterer nu udsagn øverste niveau korrekt
  • genereret nimcache mappe aldrig ender i en skråstreg
  • createDir arbejder nu for globale mapper under UNIX (& quot; / somepath / her & quot;)
  • compileren udfører nu den eksekverbare med en førende & quot; ./& quot; under UNIX
  • compileren understøtter nu konstante arrays af procedure pointers
  • Elif i tilfælde udsagn nu virker
  • iteratorer hjælp af en åben række parameter nu arbejde
  • rettet en fejl hvor der i nogle sammenhænge $ myEnum fungerede

Hvad er nyt i version 0.7.4:

  • installation på Windows bør arbejde nu hvis mappen indeholder rum
  • dokumentationen generatoren nu alene, at dokumentation kommentarer
  • `` `` er tilladt for de erhvervsdrivende som manualen siger
  • i sjældne tilfælde, indekset kontrollen er blevet optimeret væk, selv om det ville have været nødvendigt
  • adskillige fejlrettelser til tuple typer
  • tilføjet en `` unicode`` modul til UTF-8 håndtering
  • tilføjede HOSTOS og hostCPU magi til `` system`` modul
  • system.echo accepterer nu flere argumenter
  • tilføjede optimering: i nogle tilfælde indbygning af iteratorer producerer nu væsentligt bedre koden
  • tilføjet hele programmet døde kode elimination
  • den magiske `` `operatør arbejder nu for tællinger
  • i `` const`` sektioner avancerede kompilere tid evaluering sker
  • omdøbt `` in_Operator`` til `` contains``: `` in`` er nu en skabelon, der kan oversættes til `` contains``
  • ændret `` strutils.quoteIfSpaceExists`` til `` strutils.quoteIfContainsWhite``
  • parseren er nu langt mere kræsne om missings kommaer, etc. Hvis dette påvirker din kode for meget, så prøv at køre din kode gennem den smukke printer.
  • den `` macros`` API er ikke længere en del af `` system`` modul, for at bruge denne API du nu nødt til at importere `` macros`` modul
  • tilføjet en tutorial

Hvad er nyt i version 0.7.2:

  • Dette er en bugfix release. Dette vigtigste rettelse er, at Nimrod arbejder nu igen på AMD64 (x86_64) processorer.
  • Ingen nye funktioner er blevet gennemført.

Hvad er nyt i version 0.7.0:

  • diverse fejlrettelser, for mange til at nævne dem her
  • installationen til UNIX-baserede systemer er ikke afhængig af Python længere
  • den `` koch.py`` script fungerer nu med ældre Python versioner (inklusive 1.5.2)
  • skiftet heltal operationer og konverteringer regler
  • tilføjet `` GC_ref`` og `` GC_unref`` procs
  • sekvenser skal nu fremstilles med `` @ `` operatør. Dette fører til mindre tvetydigheder.
  • compileren bruger nu mindre hukommelse og er meget hurtigere
  • GC er nu meget hurtigere
  • nye bindinger: zlib SDL, Xlib, OpenGL, ODBC, Lua
  • den genererede C-kode er meget hurtigere at optimere med GCC
  • nye biblioteker: vandløb, zipfiles
  • Den Nimrod compiler er blevet porteret til FreeBSD: det bør arbejde på andre BSD er for

Krav :

  • Python

Lignende software

Kommentarer til Nimrod

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!