릴리스 정책
번역일: 2026년 6월 20일
릴리스 정책
버전 관리 체계
Laravel과 공식 1st-party 패키지들은 시맨틱 버전 관리(Semantic Versioning)를 따릅니다. 메이저 버전은 매년 1분기 경에 출시되며, 마이너 및 패치 버전은 매주 출시될 수도 있습니다. 마이너 및 패치 버전에는 절대로 하위 호환성을 깨는 변경 사항이 포함되지 않습니다.
애플리케이션이나 패키지에서 Laravel 프레임워크 또는 그 구성 요소를 참조할 때는 항상 ^10.0과 같은 버전 제약 조건을 사용하세요. Laravel의 메이저 릴리스에는 하위 호환성을 깨는 변경 사항이 포함될 수 있기 때문입니다. 다만, 새로운 메이저 버전으로의 업그레이드를 하루 이내에 완료할 수 있도록 항상 노력합니다.
이름 있는 인수(Named Arguments)
PHP의 이름 있는 인수는 Laravel의 하위 호환성 보장 범위에 포함되지 않습니다. 코드베이스 개선을 위해 필요한 경우 함수 인수의 이름이 변경될 수 있습니다. 따라서 Laravel 메서드를 호출할 때 이름 있는 인수를 사용하는 경우, 향후 파라미터 이름이 바뀔 수 있다는 점을 인지하고 신중하게 사용하시기 바랍니다.
지원 정책
모든 Laravel 릴리스는 출시 후 18개월간 버그 수정이 제공되며, 2년간 보안 수정이 제공됩니다. Lumen을 포함한 그 외 라이브러리들은 최신 메이저 버전에 한해서만 버그 수정이 이루어집니다. 또한 Laravel이 지원하는 데이터베이스 버전은 데이터베이스 문서에서 확인할 수 있습니다.
| 버전 | PHP (*) | 출시일 | 버그 수정 종료 | 보안 수정 종료 |
|---|---|---|---|---|
| 8 | 7.3 - 8.1 | 2020년 9월 8일 | 2022년 7월 26일 | 2023년 1월 24일 |
| 9 | 8.0 - 8.2 | 2022년 2월 8일 | 2023년 8월 8일 | 2024년 2월 6일 |
| 10 | 8.1 - 8.3 | 2023년 2월 14일 | 2024년 8월 6일 | 2025년 2월 4일 |
| 11 | 8.2 - 8.4 | 2024년 3월 12일 | 2025년 9월 3일 | 2026년 3월 12일 |
(*) 지원되는 PHP 버전
Laravel 10
Laravel 8부터 연 1회 메이저 릴리스 체계로 전환되었습니다. 이전에는 6개월마다 메이저 버전이 출시되었습니다. 이 전환은 커뮤니티의 유지보수 부담을 줄이고, 하위 호환성을 유지하면서도 강력하고 완성도 높은 기능을 꾸준히 제공하기 위한 결정이었습니다. 실제로 Laravel 9에서도 하위 호환성을 깨지 않으면서 다양한 기능이 추가되었습니다.
이러한 방침에 따라, 향후 "메이저" 버전 업그레이드는 상위 의존성 업그레이드와 같은 "유지보수" 작업 위주로 이루어질 가능성이 높습니다. 이번 릴리스 노트에서도 그러한 흐름을 확인할 수 있습니다.
Laravel 10은 Laravel 9.x의 개선 사항을 이어받아, 프레임워크 전반의 애플리케이션 스켈레톤 메서드와 클래스 생성에 사용되는 모든 스텁 파일에 인수 타입 및 반환 타입을 추가했습니다. 또한 외부 프로세스를 실행하고 제어하기 위한 개발자 친화적인 추상화 레이어가 새로 도입되었으며, 애플리케이션의 "기능 플래그(feature flags)"를 편리하게 관리할 수 있는 Laravel Pennant가 공개되었습니다.
PHP 8.1
Laravel 10.x는 최소 PHP 8.1 버전을 요구합니다.
타입 힌트 추가
애플리케이션 스켈레톤 및 스텁 타입 힌트 기여자: Nuno Maduro
Laravel은 초기부터 당시 PHP에서 지원하는 타입 힌팅 기능을 최대한 활용해 왔습니다. 이후 PHP는 기본 타입 힌트, 반환 타입, 유니온 타입 등 다양한 타입 관련 기능을 새롭게 추가했습니다.
Laravel 10.x에서는 애플리케이션 스켈레톤과 프레임워크가 사용하는 모든 스텁 파일에 인수 타입 및 반환 타입이 메서드 시그니처에 명시적으로 추가되었습니다. 아울러 불필요한 doc block 형태의 타입 힌트 주석은 제거되었습니다.
이 변경 사항은 기존 애플리케이션과 완전히 하위 호환됩니다. 타입 힌트가 없는 기존 코드도 정상적으로 동작합니다.
Laravel Pennant
Laravel Pennant 개발자: Tim MacDonald
새로운 공식 1st-party 패키지인 Laravel Pennant가 출시되었습니다. Pennant는 애플리케이션의 기능 플래그(feature flags)를 가볍고 간결하게 관리할 수 있는 방법을 제공합니다. 기본으로 인메모리 array 드라이버와 영속적인 저장을 위한 database 드라이버를 제공합니다.
Feature::define 메서드를 사용하면 기능을 쉽게 정의할 수 있습니다:
use Laravel\Pennant\Feature;
use Illuminate\Support\Lottery;
Feature::define('new-onboarding-flow', function () {
return Lottery::odds(1, 10);
});기능을 정의한 후에는 현재 사용자가 해당 기능에 접근 가능한지 간단히 확인할 수 있습니다:
if (Feature::active('new-onboarding-flow')) {
// ...
}Blade 디렉티브도 지원하여 뷰에서도 편리하게 사용할 수 있습니다:
@feature('new-onboarding-flow')
<div>
<!-- ... -->
</div>
@endfeaturePennant는 이 외에도 다양한 고급 기능과 API를 제공합니다. 자세한 내용은 Pennant 공식 문서를 참고하세요.
외부 프로세스 실행
프로세스 추상화 레이어 기여자: Nuno Maduro, Taylor Otwell
Laravel 10.x에서는 외부 프로세스를 시작하고 제어할 수 있는 새로운 Process 파사드가 도입되었습니다:
use Illuminate\Support\Facades\Process;
$result = Process::run('ls -la');
return $result->output();프로세스 풀을 활용하면 여러 프로세스를 동시에 편리하게 실행하고 관리할 수 있습니다:
use Illuminate\Process\Pool;
use Illuminate\Support\Facades\Process;
[$first, $second, $third] = Process::concurrently(function (Pool $pool) {
$pool->command('cat first.txt');
$pool->command('cat second.txt');
$pool->command('cat third.txt');
});
return $first->output();테스트 시에는 프로세스를 페이크(fake)로 대체할 수 있어 테스트 작성도 용이합니다:
Process::fake();
// ...
Process::assertRan('ls -la');프로세스 상호작용에 대한 자세한 내용은 프로세스 공식 문서를 참고하세요.
테스트 프로파일링
테스트 프로파일링 기여자: Nuno Maduro
Artisan test 명령어에 --profile 옵션이 추가되어, 애플리케이션에서 가장 느린 테스트를 쉽게 파악할 수 있습니다:
php artisan test --profile실행 속도가 느린 테스트는 CLI 출력에 바로 표시됩니다:
Pest 스캐폴딩
새 Laravel 프로젝트를 생성할 때 이제 Pest 테스트 스캐폴딩을 기본으로 선택할 수 있습니다. Laravel 인스톨러로 새 애플리케이션을 생성할 때 --pest 플래그를 추가하면 됩니다:
laravel new example-application --pest제너레이터 CLI 프롬프트
제너레이터 CLI 프롬프트 기여자: Jess Archer
개발자 경험을 향상시키기 위해, Laravel의 모든 내장 make 명령어는 이제 인수 없이 실행해도 됩니다. 필요한 인수를 입력하지 않으면 인터랙티브 프롬프트를 통해 안내해 줍니다:
php artisan make:controllerHorizon / Telescope UI 개선
Horizon과 Telescope의 UI가 새로워졌습니다. 타이포그래피, 간격, 디자인이 전반적으로 개선되어 더욱 모던한 모습을 갖추게 되었습니다:
