EmEditor v22.5.0 출시(기술 리뷰 포함)!
오늘 EmEditor v22.5.0을 출시합니다.
저는 최근 13세대 Intel Core i7-13700이 장착된 PC를 구입했습니다. Intel은 12세대 Core 프로세서부터 성능을 위한 P-Cores와 효율성을 위한 E-Cores를 결합한 하이브리드 아키텍처를 도입했습니다. 이 새로운 아키텍처는 P-Core가 E-Core보다 빠르게 실행되기 때문에 흥미롭습니다. 이전의 모든 EmEditor 버전은 모든 스레드가 동일한 속도로 실행된다고 가정했습니다. P-Core 스레드가 E-Core 스레드보다 빠르게 실행되면 P-Core 스레드는 E-Core 스레드보다 먼저 작업을 완료하고 E-Core 스레드가 작업을 완료할 때까지 기다려야 합니다. 참고로 E-Cores와 P-Cores가 없어도 스레드 속도는 변동될 수 있습니다. 예를 들어 스레드가 백그라운드 앱이나 시스템 프로세스에 의해 중단되면 해당 스레드는 다른 스레드보다 느려집니다. 그럼에도 불구하고 P-Cores와 E-Cores의 존재는 이러한 상황을 악화시킬 수 있습니다.
이 상황을 극복하기 위해 v22.5가 스레드 부하 분산을 동적으로 관리하도록 코드를 최적화했습니다. 다음 스크린샷은 매우 큰 파일에서 정규식을 검색할 때 최적화 전후의 CPU 사용량을 보여 줍니다. 최적화 후에는 작업이 끝날 때 전체 CPU 사용량이 갑자기 감소합니다.
이전 버전(v22.4.2)은 각 스레드가 동일한 속도로 실행된다고 가정합니다. 그 결과 일부 스레드가 다른 스레드보다 먼저 완료되고, 검색 작업이 끝날 무렵 전체 CPU 사용량이 점진적으로 감소합니다.
새 버전(v22.5)은 스레드 부하 분산을 동적으로 관리하여 모든 스레드가 작업이 끝날 때까지 효율적으로 작동하도록 합니다. 작업이 끝날 때 전체 CPU 사용량이 갑자기 감소합니다. 그 결과 작업을 완료하는 시간이 단축됩니다.
v22.5를 개발하는 동안 우리는 다중 스레딩을 비롯한 다양한 기법을 사용하여 많은 명령의 속도를 향상하기 위해 코드를 최적화하는 데 대부분의 시간을 보냈습니다. 예를 들어 복사 명령의 속도가 다중 스레딩을 통해 1.49배 향상되었습니다. 리팩터링과 최적화를 진행하면서 코드를 검토할 기회가 있었습니다. 이전 버전은 CPU가 AVX-512 명령 집합을 지원하지 않는 경우 실수로 SHA 명령 집합을 활성화하지 않았습니다. v22.5는 이 버그를 수정하고 AVX-512를 지원하지 않는 많은 CPU에서 중복 줄 삭제를 비롯한 여러 명령의 속도를 향상했습니다. 앞으로도 계속해서 코드를 검토하고 속도를 최적화하겠습니다.
처음 새 PC로 Visual C++을 사용하여 코드를 빌드했을 때 빌드가 매우 느리다는 사실을 알고 실망했습니다. 코드를 빌드할 때 물리적 메모리(RAM)가 16GB만 사용 가능했기 때문에 메모리 사용량이 100%에 도달한다는 사실을 발견했습니다. CPU에는 24개의 논리 코어가 있으며 Visual C++은 코드를 빌드하는 데 24개의 스레드를 사용하고 있었습니다. Visual C++ 옵션에서 스레드 수를 24개에서 7개로 조정하자 컴파일러가 코드를 더 빠르게 빌드했습니다. 마찬가지로 EmEditor도 3개의 스레드에 비해 24개의 스레드를 사용할 때 더 느렸습니다. 물리적 메모리를 16GB에서 80GB로 늘리자 두 앱 모두 24개의 스레드로 더 빨라졌습니다. 따라서 논리 코어 수가 많은 최신 CPU를 사용하는 경우 물리적 메모리를 늘리실 것을 강력히 권장합니다. 예를 들어 CPU에 24개의 논리 코어가 있는 경우 PC에 최소 32GB의 물리적 메모리를 권장합니다. 메모리가 충분하지 않으면 EmEditor의 사용자 지정 대화 상자의 고급 페이지에서 지정할 수 있는 스레드 수를 조정해야 할 수 있습니다. v22.5에서는 논리 코어 수가 이 GB 값을 초과하는 경우 기본 스레드 수를 가장 가까운 물리적 메모리 GB 값으로 조정했습니다.
한 고객이 파일 변경 감지 개선을 요청했습니다. 이전 버전은 기본적으로 5초마다 현재 파일 크기와 타임스탬프를 확인했으며, 파일이 변경되었다고 판단하면 “다른 프로그램에 의해 파일이 변경되었습니다. 변경 내용을 다시 로드하시겠습니까?”라는 메시지 상자를 표시했습니다. v22.5는 파일 변경을 더 효율적으로 감지하기 위해 Windows API를 사용합니다.
또 다른 고객이 줄 번호의 왼쪽 가장자리를 클릭하여 책갈피를 설정/해제하는 기능을 요청했습니다. 이전 버전에서는 책갈피를 설정/해제하려면 책갈피 설정/해제 명령을 선택하거나 Ctrl + F2를 눌러야 했습니다. 줄 번호를 클릭하는 것이 더 쉬우며 텍스트 편집기에서 어느 정도 표준이라는 점을 이해하고, 줄 번호가 표시되는 경우 이 기능을 추가했습니다.
Makoto Emura는 기호 검색 명령에 Language Server Protocol을 사용하는 기능과 JSON 언어 서버를 사용하는 기능을 추가했습니다. 그는 또한 Pull 및 Push 버튼에 앞서거나 뒤처진 커밋 표시를 추가하여 CommitList 플러그인을 개선했습니다.
가까운 시일 내에 Windows 7, 8.1 및 Server 2008 R2에 대한 지원을 중단할 것입니다. Microsoft는 이미 이러한 Windows 버전에 대한 지원을 중단했습니다. 보안상의 이유로 이러한 오래된 Windows 버전의 사용은 강력히 권장하지 않습니다. 또한 EmEditor의 32비트 버전 개발도 중단할 것입니다. 개발 및 테스트 리소스를 EmEditor의 64비트 버전에 집중하고자 합니다.
많은 사람이 EmEditor를 사용하기를 바라므로 EmEditor 가격을 최대한 낮게 유지해 왔습니다. 연간 구독의 첫해 가격인 US$40(이전에는 US$39.99)은 연간 구독 라이선스 제공을 시작한 이래 1센트 이상 변동하지 않았습니다. 그러나 EmEditor Professional의 불법 사용은 용납하지 않습니다. EmEditor Professional “크랙” 키를 판매하거나 무료로 배포하는 웹사이트를 본 적이 있습니다. 이는 불법 사이트이며, 이러한 사이트에서 얻은 키는 당사에서 지원하지 않습니다. 때때로 유효한 라이선스가 없는 사용자로부터 EmEditor Professional에 대한 기술 질문을 받습니다. 저는 유효한 라이선스를 구매한 고객을 지원하는 데 시간을 사용하는 편을 선호합니다. 이러한 불법 사이트를 근절하고, 더 중요하게는 EmEditor 개발과 고객 지원을 계속하기 위해 서버 데이터베이스와 대조하여 라이선스의 진위를 확인하는 코드를 추가할 것입니다. 라이선스가 유효하지 않으면 이 코드는 Professional 버전이 작동하지 않도록 합니다. 이 확인은 EmEditor를 시작하자마자 수행되지 않을 수 있으며, EmEditor를 시작할 때마다 수행되지 않을 수도 있습니다. 이 코드의 성격과 목적상 작동 방식에 대한 세부 정보는 공개하지 않습니다. 그러나 개인 정보는 전송되지 않으며, 이 확인은 인터넷 연결 없이 EmEditor를 사용하는 것을 방해하지 않습니다. 우리 소프트웨어와 유효한 라이선스를 구매한 고객을 보호하는 것은 중요합니다. 이 최소한의 라이선스 확인이 필요한 배경을 이해하고 받아들여 주시기를 바랍니다. 필요한 라이선스 수를 충분히 보유하고 있는지 확인하려면 라이선스 수를 계산하는 방법도 참조하십시오.
라이선스 가격 인상과 평생 라이선스 판매 종료는 별도의 블로그에서 공지할 예정입니다.
Professional 또는 Free 버전 중 어느 것을 사용하시든 EmEditor를 마음에 들어 하시기를 바랍니다. 질문, 기능 요청 또는 향후 아이디어가 있으시면 문의하기 또는 포럼에 글 남기기를 이용해 주십시오.
EmEditor를 사용해 주셔서 감사합니다!
— Yutaka Emura
자세한 내용과 스크린샷은 EmEditor v22.5의 새로운 기능을 참조하십시오.
이 릴리스에는 v22.5를 개발하는 동안의 모든 버그 수정도 포함되어 있습니다.
데스크톱 설치 프로그램 버전을 사용하는 경우 도움말에서 업데이트 확인을 선택하여 최신 버전을 다운로드할 수 있습니다. 이 방법이 실패하면 최신 버전을 다운로드하여 다운로드한 설치 프로그램을 실행하십시오. 데스크톱 휴대용 버전을 사용하는 경우 다운로드 페이지에서 최신 버전을 다운로드할 수 있습니다. Store 앱 버전은 며칠 후 Microsoft Store(64비트 또는 32비트)를 통해 업데이트할 수 있습니다.