Dart 3.11 출시 소식
Dart 3.11 출시 소식
이번 릴리스는 평소 작업 흐름에서 바로 체감할 수 있는 반응성과 도구 개선에 초점을 맞췄어요. 더 똑똑해진 분석 서버부터 pub 클라이언트의 새로운 기능, 강화된 AI 지원까지, Dart 3.11은 여러분이 개발하는 내내 흐름을 끊기지 않게 이어가도록 설계됐어요. 하나씩 살펴볼게요.
본문
Language updates
이번 Dart 릴리스에서는 새로운 언어 업데이트는 없어요.
Tools updates
Dart MCP & AI Support: Package URI
AI 코딩 어시스턴트를 더 잘 지원하기 위해 Dart와 Flutter MCP Server를 계속 개선하고 있어요.
MCP 서버에 read_package_uris라는 새 도구를 추가했어요. 이 도구는 AI 에이전트(예: Cursor, Gemini, Copilot)가 여러분 프로젝트의 패키지 URI를 읽어 컨텍스트에 담을 수 있게 해줘요. 덕분에 AI 어시스턴트가 코드를 생성할 때 의존성을 정확하게 읽고, 해석하고, 활용할 수 있어요.
Analysis server
이번 릴리스에는 Dart 분석 서버의 성능 개선이 많이 담겨 있어요. 서버가 이제 "fine-grained dependencies"(세밀한 의존성)를 사용해서, IDE 세션 중 어떤 코드를 다시 분석해야 할지 판단하는 게 훨씬 똑똑해졌어요.
또한 특정 상황에서의 분석 성능도 개선했는데, 심링크 때문에 생긴 디렉터리 구조의 순환 구조를 분석하거나, 상수 객체가 깊게 중첩된 트리를 분석할 때가 그 예예요.
서버가 이제 컴파일된 분석기 플러그인 진입점을 캐시하기 때문에, IDE 세션과 dart analyze·flutter analyze 명령에서 시작 시간이 더 빨라졌어요.
마지막으로 많은 분석 서버 기능에서 "dot shorthands" 지원을 강화했는데, 특히 코드 완성(completion), 퀵 픽스(quick fixes), 퀵 어시스트(quick assists)에서 두드러져요.
Pub updates
Pub workspaces에서 Glob 지원
Pub workspaces에서 이제 glob을 사용해 패키지를 선언할 수 있어요. 덕분에 특정 디렉터리의 모든 패키지를 하나하나 나열하지 않아도 pub workspace에 쉽게 포함할 수 있어요.
# Before
name: workspace
environment:
sdk: ^3.10.0
workspace:
- pkg/a
- pkg/b
- pkg/c
# After
name: workspace
environment:
sdk: ^3.11.0
workspace:
- pkg/* # Adds all packages inside pkg.
참고로 이 기능을 쓰려면 pubspec.yaml의 Dart 버전이 3.11 이상이어야 해요.
Pub cache gc
Pub은 늘 전역 PUB_CACHE 하나에 패키지를 저장해서, 같은 패키지를 두 번 내려받는 일이 없게 해왔어요. 그런데 Pub이 어떤 프로젝트가 캐시를 사용하는지 추적하지 않았기 때문에 어떤 패키지가 낡았는지 알 수가 없었고, 시간이 지나면서 패키지 버전이 계속 쌓이게 됐어요. 지금까지는 유일한 해결책이 캐시를 통째로 지우고 처음부터 다시 시작하는 것뿐이었죠.
Dart 3.9부터는 pub get이 해석(resolve)된 프로젝트의 경로를 캐시 안에 저장하고 있어요. 이제 Dart 3.11에서 pub cache gc 명령을 도입했는데요, 이 명령은 모든 "살아 있는" 프로젝트를 훑으면서 그들이 의존하는 패키지 버전을 표시하고 나머지는 삭제해요. 이렇게 해서 소중한 디스크 공간을 되찾을 수 있어요.
> dart pub cache gc
Found 3 active projects:
* /home/yourusername/projects/pub
* /home/yourusername/projects/pub-dev
* /home/yourusername/projects/pana
All other projects will need to run `dart pub get` again to work correctly.
Will recover 2 GB.
Are you sure you want to continue? (y/N)? y
Deleting unused cache entries... (4.5s)
>
Wrap up
Dart 3.11은 여기까지예요! 이번 릴리스는 평소 개발에서 차이를 만들어 내는 디테일에 집중했어요.
전체 변경 사항이 궁금하다면 Dart SDK changelog를 확인해 보세요. 언제나 그렇듯 여러분의 피드백도 환영해요!
더 알아보기
- Dart SDK changelog에서 이번 릴리스의 전체 변경 사항을 확인할 수 있어요.
- Dart and Flutter MCP Server에서 AI 코딩 어시스턴트 지원을 더 알아볼 수 있어요.
- Pub workspaces 문서에서 glob을 이용한 패키지 선언을 더 자세히 볼 수 있어요.