Offcanvas

개발자

루비(Ruby) 버전 3.0.0, 병렬실행 및 타입설명 지원

2021.01.05 Paul Krill  |  InfoWorld
오픈소스 동적 프로그래밍 언어 ‘루비(Ruby)’의 버전 3.0.0이 프로덕션 릴리즈로 지난 12월 25일(현지 시각) 공개됐다. 새 버전의 주요 기능으로는 병렬 실행 및 타입 설명 기능 등이 포함된다. 
 
ⓒGetty Images

병렬 실행(Parallel execution)은 스레드 안전 문제없이 병렬 실행 기능을 제공하고자 고안된 동시추상화 모델이다. 액터 모델(Actor model)과 유사하다. 이는 ‘랙터(Rector)’라는 실험적 기능의 형태로 제공된다.

이를 사용하면 여러 랙터를 생성해 병렬로 실행할 수 있다. 여기서 랙터는 일반 객체를 공유할 수 없기 때문에 스레드로부터 안전한 병렬 프로그램을 만들 수 있다. 랙터 간의 통신은 메시지 패싱을 통해 지원된다. 하지만 객체 공유를 제한하고자 랙터에서는 루비 구문에 몇 가지 제한을 적용한다.  

또한 루비 3.0.0에는 RBS가 도입됐다. 이는 루비 프로그램 타입을 기술하기 위한 언어다. 루비 3.0.0은 RBS로 작성된 타입 정의를 패싱하고 처리하는 rbs 젬을 포함한다. 릴리즈 노트에 따르면 RBS를 지원하는 타입 프로파일러와 다른 도구들을 포함한 타입 검사기는 RBS 정의를 통해 루비 프로그램을 더 잘 이해한다. 

RBS는 루비 프로그램에서 일반적으로 볼 수 있는 패턴을 지원하기 위해 고안됐다. 또 유니언 타입(union types), 메소드 오버로딩(method overloading), 제네릭(generics)을 포함한 고급 타입을 작성할 수 있다. 인터페이스 타입을 사용해 덕 타이핑(Duck typing)도 지원한다. 

루비 3.0.0은 이곳(ruby-lang.org)에서 다운로드받을 수 있다. 이 밖에 루비 3.0.0의 다른 기능은 아래와 같다.

• 블로킹 명령을 인터셉트할 수 있는 Fiber#scheduler가 제공된다. 이전에 Thread#scheduler로 식별됐던 이 기능은 기존 코드를 변경하지 않고 가벼운 동시성을 허용한다. 
• 또 다른 실험적 기능인 메모리 보기(Memory view)는 확장 라이브러리 간에 숫자 배열 또는 비트맵 이미지와 같은 원시 메모리 영역을 교환하도록 설정된 C-API다. 또한 이 라이브러리는 모양, 요소 형태 등으로 구성된 메모리 영역의 메타 데이터를 공유할 수 있다. 
• 루비 MJIT(Method-based Just In Time) 컴파일러의 성능이 향상됐다. 
• 키워드 인수와 다른 인수 분리 
Hash#except 지원
• 오른쪽으로 값을 할당하는 명령 추가
end 없는 메소드 정의 추가
• 검색 패턴 추가 

한편 루비 버전 3.0.0의 프리뷰는 지난 2020년 9월 25일에 공개됐다. 이어서 후속 프리뷰와 RC 버전은 각각 12월 8일과 12월 20일에 출시됐다. ciokr@idg.co.kr 
 
Sponsored
추천 테크라이브러리

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.