[1일 1식 라라벨 47호] 라라벨 6.0 릴리즈!

1일 1식 라라벨 2019년 9월 구독자를 모집 중입니다. 여기에서 신청하실 수 있습니다.

라라벨 6.0이 릴리즈되었습니다! 이번 버전은 LTS 입니다. 직전 LTS는 5.5 였습니다. 버그 수정은 2021년 9월 3일까지, 보안 수정은 2022년 9월 3일까지 지원합니다.

시맨틱 버저닝

이번 버전에 들어서면서 가장 큰 변화라고 할 수 있는 건 역시 시맨틱 버저닝을 채택한 것이라고 할 수 있습니다. 이전까지 라라벨은 독자적인 버전 체계를 가지고 있었습니다. (참고, 라라벨은 시맨틱 버저닝을 사용하지 않는다 – 이현석의 우체통) 버전 넘버 x.y.z 중 x를 패러다임 변화, y를 메이저(하위호환성이 지켜지지 않을 수 있음), z를 마이너 변화로 관리해왔는데요, 6.0 버전부터는 x-메이저, y-마이너, z-버그패치가 됩니다. 전과달리 y까지는 하위호환성이 유지되니 안심하고 업데이트하시면 됩니다.

라라벨 Vapor 호환

6.0 Vapor와 호환이 됩니다. 오늘 모던 PHP 유저 그룹에서 Vapor 관련 발표를 하기로 되어있었어요. 6.0으로 업데이트해야 Vapor를 쓸 수 있는 줄 알고 부랴부랴 업데이트를 했는데, 해보니 5 버전에서도 사용 가능하더군요.

Ignition

어제 소개해드렸던 에러/예외 페이지 패키지 Ignition이 내장되어있습니다. composer.json 파일을 보면 이전 에러 페이지 패키지인 Whoops가 제거된걸 볼 수 있는데, 완전히 대체된건 아닙니다. Ignition이 Whoops에 의존한다는 것 같네요.

향상된 인가 리스폰스

지금까지는 권한 확인 결과를 확인하고 그 결과에 따라 다른 메시지를 보여주기가 어려웠습니다. 6 버전 부터는 Gate::inspect() 매서드로 쉽게 결과를 확인할 수 있고, 컨트롤러에서 인가 헬퍼 매서드를 써도 결과에 따라 메시지가 다르게 나타난다고 합니다.

잡 미들웨어

HTTP 리퀘스트는 미들웨어가 있었지만, 잡에는 미들웨어가 없었습니다. 특정 시간 동안 너무 많이 실행되는지 검사하는 등의 로직을 미들웨어로 빼서 잡의 handle() 매서드를 더욱 명료하게 유지할 수 있게 되었습니다.

레이지 컬렉션

제너레이터를 이용해서 더 적은 리소스를 사용하는 컬렉션인 레이지 컬렉션이 추가되었습니다. 며칠전 대량의 엘로퀀트 모델을 다루는 방법에서 소개했던 cursor() 매서드가 레이지 컬렉션을 반환하도록 변경되었습니다.

향상된 엘로퀀트 서브쿼리

조나단 리인잉크가 라라콘 US 2019에서 발표했던 내용이 6.0에 정식으로 포함되었습니다. 리인잉크가 관련하여 글을 쓴 것 같더군요. 조만간 공부해서 소개하도록 하겠습니다.

라라벨 UI

라라벨 기본 프론트 엔드 스캐폴드가 laravel/ui 라는 별도 패키지로 분리되었습니다. 이제 라라벨의 기본 스케폴딩은 부트스트랩도 Vue도 적용되지 않는다고 하네요. 패키지를 설치하고 간단한 아티즌 커맨드로 기존 스타일의 UI를 적용할 수 있다고 합니다.

마치며

뭐랄까 새로 추가된 기능들을 통해 더 강력하고 더 깔끔해진 느낌이네요. 앞으로 기회 되는대로 새로 추가된 기능을 하나씩 자세히 소개해보도록 하겠습니다.

1일 1식 라라벨 47호

2019년 9월 4일