MPS 2022.3의 새로운 기능

MPS 2022.3에는 제약 규칙의 개선, MPS 확장과 마이그레이션 동기화, JVM용 Kotlin 스텁 등이 새롭게 도입되었습니다.

제약 규칙 업데이트
고객 요청

제약 규칙 언어는 제약 언어의 부족한 면을 해결하기 위해 만들어졌습니다. 이 릴리스에서 제약 규칙은 언어의 사용성 부분이 더욱 개선되었습니다.

  • 이제 제약 규칙 정의를 NodeTestCases에서 참조할 수 있습니다. 이전에는 이것이 불가능했습니다.
  • 실험적 제약 규칙 정의를 사용하면 Inspector(검사 도구) 창에서 로깅 메시지를 지정할 수 있어 추적 및 디버그 작업이 개선됩니다.
  • 제약 규칙의 오류 메시지는 특정 노드의 프로퍼티 또는 참조를 대상으로 지정할 수 있습니다. 즉, 전체 노드를 강조 표시하는 오류 대신 프로퍼티 또는 참조만 강조 표시하도록 구성할 수 있습니다.

모듈 클래스 로드 개선

MPS 모듈은 언어를 다양하게 활용해볼 수 있는 샌드박스부터 MPS 또는 IntelliJ IDEA 플랫폼 동작을 변경하는 활성 플러그인 코드에 이르기까지 다양한 용도로 사용됩니다. MPS 2022.3에서는 이 모든 것을 하나로 통합했습니다. Solution(솔루션) 모듈의 Java Facet(Java 패싯) 페이지는 관련된 모든 설정을 포함하고 일반 시나리오를 식별하도록 재작업되어 언어 설계자와 사용자가 모듈의 의도된 용도를 쉽게 알 수 있게 되었습니다. IDEA Plugin Module Facet(IDEA 플러그인 모듈 패싯)은 더 이상 사용되지 않습니다. 현재 Solution 모듈의 설정만 공개되었으며, Language(언어) 및 Generator(제너레이터) 모듈은 접근방식은 모두 동일하지만 설정이 묵시적으로 구성되어 있습니다. 자세히 알아보기

MPS 확장과 마이그레이션 동기화

MPS에는 언제나 에코시스템에 가치를 더하는 적극적인 커뮤니티가 형성되어 있으므로, 외부 라이브러리를 사용하여 제품의 기능을 강화하도록 항상 권장되어 왔습니다. Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with MPS. 이 덕에 커뮤니티가 많은 이점을 누리고 있지만, MPS 버전을 업데이트하기 위해 타사 라이브러리의 마이그레이션을 기다려야 한다는 큰 단점도 있습니다. JetBrains는 최신 제품 버전으로 더 원활하게 마이그레이션할 수 있도록 릴리스를 동기화하기 위해 공식 파트너이자 주요 MPS 확장 관리자인 itemis와 협력하고 있습니다.

언어 정의의 추가 유틸리티 메서드

언어 설계자는 이제 반복 코드를 정의 루트 노드 내에서 바로 헬퍼 메서드로 추출하여 반복 코드의 양을 줄일 수 있습니다. 이러한 추가 메서드는 다음에서 정의할 수 있습니다.

  • 제약
  • 변환 및 대체 액션
  • 추론 및 검사 규칙
  • 빠른 수정
  • 인텐션

또한 인텐션을 이용해 isApplicable 메서드에서 계산된 값을 execute 메서드에서 사용할 수 있도록 추가 필드에 유지할 수 있습니다.

JVM용 Kotlin 스텁

JVM용 Kotlin 스텁

이전에는 Kotlin/Common 라이브러리에서만 스텁을 가져올 수 있었지만 이제 컴파일된 Kotlin/JVM 라이브러리에서도 가능합니다. 이번 개선으로 모듈 옵션의 Kotlin JVM 모델 루트를 통해 JVM(Java, Kotlin 또는 혼합)으로 컴파일링된 라이브러리를 사용할 수 있습니다. 자세히 알아보기

Kotlin 버전 개선 사항

이 새 버전의 MPS에는 다음과 같은 몇 가지 부수적 변경 및 개선 사항이 포함되었습니다.

  • Kotlin 클래스는 이제 루트화 가능한 노드이며 고유한 아이콘이 있습니다.
  • Kotlin 코드가 Java 열거형 항목을 참조할 수 있습니다.
  • this 표현식이 라벨(예: this@SomeClass)을 올바르게 참조할 수 있습니다.
  • 빌드 스크립트의 withKotlin 플래그가 이전에 하드코딩된 위치 대신 $kotlinc_home 매크로를 요청합니다.
  • 스텁이 개선되었습니다.
    • 스텁 옵션에서 패키지 제외/포함이 Java 스텁에서와 같이 작동합니다.
    • 불안정한 ID를 사용하여 참조를 손상시키던 여러 메서드가 수정되었습니다.
유형에서 생성자를 만드는 변환

타입에서 생성자를 만드는 변환

이제 왼쪽 소괄호를 입력하면 오른쪽 변환을 사용하여 주어진 호출에 대한 생성자 호출을 생성할 수 있습니다. 이 기능은 이 작업을 지원하는 모든 Kotlin 타입에 적용되며(사용자 타입에 확장 가능), 함수형 인터페이스 타입에서 람다를 생성하는 등의 경우, 주어진 타입의 디폴트 표현식을 이를 통해 쉽게 생성할 수 있습니다.

범위 내 확장 함수 개선 사항

범위 내 확장 함수 개선 사항

범위 내 확장 함수가 범위 내 호환 가능한 메서드를 제외하지 않도록 변경되었습니다. 대신, 현재 시스템 구현 타입의 성능으로 인해 범위 내 일부 항목은 적용되지 않습니다.

적용할 수 없는 함수가 선택된 경우 함수 참조의 자동 해결 기능을 통해 참조가 수정됩니다.

클래스 경로 및 VM 옵션을 재설정하려는 새로운 인텐션

클래스 경로 및 VM 옵션을 재설정하려는 새로운 인텐션

새 인텐션은 MPSStartupScript 노드를 업데이트하고 VM 옵션과 클래스 경로 값을 현재 MPS 값으로 설정합니다. MPS VM 옵션과 클래스 경로 값은 새 릴리스마다 바뀝니다. 이전에는 사용자가 독립 실행형 IDE용 빌드 프로젝트를 수동으로 업데이트해야 했습니다.

마이그레이션 가이드

주요 릴리스가 나올 때마다 JetBrains는 이전 버전의 MPS에서 마이그레이션하기 위한 지침을 준비하여 모든 부분이 원활하게 진행되도록 보장합니다. 이러한 지침을 주의 깊게 살펴보세요.