V の構文は Go に非常に似ており、Oberon、Rust、Swift からいくつかの構造を借用しています。 言語は可能な限り単純化されており、開発者によれば、基本を学ぶには 30 分の学習で十分です。
新しい言語の作成は、Go 言語の構文の単純さ、コンパイル速度、操作の並列化の容易さ、コードの移植性と保守性、および C/C++ のパフォーマンス、Rust のセキュリティ、およびZig コンパイル段階でのマシンコードの生成。 また、外部依存関係なしで動作し、グローバル スコープ (グローバル変数) を取り除き、コードを「ホット」リロードする機能を提供できる、コンパクトで高速なコンパイラーを入手したいと考えていました。
C++ と比較して、新しい言語は大幅に単純で、コンパイル速度が速く (最大 400 倍)、安全なプログラミング技術を実践し、未定義の動作に関する問題がなく、操作を並列化するための組み込みツールを提供します。 Python と比較すると、V はより高速で、よりシンプルで、より安全で、より保守しやすいです。 Go と比較すると、V にはグローバル変数も null もありません。すべての変数値は常に定義する必要があり、すべてのオブジェクトはデフォルトで不変であり、0 種類の代入 (「a := XNUMX」) のみがサポートされており、大幅にコンパクトです。実行時間と結果として生成される実行可能ファイルのサイズ、C からの直接移植性の存在、ガベージ コレクターの不在、高速なシリアル化、文字列の補間機能 (“println('$foo: $bar.baz')”)。
fn main() {
分野 := ['ゲーム', 'ウェブ', 'ツール', '科学', 'システム', 'GUI', 'モバイル'] a := 10
真であれば {
へ:= 20
}
エリア内のエリアの場合 {
println('こんにちは、$area 開発者の皆さん!')
}
}
プロジェクトの特徴:
- コンパクトで高速なコンパイラ。標準ライブラリと合わせると約 400 KB を消費します。 マシンコードの直接生成とモジュール化により、高いコンパイル速度が実現されます。 コンパイル速度は、1.2 つの CPU コアで 100 秒あたり約 0.4 万行のコードです (操作中、V は C を使用できますが、その後、速度は 0.15 秒あたり 512 行に低下することに注意してください)。 コンパイラの自己アセンブリも V 言語で書かれており (Go のリファレンス バージョンもあります)、約 30 秒かかります。 年末までに追加の最適化作業が完了する予定で、これによりコンパイラのビルド時間は 45 秒に短縮されます。 開発者が実施したテストから判断すると、Go の自己アセンブリには 8 MB のディスク容量が必要で 50 分半で実行されます。Rust は 90 GB で 25 分、GCC - XNUMX GB で XNUMX 分、Clang - XNUMX GB が必要です。 XNUMX分、
Swift - 70 GB および 90 分。 - プログラムは、外部依存関係なしで実行可能ファイルにコンパイルされます。 アセンブリ後の単純な http サーバーの実行可能ファイルのサイズはわずか 65 KB です。
- コンパイルされたアプリケーションのパフォーマンスは、C プログラムのアセンブリのレベルです。
- 追加のオーバーヘッドなしで C コードとシームレスに対話できる機能。 C 言語の関数は V 言語のコードから呼び出すことができ、その逆も同様で、V 言語のコードは C と互換性のある任意の言語で呼び出すことができます。
- C/C++ プロジェクトを V 言語の表現に変換するためのサポート。変換には Clang のパーサーが使用されます。 C 標準のすべての機能がまだサポートされているわけではありませんが、トランスレータの現在の機能はすでに十分な機能を備えています。
翻訳 V ゲーム『DOOM』の言語で。 C++ トランスレーターはまだ開発の初期段階にあります。 - ランタイムに縛られない組み込みのシリアル化サポート。
- メモリ割り当て操作を最小限に抑える。
- 安全性の確保: NULL、グローバル変数、未定義の値、変数の再定義はありません。 バッファオーバーランチェック機能を内蔵。 汎用関数 (Generic) のサポート。 デフォルトでは変更できないオブジェクトと構造。
- 「ホット」コードのリロードの可能性 (再コンパイルせずにその場でコードの変更を反映)。
- マルチスレッドを確保するためのツール。 Go 言語と同様に、「run foo()」のような構造は、新しい実行スレッドを開始するために使用されます (「go foo()」と同様)。 将来的には、ゴルーチンとスレッド スケジューラのサポートが計画されています。
- Windows、macOS、Linux、*BSD オペレーティング システムのサポート。 年末までに Android と iOS のサポートを追加する予定です。
- ガベージ コレクターを使用せずに、(Rust と同様に) コンパイル時にメモリ管理を行います。
- レンダリングに GDI+/Cocoa および OpenGL を使用した、グラフィックス出力用のマルチプラットフォーム ツールキットの利用可能 (DirectX、Vulkan、および Metal API のサポートが予定されています)。 3D オブジェクト、骨格アニメーション、カメラ制御を操作するためのツールがあります。
- 各 OS にネイティブな設計要素を使用してグラフィカル インターフェイスを生成するためのライブラリが利用可能です。 Windows は WinAPI/GDI+ を使用し、macOS は Cocoa を使用し、Linux は独自のウィジェットのセットを使用します。 ライブラリはすでに開発で使用されています
ボルト — Slack、Skype、Gmail、Twitter、Facebook のクライアント。計画では、Delphi のようなインターフェイス設計アプリケーションを作成し、SwiftUI や React Native に似た宣言型 API を提供し、iOS および Android 用のモバイル アプリケーション作成のサポートを提供する予定です。
- プロジェクト開発者向けの Web サイト、フォーラム、ブログの作成に使用される組み込み Web フレームワークの利用可能。 HTML テンプレートのプリコンパイルはサポートされており、リクエストごとにテンプレートを処理する必要はありません。
- クロスコンパイルのサポート。 Windows の実行可能ファイルをビルドするには、「v -os windows」を実行し、Linux の場合は「v -os linux」を実行します (macOS のクロスコンパイルのサポートは後で予定されています)。 クロスコンパイルはグラフィカル アプリケーションでも機能します。
- 組み込みの依存関係マネージャー、パッケージ マネージャー、およびビルド ツール。 プログラムをビルドするには、make や外部ユーティリティを使用せずに、「v.」を実行するだけです。 追加のライブラリをインストールするには、たとえば「v get sqlite」を実行するだけです。
- エディターでの V 言語での開発用のプラグインの利用可能
VSコード и活力 .
開発
さらに、当初リポジトリには
一方、プロジェクト V のバグ トラッカーでは約 10 件の投稿が削除されました。
出所: オープンネット.ru