MPS 2025.3의 새로운 기능

MPS 2025.3은 JavaDoc 언어의 대대적인 개편과 제너레이터 플랜의 주요 변경, 리플렉티브 에디터의 대규모 업데이트를 도입합니다. 또한 Logical View(논리적 뷰)에서 키보드 동작을 지원하며, TextIcon에서 시각적으로 뚜렷이 구분되는 라이트 및 다크 테마가 제공됩니다.

아래에서 전체 변경 목록을 확인하세요.

JavaDoc 언어 전면 개편

JavaDoc 언어가 완전히 마이그레이션되어 텍스트 표현 및 편집에 jetbrains.mps.lang.text 언어를 사용할 수 있습니다. 이 변경 사항은 전반적인 사용자 경험에 미치는 영향은 크지 않을 것으로 예상되며 다음의 여러 문제를 해결합니다.

  • 편집 환경이 이제 BaseLanguage 주석이나 구조 언어 문서 등 jetbrains.mps.lang.text를 사용하는 다른 MPS 언어에서도 일관되게 동작합니다. 텍스트 편집에 대한 자세한 내용은 문서화 패싯 페이지를 참조해 주세요.
  • 텍스트를 JavaDoc, BaseLanguage 주석, 언어 문서화 주석 그리고 jetbrains.mps.lang.text가 사용되는 기타 위치 사이에서 복사 및 붙여 넣을 수 있습니다. 일반 텍스트도 복사하고 붙여 넣을 수 있습니다.
  • 텍스트에 이제 굵게 또는 기울임과 같은 스타일을 포함할 수 있습니다. 이 스타일은 결과로 생성되는 Java 소스 파일에서 HTML 태그로 생성됩니다.

이 과정에서 JavaDoc 언어와 관련된 여러 문제가 해결되었습니다.

  • 블록 태그에 대한 설명은 문자열 프로퍼티 대신 jetbrains.mps.lang.text를 사용하도록 변경되어, 블록 태그 내부에서도 동일한 편집, 복사, 붙여넣기 및 스타일 기능을 사용할 수 있습니다.
  • 블록 태그는 이제 여러 줄의 설명을 지원합니다.
  • 블록 태그인라인 태그 모두 Java 소스에서 올바르게 분석됩니다.
  • Java 언어 사양에서 요구되는 새로운 {@literal ...} 인라인 태그가 추가되었습니다.
  • CodeSnippet 내부의 코드는 지역 변수를 올바르게 해석합니다.
  • NodeWrapper는 포함된 노드의 텍스트를 올바르게 생성합니다.

BaseLanguage에서 JavaDoc으로 붙여넣기 액션 지원

기존의 Paste as Java Statement(Java 구문으로 붙여넣기)Paste as Class Content(클래스 내용으로 붙여넣기) 액션에 더해, 개편된 JavaDoc 언어에서는 텍스트 형태의 JavaDoc 코드를 BaseLanguage에 쉽게 붙여 넣을 수 있는 새로운 액션을 지원합니다. 무엇보다도 이 새로운 액션은 JavaDoc 코드가 JavaDoc 텍스트 줄, 블록 태그, 인라인 태그로 올바르게 분석되도록 보장하며, @param 또는 {@link } 태그와 같은 잠재적인 참조 해결까지 제공합니다.

이 새로운 Paste as JavaDoc(JavaDoc으로 붙여넣기) 액션은 클립보드의 텍스트를 분석한 후, 이를 커서의 현재 위치에 있는 JavaDoc 주석에 붙여 넣습니다. 기존 JavaDoc 주석 내부에 커서가 있지 않은 경우, 이 액션은 분석된 JavaDoc 요소를 다음 필드/메서드/클래스 정의의 JavaDoc에 연결하며, 필요한 경우 이를 위해 새 JavaDoc 파일을 생성합니다.

제너레이터 플랜에 대한 기여

복잡한 모델 변환 작업에서의 사용자 경험을 개선하기 위해, 제너레이터 플랜에 여러 가지 주요 개선 사항을 적용했습니다. 새로운 PlanContribution 개념이 2024.1에서 도입되었던 실험적 fork as 기능을 대체하며, 이를 완전히 치환합니다.

또한 플랜 또는 플랜 기여에서 파생된 모든 브랜치의 모델을 추가 모델 속성으로 표시할 수 있는 메커니즘을 추가했습니다. 이 기능의 잠재적 활용 사례로는, 언어/플랜 설계자가 특정 브랜치의 결과를 식별하여 이후 처리에 활용하기 위해 사용자 지정 모델 속성을 추가하려는 경우를 들 수 있습니다. MPS 자체에서 사용하는 속성 중 하나는 targetFacet입니다(jetbrains.mps.generator.extensions.common 모델 참조). 이 속성은 모델의 적절한 출력 위치를 결정할 때 참조해야 할 <mps.make> GenerationTargetFacet/ModuleFacet을 알려줍니다.

제너레이터 플랜에서의 조건부 분기

제너레이터 플랜에서 fork 단계와 PlanContribution 모두 조건부 활성화를 지원합니다. 이제 특정 기준이 충족될 때에만 플랜의 특정 브랜치를 활성화할 수 있습니다. 현재 MPS에는 지정된 plan parameters의 값을 검사하는 조건문이 포함되어 있습니다. 논리 연산(and/or)과 기타 잠재적 연산을 지원하도록 구문을 향후 확장할 계획이며, 제너레이터 플랜에 대한 엄격한 해석(즉, 플랜 내에는 BaseLanguage 코드가 허용되지 않음)은 계속 유지할 방침입니다.

언어 설계자는 사용자 지정 ParameterDeclaration 클래스를 제공할 수 있습니다. 이러한 매개변수의 값은 PlanParameterContributor 확장 지점을 통해 기여할 수 있습니다. MPS에는 바로 사용할 수 있는 몇 가지 사전 정의된 매개변수가 포함되어 있으며, 이에 대한 전체 세부 내용은 jetbrains.mps.generator.extensions.common 모델을 참조하세요.

라이트 및 다크 TextIcon 옵션

이제 TextIcon의 레이어를 라이트 색상 테마, 다크 색상 테마 또는 두 테마 모두에 적용되도록 설정할 수 있습니다. 또한 TextIcon 정의에 포함된 색상 리터럴은 라이트 및 다크 색상 테마 각각에 대해 서로 다른 값을 제공할 수 있습니다.

리플렉티브 에디터 개편

리플렉티브(디폴트) 에디터의 디자인이 새로워졌습니다. 읽기 전용 기본 에디터가 리플렉티브 에디터와 병합되어, 두 에디터 간의 혼동이 더 이상 발생하지 않습니다.

Project(프로젝트) 뷰에서 키보드 단축키 사용

키보드 단축키를 사용하여 Project(프로젝트) 뷰의 Logical(논리) 패널에서 새 요소를 생성하는 프로세스가 크게 개선되었습니다. 이제 마우스를 사용하지 않고도 새로운 모듈, 모델, 노드를 생성할 수 있습니다.

보이지 않는 사용 위치 강조 표시 중지

이제 캐럿 위치의 노드에 대한 사용 위치 강조 표시가 에디터에서 실제로 보이는 참조로만 제한됩니다. 노드의 에디터에 실제로 표시되지 않는 노드 내 사용 위치는 더 이상 강조 표시되지 않습니다.

다양한 버그 수정

MPS 2025.3에 버그 수정이 폭넓게 포함되어 있습니다. 해결된 문제의 전체 목록은 여기에서 확인할 수 있습니다.

플랫폼 업데이트

Islands 테마 기본 적용

새로운 Islands 테마가 MPS 2025.3에 번들로 포함되어 기본적으로 활성화됩니다.

마이그레이션 가이드

주요 릴리스가 나올 때마다 JetBrains는 이전 버전의 MPS에서 마이그레이션하기 위한 지침을 준비하여 모든 부분이 원활하게 작동하도록 합니다. 자세한 내용은 업데이트된 마이그레이션 가이드에서 확인해 보세요.