Natalie 是一個正在進行中的 Ruby 實作。
它提供了一個使用 C++ 和 gcc/clang 作為後端的提前編譯器。此外,該語言還有一個執行增量編譯的 REPL。
在這變得有用之前,還有很多工作要做。如果您想提供協助,請告訴我!
歡迎貢獻!您可以透過 YouTube 上的黑客會議影片詳細了解我如何處理 Natalie。
現在開始最簡單的方法是在一個尚未實現的物件上找到一個方法並自己創建它!還要看看好的第一個問題。 (請參閱下面的“建置”和“運行測試”部分,以了解一些有用的步驟。)
我們有一個非常安靜的 Discord 伺服器——快來玩吧!
Natalie 在 macOS 和 Ubuntu Linux 上進行了測試。尚不支援 Windows。
Natalie 目前需要係統 Ruby (MRI) 來託管編譯器。
先決條件:
3.1
與最新的修補程式版本相符。ruby
和ruby-dev
軟體包。在您的平台上安裝上述先決條件,然後執行:
git clone https://github.com/natalie-lang/natalie
cd natalie
rake
sudo
!如果您已經犯了這個錯誤,那麼您應該sudo rm -rf build
並重試。/usr/lib/ruby
或其他需要 root 的路徑,那麼您有幾個選擇:rbenv version
以查看目前選擇的版本。執行rbenv shell
然後執行版本以選擇該版本。 mkdir -p ~/gems
export GEM_HOME=~/gems
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/
中的規格。
Natalie 的版權為 2023,由 Tim Morgan 和貢獻者擁有。 Natalie 已根據 MIT 許可證獲得許可;請參閱此目錄中的LICENSE
檔案以取得全文。
本程式的某些部分是從其他來源複製的,版權歸各自所有者所有。此類版權聲明要么位於相應文件的頂部,要么位於名稱類似LICENSE
的同一目錄中,或者兩者都位於。
文件 | 版權 | 執照 |
---|---|---|
benchmark.rb | 後令牌 | BSD |
bigint.{h,c} | 第983章 | 無執照 |
cgi.rb / cgi/* | 青山和光 | BSD |
crypt.{h,c} | 大學董事會。卡利。 | BSD |
delegate.rb | 松本幸弘 | BSD |
dtoa.c | 蓋伊 (David M. Gay),朗訊科技公司 | 自訂許可 |
erb/util.rb | 關正敏 | BSD |
ipaddr.rb | 梅本肇和武者昭則 | BSD |
find.rb | 辻本一樹 | BSD |
formatter.rb | 松本幸弘 | BSD |
linenoise | S. Sanfilippo 和 P. Noordhuis | BSD |
minicoro.h | 愛德華多·巴特 | 麻省理工學院 |
pp.rb | 松本幸弘 | BSD |
prettyprint.rb | 松本幸弘 | BSD |
shellwords.rb | 武者秋教 | BSD |
spec/* | 發動機廠有限公司 | 麻省理工學院 |
uri.rb / uri/* | 山田晃 | BSD |
version.rb | 發動機廠有限公司 | 麻省理工學院 |
zlib | 讓·盧·蓋利和馬克·阿德勒 | zlib許可證 |
請參閱上面的每個文件以獲取完整的版權和許可文本。