Natalie は開発中の Ruby 実装です。
C++ と gcc/clang をバックエンドとして使用する事前コンパイラを提供します。また、この言語には増分コンパイルを実行する REPL があります。
これが役立つようになるまでには、やるべきことがたくさんあります。お手伝いしたい場合はお知らせください。
貢献は大歓迎です!私が Natalie でどのように取り組んでいるかについて詳しくは、YouTube のハッキング セッション ビデオをご覧ください。
今すぐ始める最も簡単な方法は、まだ実装されていないオブジェクトのメソッドを見つけて、自分で作成することです。良い創刊号もぜひご覧ください。 (役立つ手順については、以下の「ビルド」セクションと「テストの実行」セクションを参照してください。)
私たちは非常に静かな Discord サーバーを持っています - 遊びに来てください!
Natalie は macOS と Ubuntu Linux でテストされています。 Windows はまだサポートされていません。
現時点では、ナタリーはコンパイラーをホストするためにシステム Ruby (MRI) を必要としています。
前提条件:
3.1
などの Ruby バージョンを最新のパッチ リリースに一致させるのに役立ちます。ruby
およびruby-dev
パッケージが必要になります。上記の前提条件をプラットフォームにインストールしてから、次を実行します。
git clone https://github.com/natalie-lang/natalie
cd natalie
rake
sudo
使用しないでください。すでにその間違いを犯している場合は、 sudo rm -rf build
て再試行する必要があります。/usr/lib/ruby
のような場所、または root を必要とする別のパスにファイルを書き込むことができない場合、次の 2 つのオプションがあります。rbenv version
実行して、現在選択されているバージョンを確認します。 rbenv shell
を実行し、続いてバージョンを実行して、そのバージョンを選択します。 mkdir -p ~/gems
export GEM_HOME=~/gems
bundler
見つからないというエラーが表示された場合は、オペレーティング システムが Bundler を Ruby と一緒にインストールしなかった可能性があります。 gem install bundler
実行して入手できます。 返信:
bin/natalie
Ruby スクリプトを実行します。
bin/natalie examples/hello.rb
ファイルを実行可能ファイルにコンパイルします。
bin/natalie -c hello examples/hello.rb
./hello
docker build -t natalie . # build image
docker run -it --rm natalie # repl
docker run -it --rm natalie -e "p 2 * 3" # immediate
docker run -it --rm -v$(pwd)/myfile.rb:/myfile.rb natalie /myfile.rb # execute a local rb file
docker run -it --rm --entrypoint bash natalie # bash prompt
テスト (または仕様) を実行するには、通常の Ruby スクリプトと同じように実行できます。
bin/natalie spec/core/string/strip_spec.rb
これによりテストが実行され、障害があるかどうかがわかります。
合格すると予想されるすべてのテストを実行したい場合は、次を実行できます。
rake test
最後に、少数のテストをローカルで実行する必要がある場合は、 test/runner.rb
ヘルパー スクリプトを使用できます。
bin/natalie test/runner.rb test/natalie/if_test.rb test/natalie/loop_test.rb
spec/
内のファイルは、優れた Ruby/spec プロジェクトからのものです。これは、Ruby 実装が MRI (Matz の Ruby インタプリタ) の機能との適合性を比較するために使用できる、コミュニティが厳選したテスト ファイルのリポジトリです。仕様がカバーする言語の部分を実装するときに、仕様をコピーします。
test/
にあるものはすべて、Natalie の作業中に書いたものです。これらは、言語の特定の部分をブートストラップするのに役立つテストであり、公式の Ruby 仕様で期待するほどカバーされていなかったり、その両方でした。これをspec/
の仕様を補足するために使用します。
ナタリーの著作権は 2023、Tim Morgan および寄稿者にあります。ナタリーは MIT ライセンスに基づいてライセンスを取得しています。全文については、このディレクトリ内のLICENSE
ファイルを参照してください。
このプログラムの一部は他のソースからコピーされており、著作権はそれぞれの所有者に属します。このような著作権表示は、それぞれのファイルの先頭、 LICENSE
のような名前の同じディレクトリ内、またはその両方にあります。
ファイル | 著作権 | ライセンス |
---|---|---|
benchmark.rb | 五島軒 | BSD |
bigint.{h,c} | 983 | ライセンスを解除する |
cgi.rb / cgi/* | 青山和光 | BSD |
crypt.{h,c} | 大学の理事カリの。 | BSD |
delegate.rb | まつもとゆきひろ | BSD |
dtoa.c | デビッド M. ゲイ、ルーセント テクノロジーズ | カスタム許容 |
erb/util.rb | 関 正俊 | BSD |
ipaddr.rb | 梅本肇と武者昭典 | BSD |
find.rb | 辻本一樹 | BSD |
formatter.rb | まつもとゆきひろ | BSD |
linenoise | S. サンフィリッポと P. ノールドハウス | BSD |
minicoro.h | エドゥアルド・バート | マサチューセッツ工科大学 |
pp.rb | まつもとゆきひろ | BSD |
prettyprint.rb | まつもとゆきひろ | BSD |
shellwords.rb | 武者昭典 | BSD |
spec/* | 株式会社エンジンヤード | マサチューセッツ工科大学 |
uri.rb / uri/* | 山田明 | BSD |
version.rb | 株式会社エンジンヤード | マサチューセッツ工科大学 |
zlib | ジャン=ルー・ゲイリーとマーク・アドラー | zlibライセンス |
著作権とライセンスの全文については、上記の各ファイルを参照してください。