이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

2024년 9월 (버전 1.94)

업데이트 1.94.1: 이 업데이트는 해당 보안 문제를 해결합니다.

업데이트 1.94.2: 이 업데이트는 해당 문제들을 해결합니다.

다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code의 2024년 9월 릴리스에 오신 것을 환영합니다. 이 버전에는 여러분이 좋아하실 만한 많은 업데이트가 있으며, 주요 내용은 다음과 같습니다.

온라인에서 릴리스 노트를 읽으려면 code.visualstudio.com업데이트로 이동하세요. Insiders: 새로운 기능을 가능한 한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insiders를 다운로드하여 최신 업데이트를 사용할 수 있을 때 즉시 사용해 볼 수 있습니다.

GitHub Copilot

채팅에서 언어 모델 전환

이전에, OpenAI o1 모델의 조기 액세스에 등록할 수 있다고 발표했습니다. 액세스 권한이 부여되면 VS Code의 Copilot Chat에 Copilot Chat 모델 선택 컨트롤이 제공되어 채팅 대화에 사용할 모델 버전을 선택할 수 있습니다.

Copilot model picker control in the Chat view enables switching to another language model.

인라인 채팅의 GPT-4o

편집기에서 채팅을 사용할 때 더 빠르고 정확하며 고품질의 코드와 설명을 제공하기 위해 Copilot 인라인 채팅을 GPT-4o로 업그레이드했습니다.

채팅에서 공개 코드 일치

GitHub Copilot이 GitHub.com에서 공개적으로 사용 가능한 코드와 일치하는 코드를 반환하도록 허용할 수 있습니다. 이 기능이 조직 구독 또는 개인 구독에 대해 활성화되면, Copilot 코드 완성은 이미 감지된 일치 항목에 대한 자세한 정보를 제공했습니다. 이제 Copilot Chat에서도 이러한 공개 코드 일치 항목을 표시합니다.

이 기능이 조직 또는 구독에 대해 활성화된 경우, 응답 끝에 일치 항목 보기 링크가 있는 메시지가 표시될 수 있습니다. 링크를 선택하면 일치하는 코드 참조에 대한 자세한 정보가 표시되는 편집기가 열립니다.

Chat code referencing example.

GitHub 블로그에서 GitHub Copilot의 코드 참조에 대한 자세한 정보를 얻으세요.

채팅에서 파일 제안

채팅 입력 필드에서 이제 #<파일 이름>을 입력하여 파일 이름을 제안받고 프롬프트에 컨텍스트로 빠르게 첨부할 수 있습니다. 이는 채팅 보기, 빠른 채팅, 인라인 채팅 및 노트북 채팅과 같이 파일 첨부를 지원하는 채팅 위치에서 작동합니다.

Copilot 응답에 언급된 작업 영역 파일 경로의 렌더링을 개선했습니다. 이러한 경로는 @workspace 질문을 할 때 매우 일반적입니다.

가장 먼저 눈에 띄는 것은 작업 영역 파일 경로에 파일 아이콘이 포함된다는 점입니다. 이를 통해 채팅 응답에서 쉽게 구분할 수 있습니다. 파일 아이콘은 현재 파일 아이콘 테마를 기반으로 합니다.

Paths to workspace files in the response now render using file icons.

이 경로들은 상호 작용 가능한 링크이므로, 해당 파일을 열려면 선택하기만 하면 됩니다. 드래그 앤 드롭을 사용하여 새 편집기 그룹에서 파일을 열거나, 드롭하기 전에 Shift를 누르고 텍스트 편집기에 삽입할 수도 있습니다.

기본적으로 이러한 링크는 파일 이름만 표시하지만, 위에 마우스를 올리면 전체 파일 경로를 볼 수 있습니다.

Hovering over a workspace path to see the full workspace path.

또한 이러한 경로 중 하나를 마우스 오른쪽 버튼으로 클릭하여 리소스의 상대 경로 복사 또는 운영 체제 파일 탐색기에서 파일 표시와 같은 추가 명령이 있는 컨텍스트 메뉴를 열 수 있습니다.

The context menu for a workspace path in chat provides options to open the file or copy its path.

다음 반복에서 작업 영역 경로 렌더링을 더욱 개선하고, 응답에서 기호 이름에도 유사한 개선 사항을 적용할 계획입니다.

채팅 컨텍스트 추가를 위한 파일 드래그 앤 드롭

이제 작업 영역에서 직접 채팅으로 파일을 끌어다 놓거나 편집기 탭을 끌어다 놓아 채팅 프롬프트에 대한 컨텍스트로 추가 파일을 쉽게 첨부할 수 있습니다. 인라인 채팅의 경우, Shift를 누른 채 파일을 드롭하면 편집기에서 열지 않고 컨텍스트로 추가됩니다.

히스토리에 포함된 파일 첨부

채팅 요청에 관련 컨텍스트로 파일 또는 편집기 선택 사항을 첨부하는 방법은 여러 가지가 있습니다. 이전에는 이 컨텍스트가 현재 요청에 대해서만 추가되었으며 후속 요청의 히스토리에는 포함되지 않았습니다. 이제 이러한 첨부 파일이 히스토리에 유지되므로 다시 첨부할 필요 없이 계속 참조할 수 있습니다.

Chat conversation shows that Copilot keeps track of attached files across multiple prompts.

Python 네이티브 REPL의 인라인 채팅 및 완성

Python 확장에서 사용하는 네이티브 REPL 편집기는 이제 입력 상자에서 Copilot 인라인 채팅 및 코드 완성 기능을 직접 지원합니다.

노트북에서 생성된 코드 수락 및 실행

노트북에서 코드를 생성하기 위해 Copilot 인라인 채팅을 사용할 때, 이제 인라인 채팅에서 생성된 코드를 수락하고 직접 실행할 수 있습니다.

노트북 채팅에서 변수 첨부

노트북에서 Copilot을 사용할 때 이제 Jupyter 커널의 변수를 요청에 첨부할 수 있습니다. 변수를 추가하면 채팅 요청의 컨텍스트를 더 정밀하게 제어할 수 있으므로 Copilot에서 더 관련성 높은 응답을 얻을 수 있습니다.

인라인 채팅에서 # 뒤에 변수 이름을 입력하거나 📎 컨트롤 (⌘/ (Windows, Linux Ctrl+/))을 사용하여 컨텍스트 변수를 추가할 수 있습니다.

새롭게 디자인된 채팅 사용자 경험

채팅 보기의 새로운 환영 경험을 깔끔하게 새로고침하고 채팅 입력 영역의 레이아웃을 업데이트했습니다. 이제 @ 버튼을 사용하여 설치한 확장 프로그램의 채팅 참가자 및 슬래시 명령을 포함한 사용 가능한 채팅 참가자 목록을 쉽게 찾을 수 있습니다. 채팅 입력 상자에 / 또는 @를 입력하여 참가자 및 슬래시 명령을 찾을 수도 있습니다.

Updated Chat view welcome experience.

의미론적 검색 결과 (미리 보기)

설정: github.copilot.chat.search.semanticTextResults

검색 보기에서는 파일을 정확하게 검색할 수 있습니다. 이제 검색 보기에 Copilot을 사용하여 의미론적으로 관련성 높은 검색 결과를 제공하는 기능이 추가되었습니다.

이 기능은 아직 미리 보기 상태이며 기본적으로 활성화되어 있지 않습니다. 사용해 보시고 의견을 알려주세요!

테스트 실패 수정 (미리 보기)

설정: github.copilot.chat.fixTestFailure.enabled

실패한 단위 테스트를 진단하는 데 도움이 되는 특수 로직을 추가했습니다. 이 로직은 일부 시나리오에서 /fix 슬래시 명령으로 트리거되며, /fixTestFailure 슬래시 명령으로 직접 호출할 수도 있습니다. 이 명령은 기본적으로 채팅에서 활성화되어 있지만 github.copilot.chat.fixTestFailure.enabled 설정을 통해 비활성화할 수 있습니다.

자동화된 테스트 설정 (실험)

설정: github.copilot.chat.experimental.setupTests.enabled

작업 영역에 대한 테스트 설정을 구성하는 데 도움이 될 수 있는 실험적인 /setupTests 슬래시 명령을 추가했습니다. 이 명령은 테스트 프레임워크를 추천하고, 설정 및 구성 단계를 제공하며, VS Code에서 테스트 통합을 제공하는 VS Code 확장을 제안할 수 있습니다. 이를 통해 코드 테스트를 시작하는 데 드는 시간과 노력을 절약할 수 있습니다.

/tests 명령을 사용하여 코드에 대한 테스트를 생성할 때, 작업 영역에 해당 통합이 아직 설정되지 않은 것으로 보이면 /setupTests 및 테스트 확장을 추천할 수 있습니다.

채팅에서 디버깅 시작 (실험)

설정: github.copilot.chat.experimental.startDebugging.enabled

이번 마일스톤에서는 실험적인 /startDebugging 슬래시 명령을 개선했습니다. 이 명령을 사용하면 실행 구성을 쉽게 찾거나 만들고 애플리케이션 디버깅을 원활하게 시작할 수 있습니다. Copilot Chat에서 @vscode를 사용하면 이제 /startDebugging이 기본적으로 제공됩니다.

A user types /startDebugging flask app port 3000 in the panel chat and is provided with the launch configuration.

명령 센터에서 채팅 (실험)

설정: chat.commandCenter.enabled

채팅에 액세스하기 위한 명령 센터 항목을 실험 중입니다. 다양한 채팅 경험 시작 또는 프롬프트에 컨텍스트 첨부와 같은 모든 관련 채팅 명령에 빠르게 액세스할 수 있습니다. 명령 센터 자체를 활성화해야 채팅 명령 센터 항목이 표시된다는 점에 유의하세요.

Chat Command Center button and the drop-down menu with relevant chat actions.

향상된 시간 컨텍스트 (실험)

설정: github.copilot.chat.experimental.temporalContext.enabled

시간 컨텍스트를 사용하면 최근에 열거나 편집한 파일을 채팅 컨텍스트의 일부로 고려하도록 인라인 채팅에 지시할 수 있습니다. 이 기능을 개선했으며 모든 분들이 사용해 보시도록 권장합니다.

사용자 지정 지침 (실험)

설정: github.copilot.chat.experimental.codeGeneration.useInstructionFiles

설정: github.copilot.chat.experimental.testGeneration.instructions

지난 마일스톤에서 사용자 지정 코드 생성 지침을 도입했습니다. 작업 영역의 .github/copilot-instructions.md 파일에 공유 지침을 정의하도록 이 기능을 확장했습니다. 이러한 일반 지침은 사용자 지정 코드 생성 지침을 보완합니다. github.copilot.chat.experimental.codeGeneration.useInstructionFiles 설정을 사용하여 코드 생성 지침 파일을 활성화합니다.

또한, 설정을 통해 테스트 생성에 대한 지침을 정의하거나 파일에서 가져올 수 있습니다. 예를 들어, 항상 특정 단위 테스트 프레임워크를 테스트에 사용하고 싶을 수 있습니다. github.copilot.chat.experimental.testGeneration.instructions 설정에서 테스트 생성 지침을 구성합니다.

접근성

시작하기

도움말 메뉴에 접근성 기능 시작하기 연습이 추가되어 접근성 옵션을 더 쉽게 탐색하고 활용할 수 있습니다. 연습에서는 접근성 도움말 대화 상자, 접근성 신호, 바로 가기 키 등의 기능을 소개합니다.

Get Started with Accessibility Features product walkthrough.

주석 접근성 개선

주석 스레드 컨트롤에 대한 접근 가능한 보기를 도입했습니다. 이 보기에는 관련 편집기 컨텍스트가 포함되어 있어 편집기와 접근 가능한 보기 간에 전환할 필요 없이 집중할 수 있습니다. 마찬가지로, 주석 패널에 대한 접근 가능한 보기에도 편집기 컨텍스트가 제공됩니다.

키보드를 사용하여 편집기에서 주석 컨트롤로 빠르게 이동할 수 있는 주석: 현재 줄의 주석에 집중 명령도 도입했습니다. 편집기에서 다음 및 이전 주석 범위를 이동하는 새 작업도 있습니다: 주석: 다음 주석 범위로 이동주석: 이전 주석 범위로 이동.

워크벤치

확장 프로그램의 계정 기본 설정 변경

이번 반복에서는 확장 프로그램의 기본 계정을 변경하는 경험을 개선하는 방법을 살펴보았습니다. 예를 들어, 여러 GitHub 계정이 있고 실수로 잘못된 계정으로 GitHub Copilot에 로그인했는데 이제 다른 계정을 사용해야 하는 경우입니다.

이제 여러 가지 방법으로 나중에 해당 기본 설정을 변경할 수 있습니다.

  • 활동 표시줄의 계정 메뉴 > <내 계정> > 신뢰할 수 있는 확장 관리 > 확장 프로그램의 톱니바퀴 아이콘 선택

    Manage trusted extensions Quick Pick, with gear button highlighted.

  • 확장 프로그램 보기 > 컨텍스트 메뉴 (또는 톱니바퀴 아이콘) > 인증을 사용하는 확장 프로그램 > 계정 기본 설정 선택

    Account preferences option in the context menu of an extension.

  • 확장 프로그램 세부 정보 보기 > 톱니바퀴 아이콘 > 계정 기본 설정 선택

    Account preferences option in the gear menu of an extension.

이러한 옵션 중 하나를 선택하면 확장 프로그램이 사용하는 계정을 변경할 수 있는 빠른 선택기 화면이 나타납니다.

The account preference Quick Pick that enables you to select extensions for a given account.

확장 프로그램의 계정 기본 설정을 변경하면 이벤트가 확장 프로그램으로 전송되며, 확장 프로그램이 이를 올바르게 처리해야 합니다. 예상대로 작동하지 않으면 해당 확장 프로그램에 대한 이슈를 보고하여 계정 기본 설정 환경이 처리되도록 하세요.

또한, 이 흐름에 대한 피드백이 있으면 알려주시기 바랍니다.

프로필과 연결된 폴더 및 작업 영역 보기

이번 마일스톤에서는 프로필 편집기에 폴더 및 작업 영역 섹션을 도입했습니다. 이 섹션은 중앙 집중식 위치에서 특정 프로필과 연결된 모든 폴더 및 작업 영역을 나열합니다. 이 섹션에서 폴더를 추가하거나 수정하거나 새 창에서 폴더 또는 작업 영역을 열 수 있습니다.

Folders & Workspaces section in the Profile editor.

모든 프로필에서 확장 프로그램 업데이트

이번 마일스톤에서는 모든 프로필에서 확장 프로그램을 업데이트하는 기능을 도입했습니다. 여러 프로필이 있고 확장 프로그램 버전을 동기화 상태로 유지하려는 경우 유용합니다. 이전에는 각 프로필로 전환하여 해당 프로필의 확장 프로그램을 업데이트해야 했습니다.

확장 프로그램 보기의 경고

확장 프로그램 보기에는 이제 잘못된 확장 프로그램이나 버전 비호환성으로 인해 비활성화된 확장 프로그램이 있는 경우 경고 배지와 관련 정보가 표시됩니다.

Extensions view shows a warning badge and description about the warning.

탐색기에서 찾기

대규모 프로젝트에서 파일을 더 쉽게 검색할 수 있도록 탐색기 보기의 찾기 기능을 개선했습니다. ⌥⌘F (Windows, Linux Ctrl+Alt+F) 키보드 단축키를 사용하여 파일 탐색기에서 찾기 컨트롤을 열 수 있습니다. 검색 중에 퍼지 매칭과 연속 매칭 간에 전환하여 더 유연한 결과를 얻을 수 있습니다.

참고: 검색 중 일부 컨텍스트 메뉴 작업은 일시적으로 비활성화됩니다. 더 많은 개선 사항이 곧 제공될 예정이니 기대해주세요!

릴리스 노트

릴리스 노트에서 설정을 참조하는 간단한 구문 (setting.name)을 사용하게 되었으며, 릴리스 노트 편집기에 표시될 때 이제 익숙한 설정 톱니바퀴 렌더링도 제공됩니다.

Setting URL in release notes enables navigating to the Settings editor directly.

편집기

인라인 힌트 개선

인라인 힌트가 잘리기 전 문자 수에 해당하는 editor.inlayHints.maximumLength 설정을 추가했습니다.

또한 인라인 힌트의 업데이트 전략을 수정하여 이제 입력 중에 더 빨리 업데이트되지만 커서의 가로 이동을 유발하지 않습니다.

실험적 편집 컨텍스트

이번 마일스톤에서는 새로운 실험적 설정 editor.experimentalEditContextEnabled을 도입했습니다. 이 설정은 EditContext API를 사용하여 VS Code의 편집 경험을 제공합니다. EditContext API를 채택하여 특정 IME 입력 버그를 수정할 수 있었습니다. 일반적으로 장기적으로 편집 경험을 개선할 것이라고 생각하며, 궁극적으로는 기본적으로 활성화될 것입니다.

이 설정을 활성화하면 VS Code 창을 다시 로드하여 이 기능을 활용하세요.

소스 제어

소스 제어 그래프 보기 개선

지난 마일스톤에서 새로운 소스 제어 그래프 보기를 추가했습니다. 이번 마일스톤에서는 새로 추가된 보기의 기능을 확장하고 보기의 레이아웃을 다듬는 데 중점을 두었습니다.

저장소 선택기

여러 저장소를 포함하는 폴더/작업 영역을 열 때, 소스 제어 그래프 보기 제목에 저장소 선택기가 표시됩니다. 기본적으로 소스 제어 그래프 보기는 상태 표시줄의 정보와 일치하는 활성 저장소를 표시합니다. 저장소 선택기를 사용하여 소스 제어 그래프 보기를 특정 저장소에 *고정*할 수 있습니다.

Repository picker control in the title of the Source Control Graph view.

히스토리 항목 참조 선택기

이번 마일스톤에서는 소스 제어 그래프 보기 제목에 새로운 히스토리 항목 참조 선택기를 추가했습니다. 이 참조 선택기를 사용하여 그래프에 표시되는 히스토리 항목을 다른 브랜치로 필터링하거나 여러 브랜치를 볼 수 있습니다.

History item reference Quick Pick control to choose one or more items.

기본적으로 히스토리 항목 참조 선택기는 Auto로 설정되어 있으며, 현재 히스토리 항목 참조, 해당 원격, 선택적 베이스에 대한 그래프를 렌더링합니다.

History item reference picker control in the title of the Source Control Graph view.

히스토리 항목 작업

이번 마일스톤에서는 소스 제어 히스토리 항목의 컨텍스트 메뉴에서 사용할 수 있는 작업 목록을 확장했습니다. 히스토리 항목에서 새 브랜치/태그 만들기, 히스토리 항목 cherry-pick, 항목 checkout (분리)하는 작업을 추가했습니다.

Context menu for items in the Source Control Graph view.

소스 제어 그래프 설정

이번 마일스톤에서는 그래프를 사용자 지정할 수 있는 새 설정 집합을 추가했습니다.

  • scm.graph.badges - 소스 제어 그래프 보기에 표시되는 배지를 제어합니다.
  • scm.graph.pageOnScroll - 목록 끝으로 스크롤할 때 소스 제어 그래프 보기가 다음 항목 페이지를 로드할지 여부를 제어합니다.
  • scm.graph.pageSize - 소스 제어 그래프 보기에서 표시되는 항목의 기본 개수 및 더 많은 항목을 로드할 때

노트북

셀 간 다중 커서 지원 (미리 보기)

노트북 편집기는 이제 notebook.multiCursor.enabled 설정을 통해 셀 간 다중 커서 편집을 지원합니다. 현재 이 기능은 단축키 Ctrl+D로만 트리거할 수 있으며, 핵심 편집기 작업과 제한된 편집기 명령 하위 집합을 지원합니다.

Diff 편집기에서 문서 메타데이터 변경 사항 표시

노트북 diff 편집기는 이제 커널 정보 및 셀 언어와 같은 문서 메타데이터 변경 사항도 표시합니다.

Notebook dif editor showing side-by-side changes to the document metadata.

Diff 보기에서 변경되지 않은 영역 접기

노트북 diff 보기는 이제 diffEditor.hideUnchangedRegions.enabled 설정을 존중합니다. 활성화하면 변경되지 않은 코드 블록이 기본적으로 접혀서 대규모 노트북에서 변경 사항을 검토하기 쉬워집니다.

Diff editor shows unchanged code blocks as collapsed.

웹 워커에서 노트북 직렬화 (실험)

이 릴리스에서는 노트북 직렬화를 웹 워커에서 수행할 수 있는 실험적 기능을 도입합니다. 이는 대규모 노트북으로 작업할 때 확장 프로그램 호스트 프로세스에서 메인 스레드 차단 시간을 줄이는 데 도움이 될 수 있습니다. 기본적으로 이 기능은 비활성화되어 있지만, ipynb.experimental.serializationtrue로 설정하여 활성화할 수 있습니다.

디버그

데이터 색상화 지원

VS Code는 디버그 어댑터 프로토콜의 새로운 텍스트 스타일링 기능을 지원합니다. 이를 통해 변수 보기, 시계 보기, 호버, 디버그 콘솔의 데이터가 ANSI 이스케이프 시퀀스를 통해 색상화될 수 있습니다.

JavaScript 디버거

HTML 요소 표시 개선

JavaScript 디버거에서 HTML 요소가 표시되는 방식을 개선했습니다. 이전에는 원시 객체로 렌더링되어 탐색하기 어려웠습니다. 이제 DOM 구조를 더 잘 반영하며, 새로운 색상화 기능을 활용하여 기본적인 구문 강조 기능을 제공합니다.

HTML elements are colorized in the JavaScript Debug Console.

실행 구성에서 Node 명령 자동 완성

node_modules에 설치된 명령줄 애플리케이션의 launch.json 파일에 새로운 자동 완성 도우미가 있습니다. 이를 통해 vitest 또는 nest와 같은 도구에 대한 디버깅 설정을 더 쉽게 할 수 있습니다.

로드된 소스 보기 깔끔하게 정리

Node.js 내장 모듈, 평가된 스크립트 및 WebAssembly 모듈의 소스 경로 구조를 변경하여 로드된 소스 보기가 덜 복잡하고 찾아보기 쉽게 만들었습니다.

언어

TypeScript 5.6

JavaScript 및 TypeScript 지원이 TypeScript 5.6을 사용하도록 업데이트되었습니다. 이 주요 업데이트에는 수많은 언어 및 도구 개선 사항과 함께 중요한 버그 수정 및 성능 최적화가 포함되어 있습니다.

TypeScript 5.6 릴리스에 대한 모든 내용은 TypeScript 블로그에서 확인할 수 있습니다. 다음 섹션에서는 몇 가지 도구 하이라이트도 포함했습니다.

일부 일반적인 '항상 참' 프로그래밍 실수 감지

JavaScript 또는 TypeScript에서 정규식을 사용하고 다음과 같은 코드를 작성했다고 가정해 봅시다.

const str = '...'
if (/\d+(\.\d+)?/) {
  ...
} else {
  ...
}

이런! 정규식에 .test()를 호출하는 것을 잊은 것 같습니다. 즉, if 조건은 항상 true로 평가됩니다. 이것은 우리가 원하는 것이 아닙니다.

이 문제는 지적하면 명백하지만, 이러한 실수는 놀랍도록 쉽게 발생하며 VS Code 자체에서도 실제 버그를 일으켰습니다! 다행히 TypeScript는 이제 프로그램에서 가장 일반적인 '항상 참' 오류 중 일부를 보고합니다. 여기에는 값이 절대 될 수 없는 값에 대한 if 조건 테스트 또는 /abc/ ?? /xyz/와 같이 한쪽이 도달할 수 없는 조건부 표현식이 포함됩니다.

TypeScript 릴리스 노트에서 이 기능의 작동 방식에 대한 자세한 예시와 정보를 확인하세요.

영역 우선 진단

매우 긴 JavaScript 또는 TypeScript 파일에서 작업하고 있습니까? 영역 우선 진단 덕분에 유형 오류에 대한 진단이 조금 더 빠르게 표시되기 시작할 것입니다. 이는 파일의 나머지 부분에 대한 진단이 아직 계산 중이더라도 현재 보이는 코드에 대한 진단을 먼저 가져와 표시하려고 시도함을 의미합니다.

이 최적화는 수천 줄의 복잡한 파일에 가장 관련이 있습니다. 작은 파일에서는 아무런 변화를 느끼지 못할 수도 있습니다.

JavaScript 및 TypeScript에 대한 커밋 문자 개선

커밋 문자는 입력 시 자동으로 완성을 수락하여 코딩 속도를 높일 수 있습니다. 예를 들어 JavaScript 및 TypeScript에서 .은 종종 커밋 문자로 간주됩니다. 이는 myVariable.property.를 입력하려면 myv, ., p, .만 입력하면 되며, 첫 번째 .myVariable에 대한 완성을 수락하고 두 번째 .property에 대한 완성을 수락한다는 의미입니다.

이러한 커밋 문자는 이제 TypeScript에서 계산되므로 프로그램 구조를 더 잘 고려할 수 있습니다. 또한 시간이 지남에 따라 지원을 계속 개선할 수 있습니다.

커밋 문자는 기본적으로 활성화되어 있지만, editor.acceptSuggestionOnCommitCharacterfalse로 설정하여 비활성화할 수 있습니다.

자동 가져오기 제외 패턴

새로운 autoImportSpecifierExcludeRegexes를 사용하면 정규식을 사용하여 특정 패키지에서 자동 가져오기를 제외할 수 있습니다. 예를 들어 lodash와 같은 모듈의 하위 디렉토리에서 자동 가져오기를 제외하려면 다음과 같이 설정할 수 있습니다.

{
  "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}

JavaScript의 경우 javascript.preferences.autoImportSpecifierExcludeRegexes를, TypeScript의 경우 typescript.preferences.autoImportSpecifierExcludeRegexes를 사용하여 구성할 수 있습니다. 자세한 내용은 TypeScript 5.6 릴리스 노트를 참조하세요.

원격 개발

원격 개발 확장 프로그램을 사용하면 개발 컨테이너, SSH 또는 원격 터널을 통해 원격 머신 또는 Windows Subsystem for Linux(WSL)를 완전한 기능을 갖춘 개발 환경으로 사용할 수 있습니다.

주요 내용은 다음과 같습니다.

  • SSH/터널을 통한 Kubernetes 컨테이너 연결
  • GPU 가용성 수동 지정

이러한 기능에 대한 자세한 내용은 원격 개발 릴리스 노트에서 확인할 수 있습니다.

확장 프로그램 기여

Python

커버리지로 테스트 실행

이제 VS Code에서 커버리지로 Python 테스트를 실행할 수 있습니다! 커버리지로 테스트를 실행하려면 테스트 탐색기에서 커버리지 실행 아이콘을 선택하거나 일반적으로 테스트 실행을 트리거하는 메뉴에서 “커버리지로 실행”을 선택하세요. Python 확장은 pytest를 사용하는 경우 pytest-cov 플러그인을 사용하거나 unittest의 경우 coverage.py를 사용하여 커버리지를 실행합니다.

커버리지 실행이 완료되면, 코드 라인이 라인별 커버리지로 편집기에서 강조 표시됩니다. 이는 하단의 실행 결과 패널에서 “테스트 커버리지 닫기” 또는 가장 최근 테스트 실행 아래의 “테스트 커버리지 보기”를 통해 닫거나 다시 열 수 있습니다. 또한, 테스트 탐색기의 테스트 탭 아래에 비커 아이콘과 함께 테스트 커버리지 탭이 나타나며, 이는 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 테스트: 테스트 커버리지 보기 집중으로도 이동할 수 있습니다. 이 패널에서는 작업 영역의 각 파일 및 폴더에 대한 라인 및 분기 커버리지 메트릭을 볼 수 있습니다.

커버리지로 Python 테스트 실행에 대한 자세한 내용은 Python 문서를 참조하세요. 테스트 커버리지에 대한 일반 정보는 VS Code의 테스트 커버리지 문서를 참조하세요.

Python 기본 문제 검사기

Python 확장에 이제 기본 문제 검사기가 포함되어 Python 코드의 문제 추적을 단순화하고 더 맥락적인 피드백을 제공합니다. 이를 통합하려면 task.json의 작업에 "problemMatcher": "$python"을 추가하세요. 문제 검사기는 작업의 출력에서 오류 및 경고를 검색하여 문제 패널에 표시함으로써 개발 워크플로우를 향상시킵니다.

아래는 Python에 대한 기본 문제 검사기를 사용하는 task.json 파일의 예시입니다.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run Python",
      "type": "shell",
      "command": "${command:python.interpreterPath}",
      "args": ["${file}"],
      "problemMatcher": "$python"
    }
  ]
}

Python 터미널 REPL의 셸 통합

Python 확장 프로그램에 이제 터미널에서 python 또는 다른 Python REPL 시작 방법을 입력하기 전에 실행되는 PYTHONSTARTUP 스크립트에 대한 옵트인/옵트아웃 설정이 포함되어 있습니다. 옵트인하면 Mac 또는 Linux인 경우 명령 장식, 명령 재실행, 최근 명령 실행과 같은 터미널 셸 통합의 기능을 사용할 수 있습니다. python.terminal.shellIntegration.enabled 설정을 통해 이를 활성화할 수 있습니다.

Pylance 언어 서버 모드

현재 IntelliSense 환경 또는 성능에 최적화된 경량 환경 중에서 선택할 수 있는 새 설정 python.analysis.languageServerMode가 있습니다.

전체 IntelliSense 기능이 필요하지 않고 Pylance가 최대한 리소스 친화적이기를 원하면 python.analysis.languageServerModelight로 설정할 수 있습니다. 그렇지 않으면, 오늘날 Pylance를 사용하는 경험을 계속하려면 default로 설정할 수 있습니다.

이 새로운 기능은 다음 설정의 기본값을 재정의합니다.

설정 light 모드 default 모드
"python.analysis.exclude" ["**"] []
"python.analysis.useLibraryCodeForTypes" false true
"python.analysis.enablePytestSupport" false true
"python.analysis.indexing" false true

위 설정은 여전히 개별적으로 변경하여 기본값을 재정의할 수 있습니다.

GitHub 풀 요청

GitHub Pull Requests 확장에서 더 많은 작업이 이루어졌으며, 이를 통해 풀 리퀘스트와 이슈를 작업하고, 만들고, 관리할 수 있습니다. 확장 프로그램의 0.98.0 릴리스 변경 로그를 검토하여 주요 내용을 알아보세요.

확장 프로그램 작성

데스크톱 앱에서 사용자 지정 할당자 제거

이 버전에서는 1.78 버전에서 데스크톱 애플리케이션 확장 호스트에 추가되었던 사용자 지정 할당자를 제거했습니다. 이 사용자 지정 할당자는 Electron 런타임을 대상으로 빌드된 V8 샌드박스와 호환되지 않는 Node.js 네이티브 애드온을 지원하기 위한 브리지 역할을 합니다. 추가적인 컨텍스트는 이 추적 이슈를 참조하십시오.

상위 5000개의 확장이 이 변경 사항으로 인해 영향을 받지 않도록 했습니다. 확장이거나 확장 종속성이 이 변경 사항의 영향을 받는 경우 다음 복구 제안을 시도해 볼 수 있습니다.

  • 확장이 n-api를 사용하는 경우 외부 배열 버퍼를 사용할 때 napi_no_external_buffers_allowed 상태가 반환됩니다. 이 경우 API의 복사 버전을 napi_create_buffer_copy로 전환하여 사용할 수 있습니다.
  • 확장이 node-addon-api를 사용하는 경우 대체 API 및 컴파일 시간 설정에 대한 이 문서를 참조하십시오.
  • 복사로 인한 성능 저하를 피하려면 V8 할당자를 사용하여 버퍼 백업 저장소가 V8 샌드박스와 호환되도록 할 수 있습니다.

영향을 받을 수 있는 확장 및 네이티브 애드온을 식별하기 위해 텔레메트리를 추가하여 확장 작성자에게 선제적으로 연락하고 가능한 경우 도움을 제공할 수 있도록 했습니다. 확장이 영향을 받고 위의 제안 중 어느 것도 작동하지 않으면 당사의 토론 스레드에 댓글을 남겨주시면 기꺼이 도와드리겠습니다.

디버그 어댑터 프로토콜

디버그 어댑터 프로토콜에서 변수 및 출력 표시에서 텍스트를 색상화하고 스타일링하는 방법을 공식화했습니다. 색상화는 ANSI 제어 시퀀스를 통해 작동하며 클라이언트와 디버그 어댑터 모두 초기화 요청 및 기능에서 각각 supportsANSIStyling을 지원해야 합니다.

미리보기 기능

여러 GitHub 계정

이제 VS Code에서 동시에 여러 GitHub 계정에 로그인할 수 있습니다.

이 기능은 VS Code Insiders에서 기본적으로 활성화됩니다. VS Code의 안정 버전에서는 설정 github.experimental.multipleAccounts를 사용하여 이 기능을 켤 수 있습니다.

여러 계정이 필요할 수 있는 몇 가지 시나리오입니다.

  • 설정 동기화에는 Account1을 사용하고 GitHub Pull Request 확장을 위해서는 Account2를 사용합니다.
  • GitHub 확장에서 (푸시용) Account1을 사용하고 GitHub Copilot에서는 Account2를 사용합니다.

이 기능을 사용하려면 단순히 로그인 작업을 트리거하면(설정 동기화와 같은 내장 기능 또는 확장 사용) 다른 계정으로 로그인할 수 있는 옵션이 제공됩니다. 이 기능은 나중에 계정을 변경해야 하는 경우 새로운 계정 기본 설정 빠른 선택과도 잘 어울립니다.

대부분의 기존 확장은 이 기능과 잘 작동해야 하지만, 이 다중 계정 환경과 완벽하게 호환되지 않는 동작이 있을 수 있습니다. 개선의 여지가 있다고 생각되면 해당 확장에 대해 이슈를 제기하십시오. 비교적 새로운 vscode.authentication.getAccounts('github') API의 도움으로 확장은 여러 계정을 처리할 수 있는 많은 권한을 가집니다.

다음 반복에서는 이 기능을 모든 사용자에게 기본적으로 활성화할 계획입니다.

MSAL 기반 Microsoft 인증

Microsoft 인증 스택에서 MSAL(Microsoft Authentication Library)을 사용하도록 전환하고 있습니다. 이는 엄청난 노력이었지만 이번 반복에서 많은 진전을 이루었습니다. 이 작업은 VS Code 및 웹용 VS Code를 포함한 모든 VS Code 클라이언트에 걸쳐 있습니다.

  • vscode.dev의 경우 모든 Microsoft 인증 요청에 브라우저 기반 MSAL.js를 활성화했습니다. 즉, vscode.dev는 이제 완전히 MSAL을 사용합니다.

  • 데스크톱 클라이언트인 VS Code의 경우, 이 기능은 설정 microsoft.useMsal 뒤에 숨겨져 있습니다. 현재 설정 뒤에 숨겨져 있는 이유는 운영 체제의 인증 상태를 활용할 수 있도록 하는 브로커 흐름으로 전환할 계획이기 때문입니다. 따라서 가능한 한 중단을 최소화하기 위해 이 작업을 먼저 완료한 후 널리 활성화할 것입니다. 그럼에도 불구하고 이 새로운 인증을 사용해 보고 싶은 분은 언제든지 시도해보고 피드백을 제공해 주시면 환영합니다.

VS Code의 MSAL 전환에 대한 자세한 상태는 이슈 #178740에서 확인할 수 있습니다.

TypeScript 5.7

이번 릴리스에는 곧 출시될 TypeScript 5.7 릴리스에 대한 초기 지원이 포함됩니다. 자세한 내용은 TypeScript 5.7 계획을 확인하십시오.

TypeScript 5.7 미리 보기 빌드를 사용하려면 TypeScript Nightly 확장을 설치하십시오.

제안된 API

언어 모델을 위한 도구

LanguageModelTool API에 대한 반복 작업을 계속하고 있습니다. 이 API는 두 가지 주요 부분으로 구성됩니다.

  1. 확장이 도구를 등록할 수 있는 기능입니다. 도구는 언어 모델에서 사용하도록 설계된 기능입니다. 예를 들어 파일의 Git 기록을 읽는 것입니다.

  2. 확장이 요청을 할 때 도구를 전달하거나, 언어 모델이 도구 호출을 요청하거나, 확장이 도구 호출 결과를 다시 전달하는 것과 같이 도구를 지원하는 언어 모델을 위한 메커니즘입니다.

이번 마일스톤에서는 도구가 실행되기 전에 사용자 확인을 요청할 수 있는 기능을 추가했습니다. 이는 부작용이 있을 수 있는 도구에 유용합니다.

자세한 내용은 이슈 #213274를 확인하거나 피드백을 제공해 주십시오.

참고: API는 아직 적극적으로 개발 중이며 변경될 수 있습니다.

엔지니어링

ESM이 VS Code에 배포됩니다.

마침내 VS Code 안정 버전 릴리스에 ESM 작업을 배포합니다. 이는 VS Code 코어의 모든 계층(electron, node.js, browser, workers)이 모듈 로딩 및 내보내기를 위해 JavaScript에서 importexport 구문을 사용한다는 것을 의미합니다. 레거시 AMD 로더의 모든 사용은 비활성화되었으며 10월의 부채 주간에 제거될 예정입니다.

ESM으로의 전환은 시작 성능을 대폭 향상시킵니다. 첫째, 많은 AMD 오버헤드가 제거되고, 둘째, 메인 워크벤치 번들 크기가 10% 이상 감소합니다.

Graph showing the trend of the main bundle load time, showing a large drop after introducing ESM.

이제 ESM으로 완전히 전환되었으므로 VS Code의 엔지니어링 시스템을 개선할 계획입니다. ESM을 통해 많은 최신 도구를 사용할 수 있으며, 이에 대한 자세한 내용은 가까운 시일 내에 공유할 수 있기를 기대합니다.

참고: 확장은 이 변경 사항의 영향을 받지 않으며 ESM을 통해 로드되지 않습니다. 자세한 내용은 https://github.com/microsoft/vscode/issues/130367를 참조하십시오.

기본 패키지 관리자로 NPM 사용

2024년 9월 초, microsoft/vscode 리포지토리에서 패키지 관리를 위해 yarn에서 npm으로의 전환을 완료했습니다. 이 결정은 VS Code의 특정 요구 사항을 기반으로 하며 다음 기준에 중점을 둡니다.

  • 성능: 처음에 성능상의 이유로 yarn으로 전환했지만 npm도 이제 우리의 요구 사항을 충족할 수 있습니다.
  • 보안: 노출을 제한하고 의존하는 도구 수를 줄여 공급망을 더 안전하게 만듭니다.

주요 수정 사항

  • 226401 fileWatcher, CPU 200% 이상 계속 사용
  • 10054 [WSL]: Ports 탭에서 localhostForwarding = false인 경우 WSL의 포트가 로컬로 전달된다고 잘못 보고

감사합니다

마지막으로, VS Code 기여자에 대한 진심 어린 감사의 말씀을 전합니다.

이슈 추적

이슈 추적에 대한 기여

풀 리퀘스트

vscode 기여

vscode-docs 기여

vscode-extension-samples 기여

vscode-js-debug 기여

vscode-jupyter 기여

vscode-languageserver-node에 기여

vscode-pull-request-github 기여

vscode-python-debugger 기여

vscode-vsce 기여

vscode-wasm에 대한 기여

language-server-protocol 기여

© . This site is unofficial and not affiliated with Microsoft.