📌 3줄 핵심 요약 (TL;DR)
- unexec 덤퍼 기능이 최종적으로 제거되었습니다.
- 사용자 Lisp 디렉토리 기능이 추가되었습니다.
- Tree-sitter의 문법 설치 기능이 개선되었습니다.
Emacs 31.1이 드디어 출시되었습니다! 이번 버전은 이전과 달리 단일 대규모 기능보다는 여러 작은 사용자 경험 개선과 한 시대의 종말을 알리는 기능 제거가 특징입니다.
이번 릴리즈를 기념하여 제 책, Mastering Emacs도 다음 주까지 31% 할인 중입니다.
unexec/pdumper 논란과 그 후의 제거
Emacs는 일반적인 애플리케이션이 아닙니다. 컴파일하고 링크하면 temacs라는 Emacs의 핵심이 생성되지만, 대부분의 라이브러리가 포함되지 않은 상태입니다. 이 상태로는 실질적으로 유용하지 않습니다.
Emacs 바이너리를 얻으려면 temacs를 실행하고 표준 라이브러리를 메모리에 로드해야 합니다. 이는 느린 과정으로, 많은 elisp와 관리 작업이 필요합니다. 이 방식으로 Emacs를 시작하는 데 몇 분이 걸릴 수 있으며, CPU와 RAM을 상당히 소모합니다.
이 문제를 해결하기 위해 Emacs는 메모리의 텍스트/데이터/bss 등의 세그먼트를 새로운 바이너리로 덤프하는 방식을 사용했습니다. 그러나 glibc 팀이 이러한 방식을 지원하지 않기로 결정하면서 새로운 해결책이 필요하게 되었습니다.
Daniel Colascione는 Emacs의 내부 구조를 표준화된 방식으로 직렬화하는 더 나은 솔루션을 개발했습니다. 이 방식은 이제 기본으로 사용되며, 오래된 unexec 덤퍼는 최종적으로 제거되었습니다.
사용자 Lisp 디렉토리
Emacs 패키지를 다운로드하여 사용하려면 .emacs.d 디렉토리의 user-lisp/에 패키지를 넣으면 Emacs가 자동으로 로드하고 autoload를 설정합니다.
미니버퍼와 자동 완성
Emacs 30.1에서 도입된 completion-preview-mode는 Emacs의 방식에 맞춘 네이티브 팝업 윈도우 시스템입니다. Emacs 31.1에서는 이를 기반으로 다양한 사용자 정의 옵션이 추가되었습니다.
창 레이아웃 회전
M-x window-layout-rotate-clockwise 명령을 통해 창 레이아웃을 회전할 수 있습니다.
영역 활성화 없이 포인트와 마크 교환
이제 C-x C-x 명령으로 영역을 활성화하지 않고 포인트와 마크를 교환할 수 있는 옵션이 추가되었습니다.
Tree-sitter의 문법 설치
이제 Emacs는 Tree-sitter 모드에 필요한 언어 문법을 자동으로 설치할 수 있습니다.
설치 변경 사항
unexec 덤퍼가 제거되었습니다.
전통적인 unexec 덤퍼는 Emacs 27부터 사용 중단되었으며, 이제 완전히 제거되었습니다.
이제 포터블 덤퍼가 m68k a.out 타겟에서 작동합니다.
Emacs의 오래된 'ctags' 프로그램은 더 이상 빌드되거나 설치되지 않습니다.
Universal Ctags <https://ctags.io/>를 대신 사용하십시오.
기존 'ctags' 동작을 원한다면 'etags --ctags'를 실행하거나 'ctags'라는 셸 스크립트를 사용하여 'etags --ctags "$@"'를 실행하십시오.
32비트 x86 시스템에서 GCC 기본 옵션이 변경되었습니다.
GCC 4 이상을 사용하여 32비트 x86 시스템에서 Emacs를 빌드할 때,
'configure'는 이제 호스트 시스템이 SSE2를 지원하는 경우 '-mfpmath=sse' 옵션을,
그렇지 않은 경우 '-fno-tree-sra' 옵션을 기본으로 사용합니다.
이 GCC 옵션은 드문 경우에 Emacs가 잘못 작동할 수 있는 GCC 버그 58416을 우회합니다.
댓글 남기기