Nimrod je open source, free, staticky napsaný, naléhavý programovací jazyk navržený pro podporu procesního, objektově orientovaný, obecné a funkční programovací styly, zatímco zůstane efektivní a jednoduché.
Nimrod je schopen Syntaktický strom (AST) jako součást specifikace, umožňující silný makro systému, který může být použit k vytvoření specifické jazyky domény. A vlastnosti zdědil od Lisp.
Software je k dispozici nativní generování kódu, odvoz odpadu, zero-režijní iterátory, uživatelských defineable operátory, vysoké datové typy úrovni, sestavovat vyhodnocení doby, vpřed kompatibilita, GTK2, Windows API, vázání POSIX API, a plugable analyzátor systém, generátor dokumentace, a Pascal se Nimrod nástroj pro převod.
Nimrod je přenosný, což znamená, že může běžet na Linuxu, BSD, Mac OS & nbsp; X & nbsp; operační systémy a Windows
Co je nového v této verzi:.
- Opravy chyb:
- Stará GC nikdy správně vybrány cyklů. Pevná, ale to může způsobit výkonu regrese. Nicméně můžete deaktivovat kolektor cyklu se GC_disableMarkAndSweep a spustit ji výslovně ve vhodnou dobu nebo vůbec. K dispozici je také nový GC můžete aktivovat s --gc:. MarkAndSweep, která nemá tento problém, ale je pomalejší obecně a nemá v reálném čase záruky
- cast pro plovoucí čárkou typů teď dělá bitcast, jak je uvedeno v návodu. Tím se přeruší kód, který chybně používá obsazení převést různé hodnoty s pohyblivou řádovou čárkou.
- výkon SCGI modulu se výrazně zlepšila, už nebude blokovat na mnoha souběžných požadavků.
- V celkové paušální více než 70 otázek GitHub a spojil více než 60 žádostí tahat.
- Knihovna Dodatky:
- K dispozici je nová experimentální Mark & sweep GC, který může být rychlejší (nebo mnohem pomalejší) než standardní GC. Povolení se --gc:. MarkAndSweep
- Přidáno system.onRaise na podporu stavu systému.
- Přidáno system.locals, který poskytuje přístup k místní PROC je.
- Přidána macros.quote pro AST kvazi-citoval.
- Přidáno system.unsafeNew podporovat Hacky proměnnou délkou objektů.
- system.fields a system.fieldPairs podpora objekt příliš; bývaly podporují pouze n-tic.
- Added system.CurrentSourcePath vrácení plné systému souborů cestu aktuálního zdrojového souboru.
- Modul makra nyní obsahuje spoustu užitečných pomocníků pro budování Abstract Syntax stromů.
- změny ovlivňující zpětné kompatibility:
- sdílená je nyní klíčové slovo.
- Zastaralé sockets.recvLine a asyncio.recvLine, přidal readline místo.
- způsob odsazení je zpracována v analyzátoru výrazně změnil. Nicméně, toto se týká jen velmi málo (pokud existuje) reálného světa kódu.
- Výraz / Prohlášení o sjednocení bylo realizováno. Opět se týká pouze okrajové případy a žádný známý skutečný svět kód.
- Změněno asynchronní rozhraní scgi modulu.
- WideStrings jsou nyní smetí shromáždilo jako jiné typy strun.
- Compiler Dodatky:
- Příkaz doc2 negeneruje výstup na celý projekt ještě. Pomocí nové --project přepínač k tomu, aby toto chování.
- kompilátor může nyní varovat stínu lokální proměnné. Nicméně, toto musí být zapnutý výslovně pomocí --warning [ShadowIdent]:., O
- Překladač nyní podporuje téměř každou Pragma v push Pragma.
- Léčivé převodníky byly implementovány.
- Přidáno vysoce experimentální noforward Pragma umožňuje speciální režim kompilace, které do značné míry eliminuje potřebu vpřed prohlášení.
- Jazykové Dodatky:
- case výrazy jsou nyní podporovány.
- Stolní konstruktéři nyní napodobit věrněji syntaxe case.
- Nimrod nyní odvodit návratový typ na proc z jeho těla.
- Přidáno mixin prohlášení ovlivnit symbol závazná pravidla generik.
- sledování Výjimka byla přidána a příkaz doc2 anotaci možné výjimky pro vás.
- Uživatelsky definované účinky (& quot; značky & quot;). Byla přidána sledování a příkaz doc2 anotaci možné tagy pro vás
- Typy mohou být komentovaný s novou syntaxí ne nula výslovně stanovit, že nula není povolena. Nicméně v současné době kompilátor provádí ne moderní statické kontroly pro tento účel; teď je to jen pro účely dokumentace.
- export prohlášení byla přidána do jazyka: Může být použit k přesměrování symbol tak klientské moduly nemuseli dovážet závislosti modulu je výslovně .
- přetížení na základě AST byla implementována.
- Generika jsou nyní podporovány pro multi způsoby.
- Objekty lze inicializovat přes objekt konstruktoru výraz.
- K dispozici je nový syntaktický konstrukt (,) sjednocující výrazy a příkazy .
- Nyní můžete použít z modulu import nulové, pokud chcete importovat modul, ale chtějí prosadit úplný přístup ke všem symbol v modulu.
Co je nového ve verzi 0.8.14:.
- Pevná vážné poškození paměti týkající se předávání zpráv
- Opravena vážná chyba týkající se různých konkretizace generického proc.
- Opravena chyba, kdy nově zavedený byl špatný výjimka EIO vznesené na konec souboru pro textové soubory, které nekončí s novým řádkem.
- Oprava chyby c2nim, c2pas: --out možnost nebyla nikdy řádně pracoval .
- Oprava chyby:. Forwarding generických procs nikdy pracoval
- Některé další opravy chyb maker a kompilace-time hodnocení.
- GC se bere v úvahu vnitřní ukazatelů v zásobníku, které mohou být zavedeny agresivní C optimalizaci.
- Nimrod rodný rozdělovač / GC nyní pracuje na PowerPC.
- Mnoho dalších oprav:. Příliš mnoho vyjmenovat všechny
Co je nového ve verzi 0.8.6:
- Opravy chyb:
- Na pragmas náznak [X]: off a varování [X]: off nyní pracovat .
- Způsob volání syntaxe iterátorů opět funguje (pro x v lines.split ()).
- Opraven překlep v removeDir pro POSIX, které vedou k nekonečné rekurze.
- kompilátor nyní prověřuje, zda modul názvy souborů jsou platné identifikátory.
- Prázdná vzory pro dynlib Pragma je nyní možné.
- os.parseCmdLine vrátil špatné výsledky za koncové mezery.
- nedůsledný použití Dvojici (se stejným n-tice a bez označených políček), není již zhroucení generátor kódu.
- lepší chybová zpráva je k dispozici při načítání z proc v dynamickém lib selže.
- Dodatky:
- Přidány system.contains pro otevřené pole.
- Modul PEG nyní podporuje vyhledávání obsluhy smyčky @.
- Gramatika / parser: SAD | IND je před tím, než jakékoliv zavírání držák. To umožňuje pružnější zdrojového kódu formátování.
- kompilátor nyní používá tabulku vazby pro symbol vyhledávání v kontextu bind. (Viz manual.html # šablony pro podrobnosti.)
- Vyřadit & quot; & quot; & quot; svůj dlouhý komentář & quot; & quot; & quot; Nyní je optimalizován pryč.
- Nové --floatChecks: ON | OFF spínače a pragmas pro lepší ladění pohyblivou řádovou čárkou. (Viz manual.html # předem definovaných-floating-point-typy pro podrobnosti.)
- Příručka byla vylepšena. (Mnoho díky Philippe Lhoste!)
- změny ovlivňující zpětné kompatibility:
- kompilátor není přeskočit spojující krok už, i když žádný soubor změnil.
- os.splitFile (& quot; XYZ & quot;), nyní se vrací (& quot; & quot ;, & quot; XYZ & quot ;, & quot; & quot;) namísto (& quot; & quot ;, & quot; & quot ;, & quot; XYZ & quot; ). Názvy souborů začínající tečkou jsou zpracovány jinak.
- strutils.split (s: string, SEPS: nastavte [char]), nikdy se získá prázdný řetězec ještě. Toto chování je pravděpodobně vhodnější pro whitespace štípání.
- kompilátor nyní zastaví po řádku přepínače --version příkazu.
- odebrána podpora pro dědictví výčtu v analyzátoru; dědictví enum nebyla nikdy zdokumentován tak jako tak.
- msg pole system.E_base má nyní typu řetězec, namísto CString. To zvyšuje bezpečnost paměti.
Co je nového ve verzi 0.8.2:
- Opravy chyb:
- Předávání --hint [X]: vypnutý nebo --warning [X]:. Off as argumenty příkazového řádku pro kompilátor nyní pracuje
- Výchozí parametry pro šablony nyní pracovat.
- Opravena chyba zabezpečení v system.copy.
- String pouzdro bez součást jiného generovaný nesprávný kód.
- Různé opravy na osproc modulu; Nyní pracuje na systému Windows.
- Dodatky:
- Realizované multi-metody.
- Překladač nyní zjišťuje počet dostupných procesorů a spustí kompilátor C současně. To lze nastavit pomocí --parallel_build:. NUMBER_OF_PROCESSORS přepínač příkazového řádku
- PEG-based model odpovídající pomocí modulu kolíky.
- Added system.definedInScope.
- Added system.accumulateResult.
- Added os.walkDirRec.
- Přidáno osproc.countProcessors.
- Added osproc.execProcesses.
- Konfigurace systému nyní podporuje $ cc.options.linker.
- sloučená expr a typeDesc v gramatice / analyzátoru:. To umožní anonymní procs bez lambda
- Mnoho skriptů nemají potřebu GC: Nová --gc: none přepínač příkazového řádku lze použít k vyloučení GC ze spustitelného .
- změny ovlivňující zpětné kompatibilita:
- Vzhledem adresu objektu discriminant je nyní neplatný.
- Předávání proc na proc var je povoleno pouze pro procs označených procvar nebo konvence volání! = Nimcall. Pro tuto chvíli to způsobuje jen varování, ale to se změní na chybu brzy.
- systém, teplotu a system.add nyní dostávají openArray místo parametrů násl.
- Odebráno strutils.findSubStr a strutils.findChars. Byly zastaralé 3 verze.
- unicode modul používá odlišný typ pro TRune.
- Deprecated strutils.toString: použít $ namísto .
- Deprecated os.splitPath:. Použití os.splitPath, že místo vrací n-tici
- Deprecated os.extractDir:. Použít splitFile (cestu) .dir místo
- Deprecated os.splitFilename: použijte splitFile místo .
- Deprecated os.extractFileExt: použijte splitFile místo .
- Deprecated os.extractFileTrunk: použijte splitFile místo .
- Deprecated os.appendFileExt: použijte os.addFileExt místo .
- Deprecated os.executeShellCommand: použijte os.execShellCmd místo .
- Deprecated os.iterOverEnvironment:. Použijte os.envPairs místo
- Zastaralé parseopt.init: použijte parseopt.initOptParser místo .
- Deprecated parseopt.getRestOfCommandLine: použijte parseopt.cmdLineRest místo .
- Deprecated os.pcDirectory: použijte os.pcDir místo .
- Deprecated os.pcLinkToDirectory: použijte os.pcLinkToDir místo .
- Deprecated osproc.executeProcess: použijte osproc.execProcess místo .
- Deprecated osproc.executeCommand: použijte osproc.execCmd místo .
Co je nového ve verzi 0.8.0:
- Opravy chyb:
- opravena malá chyba, která způsobila, že překladač nehlásí nepoužité přetížené symboly
- pevným o symbol drobná chyba přetížení
- pevné překlep: to je & quot; nejednoznačný a quot ;, není & quot; nejednoznačnou & quot; , -)
- kompilátor nyní zjišťuje rekurzivní hlavičkové soubory,
- system.card by měl fungovat opět
- položky za sadu [char] a pole [char, T], by nyní mělo fungovat
- Dodatky:
- realizované generické typy a dvě fáze symbol vyhledávání v generických rutiny
- Parametry šablony mohou být nyní reálné typy
- realizován zobecněné syrové řetězcové literály: ident & quot; abc & quot; je zkratka pro Ident (r & quot; abc & quot;)
- na přetížení iterátorů rozlišení jsou odděleny od procs; iterátory nyní může mít stejný název + podpis jako procs
- symbol vyhledávání v šablonách může být ovlivněna novým klíčovým slovem bind
- kompilátor nyní přijímá --no_main přepínač pro lepší propojení interoperabilitu s ostatními kompilované jazyky
- provedena n-tice rozbalení v var oddílech
- generátor kódu vysílá výchozí: __assume (0); Visual C ++ (pro optimalizaci)
- kompilátor nyní kontroluje, zda proc má vedlejší účinky; procs, které jsou deklarovány, že nemají žádné vedlejší účinky, jsou odmítnuty, pokud kompilátor nemůže ověřit tento
- operátor formát strutils.% Nyní podporuje $ # pro automatické počítání argument,
- realizován strutils.join
- změny ovlivňující zpětné kompatibilita:
- dvě fáze symbol vyhledávání se provádí v generických rutiny
- bind je nyní vyhrazené slovo; Výjimkou není vyhrazené slovo už
- abstraktní typy byly přejmenovány na odlišných typů; Takto výrazný je nyní vyhrazené slovo; abstraktní není vyhrazené slovo už
- system.openFile Deprecated: použití system.open místo
- system.closeFile zastaralé: použití system.close místo
- strutils.replaceStr zastaralé: použití strutils.replace místo
- strutils.deleteStr zastaralé: použití strutils.delete místo
- strutils.splitSeq zastaralé: použití strutils.split místo
- strutils.splitLinesSeq zastaralé: použití strutils.splitLines místo
- strutils.parseFloat nepřijme další parametr start už
- Documentation:
- návod byl vylepšen
Co je nového ve verzi 0.7.6:
- Opravy chyb:
- Instalace systému Windows Vista lze nyní pracovat po vybalení z krabice; zkuste!
- opravena chyba, která držel & quot; rekurzivní moduly & quot; příklad z práce
- míchání pojmenované a nepojmenované parametry ve volání procedur nyní funguje
- čísla osmičkové s předponou 0 ° C, jsou nyní správně podporovány
- vyčíslení nyní může začít s negativními hodnotami
- parseInt, ParseBiggestInt nyní hodit výjimku, pokud řetězec nekončí po analyzovat čísla
- kompilátor nyní zpracovává příkazy nejvyšší úrovně správně
- generovaný nimcache adresář nikdy končí lomítkem
- createDir nyní pracuje pro globální adresáře pod Unixem (& quot; / somepath / sem & quot;)
- kompilátor nyní provádí spustitelný soubor s předním & quot; ./& quot; pod UNIX
- překladač nyní podporuje konstantní matice řádu ukazatelů
- Elif v případě prohlášení nyní pracuje
- iterators pomocí parametru otevřené pole nyní pracovat
- opravena chyba, kdy v některých kontextech $ myEnum nefungovalo
Co je nového ve verzi 0.7.4:
- Instalace na Windows by nyní mělo fungovat, pokud adresář obsahuje prostory
- generátor dokumentace už jen omítky názory dokumentace
- `` `` je povoleno pro operátory, jako manuál říká
- v ojedinělých případech, kontrola index byl optimalizován pryč, i když by to bylo nutné,
- několik oprav chyb za typů n-tic
- přidal `` unicode`` modul pro UTF-8 manipulaci
- přidal HOSTOS a hostCPU magii na `` system`` modulu
- system.echo nyní přijímá více argumenty
- přidal optimalizace: v některých případech inlining iterátorů nyní produkuje podstatně lepší kód
- přidal celý program mrtvý odstranění kód
- magic `` `operátor nyní pracuje pro vyčíslení
- v `` const`` sekcích pokročilé sestavit vyhodnocení času se provádí
- přejmenován `` in_Operator`` na `` contains``: `` in`` je nyní šablona, která se promítá do `` contains``
- změnil `` strutils.quoteIfSpaceExists`` na `` strutils.quoteIfContainsWhite``
- parser je nyní mnohem více náročné na missings čárky, atd. Pokud se to týká vašeho kódu příliš mnoho, zkuste spustit kód přes hezké tiskárně.
- `` macros`` API již není součástí `` system`` modulu používat tento API nyní máte k importu `` macros`` modul
- přidal návod
Co je nového ve verzi 0.7.2:
- Toto je vydání s opravami chyb. To nejdůležitější je, že oprava Nimrod nyní pracuje opět na AMD64 (x86_64) procesory.
- byly zavedeny žádné nové funkce.
Co je nového ve verzi 0.7.0:
- různé opravy chyb, příliš mnoho na jejich seznam zde
- instalace pro systémy UNIX není závislá na Python déle,
- `` koch.py`` skript nyní pracuje se staršími verzemi Pythonu (včetně 1.5.2)
- změnil celočíselné operace a převody pravidla
- přidal `` GC_ref`` a `` GC_unref`` procs
- sekvence je nyní třeba konstruována tak, `` `` @ operátora. To vede k nižší nejasnosti.
- kompilátor nyní používá méně paměti a je mnohem rychlejší,
- GC je nyní mnohem rychlejší,
- Nové vazby: zlib, SDL, Xlib, OpenGL, ODBC, Lua
- generovaný C kód je mnohem rychlejší optimalizovat s GCC
- nové knihovny: proudy, distribučních .zip archivů
- kompilátor Nimrod byl portován na FreeBSD: to by mělo fungovat na jiných BSD taky
Požadavky na :
- Python
Komentáře nebyl nalezen