Ruby 3.2.0 출시 (웹어셈블리를 곁들인)

크리스마스를 맞아 루비 3.2.0 버전이 출시되었습니다. 사실 예전만큼의 인기를 누리진 못하는 언어이지만, 단순하고 유연하다는 장점을 통해 웹개발(Ruby on Rails)이나 범용 스크립트(Cli)로 종종 사용되곤 합니다. 실제로 깃허브, 트위치, 에어비앤비등이 초기에 루비온레일즈로 빠르게 개발해서 시장에 제품을 출시한 이력이 있습니다. 저도 예전에 멋쟁이사자처럼 루비온레일즈 강의를 듣고 웹을 본격적으로 시작했었는데, 3일만에 대학교 팀프로젝트를 완성하고 학기 내내 놀았던 경험이 있네요 ㅋㅋ 본론으로 다시 돌아와서 이번 버전에서 변경된 사항에 대해 짧게 소개해보겠습니다. 1. WASI기반의 웹어셈블리 지원 웹어셈블리가 정말 핫한것 같습니다. 이제 루비에서도 지원합니다. 웹 브라우저, 엣지 서버에서 루비로 작성한 스크립트를 실행할 수 있습니다. 2. YJIT 정식 지원 YJIT는 쇼피파이(Shopify)가 구축한 JIT(Just-In-Time) 컴파일러입니다. JIT 컴파일 방식은 정적 컴파일 + 동적 컴파일을 혼합한 방식으로, 소프트웨어의 빠른 워밍업과 성능 향상을 달성할 수 있는 방식입니다. 3.1에서 실험 단계로 출시되었었는데, 3.2에서 정식으로 채택되었습니다. 루비의 가장 큰 단점이 성능이였는데, YJIT 도입으로 Ruby 인터프리터보다 41% 더 빨라졌다고 합니다. 3. ReDOS 공격에 대한 정규표현식 개선 ReDOS는 정규표현식을 사용자로부터 입력받을 때 발생할 수 있는 보안 문제입니다. 일반적으로 ReDOS, Regex DOS 등으로 불리며 자체적으로 반복되는 그룹화 정규식과 정규식 검증 로직을 만족하는 대량의 문자 등을 이용해서 한번의 웹 요청으로 서비스의 가용성을 떨어뜨리는 방법입니다. 이로 인해 시스템의 자원을 고갈시킬수 있습니다. 이번에 ReDOS에 대한 매칭 알고리즘을 개선하여 선형시간안에 매칭이 가능하도록 개선되었다고 합니다. 또한 정규식 매칭에 Regexp.timeout = 1.0과 같이 타임아웃을 설정할 수 있는 기능이 추가되었다고 합니다. 4. 그 외 문법 제안기능, 에러 강조기능, 언어 개선등의 작업이 이루어졌다고 합니다. 전체 내용은 아래 루비 공식 홈페이지의 글에서 확인해보실 수 있습니다.

Ruby 3.2.0 Released

Ruby-lang

Ruby 3.2.0 Released

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 12월 27일 오전 11:12

댓글 0