このプロジェクトについて
Nolangはシステムプログラミングに向けた新しい言語で、コア設計目標はメモリセーフでGC不要です。
## 言語機能
**メモリセーフ**:NolangはGCに依存せず、自動メモリ管理により安全を確保します。変数は関数の有効期間が終了したときに自動的に破棄され、手動解放を禁止します。配列やスライスなどのコンテナは値コピー語義を採用し、元変数の生命周期とは隔離されます。
**統一された参照通過モデル**:すべての関数パラメータはデフォルトで参照で渡され、関数内でパラメータを修正すると呼び出し元の元データに直接影響しますが、パラメータ自体を破棄することはできません。
**スコープ変数の上書き**:Nolangでは、同じ関数スコープ内で同じ変数名を繰り返し使用すると、それは重複して割り当てられるものと見なされ、新しい変数を作成することは許可されません。型が異なる場合、構文レベルで許可されません。
**言語レベルで崩壊しない**:暗黙の崩壊パスを排除し、隠れた歧義を排除します。
**事前バッチヒープ割り当てとバッチ解放**:事前にバッチ割り当てをサポートし、スコープを離れるときにバッチfreeを行い、隠れた割り当てコストを排除します。
## ツールチェーン
完璧なコマンドラインツール(`no`コマンド)を提供し、以下の操作をサポートします:
- `no init` / `no new`:作業領域の初期化と新しいプロジェクトパッケージの作成
- `no fmt`:コードの整形
- `no build` / `no run` / `no test`:構築、実行、テスト
- `no add` / `no remove` / `no update` / `no sync` / `no list`:依存関係の管理
- `no install` / `no uninstall`:バイナリのインストール管理
- `no pub`:パッケージレジストリに発行
- クロスコンパイル(targetを指定)と異なるバックエンドコンパイラ(例えばZig)をサポートします。
エントリの約束:`main.no`がプログラムのエントリ、`lib.no`がライブラリのエントリ、`tests/`ディレクトリ内のすべての`.no`ファイルがテストファイルです。
## エディターサポート
- VSCodeプラグイン(LSPサーバーを含む)
- ソースコードから`make lsp`を使用して構築できます。
## ソースコードからの構築
`make`コマンドを使用します:`make no`でCLIを構築、`make lsp`で言語サーバーを構築、`make package`でVSCode拡張をパッケージ化、`make playground`でWebAssemblyのオンラインPlaygroundを構築します。
## 関連するプロジェクト
- notools:Nolangで実装されたUnixコマンドラインツールセット(cat、ls、grep、wcなど)を使用して、言語がシステムプログラミング領域で実際に使用されることを示します。
プロジェクトはApache-2.0ライセンスの下でリリースされており、公式ドキュメントのアドレスはhttps://lizongying.github.io/nolangです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.