ニムロデはオープンソースで、効率的でシンプルなまま、手続き型、オブジェクト指向、ジェネリックと関数型プログラミングスタイルをサポートするように設計された無料の、静的に型付けされ、命令型プログラミング言語です。
ニムロデは、ドメイン固有言語を作成するために使用できる強力なマクロシステムを可能にする、本明細書の一部として抽象構文ツリー(AST)とが可能である。特徴は、Lispから継承された。
ソフトウェアは、ネイティブコード生成、ガベージコレクション、ゼロ·オーバーヘッドイテレータ、ユーザ定義可能演算子、高レベルのデータ型、時間評価、フォワードcompability、GTK2、Windows APIの、POSIX APIのバインディング、プラグ可能パーサシステム、ドキュメントジェネレータをコンパイルが特徴で、パスカルニムロッドに変換ユーティリティ。
X ニムロッドは、それは、Linux、BSD、Mac OSの&NBSP上で実行できることを意味し、ポータブルであり、Windowsオペレーティングシステム
のこのリリースのの新機能である:ます。
- バグ修正:
- 古いGCが正しくサイクルを集めたことはありません。固定されているが、それはパフォーマンスの低下を引き起こす可能性があります。しかしあなたはGC_disableMarkAndSweepとサイクルコレクタを無効にすることができ、適切な時間か全くで明示的にそれを実行する。あなたが--gcで起動することができる新しいGCもあります:。この問題を抱えているが、一般的に遅く、全くリアルタイム保証がありませんしませんmarkAndSweepがします。
- 浮動小数点型のためのキャストは今、マニュアルで指定されたbitcastを行います。これは、誤って別の浮動小数点値に変換するためにキャストを使用するコードを壊します。
- SCGIモジュールの性能は、それがもはや多くの同時リクエストをブロックしません、大幅に改善されているます。
- は合計で70 GitHubの問題の上に固定され、60プル要求の上にマージされます。
- ライブラリの追加:
- は速く(またははるかに遅い)、デフォルトのGCよりも可能な新しい実験的なマーク&スイープGCがある。 --gcで有効にします。markAndSweepます。
- を追加しましsystem.onRaiseます。
- を追加しましたsystem.localsます。
- AST、準クォートを追加しましたmacros.quoteます。
- を追加しましsystem.unsafeNewます。
- system.fieldsとsystem.fieldPairsサポートオブジェクトすぎ。彼らは唯一のサポートタプルに使用します。
- を追加しましsystem.CurrentSourcePathが現在のソースファイルの完全なファイル·システム·パスを返します。
- のマクロモジュールは現在、抽象構文木を構築するための便利なヘルパーの多くが含まれています。
- の変更:
- 共有は今キーワードです。
- 非推奨sockets.recvLineとasyncio.recvLineは、代わりにのreadLineを追加します。
- 道のインデントが大幅に変更され、パーサーで処理されます。しかし、これは(もしあれば)ほとんどの実世界のコードに影響を与えます。
- 式/文の統一が実装されました。ここでも、これが唯一のエッジケースと知られていない実世界のコードに影響します。
- SCGIモジュールの非同期インターフェイスを変更します。
- WideStringsは現在、他の文字列型のように収集されたごみれます。
- コンパイラの追加:
- DOC2コマンドは、もはやプロジェクト全体の出力を生成しません。この動作を可能にするために新しい--projectスイッチを使用します。
- コンパイラは、影のローカル変数について警告することができます。しかし、これは明示的に[ShadowIdent] --warning経由でオンにする必要があります。の
- コンパイラは、プッシュプラグマのほぼすべてのプラグマをサポートしています。
- ジェネリックコンバータが実装されています。
- は、主に前方宣言する必要がなくなり、特別なコンパイル·モードを有効にする非常に実験noforwardプラグマを追加しました。
- 言語の追加:
- ケース式がサポートされるようになりました。
- テーブルコンストラクタは今より密接にcase文の構文を模倣します。
- ニムロデは現在、身体からのprocの戻り値の型を推論することができます。
- はジェネリックでルールを結合シンボルに影響を与えるのmixin宣言を追加しました。
- 例外追跡が追加され、DOC2コマンドはあなたのために可能性のある例外を注釈されています。
- ユーザー定義エフェクト(&QUOT、タグ")。トラッキングが追加され、DOC2コマンドはあなたのための可能なタグを注釈します。
- タイプは、明示的にnilが許可されていないことを述べることがnilでない新しい構文で注釈を付けることができます。しかし現在、コンパイラは、このためのチェックは高度な静的を実行しません。今のところは、文書化のために過ぎないのです。
- 輸出文は、言語に追加されました:クライアント·モジュールが明示的にモジュールの依存関係をインポートする必要はありませんので、それは、シンボルの転送に使用することができます。 。
- のASTに基づいてオーバーロードが実装されています。
- ジェネリックは現在、マルチメソッドがサポートされています。
- オブジェクトは、オブジェクトのコンストラクタ発現を介し初期化することができます。
- 新しい構文構造がある。統一式や文がします。
- これで、モジュールのインポートゼロから使用することができます。
コンディションシステムをサポートするために、
PROCの地元の人々へのアクセスを提供します。
ハック可変長オブジェクトをサポートするために
後方互換性に影響を与える
(;)
あなたはモジュールをインポートしたいが、モジュール内のすべてのシンボルの完全修飾のアクセスを強制したい場合は
のバージョン0.8.14にの新機能である:ます。
- メッセージパッシングに関する重大なメモリの破損が修正されました
- はジェネリックPROCの異なるインスタンス化に関する重大なバグを修正します。
- 間違ったEIO例外は改行で終わっていないテキストファイルのファイルの終わりのために育てられた、新たに導入されたバグを修正します。
- バグ修正c2nim、c2pas:--outオプションが正しく働いたことがない。 。
- バグ修正:ジェネリックのprocsの転送が働いたことはない。 。
- マクロのいくつかのよりバグ修正とコンパイル時評価します。
- GCは今考慮に積極的なCオプティマイザによって導入することができるスタック上の内部ポインタを取ります。
- ニムロッドのネイティブアロケータ/ GCは現在、PowerPC上で動作します。
- ロット:それらすべてを列挙することが多すぎます。 。
他のバグ修正の
のバージョン0.8.6でのの新機能:
- バグ修正:
- プラグマは、[X]ヒント:オフ、警告を[X]:今オフ動作します。 。
- メソッド呼び出し構文は(lines.split()でxについて)再び動作します。
- 無限再帰につながるPOSIXためのremoveDirの誤字を修正します。
- コンパイラは、モジュールファイル名は有効な識別子であるかどうかをチェックします。
- dynlibプラグマのための空のパターンが可能になりました。
- os.parseCmdLineは空白を末尾に間違った結果を返します。
- つじつまの合わないタプルの使用量は、もはやコードジェネレータをクラッシュされませんします。
- より良いエラーメッセージが提供されます。
- 追加:
- を追加しましたsystem.containsます。
- PEGモジュールは現在、探索ループ演算子@をサポートしています。
- 文法/パーサ:SAD | INDは閉じ括弧のいずれかの種類の前に許可されます。これは、より柔軟なソースコードの整形を可能にします。
- 廃棄""&QUOT、私の長いコメント""&QUOT。今離れて最適化されています。
- 新規--floatChecks:ON | OFFスイッチやプラグマ浮動小数点演算のより良いデバッグのため。 (詳細についてはmanual.html#の事前定義された浮動小数点型を参照してください。)
- マニュアルが改善されました。 (フィリップLhosteに感謝!)
- の変更:
- コンパイラは、ファイルが変更されていていてもこれ以上のリンク手順を省略していませんします。
- os.splitFile(&QUOT、.xyzという")今返す("&QUOT ;,&QUOT、.xyzという&QUOT ;,"")の代わりに、("&QUOT ;,"&QUOT ;,&QUOT、.xyzという&QUOT。 )。ドットで始まるファイル名は異なる方法で処理されます。
- strutils.split(S:文字列、SEPS:[CHAR]を設定するには)もはや空の文字列を生成することはありません。この動作は、おそらく、空白の分割に適してます。
- コンパイラは、--versionコマンドラインスイッチの後に停止します。
- パーサで列挙型の継承のために取り出しサポート。列挙型の継承はとにかく文書化されたことがないします。
- はsystem.E_baseのMSGフィールドは現在、代わりのCStringの文字列型を持っています。これは、メモリの安全性を向上させます。
イテレータのための
(名前付きフィールドを持つとせずに同じタプルを使用して)
ダイナミックLIB内のPROCのロードが失敗したときに
オープンアレイ用の
<李>コンパイラは、バインドコンテキスト内でシンボル検索用のバインドテーブルを使用しています。 (詳細についてはmanual.html#テンプレートを参照してください。)
後方互換性に影響を与える
のバージョン0.8.2でのの新機能:
- バグ修正:
- を渡す--hint [X]:オフまたは--warning [X]:コンパイラのコマンドライン引数が機能するようになりましたようにオフします。
- デフォルトパラメータが動作するようになりました。
- 修正されたセキュリティ上の問題ます。
- else部のない文字列の場合は間違ったコードを生成します。
- osprocモジュールに関するさまざまな修正を行いました。今では、Windows上で動作します。
- 追加:
- は、マルチメソッドを実装します。
- コンパイラが利用可能になりましたプロセッサの数を検出し、同時に、Cコンパイラを実行します。これは、--parallel_buildによって調整することができる:。NUMBER_OF_PROCESSORSコマンドラインスイッチします。
- ペグモジュールを介してマッチングPEGベースのパターンします。
- を追加しましsystem.definedInScopeます。
- を追加しましsystem.accumulateResultます。
- を追加しましos.walkDirRecます。
- を追加しましたosproc.countProcessorsます。
- を追加しましosproc.execProcessesます。
- 設定システムは現在の$ cc.options.linkerをサポートしています。
- 文法/構文解析ツールではexprとTYPEDESCマージ:これはラムダずに匿名の手続きオブジェクトが可能になります。 。
- 多くのスクリプトは、GCのために必要がない:新しい--gc:なしコマンドラインスイッチは、実行可能ファイルからGCを除外するために使用することができます。 。
- の変更:
- は、オブジェクトの判別式のアドレスを取ることになりまし無効でます。
- のproc VARにPROCを渡すだけprocvarまたは呼び出し規約でマークprocsのために許可されている!= nimcall。今のところこれは単なる警告の原因となるが、これはすぐにエラーに変わります。
- システム。、&、今openArrayの代わりに、配列パラメータを受け取るsystem.addます。
- strutils.findSubStrとstrutils.findChars削除しました。彼らは、3つのバージョンのために推奨されなくなりました。
- のUnicodeモジュールはTRuneための特殊タイプを使用しています。
- 非推奨strutils.toString:。代わりに$を使用します。
- 非推奨os.splitPath:代わりにタプルを返しos.splitPathを使用します。 。
- 非推奨os.extractDir:。代わりにsplitFile(パス).DIRを使用します。
- 非推奨os.splitFilename:。代わりにsplitFileを使用します。
- 非推奨os.extractFileExt:。代わりにsplitFileを使用します。
- 非推奨os.extractFileTrunk:。代わりにsplitFileを使用します。
- 非推奨os.appendFileExt:。代わりにos.addFileExtを使用します。
- 非推奨os.executeShellCommand:。代わりにos.execShellCmdを使用します。
- 非推奨os.iterOverEnvironment:代わりにos.envPairsを使用します。 。
- 非推奨parseopt.init:代わりにparseopt.initOptParserを使用します。 。
- 非推奨parseopt.getRestOfCommandLine:。代わりにparseopt.cmdLineRestを使用します。
- 非推奨os.pcDirectory:。代わりにos.pcDirを使用します。
- 非推奨os.pcLinkToDirectory:。代わりにos.pcLinkToDirを使用します。
- 非推奨osproc.executeProcess:。代わりにosproc.execProcessを使用します。
- 非推奨osproc.executeCommand:。代わりにosproc.execCmdを使用します。
テンプレートの
system.copyの
後方compabilityに影響を与える
のバージョン0.8.0でのの新機能:
- バグ修正:
- コンパイラが未使用のオーバーロードされたシンボルを報告しないために生じた小さなバグが修正されます。
- はシンボルのオーバーロードします。 に関する小さなバグを修正
- 固定タイプミス:それは&QUOT、曖昧&QUOT ;,しない&QUOT。ambigious&QUOT。 - )
- system.cardが再び動作するはずです。
- セット[CHAR]と配列[CHAR、T]用のアイテムは、現在動作するはずです。
- 追加:
- はジェネリック型を実装し、汎用ルーチンで2相シンボル検索します。
- テンプレートパラメータは今本当のタイプすることができます。
- は、一般化生の文字列リテラルを実装IDENTのショートカットです(R&QUOT、ABC&QUOT;)
- ;イテレータは今procsのと同じ名前+シグネチャを持つことができます。
- シンボル検索は、新しいバインドキーワードによって影響を受ける可能性があります。
- のvarセクションでアンパック実装タプルます。
- コードジェネレータはデフォルトを発する:__assume(0); (最適化のための)のVisual C ++ のために
- コンパイラはチェックします。副作用がないと宣言されてprocsのは拒否され、コンパイラはこのします。 を確認できない場合
- フォーマット演算子strutils。%になりました。 自動引数計数のために$#をサポートしています
- 実装strutils.joinます。
- の変更:
- 2相シンボル検索は汎用ルーチンで実行されます。
- バインドは現在予約語です。例外はもうない予約語ではない。
- 抽象型は、別個のタイプに名前が変更されました。したがって、個別のは今予約語です。抽象はもうない予約語ではない。
- system.openFile非推奨: 代わりにsystem.open使用
- system.closeFile非推奨:ユースsystem.close代わりにします。
- strutils.replaceStr非推奨:代わりに使用strutils.replaceます。
- strutils.deleteStr非推奨:ユースstrutils.delete代わりにします。
- strutils.splitSeq非推奨:代わりにstrutils.splitを使用します。
- strutils.splitLinesSeq非推奨:代わりに使用strutils.splitLinesます。
- strutils.parseFloatはもう追加の開始パラメータを受け付けません。
- ドキュメント:
- マニュアルが改善されています。
<李>コンパイラは再帰的なインクルードファイルを検出します。
ABC&QUOT;のident&QUOT;
procsのから分離されている解像度のイテレータを過負荷で
テンプレート内の
<李>コンパイラは、他のコンパイル言語とのよりよいリンクの相互運用性のための--no_mainスイッチを受け付けます。
procは、副作用を持っている場合、
後方compabilityに影響を与える
のバージョン0.7.6でのの新機能:
- バグ修正:
- インストールはこれで箱から出して動作する可能性があり、試してみてください!
- 今プロシージャコールで名前と名前のないパラメータを混合動作します。
- プレフィックス0Cと8進数が正しくサポートされています。
- 列挙型は現在、負の値で始めることができます。
- のparseInt、ParseBiggestInt文字列が解析された番号</ LI>の後に終了していない場合は、今例外をスロー
- は、コンパイラが正しくトップレベルの文を処理します。
- 生成nimcacheディレクトリがします。 スラッシュで終わることはありません
- createDirは今、UNIXの下でグローバルディレクトリのために働く(&QUOT; / somepath /ここに&QUOT;)
- コンパイラは、大手&QUOTで実行ファイルを実行します。./& QUOT。 UNIXでます。
- case文でのelifが機能するようになりました。
- オープン配列パラメータを使用して、イテレータが動作するようになりました。
- いくつかの文脈で$ myEnumが機能しなかったどこにバグを修正します。
Windows Vistaで
再帰的なモジュール&QUOT; <李は>&QUOTを保ったバグを修正。作業の例
<李>コンパイラは手続きポインタの定数配列をサポートしています。
のどのバージョン0.7.4のの新しいです:ディレクトリが含まれている場合は、Windowsにインストールする
- 今動作するはずスペース
- はドキュメントジェネレータが今だけレンダリングするドキュメントコメントます。
- は `` ``オペレータのために許可されているマニュアルが言うようにします。
- は、まれに、インデックスチェックは、それが必要だっただろうにもかかわらず、離れて最適化されています。
- タプルタイプのためのいくつかのバグが修正されます。
- 李>を扱うUTF-8用の `` unicode``モジュールを追加しました
- は `` system``モジュールにhostOSとhostCPU魔法を追加します。
- system.echoは今 複数の引数を受け付けます
- は最適化を追加しました:イテレータのインライン化が今、実質的により良いコードを生成し、いくつかのケースでます。
- プログラム全体のデッドコード削除します。 を追加
- 魔法の `` `オペレータが今列挙のために働くます。
- はコンパイル高度な時間評価が行われます。
に- に変更 `` strutils.quoteIfSpaceExists`` `` strutils.quoteIfContainsWhite``ます。
- パーサは、これはあまりにも多くのあなたのコードに影響を与える場合、かなりプリンタを通して、あなたのコードを実行しようとする今ずっとうるさいの欠落のコンマなど約です。
- `` macros`` APIは、 `` system``モジュールの一部ではなく、このAPIを使用するようになりました `` macros``モジュールます。 をインポートする必要が
- はチュートリアルを追加します。
- は新しい機能が実装されていません。
const``セクション ``における
`` in``は今contains``ます。 ``に変換テンプレートです:contains``は ``にin_Operator`` ``改名さ
これはバグ修正リリースです。
のバージョン0.7.2でのの新機能である。この最も重要な修正プログラムは、ニムロッドが今AMD64(x86_64版)プロセッサ上で再び動作することです。
のバージョン0.7.0でのの新機能:ここではそれらを一覧表示することがあまりにも多く、
- さまざまなバグの修正
- UNIXベースのシステム用のインストールのPythonに依存しない、もはやます。
- は `` koch.py``スクリプトは今 (1.5.2を含む)古いPythonのバージョンで動作
- に変更整数演算と変換のルールます。
- はGC_ref``と `` GC_unref``のprocsの ``を追加
- の配列は、現在、 `` @ ``演算子を用いて構築される必要がある。これは、より少ない曖昧さにつながるます。
- コンパイラは、少ないメモリを使用してます。 はるかに高速です
- GCで今はるかに高速ます。
- 新しいバインディング:ZLIB、SDL、Xlibの、OpenGLの、ODBC、Luaの
- 生成されたCコードはGCCで最適化するために、はるかに高速である。
- 新しいライブラリ:ストリーム、zipファイルます。
- ニムロッドコンパイラは、FreeBSDに移植されています:それはあまりにも他のBSDの上で動作する必要があります。
の要件の
- のPythonます。
コメントが見つかりません