루비
루비 2.6
루비 2.5는 루비의 최신 안정 버전입니다. 많은 새로운 기능과 개선(향상)은 루비에 대한 점점 더 다양하고 확장되는 요구 사항을 위해 포함되어 있습니다. 페도라 26의 루비 2.4에서 페도라 28의 루비 2.5로의 주요 최신화를 통해, 페도라는 우수한 루비 개발 기술환경이 되었습니다.
주목 할만한 신규 변경은 다음을 포함합니다:
-
즉시(JIT) 컴파일러의 초기 구현을 사용 할 수 있습니다. JIT 컴파일러는 모든 Ruby 프로그램 실행의 성능을 향상 시키는 것을 목표로 합니다. 다른 언어를 위한 일반 JIT 컴파일러와 달리, 루비의 JIT 컴파일러는 C 코드를 디스크에 출력하고 네이티브 코드(native code)를 발생하는데 공통 C 컴파일러 처리를 생성하는 독특한 방식으로 JIT 컴파일을 실행합니다.
이와 같은 JIT 출시의 주요 목적은 2.6 출시 전에 해당 기술환경에서 작동하는지 확인하고 보안 위험을 찾을 수 있도록 점검 할 수 있는 기회를 제공합니다. JIT 컴파일러는 루비가 런타임에서 사용 할 수 있도록 필요한 GCC, Clang 또는 마이크로소프트 VC++로 제작 될 때 지원됩니다. 그렇지 않으면 지금은 사용 할 수 없습니다.
루비 2.6.0 미리보기3에서, Optcarrot이라 불리는 CPU-집약적인 벤치마크 부하시험에서 루비 2.5보다 1.7배 빠른 성능을 달성했습니다. Rails 응용프로그램과 같은 메모리-집약적 부하시험에 대한 성능도 향상될 것입니다.
-
새로운 `RubyVM::AST`실험 모듈은 이제 사용 할 수 있습니다. 이 모듈은 제공된 문자열 루비코드를 구문 분석하는 '구문분석' 방법과 AST(요약된 문법 구조) 노드를 반환, 그리고 제공된 루비 코드 파일을 구문 분석하는 '구문분석_파일' 방법과 AST 노드 반환을 가지고 있습니다. `RubyVM::AST::Node`클래스 또한 소개되었습니다. 노드 객체에서 위치 정보와 하위 노드를 가져 올 수 있습니다. 이와 같은 기능은 실험적입니다. AST 노드의 구조 호환성은 보장하지 않습니다.
-
신규 기능:
-
신규 별칭 `then`을 `Kernel#yield_self`로 추가합니다.
-
Random.bytes
추가. -
Binding#source_location
추가. 이와 같은 방법은 바인딩의 원천 위치,FILE
및 `LINE`의 2-요소배열을 반환합니다. -
`:exception`옵션을 추가하고 `Kernel.#system`이 거짓을 반환하는 대신 오류가 발생하도록 합니다.
-
rescue
없는 `else`는 이제 문법 오류를 발생합니다. [실험적인] -
상수 이름은 비-아스키 대문자와 함께 시작합니다.
-
무한 범위 '(1..)'이 도입되었습니다. 이는 끝이 없는 것처럼 작동합니다.
-
다음과 같은 성능 개선이 이루어졌습니다:
-
우리는 더 이상
$SAFE`에 대해 신경 쓸 필요가 없기 때문에 `Proc#call`속도를 높였습니다. `lc_fizzbuzz
비교 실험은 40% 속도 개선을 보여줍니다. -
블럭은 블럭 매개변수가 전달되는 'block.call' 속도를 높였습니다. 루비 2.6은 전달된 블록 호출의 성능을 개선합니다. 마이크로-성능측정으로 2.6배 향상을 확인 할 수 있습니다.
-
트랜지언트 힙(
theap
)이 도입되었습니다. 'theap’은 특정 클래스에 의해 지시되는 짧은-수명의 메모리 객체를 위해 관리되는 힙입니다. 예를 들면, 작고 짧은-수명의 해쉬 객체를 만드는 것은 두 배정도 빠릅니다.rdoc
시험측정을 통해, 6-7%의 성능 향상을 확인 할 수 있습니다.
버전 2.5 이후의 다른 주목 할만한 변경:
-
`$SAFE`는 프로세서 전역 상태이고 다시 0으로 설정 할 수 있습니다.
-
safe_level`을 `ERB.new`로 전달하는 것은 더 이상 사용되지 않습니다. `trim_mode
와eoutvar
인수는 이제 키워드 인수입니다. -
병합된 RubyGems 3.0.0.beta2.
-
Bundler를 기본 gem으로 병합합니다.
이 출시에 대한 더 상세한 정보를 위해 업스트림 출시 공표를 참고하세요.
Want to help? Learn how to contribute to Fedora Docs ›