Nimrodas yra atviro kodo, nemokama, statiškai įvedėte, būtina programavimo kalba, skirta remti procedūrinę, Objektinis, bendrųjų ir funkcinių programavimo stilių, o likusi veiksminga ir paprasta.
Nimrodas sugeba abstrakčios sintaksės medžio (AST), kaip dalis specifikacija, leidžianti galingas makro sistema, kuri gali būti naudojama siekiant sukurti domenų konkrečias kalbas. A funkcijos paveldėtos iš Lisp.
Programinės įrangos funkcijos gimtoji kodą kartos, šiukšlių surinkimo, nulinės pridėtines iteratory, vartotojui defineable operatorius, aukšto lygio duomenų tipai, kompiliavimo metu vertinimas, pirmyn compability, GTK2, Windows API, POSIX API apkaustus, tai plugable analizatorius sistema, dokumentacijos generatorių ir Pascal į Nimrodas konvertavimo įrankis.
Nimrodas yra nešiojamas, o tai reiškia, kad ji gali paleisti Linux, BSD, Mac OS & nbsp; X & nbsp; ir "Windows" operacinės sistemos
Kas naujo , šioje laidoje:.
- Klaidų ištaisymas:
- senas GC niekada surinkti ciklų teisingai. Fiksuoto tačiau ji gali sukelti našumo regresijos. Tačiau galite išjungti ciklo surinkėjas su GC_disableMarkAndSweep ir paleisti jį aiškiai tinkamu laiku arba ne visai. Yra taip pat naujas GC galite aktyvuoti --gc:. MarkAndSweep kurie neturi šios problemos, bet yra lėtesnis apskritai ir neturi realtime garantijas
- ketaus už slankiojo kablelio tipų dabar daro bitcast kaip nurodyta instrukcijoje. Tai pertraukos kodą klaidingai naudoja dauguma konvertuoti skirtingus slankiojo kablelio vertybes.
- scgi modulio veikimas buvo pagerintas, jis nebebus blokuoti daugelį vienu metu prašymus.
- Iš viso nustatyta daugiau nei 70 GitHub klausimus ir sujungtos per 60 traukos prašymus.
- Bibliotekos Papildymai:
- Nėra naujų eksperimentinė ženklas ir nurašymas GC, kurie gali būti greitesnis (arba daug lėčiau) nei numatytasis GC. Įjungti su --gc:. MarkAndSweep
- Pridėta system.onRaise remti kondicionavimo sistema.
- Pridėta system.locals, kuri suteikia prieigą prie PROC anketa gyventojams.
- Pridėta macros.quote už AST kvazi-cituoju.
- Pridėta system.unsafeNew remti Hacky kintamo ilgio daiktus.
- system.fields ir system.fieldPairs paramos objektas per; jie naudojami tik paramos tuples.
- Pridėta system.CurrentSourcePath grąžinant visą failų sistemą kelią dabartinės šaltinio failo.
- makrokomandos modulis dabar yra daug naudingų pagalbininkai kuriant abstrakčius sintaksės medžių.
- Pokyčiai, turintys įtakos atgalinio suderinamumo:
- dalijamasi yra raktažodis dabar.
- atšaukia sockets.recvLine ir asyncio.recvLine pridūrė readline vietoj.
- būdas įdubimas yra tvarkoma analizatorius žymiai pasikeitė. Tačiau tai turi įtakos labai mažai (jei toks yra) realaus pasaulio kodą.
- išraiška / pareiškimas suvienodinimas buvo įgyvendinta. Vėlgi tai paveikia tik krašto atvejų ir nėra žinoma realaus pasaulio kodą.
- Pasikeitė async sąsają scgi modulį.
- WideStrings dabar šiukšlių surinkta, kaip ir kiti styginių tipų.
- Kompiliatorius Papildymai:
- doc2 komanda negeneruoja produkciją visam projektui nebėra. Naudokite naują --project jungiklį, kad šią problemą.
- kompiliatorius dabar gali perspėti apie stebiu vietos kintamųjų. Tačiau tai turi būti įjungtas aiškiai per --warning [ShadowIdent]:. Ant
- kompiliatorius dabar palaiko beveik kiekvieną pragmą A push Pragma.
- Bendrosios keitikliai buvo įgyvendintos.
- Pridėta labai eksperimentinis noforward Pragma leidžia specialų rinktinį režimą, kuris iš esmės pašalina išankstinių deklaracijų reikia.
- Kalbų Papildymai:
- Case išraiškos dabar palaikoma.
- Stalo konstruktoriai dabar imituoti daugiau atidžiai į teismų pareiškimą sintaksė.
- Nimrodas dabar gali numanyti grįžimo tipo su PROC iš savo kūno.
- Pridėta Mixin deklaraciją paveikti simbolį privalomas taisykles generinių vaistų.
- Išimtis stebėjimas buvo pridėta ir doc2 komanda annotates galimas išimtis jums.
- Vartotojo apibrėžti poveikiai (& quot; žymes & quot;). stebėjimas buvo pridėta ir doc2 komanda annotates galimus žymes jums
- tipai gali būti komentuojami su naujos sintaksės ne nulinis aiškiai nurodyti, kad nil neleidžiama. Tačiau šiuo metu kompiliatorius atlieka ne pažangi statinio tikrinti tai; Dabar tai tik dokumentavimo tikslais.
- eksporto pareiškimas buvo įtraukta į kalbos: Jis gali būti naudojamas simbolis ekspedijavimas tiek klientų moduliai neturite importuoti modulio priklausomybės aiškiai .
- Perkrova remiantis ASTs buvo įgyvendinta.
- Generics dabar palaikomas multi metodus.
- Objektai gali būti inicializuoti per daiktas konstruktorius išraiška.
- Nėra naujų sintaksės konstruktas (;) vienijančios išraiškas ir pareiškimai .
- Dabar galite naudoti nuo importo modulis lygus nuliui, jei norite importuoti modulį, bet nori vykdyti visiškai kvalifikuotas prieigą prie kiekvieno simbolio modulyje.
Kas naujo versijos 0.8.14:.
- Fiksuotas rimtą atminties korupcija dėl Message Passing
- Fiksuotas rimta klaida dėl įvairių momentus generinio PROC.
- Ištaisyta naujai įvesta klaida, kai negerai ETO išimtis buvo iškeltos dėl failo tekstinių failų, kurie nesibaigia su naujos eilutės pabaigoje.
- Ištaisyta c2nim, c2pas: --out variantas niekada tinkamai dirbo .
- Ištaisyta:. Ekspedijavimas generinių procs niekada nedirbo
- Kai daugiau taisymo makrokomandas ir kompiliavimo laikas vertinimas.
- DC dabar atsižvelgiama į interjero rodyklės kamino, kuris gali būti nustatytos agresyvių C optimizuotojus.
- Nimrodas gimtoji paskirstytuvas / GC dabar dirba PowerPC.
- Daug kitų pataisymų:. Per daug į sąrašą juos visus "
Kas naujo versijos 0.8.6:
- Klaidų ištaisymas:
- pragma užuomina [x]: vienkartines ir įspėjimas [x]: išjungti dabar dirbti .
- metodas skambutis sintaksė iteratory vėl veikia (X į lines.split ()).
- Fiksuotas į removeDir klaidos už POSIX, kad sukelti begalinės rekursijos.
- kompiliatorius dabar tikrina, ar modulis varduose yra galiojantys identifikatoriai.
- Tuščias modelius su dynlib Pragma dabar įmanoma.
- os.parseCmdLine grįžo neteisingus rezultatus gale tarpus.
- Neloģisks kortežas naudojimas (naudojant tą patį kortežą su ir be išvardintų sričių) nėra gedimų kodų generatorių daugiau.
- geriau klaidos pranešimas, jei kai iš PROC pakrovimo dinamiškoje lib nepavyksta.
- Papildymai:
- Pridėta system.contains atviriems matricas.
- PEG modulis dabar remia paieška kilpa operatoriaus @.
- Gramatika / analizatorius: BAD | IND leidžiama prieš uždarymo laikiklį pobūdžio. Tai leidžia lanksčiau kodo formatavimo.
- kompiliatorius dabar naudoja bind lentelė simbolis paieškos per įpareigoti kontekste. (Žr manual.html # šablonus detalių).
- I¹trinti & quot; & quot; & quot; mano ilgą komentarą & quot; & quot; & quot; dabar optimizuotas toli.
- Nauji --floatChecks: On | išjungtas jungikliai ir pragma, siekiant geriau derinti su slankiojo kablelio operacijų. (Žr manual.html # teminės-slankiojo kablelio tipais for details.)
- vadovas buvo patobulinta. (Labai ačiū Philippe Lhoste!)
- Pokyčiai, turintys įtakos atgalinio suderinamumo:
- kompiliatorius neturi praleisti susiejimas žingsnį nebėra net jei failas yra pakeistas.
- os.splitFile (& quot; .xyz & quot;) dabar grįžta (& quot; & quot ;, & quot; .xyz & quot ;, & quot; & quot;), o ne (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). Varduose prasidedančios tašku yra traktuojami nevienodai.
- strutils.split (-os: string, SEPS: nustatykite [char]) niekada duoda tuščią eilutę nebėra. Toks elgesys yra turbūt labiau tinka tarpų skaldymą.
- kompiliatorius dabar sustoja po version komandų eilutės jungiklis.
- Pašalinta parama ENUM paveldėjimo į analizatorius; ENUM paveldėjimo niekada nebuvo dokumentuojami vistiek.
- msg laukas system.E_base turi dabar tipo eilutę, o ne CString. Tai pagerina atminties saugumą.
Kas naujo versijos 0.8.2:
- Klaidų ištaisymas:
- Perdavimai --hint [X]: išjungti arba --warning [X]:. Ne kaip komandinės eilutės argumentai kompiliatorius dabar dirba "
- Default parametrus šablonus dabar dirbti.
- Fiksuotas saugumo klausimas system.copy.
- Styginių atveju be kita dalis generuoja neteisingą kodą.
- Įvairūs pataisymai dėl osproc modulio; dabar veikia "Windows".
- Papildymai:
- Įgyvendinti daugialypės metodai.
- kompiliatorius dabar aptinka turimų procesorių skaičių ir vykdo C kompiliatorių kartu. Tai gali būti koreguojamas taikant --parallel_build:. Number_of_processors komandinės eilutės jungiklis
- PEG grindžiamas modelis atitikimo per vinys modulį.
- Pridėta system.definedInScope.
- Pridėta system.accumulateResult.
- Pridėta os.walkDirRec.
- Pridėta osproc.countProcessors.
- Pridėta osproc.execProcesses.
- konfigūracija sistema dabar palaiko $ cc.options.linker.
- Jungtinis EXPR ir typeDesc į gramatikos / sintaksės analizatorius:. Tai leis anonimiškai procs be lambda
- Daugelis scenarijus joms nereikia GC reikia: Naujas --gc: nė komandinės eilutės jungiklis gali būti naudojamas pašalinti iš vykdomąjį GC .
- Pokyčiai, turintys įtakos atgal compability:
- Atsižvelgiant adresą objekto Diskriminantas dabar negalioja.
- Perdavimai PROC į PROC var leidžiama tik procs pažymėtų procvar ar vizitine konvencijos! = Nimcall. Nes dabar tai tik sukelia įspėjimą, bet tai pavirs klaidos greitai.
- sistema. & Ir system.add dabar gauna openArray vietoj SEQ parametrus.
- Pašalinta strutils.findSubStr ir strutils.findChars. Jie buvo pasmerkta 3 versijas.
- Unicode modulis naudoja atskirą tipą TRune.
- atšaukia strutils.toString: naudokite $ vietoj .
- atšaukia os.splitPath:. Naudojimas os.splitPath kad grįžta kortežą vietoj
- atšaukia os.extractDir:. Naudoti splitFile (kelias) .dir vietoj
- atšaukia os.splitFilename: naudoti splitFile vietoj .
- atšaukia os.extractFileExt: naudoti splitFile vietoj .
- atšaukia os.extractFileTrunk: naudoti splitFile vietoj .
- atšaukia os.appendFileExt: naudoti os.addFileExt vietoj .
- atšaukia os.executeShellCommand: naudoti os.execShellCmd vietoj .
- atšaukia os.iterOverEnvironment:. Naudojimo os.envPairs vietoj
- Nepatvirtintas parseopt.init: naudoti parseopt.initOptParser vietoj .
- atšaukia parseopt.getRestOfCommandLine: naudoti parseopt.cmdLineRest vietoj .
- atšaukia os.pcDirectory: naudoti os.pcDir vietoj .
- atšaukia os.pcLinkToDirectory: naudoti os.pcLinkToDir vietoj .
- atšaukia osproc.executeProcess: naudoti osproc.execProcess vietoj .
- atšaukia osproc.executeCommand: naudoti osproc.execCmd vietoj .
Kas naujo versijos 0.8.0:
- Klaidų ištaisymas:
- fiksuotas mažą klaidą, dėl kurios atsirado sudarytojas ne pranešti apie nenaudojamus perkrautas simboliais "
- fiksuotas nedidelis klaidą dėl simbolis perkrovos
- fiksuotas klaidos: tai & quot; & quot ;, dviprasmiškas ne & quot; ambigious & quot; ; -)
- kompiliatorius dabar aptinka grįžtamojo įtraukti failus
- system.card turėtų vėl dirbti
- daiktų rinkinys [char] ir masyvo [char, T], turėtų dirbti dabar "
- Papildymai:
- įgyvendinami bendrieji tipai ir dviejų fazių simbolis peržvalgos į generinių kasdienybe
- šablono parametrai, dabar gali būti tikri tipai
- įgyvendinamos apibendrintus žaliavos styginių literał: ident & quot; abc & quot; yra už ident nuoroda (R & quot; abc & quot;)
- ir perkrovos raiškos iteratory yra atskirti nuo procs; iteratory dabar gali turėti tą patį pavadinimą + parašą kaip procs
- simbolis peržvalgos šablonus galima paveikti naujos įpareigoti raktažodį
- kompiliatorius dabar priima --no_main jungiklis geriau nuorodą sąveikos su kitais surinktais kalbomis
- įgyvendinamos kortežas išpakavimas Var skyriuose
- kodo generatorius skleidžia nutylėjimą: __assume (0); Visual C ++ (optimizuoti)
- kompiliatorius dabar tikrina, jeigu proc turi šalutinį poveikį; PROC, kurie deklaravo neturi jokio šalutinio poveikio yra atmetami, jei kompiliatorius negali patikrinti šį
- formatas operatorius strutils.% Dabar palaiko $ # automatinio argumentas skaičiavimo
- įgyvendinamos strutils.join
- Pokyčiai, turintys įtakos atgal compability:
- dviejų fazių simbolis peržvalgos atliekamas generinių kasdienybe
- įpareigoti dabar rezervuota žodis; Išimtis yra ne rezervuotas žodis nebėra
- abstraktūs tipai buvo pervadinta į skirtingų tipų; todėl skiriasi dabar rezervuota žodis; abstrakti nėra rezervuotas žodis nebėra
- system.openFile Pasenęs: naudoti system.open vietoj
- system.closeFile atgyvenę: naudoti system.close vietoj
- strutils.replaceStr atgyvenę: naudoti vietoj strutils.replace
- strutils.deleteStr atgyvenę: vietoj naudojimas strutils.delete
- strutils.splitSeq atgyvenę: naudoti vietoj strutils.split
- strutils.splitLinesSeq atgyvenę: naudojimo strutils.splitLines vietoj
- strutils.parseFloat nepriima papildomą paleidimo parametrą nebėra
- Dokumentacija:
- vadovas buvo patobulinta li>
Kas naujo versijos 0.7.6:
- Klaidų ištaisymas:
- montavimas Windows Vista dabar gali dirbti iš dėžutės; pabandykite!
- Ištaisyta klaida, kad atsimintų & quot; rekursinių modulius & quot; Pavyzdys iš darbo
- maišymo pavadintas ir neįvardytų parametrus procedūra skambučio dabar dirba "
- numeriai Octal su prefiksu 0C dabar tinkamai remiamos
- Išplėsta išvardytų dabar gali pradėti neigiamų reikšmių
- parseInt, ParseBiggestInt dabar mesti išimtį, jei eilutė nesibaigia po apdoroti skaičius
- kompiliatorius dabar naudojamas aukščiausio lygio ataskaitas teisingai
- generuoja nimcache katalogas niekada baigiasi slash
- createDir dabar veikia pasaulinėse katalogų pagal UNIX (& quot; / somepath / čia & quot;)
- kompiliatorius dabar vykdo vykdomąjį su pirmaujančių & quot; ./& quot; pagal UNIX
- kompiliatorius dabar palaiko nuolatinius matricos tvarkos nurodymus
- Elif tuo atveju, jei ataskaitose dabar dirba "
- iteratory naudojant atvirą masyvo parametrą dabar dirbti
- Ištaisyta klaida, kai tam tikrais kontekstuose $ myEnum neveikia
Kas naujo versijos 0.7.4:
- montavimas Windows turėtų dirbti dabar, jei kataloge yra erdves
- dokumentacija generatorius dabar tik tinkai dokumentacija komentarai
- `` `` leidžiama operatorių, kaip vadovas sako
- retais atvejais patikrinimas puslapis buvo optimizuotas toli, nors tai būtų buvę būtina
- keli pataisymai dėl Tuple tipų
- pridėjo `` unicode`` modulį UTF-8 tvarkyti
- pridūrė HOSTOS ir hostCPU magiją su `` system`` modulio
- system.echo dabar siekia kelis argumentus
- pridūrė optimizavimas: kai kuriais atvejais tiesiogiai pateikti iteratory dabar gamina žymiai geriau kodą
- įtraukta visa programa miręs kodas panaikinimas
- magija `` `operatorius dabar dirba rodiklių
- į `` const`` skyriuose išplėstas kompiliavimo metu vertinimas atliekamas
- pervadintas `` in_Operator`` į `` contains``: `` in`` dabar šabloną, kad verčia į `` contains``
- pasikeitė `` strutils.quoteIfSpaceExists`` į `` strutils.quoteIfContainsWhite``
- analizatorius dabar daug smulkmeniškas apie nedalyvaujančių kableliais, ir tt Jei tai turi įtakos kodą per daug, pabandykite paleisti savo kodą per gana spausdintuvu.
- `` macros`` API nebėra dalis `` system`` moduliu, naudoti šį API dabar jūs turite importuoti `` macros`` modulis
- pridėjo pamoka
Kas naujo 0.7.2 versija:
- Tai Ištaisyta spaudai. Tai svarbiausia nustatyti tai, kad Nimrodas vėl dabar veikia AMD64 (x86_64) procesorių.
- Nėra jokių naujų funkcijų buvo įgyvendintos.
Kas naujo versijos 0.7.0:
- įvairūs pataisymai, per daug į sąrašą juos čia
- už UNIX sistemų montavimas nepriklauso nuo Python ilgiau
- `` koch.py`` scenarijų dabar dirba su vyresniais Python versijos (įskaitant 1.5.2)
- pasikeitė sveikieji operacijos ir perskaičiavimo taisyklės
- pridūrė `` GC_ref`` ir `` GC_unref`` PROC
- sekas dabar reikia pastatyti su `` @ `` operatorius. Tai veda prie mažiau dviprasmybių.
- kompiliatorius dabar naudoja mažiau atminties ir daug greičiau
- DC dabar daug greičiau
- Nauji apkaustai: zlib, SDL, Xlib, OpenGL, ODBC, LUA
- generuoja C kodas yra kur kas greičiau optimizuoti su Persijos įlankos bendradarbiavimo tarybos
- naujos bibliotekos: upeliai, zipfiles
- Nimrodas kompiliatorius buvo perkeltas į FreeBSD: ji turėtų dirbti dėl kitų BSD pernelyg
Reikalavimai :
- Python
Komentarai nerastas