ちょうど今日、ニムチームは言語の待望のバージョン1.0を発表しました。
ニムは、効率的で読みやすく、柔軟なクラスの静的コンパイル言語を提供することに焦点を当てています。
バージョン1.0のロゴは、コードの現在のバージョンを弱体化しませんニム今後数年間の将来のバージョンで使用することができ、安定した基盤を持つようになりました。
ニムは温かい構築コミュニティを初心者の到着を迎える準備ができて、。
あなたが初心者であれば、私たちを見てみましょう学習リソースでは、私たちの試験のフィールドトライアルニム。
安定性を確保
バージョン1.0は、将来的にのみバグ修正と新機能を受け入れ、安定した長期的なサポートのリリースで、彼らは後方互換性を壊さないことを条件とします。
1.0.xのブランチは、必要なバグ修正を受け取ります。新機能との下位互換性に影響を与えることはありません1.xのブランチに着実に継続されます。
私たちの目標は、将来的には、コンパイラの任意の安定Nim1.xバージョンを持続可能なNim1.0コンパイルされたコードを確保することです。
どのような安定性を確保するために含まれていますか?
後方互換性は、部品に定義されている言語のみ安定一部覆うマニュアルです。
コンパイラは、実験中で説明されている特徴達成する実験室マニュアルを。これらの特性は、下位互換性のない存在することができる;概念を含み、マークやその他の機能を実行します。まだ不安定な標準ライブラリモジュールもあります-これらは、文書中の「不安定なAPI」と表示されています。
あなたも、製品の場合、実験的な特性を使用しますが、我々は期待通りのフルとしてこれらに注意を払うことができます。
標準ライブラリは、文書モジュールで問題が明らかにv1.0のラベルをマーク限り、覆われています。
例外
もちろん、我々はまた、例外があることを認めなければなりません。そのような標準ライブラリのセキュリティ上の脆弱性など、いくつかの深刻なケースでは、我々は後方互換性の問題、それを使用する権利を留保します。
インストールNim1.0
新しい手
お使いのオペレーティングシステムのパッケージマネージャを見ては、すでにバージョン1.0かによって構築されていません。このインストールを。
ユーザー株式
ユーザーはニムのバージョンをchoosenim使用する前にインストールした場合は、簡単な次のように:
安定した$のchoosenim更新
信者
ロング年は、500人以上が、新機能、バグ修正や問題を実装した文書を書き、そしてより多くの、ニムのコードに貢献しました。ニムは、今日の貢献者になるの構築私たちを助けたすべての人へのNIMチームのおかげ。
我々はまた、すべての建物軽快パッケージ、拡張ニム生態貢献に感謝したいと思います。パッケージの成長と安定軽快、2019年8月に、私たちは、パッケージの歴史の中で1000年を突破しました。当社は、長期的な開発エコロジーに貢献する1.0リリースのために楽観的です。
個人反射のバージョン1.0のための父ニム言語
ハードワークが報わ、我々は最終的にそれをやりました!待望のバージョン1.0が来ました。
私はニムの開発を始めたとき、私は、コンパイル済みのCは簡単な言語にコード20,000行を超えることはないと思います。コアガイドラインはニムは、すべてのプロパティが欠落しているシステムの軽量のマイクロカーネルを拡張するためのマクロ言語です。
現在のコンパイラそれに加えて、標準ライブラリの一部を使用して、オペレーティング・システムと十分なCPUアーキテクチャ上で動作するコードの14万行は、C ++やJavaScriptにコンパイルすることができ、メタプログラミング機能ニムは最高の1つになっています。言語はもはやある場合には、軽量、メタプログラミングは必要な近代的な言語のすべての側面を構築するための代替を証明していません。
ニムは、非同期システムを実装し、マクロを使用する場合、例えば、システムは、状態マシンにマクロコードすることができる必要があります。ステートマシンは、取得する必要があり、環境の道を後藤。だから、ニムのカーネルは、達成するために、「閉鎖イテレータ」を増やす必要があります。
また、私たちは本当にシステムのマクロタイプを使用する方法がわからないニムカーネルは、ジェネリック医薬品とジェネリック制約を必要とするので、システムレベルのスケーラビリティを提供します。
開発の進捗状況について
ニムはあまりだった前に、まあ、私はそれがあったはずだと思う」と言うことができ、原因の皆様を促進するための「少なくとも驚きの原則」:前に言った、私は言語の開発、バージョン我々は今、別の開発の進捗状況を持っている1.0手段の進歩に満足していますアテンダントが、特別なケースを追加しました仕事...「とし、実現しています。特別な事情が発火し、理解するシステムをより困難にし、そして最終的に驚きを生成します。初めから、我々は「仕様書第一」の開発バージョン1.0を使用:実装プロセスにおける規範への洞察を得るために、実現した後、RFCを書く議論、仕様を書き、最初。
はい、私は知っているいくつかの省略、バグ、改善して、新しい「デストラクタ」言語機能がある仕様/取扱説明書は、欠陥があっても、イェジンハオの多くの結果を仕様で開発された「標準最初」のアプローチを使用することです。
ニムの将来
私たちは、ツールNimsuggest(ニム様々なコードエディタ補完エンジン)、軽快な(ニムのパッケージマネージャ)とNimpretty(ツールをフォーマットニムのソースコード)を含めニム、に焦点を当てたいと思います。個人的に私は、「インクリメンタルコンパイル」(IC)は次のマイルストーンニムコンパイラだと思います。ICはさらにニムは、マクロ展開と他の工事の結果をキャッシュ、すぐにコンパイルされている加速していきます。
概念とについて所有:私は、彼らは、バージョン1.0と一緒に実際のニム・ライト・コードを変更したため、これらの二つの特徴を解放しなければならないことを言われました。私は彼らの構文と意味が改善を必要とするものの、いくつかの概念も利用できます持って、言語ワークの概念が良くありません、同意しません。言語で所有している使用するかどうかは定かではないですが、私は他のニム改良されたメモリ管理があると思います。
目的は、私たちが望むものを、私たちが持っているバージョン1.0を提供することではありません。将来は、バージョン1.0はまだ始まったばかりで、明るいです。結婚と同様に、結婚式はまだ始まったばかりです。
v1.0の - 2019年9月23日
後方互換性の変化の影響
- -d:nimBinaryStdFilesなしスイッチ。標準入力/標準出力/標準エラー出力は再びバイナリファイルになります。Windowsのみに影響します。
- プログラムはUTF-8を開始したときに、Windowsのコンソールアプリケーション、コード・ページで設定します。-dを使用しますnimDontSetUtf8CodePageはオフに切り替えます。
- gensymは、より厳格な衛生上のテンプレート言語の定義とコンパイラのシンボル。参照マニュアルを。詳細については、コンパイラの使用は--oldgensymスイッチ:移行期間に。
標準ライブラリの破壊的変化
- 名前が間違っている、彼らはそれを使用する場所を見つけることができないので、我々は、unicde.Rune16を削除しました。プロジェクトに次のコードを追加する必要がある場合:
type
Rune16* = distinct int16
- NIM cppの中exportcは今importcに一致する、スマッシュの名前スマッシュ命名++ではなくCのCを使用しています。新しい破砕NIMのCPPの時間を使ってExportcpp C ++。
コンパイラの破壊的変更
- INT小さなサイズの範囲型に暗黙的に変換許可([0'i8..10'i8]鳴っ)バグ修正を有します。
ライブラリの追加
- encoding.getCurrentEncodingは、現在符号化およびコンソール・オペレーティング・システム・コードを区別します。Windowsでのみ意味を持ちます。
- 通常system.getFileHandleよりも一般的system.getOsFileHandleを追加します。Windowsでのみ意味を持ちます。
- JSONセグメントはスペースで区切られたときに、処理を高速化json.parseJsonFragmentsイテレータJSONを追加します。
ライブラリの変更
- os.delEnvとnimscript.delEnvを追加します。
- 使用量のハッシュテーブル内のOIDを開きます。
- 、unsafeColumnAtプロセスを追加InstantRowから危険なのCStringに戻ります。
- オープンSHA1モジュールSha1Digest、Sha1State型とnewSha1State、更新プロセスを完了。
- STD / monotimesモノトーンモジュールのタイムスタンプを追加します。
- 2つのオーバーロードさexecの整合性エラー処理。
- 以下のモジュールは現在、公式の不安定性のAPIです:
- std/varints
- core/allocators
- core/hotcodereloading
- asyncstreams
- base64
- browsers
- collections/rtarrays
- collections/sharedlist
- collections/sharedtable
- concurrency/atomics
- concurrency/cpuload
- concurrency/threadpool
- coro
- endians
- httpcore
- parsesql
- pathnorm
- reservedmem
- typetraits
他の標準ライブラリモジュールAPIの安定したバージョン1.0です。
言語を追加します。
- インラインイテレータは今の復帰をサポートは、イテレータに似たT型は、VaRのTを返さ貸しました:
iterator myitems[T](x: openarray[T]): lent T
iterator mypairs[T](x: openarray[T]): tuple[idx: int, val: lent T]
- プラグマは、JavaScriptとシンボルimportc importcppをインポートするために用いてもよいimportjsを追加します。最大限の柔軟性を持つルーチン型モードをimportjs。
言語の変更
- unit64は現在、従来の順序型です。これは、コンパイルし、正しい値を生成することができる高い(UINT64)を閉じることを意味します。
工具交換
- 依存関係ファイルが変更されていない場合はニムコンパイラは現在、NIM C -rニムプロジェクトを再コンパイルすることはできません。ラインオプションは--forceBuildコマンドによって上書きすることができます。
- ニムコンパイラは、現在未使用のインポートモジュールを警告し、あなたは、コンパイラが警告{。.used}を示すものではありませんインポートするモジュールの上部を使用することができます。
- テスター名から遺言・テスト・ツールが遺言を変更して、自動的にニムテストを実行するためのツールとして使用することができます。
コンパイラの変更
- VMは現在、強力なターン任意の整数タイプにすることができます。