Natalie는 진행 중인 Ruby 구현입니다.
C++ 및 gcc/clang을 백엔드로 사용하는 사전 컴파일러를 제공합니다. 또한 언어에는 증분 컴파일을 수행하는 REPL이 있습니다.
이것이 유용해지기 전에 해야 할 일이 많이 남아 있습니다. 도움을 주고 싶으면 알려주세요!
기여를 환영합니다! YouTube의 해킹 세션 동영상을 통해 제가 Natalie에서 어떻게 작업하는지 자세히 알아볼 수 있습니다.
지금 당장 시작하는 가장 쉬운 방법은 아직 구현되지 않은 객체에 대한 메소드를 찾아 직접 만들어 보는 것입니다! 또한 좋은 첫 번째 문제를 살펴보십시오. (몇 가지 유용한 단계는 아래 '빌딩' 및 '테스트 실행' 섹션을 참조하세요.)
우리는 매우 조용한 Discord 서버를 운영하고 있습니다. 와서 놀아보세요!
Natalie는 macOS 및 Ubuntu Linux에서 테스트되었습니다. Windows는 아직 지원되지 않습니다.
현재로서는 Natalie가 컴파일러를 호스팅하려면 시스템 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
또는 루트가 필요한 다른 경로에 파일을 쓸 수 없는 경우) 다음과 같은 몇 가지 옵션이 있습니다.rbenv version
실행하여 현재 선택된 버전을 확인하세요. rbenv shell
실행한 다음 버전을 선택하여 해당 버전을 선택하십시오. mkdir -p ~/gems
export GEM_HOME=~/gems
bundler
누락 오류가 발생한다면 운영 체제가 Ruby와 함께 번들러를 설치하지 않았을 가능성이 높습니다. gem install bundler
실행하여 얻을 수 있습니다. REPL:
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 Interpreter)가 수행하는 작업과 적합성을 비교하는 데 사용할 수 있는 테스트 파일의 커뮤니티 관리 저장소입니다. 우리는 사양이 다루는 언어 부분을 구현하면서 사양을 복사합니다.
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 | 데이비드 M. 게이, Lucent Technologies | 사용자 정의 허용 |
erb/util.rb | 세키 마사토시 | BSD |
ipaddr.rb | 우메모토 하지무와 무샤 아키노리 | BSD |
find.rb | 츠지모토 카즈키 | BSD |
formatter.rb | 마츠모토 유키히로 | BSD |
linenoise | S. Sanfilippo 및 P. Noordhuis | BSD |
minicoro.h | 에두아르도 바르트 | MIT |
pp.rb | 마츠모토 유키히로 | BSD |
prettyprint.rb | 마츠모토 유키히로 | BSD |
shellwords.rb | 무샤 아키노리 | BSD |
spec/* | 엔진야드 주식회사 | MIT |
uri.rb / uri/* | 야마다 아키라 | BSD |
version.rb | 엔진야드 주식회사 | MIT |
zlib | 장루 가이(Jean-loup Gailly)와 마크 아들러(Mark Adler) | zlib 라이센스 |
전체 저작권 및 라이센스 텍스트는 위의 각 파일을 참조하세요.