루비의 역사
History of Ruby이것은 루비 프로그래밍 언어의 역사다.
구상
마츠모토는 루비가 1993년에 잉태되었다고 말해 왔다.1999년 루비토크 메일링 리스트에 올린 글에서 그는 이 언어에 대한 그의 초기 아이디어에 대해 다음과 같이 설명했다.[1]
나는 객체 지향 스크립트 언어의 가능성에 대해 동료와 이야기하고 있었다.펄(Perl5가 아닌 Perl4)을 알고 있었지만, 장난감 언어의 냄새가 났기 때문에, 정말 마음에 들지 않았다.객체지향적인 언어는 매우 유망해 보였다.그때 나는 파이썬을 알고 있었다.하지만 나는 그것이 진정한 객체 지향 언어라고 생각하지 않았기 때문에 좋아하지 않았다 – OO의 특징들이 언어에 더해진 것처럼 보였다.언어 마니아와 OO팬으로서 15년 동안 정말 객체 지향적이고 사용하기 쉬운 스크립팅 언어를 원했다.나는 찾았지만 찾을 수 없었다.그래서 나는 그것을 만들기로 결심했다.
마쓰모토는 루비의 디자인이 스몰토크와 같은 객체 시스템, 고차 기능에서 영감을 받은 블록, 펄과 같은 실용적인 효용성을 핵심에 둔 단순한 리스프 언어와 같다고 설명한다.[2]
'루비'라는 이름은 1993년 2월 24일 마쓰모토와 이시쓰카 게이쥬의 온라인 채팅 세션에서 언어에 대한 코드가 작성되기 전에 유래되었다.[3]처음에 두 개의 이름이 제안되었다: "Coral"과 "Ruby".마츠모토는 나중에 이시츠카에게 보낸 메일에서 후자를 선택했다.[4]마츠모토는 후에 "루비"라는 이름을 고르는 데 한 가지 요인에 주목했다. – 그것은 그의 동료 중 한 사람의 탄생석이었다.[5][6]
초간행물
1995년 12월 21일 일본 국내 뉴스그룹을 통해 루비 0.95의 첫 공개가 발표되었다.[7][8]이후 루비 버전 3개가 이틀 만에 추가로 출시됐다.[3]이 공개는 새로운 언어의 첫 번째 메일링 리스트인 일본어 루비 리스트의 시작과 동시에 이루어졌다.
이미 이 개발 단계에 존재했던 것은 객체 지향적인 디자인, 상속이 있는 클래스, 믹신, 반복기, 폐쇄, 예외 처리, 쓰레기 수거 등 루비의 후기 출시에서 익숙한 특징들이 많았다.[9]
초기 릴리즈
1995년 루비 0.95의 발매에 이어 이듬해 몇 가지 안정적인 루비 버전이 출시되었다.
- 루비 1.0: 1996년[3] 12월 25일
- 루비 1.2: 1998년 12월
- 루비 1.4: 1999년 8월
- 루비 1.6: 2000년 9월
1997년 루비에 대한 첫 기사가 웹에 실렸다.같은 해 마쓰모토는 netlab.jp에 고용되어 루비를 전업 개발자로 일하게 되었다.[3]
1998년, 루비 어플리케이션 아카이브(Ruby Application Archive)는 루비를 위한 간단한 영어 홈페이지와 함께 마츠모토에 의해 발족되었다.[3]
1999년, 최초의 영어 메일링 리스트 루비토크가 시작되었고, 이것은 일본 밖의 언어에 대한 관심이 증가하고 있음을 시사했다.[10]같은 해 마쓰모토와 이시쓰카 게이쥬는 1999년 10월 일본에서 출간된 루비, 객체지향 스크립팅 언어 루비( (ブジェ language language language language language language ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby ruby Ruby)에 관한 제1권을 집필하였다.2000년대 초반 루비에 관한 책 20여 권이 일본어로 출간되면서 그 뒤를 이을 것이다.[3]
2000년까지 루비는 일본에서 파이썬보다 더 인기가 있었다.[11]2000년 9월, 최초의 영어책 Programming Ruby가 인쇄되었는데, 이 책은 후에 대중에게 자유롭게 공개되어 영어 사용자들 사이에서 루비의 채택이 더욱 확대되었다.2002년 초, 영어 루비토크 메일링 리스트는 일본어 루비 리스트보다 더 많은 메시지를 받고 있었으며, 루비가 비일본어권에서 증가하는 인기를 증명하고 있었다.
루비 1.8
루비 1.8은 2003년 8월 처음 출시돼 장기간 안정세를 보이다 2013년 6월 은퇴했다.[12]비록 더 이상 사용되지 않지만, 그것을 기반으로 한 코드는 여전히 존재한다.Ruby 1.8은 Ruby 1.9와 부분적으로만 호환된다.
루비 1.8은 여러 산업 표준의 대상이 되어 왔다.루비의 어학 사양은 정보통신진흥청(일본 정부기관)의 개방형 표준추진센터가 일본산업표준위원회(JISC)에, 그 후 국제표준화기구(ISO)에 제출하기 위해 개발한 것이다.2011년[13] 일본산업표준(JIS X 3017), 2012년 국제표준(ISO/IEC 30170)으로 인정받았다.[14][15]
2005년경 루비어로 쓰인 웹 프레임워크인 루비 온 레일즈와 함께 루비 언어에 대한 관심이 급증했다.레일즈는 루비에 대한 인식이 높아진 것으로 자주 인정받고 있다.[16]
루비 1.9
루비 1.9는 2007년 크리스마스 날에 발매되었다.2011년 10월 31일 발매된 루비 1.9.3으로 효력이 발생하여 루비는 루비 라이선스와 GPL에 따른 이중 라이선스에서 루비 라이선스와 2클로스 BSD 라이선스에 따른 이중 라이선스로 전환하였다.[17][18]많은 인기 있는 제3자 보석을 다시 써야 했던 1.8과는 다른 변화로 1.9의 채택이 더디게 되었다.
루비 1.9는 1.8 시리즈에 걸쳐 많은 중요한 변화를 소개하고 있다.예를 들면 다음과 같다.[19]
- 블록 로컬 변수(이 변수가 선언된 블록에 로컬인 변수)
- 추가 람다 구문:
f = ->(a,b) { puts a + b } - 기호 키에 콜론을 사용하는 추가 해시 리터럴 구문:
{symbol_key: "value"} == {:symbol_key => "value"} - 문자열당 문자 인코딩 지원
- 새 소켓 API(IPv6 지원)
require_relative담보를 수입하다
루비 1.9는 2015년 2월 23일부터 구식이 돼 버그와 보안 수리를 더 이상 받지 않게 됐다.[20]사용자들은 좀 더 최신 버전으로 업그레이드하는 것이 좋다.
루비 2.0
Ruby 2.0은 다음과 같은 몇 가지 새로운 기능을 추가했다.
- 메서드 키워드 인수,
- 새로운 방법,
Module#prepend, 클래스를 확장하는 경우, - 기호 배열을 만드는 새로운 문자,
- Enumerables의 게으른 평가를 위한 새로운 API 및
- #[21]to_h를 사용하여 물체를 해시로 변환하는 새로운 관습
Ruby 2.0은 Ruby 1.9.3과 완전히 역호환되도록 의도되었다.2013년 2월 24일 공식 2.0.0 릴리즈 기준, 알려진(최소) 비호환성은 5개에 불과했다.[22]
루비 2.0은 2016년 2월 24일부터 구식이 되어 버그와 보안 수리를 더 이상 받지 않게 된다.[23]사용자들은 좀 더 최신 버전으로 업그레이드하는 것이 좋다.
루비 2.1
루비 2.1.0은 2013년 크리스마스 날에 출시되었다.[24]이 릴리스에는 속도 향상, 버그 수정 및 라이브러리 업데이트가 포함되어 있다.
2.1.0으로 시작하는 루비의 버전화 정책은 의미적 버전화에 가깝다.[25]비슷하기는 하지만 루비의 버전 관리 정책은 의미론 버전 관리와는 호환되지 않는다.
| 루비 | 의미론적 버전 |
|---|---|
| 메이저: 비호환성 변경 시 증가하며, 마이너에서는 해제할 수 없음.특별 이벤트용으로 예약됨. | 주: 호환되지 않는 API를 변경할 때 증가됨. |
| 마이너: 매년 크리스마스마다 증가하며, API 호환이 불가능할 수 있다. | 마이너: 역호환 방식으로 기능을 추가하면 증가함. |
| TENY: API 호환성을 유지하는 보안 또는 버그 수정.10개 이상 증가할 수 있으며(예: 2.1.11), 2-3개월마다 출시된다. | 패치: 역호환 버그 수정 시 증가 |
| 패치: 마지막 MINIOR 릴리스 이후 커밋 수입니다(MINIO를 해제할 경우 0으로 재설정됨). | - |
시멘틱 버전링은 또한 사전 릴리즈를 위한 추가 라벨을 제공하며 빌드 메타데이터는 메이저의 확장으로 이용할 수 있다.MINIO.Patch 형식, Ruby에서 사용할 수 없음.
루비 2.1은 2017년 4월 1일부터 구식이 됐고,[26] 버그와 보안 수리를 더 이상 받지 않게 됐다.사용자들은 좀 더 최신 버전으로 업그레이드하는 것이 좋다.
루비 2.2
루비 2.2.0은 2014년 크리스마스 날에 출시되었다.[27]릴리스에는 속도 향상, 버그 수정, 라이브러리 업데이트 등이 포함되며 일부 사용되지 않는 API를 제거한다.가장 주목할 만한 것은, Ruby 2.2.0은 메모리 처리의 변경 사항, 즉 증분 가비지 수집기, 기호들의 가비지 수집 지원, 그리고 제말록과 직접 대조하여 컴파일할 수 있는 옵션 등을 소개한다.vfork(2)를 시스템()과 spa()와 함께 사용하기 위한 실험 지원도 포함하고 유니코드 7.0 규격에 대한 지원도 추가했다.
더 이상 사용되지 않거나 제거된 기능에는 callcc, DL 라이브러리, 다이제스트:HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::애플리케이션뿐만 아니라 다양한 C API 기능.[28]
루비 2.2는 2018년 4월 1일부터 구식이 됐고,[29] 버그와 보안 수리를 더 이상 받지 않게 됐다.사용자들은 좀 더 최신 버전으로 업그레이드하는 것이 좋다.
루비 2.3
루비 2.3.0은 2015년 크리스마스 날에 출시되었다.몇 가지 주목할 만한 변화는 다음과 같다.
- 모든 문자열 리터럴을 기본적으로 frozen으로 표시하고 그에 따라 문자열 연산의 성능이 크게 향상되는 기능.[34]
- 키 대신 키/값 쌍을 직접 검사할 수 있는 해시 비교.
- 새로운 안전 내비게이션 운영자
&.영(0)을 쉽게 처리할 수 있는 것(예:if obj && obj.foo && obj.foo.bar, 우리는 사용할 수 있다.if obj&.foo&.bar). - did_you_mean 보석은 이제 기본적으로 번들로 제공되며 시작 시 NameError 또는 NoMethodError에서 유사한 이름 일치를 자동으로 제안하는 데 필요하다.
- 깊이 중첩된 값(예: 주어진 값)을 쉽게 추출할 수 있는 해시#dig 및 배열#dig
profile = { social: { wikipedia: { name: 'Foo Baz' } } }Foo Baz가 지금 검색할 수 있는 값profile.dig(:social, :wikipedia, :name)). .grep_v(regexp)다른 새로운 특징들 외에 주어진 정규 표현식의 모든 부정적인 예들과 일치할 것이다.
또한 2.3 지점에는 Proc#call, 예외 키워드의 소켓 및 IO 사용 변경, 스레드#name 처리, 기본 패시브 Net::FTP 연결 및 Rake가 stdlib에서 제거됨.[35]
루비 2.4
루비 2.4.0은 2016년 크리스마스 날에 출시되었다.몇 가지 주목할 만한 변화는 다음과 같다.
- Binding#irb: Binding.pry와 유사한 RET 세션 시작
- Fixnum과 Bignum을 정수 클래스로 통합
- 문자열은 ASC뿐만 아니라 유니코드 케이스 매핑을 지원한다.II
- 새로운 방법인 Regexp#match?는 Regexp#match의 부울 버전이다.
- 이제 스레드 교착 상태 감지가 역추적 및 종속성이 있는 스레드를 표시함
2.4 분기에는 해시 테이블, 어레이#max, 어레이#min, 인스턴스 변수 액세스에 대한 성능 개선도 포함되어 있다.[36]
루비 2.5
루비 2.5.0은 2017년 크리스마스 날에 출시되었다.[37]몇 가지 주목할 만한 변화는 다음과 같다.
- 복구 및 문장이 자동으로 주변 Do-end 블록을 사용하도록 보장(추가 시작 블록의 필요성 감소)
- 항복_self로 메서드 체인
- 분기 범위 및 방법 범위 측정 지원
- Hash#slice 및 Hash#transform_keys를 사용하여 보다 쉬운 해시 변환
여기에 블록 패스 속도 향상(3배 빨라짐), 뮤텍스 속도 향상, ERB 템플릿 가속화, 일부 결합 방식 개선 등 다양한 성능 개선이 뒤따른다.
루비 2.6
루비 2.6.0은 2018년 크리스마스 날에 출시되었다.[38]몇 가지 주목할 만한 변화는 다음과 같다.
- JIT(실험)
- RubyVM:AbstractSyntaxTree(실험용)
루비 2.7
루비 2.7.0은 2019년 크리스마스 날에 출시되었다.[39]몇 가지 주목할 만한 변화는 다음과 같다.
- 패턴 매칭(실험)
- IMT-2000 3GPP-REP 개선
- 컴팩트 GC
- 위치 및 키워드 인수 분리
루비 3.0
루비 3.0.0은 2020년 크리스마스 날에 출시되었다.[40]루비 3x3로 알려져 있다.그것의 주요 목표 중 하나는 프로그램을 더 빨리 만들기 위해 통역사를 Just-In-Time 컴파일러로 전환하는 것이었다.
버전 표
| 버전 | 최신판 | 최초출고일자 | 지원 종료 단계 | 보안 유지 관리 종료 단계 |
|---|---|---|---|---|
| 더 되지 않음 1.0 | NA | 1996-12-25[41] | NA | NA |
| 더 되지 않음 1.8 | 1.8.7-p375[42] | 2003-08-04[43] | 2012-06[44] | 2014-07-01[45] |
| 더 되지 않음 1.9 | 1.9.3-p551[46] | 2007-12-25[47] | 2014-02-23[48] | 2015-02-23[49] |
| 더 되지 않음 2.0 | 2.0.0-p648[50] | 2013-02-24[51] | 2015-02-24[50] | 2016-02-24[50] |
| 더 되지 않음 2.1 | 2.1.10[52] | 2013-12-25[53] | 2016-03-30[54][55] | 2017-03-31[56][57] |
| 더 되지 않음 2.2 | 2.2.10[58] | 2014-12-25[59] | 2017-03-28[60] | 2018-03-31[57] |
| 더 되지 않음 2.3 | 2.3.8[61] | 2015-12-25[62] | 2018-06-20[63] | 2019-03-31[63] |
| 더 되지 않음 2.4 | 2.4.10[64] | 2016-12-25[65] | 2019-04-01[66] | 2020-04-01[66] |
| 더 되지 않음 2.5 | 2.5.9[67] | 2017-12-25[68] | 2021-04-05[67] | 2021-04-05[67] |
| 2.6 | 2.6.7[69] | 2018-12-25[70] | 2021-04-05[69] | 2022-04-05[69] |
| 2.7 | 2.7.3[71] | 2019-12-25[72] | TBA | TBA |
| 3.0 | 3.0.1[73] | 2020-12-25[74] | TBA | TBA |
범례: 구버전 이전 버전, 계속 유지 관리됨 최신 버전 향후 릴리즈 | ||||
참조
- ^ Shugo Maeda (17 December 2002). "The Ruby Language FAQ". Retrieved 2 March 2014.
- ^ Matsumoto, Yukihiro (13 February 2006). "Re: Ruby's lisp features". Retrieved 15 February 2020.
- ^ a b c d e f "History of Ruby".
- ^ "[FYI: historic] The decisive moment of the language name Ruby. (Re: [ANN] ruby 1.8.1)" (E-mail from Hiroshi Sugihara to ruby-talk).
- ^ "1.3 Why the name 'Ruby'?". The Ruby Language FAQ. Ruby-Doc.org. Retrieved April 10, 2012.
- ^ Yukihiro Matsumoto (June 11, 1999). "Re: the name of Ruby?". Ruby-Talk (Mailing list). Retrieved April 10, 2012.
- ^ "More archeolinguistics: unearthing proto-Ruby". Archived from the original on 6 November 2015. Retrieved 2 May 2015.
- ^ "[ruby-talk:00382] Re: history of ruby". Retrieved 2 May 2015.
- ^ "[ruby-list:124] TUTORIAL — ruby's features". Retrieved 2 May 2015.
- ^ "An Interview with the Creator of Ruby".
- ^ Yukihiro Matsumoto (October 2000). "Programming Ruby: Forward". Retrieved 5 March 2014.
- ^ "We retire Ruby 1.8.7". Retrieved 2 May 2015.
- ^ "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語RubyのJIS規格(JIS X 3017)制定について". Retrieved 2 May 2015.
- ^ "IPA 独立行政法人 情報処理推進機構:プレス発表 プログラム言語Ruby、国際規格として承認". Retrieved 2 May 2015.
- ^ "ISO/IEC 30170:2012". Retrieved 2017-03-10.
- ^ 웹 개발: 루비 온 레일즈.Devarticles.com(2007-03-22).2013-07-17일에 검색됨.
- ^ "Ruby 1.9.3 p0 is released". ruby-lang.org. October 31, 2011. Retrieved February 20, 2013.
- ^ "v1_9_3_0/NEWS". Ruby Subversion source repository. ruby-lang.org. September 17, 2011. Retrieved February 20, 2013.
- ^ 루비 1.9: 기대되는 것. slideshow.rubyforge.org2013-07-17일에 검색됨.
- ^ "Support for Ruby 1.9.3 has ended". Retrieved 2 May 2015.
- ^ 엔도, 유스케.(2013-02-24) Ruby 2.0.0-p0이 출시된다.Ruby-lang.org.2013-07-17일에 검색됨.
- ^ 엔도, 유스케.(2013-02-24) Ruby 2.0.0-p0이 출시된다.Ruby-lang.org.2013-07-17일에 검색됨.
- ^ usa (2016-02-24). "Support plans for Ruby 2.0.0 and Ruby 2.1". Ruby-lang.org. Retrieved 2017-04-18.
- ^ "Ruby 2.1.0 is released". December 25, 2013. Retrieved December 26, 2013.
- ^ "Semantic Versioning starting with Ruby 2.1.0". December 21, 2013. Retrieved December 27, 2013.
- ^ "Support for Ruby 2.1 has ended". Retrieved 4 April 2017.
- ^ "Ruby 2.2.0 Released". December 25, 2014. Retrieved January 4, 2015.
- ^ "ruby/NEWS at v2_2_0 · ruby/ruby · GitHub". GitHub. Retrieved 2 May 2015.
- ^ "Support of Ruby 2.2 has ended". Retrieved 29 Dec 2019.
- ^ Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2015). "Ruby 2.2.1 Released". Retrieved 12 July 2016.
{{cite web}}: CS1 maint : 복수이름 : 작성자 목록(링크) - ^ Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2015). "v2.2.1 ChangeLog". Retrieved 12 July 2016.
{{cite web}}: CS1 maint : 복수이름 : 작성자 목록(링크) - ^ Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2014). "Specifying non volatile registers for increase performance in ppc64". Retrieved 12 July 2016.
{{cite web}}: CS1 maint : 복수이름 : 작성자 목록(링크) - ^ Gustavo Frederico Temple Pedrosa, Vitor de Lima, Leonardo Bianconi (2014). "Specifying MACRO for increase performance in ppc64". Retrieved 12 July 2016.
{{cite web}}: CS1 maint : 복수이름 : 작성자 목록(링크) - ^ "Ruby 2.3.0 changes and features". Running with Ruby. dev.mensfeld.pl.
- ^ "Ruby/NEWS at v.2_3_0 - ruby/ruby". GitHub. Retrieved 25 December 2015.
- ^ "Ruby 2.4.0 Released". www.ruby-lang.org. Retrieved 2016-12-30.
- ^ "Ruby 2.5.0 Released". Retrieved 2018-05-02.
- ^ "Ruby 2.6.0 Released". Ruby Programming Language. 2018-12-25. Retrieved 2018-12-25.
- ^ "Ruby 2.7.0 Released". Ruby Programming Language. 2019-12-25. Retrieved 2019-12-25.
- ^ "Ruby 3.0.0 Released". Ruby Programming Language. 2020-12-25. Retrieved 2020-12-25.
- ^ "The Ruby Community's Christmas Releases". www.rubyinside.com.
- ^ "A Patch in Time: Securing Ruby".
- ^ "ruby-1.8.0 released!". www.ruby-lang.org.
- ^ "Plans for 1.8.7". www.ruby-lang.org.
- ^ "EOL for Ruby 1.8.7 and 1.9.2". www.ruby-lang.org.
- ^ "Ruby 1.9.3-p551 Released". www.ruby-lang.org.
- ^ "Ruby 1.9.0 Released". www.ruby-lang.org.
- ^ "Support for Ruby version 1.9.3 will end on February 23, 2015". www.ruby-lang.org.
- ^ "Support for Ruby 1.9.3 has ended". www.ruby-lang.org.
- ^ a b c "Ruby 2.0.0-p648 Released". www.ruby-lang.org.
- ^ "Ruby 2.0.0-p0 is released". www.ruby-lang.org.
- ^ "Ruby 2.1.10 Released". www.ruby-lang.org.
- ^ "Ruby 2.1.0 is released". www.ruby-lang.org.
- ^ "Support plans for Ruby 2.0.0 and Ruby 2.1". www.ruby-lang.org.
- ^ "Ruby 2.1.9 Released". www.ruby-lang.org.
- ^ "Ruby Issue Tracking System". bugs.ruby-lang.org.
- ^ a b "Support of Ruby 2.1 has ended". www.ruby-lang.org.
- ^ "Ruby 2.2.10 Released". www.ruby-lang.org.
- ^ "Ruby 2.2.0 Released". www.ruby-lang.org.
- ^ "Ruby 2.2.7 Released". www.ruby-lang.org.
- ^ "Ruby 2.3.8 Released". www.ruby-lang.org.
- ^ "Ruby 2.3.0 Released". www.ruby-lang.org.
- ^ a b "Support of Ruby 2.2 has ended". www.ruby-lang.org.
- ^ "Ruby 2.4.10 Released". Ruby Programming Language. 2020-03-31. Retrieved 2020-04-01.
- ^ "Ruby 2.4.0 Released". www.ruby-lang.org.
- ^ a b "Support of Ruby 2.4 has ended". www.ruby-lang.org.
- ^ a b c "Ruby 2.5.9 Released". Ruby Programming Language. 2021-04-05. Retrieved 2021-04-05.
- ^ "Ruby 2.5.0 Released". www.ruby-lang.org.
- ^ a b c "Ruby 2.6.7 Released". Ruby Programming Language. 2021-04-05. Retrieved 2021-04-05.
- ^ "Ruby 2.6.0 Released". www.ruby-lang.org.
- ^ "Ruby 2.7.3 Released". Ruby Programming Language. 2021-04-05. Retrieved 2021-04-05.
- ^ "Ruby 2.7.0 Released". www.ruby-lang.org.
- ^ "Ruby 3.0.1 Released". Ruby Programming Language. 2021-04-05. Retrieved 2021-04-05.
- ^ "Ruby 3.0.0 Released". www.ruby-lang.org.