นาตาลีเป็นการใช้งาน Ruby ที่อยู่ระหว่างดำเนินการ
มีคอมไพเลอร์ล่วงหน้าโดยใช้ C++ และ gcc/clang เป็นแบ็กเอนด์ นอกจากนี้ ภาษายังมี REPL ที่ทำการคอมไพล์แบบเพิ่มหน่วย
มีงานเหลืออีกมากที่ต้องทำก่อนที่จะมีประโยชน์ โปรดแจ้งให้เราทราบหากคุณต้องการช่วย!
ยินดีบริจาค! คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของฉันกับนาตาลีได้ผ่านวิดีโอเซสชันการแฮ็กบน YouTube
วิธีที่ง่ายที่สุดในการเริ่มต้นตอนนี้คือการหาวิธีบนออบเจ็กต์ที่ยังไม่ได้นำไปใช้แล้วสร้างมันขึ้นมาเอง! ดูประเด็นแรกที่ดีด้วย (ดูส่วน 'การสร้าง' และ 'การทดสอบการรัน' ด้านล่างสำหรับขั้นตอนที่เป็นประโยชน์บางส่วน)
เรามีเซิร์ฟเวอร์ Discord ที่เงียบมาก -- มาออกไปเที่ยวกันเถอะ!
Natalie ได้รับการทดสอบบน macOS และ Ubuntu Linux Windows ยังไม่รองรับ
นาตาลีต้องการระบบ 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 คุณมีทางเลือก 2-3 ทาง: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 ที่ยอดเยี่ยม ซึ่งเป็น repo ไฟล์ทดสอบที่ดูแลโดยชุมชน ซึ่งการใช้งาน Ruby ใดๆ สามารถใช้เพื่อเปรียบเทียบความสอดคล้องกับสิ่งที่ MRI (Ruby Interpreter ของ Matz) ทำ เราคัดลอกข้อกำหนดในขณะที่เราใช้ส่วนของภาษาที่ครอบคลุม
ทุกอย่างที่อยู่ใน test/
เป็นสิ่งที่เราเขียนระหว่างทำงานกับนาตาลี สิ่งเหล่านี้คือการทดสอบที่ช่วยให้เราบูตบางส่วนของภาษาและ/หรือไม่ได้รับการคุ้มครองตามข้อกำหนด Ruby อย่างเป็นทางการมากเท่าที่เราต้องการ เราใช้สิ่งนี้เพื่อเสริมข้อมูลจำเพาะใน spec/
Natalie เป็นลิขสิทธิ์ปี 2023, Tim Morgan และผู้มีส่วนร่วม นาตาลีได้รับอนุญาตภายใต้ใบอนุญาต MIT; ดูไฟล์ LICENSE
ในไดเร็กทอรีนี้สำหรับข้อความฉบับเต็ม
บางส่วนของโปรแกรมนี้คัดลอกมาจากแหล่งอื่น และลิขสิทธิ์เป็นของเจ้าของที่เกี่ยวข้อง ประกาศเกี่ยวกับลิขสิทธิ์ดังกล่าวจะอยู่ที่ด้านบนของไฟล์ที่เกี่ยวข้อง ในไดเรกทอรีเดียวกันกับชื่อเช่น LICENSE
หรือทั้งสองอย่าง
ไฟล์ | ลิขสิทธิ์ | ใบอนุญาต |
---|---|---|
benchmark.rb | โกโทเคน | บีเอสดี |
bigint.{h,c} | 983 | ยกเลิกใบอนุญาต |
cgi.rb / cgi/* | วาคุ อาโอยามะ | บีเอสดี |
crypt.{h,c} | ผู้สำเร็จราชการแทนพระองค์ของมหาวิทยาลัย ของกาลี | บีเอสดี |
delegate.rb | ยูกิฮิโระ มัตสึโมโตะ | บีเอสดี |
dtoa.c | เดวิด เอ็ม. เกย์, Lucent Technologies | อนุญาตแบบกำหนดเอง |
erb/util.rb | มาซาโตชิ เซกิ | บีเอสดี |
ipaddr.rb | ฮาจิมุ อุเมโมโตะ และ อาคิโนริ มูชะ | บีเอสดี |
find.rb | คาซึกิ ซึจิโมโตะ | บีเอสดี |
formatter.rb | ยูกิฮิโระ มัตสึโมโตะ | บีเอสดี |
linenoise | เอส. ซานฟีลิปโป และ พี. นูร์ดฮุยส์ | บีเอสดี |
minicoro.h | เอดูอาร์โด บาร์ต | เอ็มไอที |
pp.rb | ยูกิฮิโระ มัตสึโมโตะ | บีเอสดี |
prettyprint.rb | ยูกิฮิโระ มัตสึโมโตะ | บีเอสดี |
shellwords.rb | อาคิโนริ มูชา | บีเอสดี |
spec/* | เครื่องยนต์ยาร์ดอิงค์ | เอ็มไอที |
uri.rb / uri/* | อากิระ ยามาดะ | บีเอสดี |
version.rb | เครื่องยนต์ยาร์ดอิงค์ | เอ็มไอที |
zlib | ฌอง-ลูป เกลลี และมาร์ก แอดเลอร์ | ใบอนุญาต zlib |
ดูแต่ละไฟล์ด้านบนเพื่อดูลิขสิทธิ์และข้อความลิขสิทธิ์ฉบับเต็ม