https://www.facebook.com/notes/daniel-colascione/buttery-smooth-emacs/10155313440066102/
You might say, “That’s great, but double-buffered rendering is the textbook solution to the problem of displaying incomplete rendering to users and driving them to kill their dogs in maniacal frustration.”. That’s true, but Emacs predates those textbooks. GNU Emacs is an old-school C program emulating a 1980s Symbolics Lisp Machine emulating an old-fashioned Motif-style Xt toolkit emulating a 1970s text terminal emulating a 1960s teletype. Compiling Emacs is a challenge. Adding modern rendering features to the redisplay engine is a miracle.
https://raw.githubusercontent.com/emacs-mirror/emacs/master/src/xdisp.c
이런데 성능이 좋게 나올리가 없지.
게다가 같은 싱글 쓰레드라도 JS가 성능 훨씬 좋을껄.
게다가 라이브러리도 압도적이지.
누가 xi-editor + webrender에 elispVM만 붙여서 새로 만들어줬으면 좋겠다.
VS Code는 다 좋은데 UI가 싫어.. 특히 명령어 팔레트랑 왼쪽 사이드바..
이맥스 쓰다보면 vscode 사이드는 공간 차지하고 짜증날 순 있을듯 ㅇㅇ 근데 명령어는 더 좋지 않음? 직관적이고 바로 완성도 되고 굳이 메뉴얼 안 읽고 json 굳이 안 건들여도 간단한 건 UI로 다 해결 가능하고
자동완성 자체는 요즘 lsp 쓰다보니까 비슷해. elisp도 쓰다보니 그럭저럭 쓸만하구. 다만 이맥스는 성능이 너무 구려. 노트북 쓰다보니까 브라우저랑 같이 띄워놓고 코딩하기엔 공간 적게 차지하는 이맥스가 좋아서 쓰고 있음. VS코드는 진짜 UI 2개 땜시!!
이맥스도 셀프 다큐멘티드라 뭐 몰라도 C-h 커맨드들만 잘사용하면 메뉴얼 안읽어도 배울 수 있다. Elisp도 이렇게 배우면 빠름. - dc App
근데 애초에 요즘 이맥스가 "느리다"라고 느끼는 건 디스플레이/랜더링 때문은 아님. 물론 어능정도 영향은 있겠지만 프로파일링 해보면 이것 때문에 성능 저하되는 건 아님. 그리고 우리가 겪는 여러가지 디스플레이 문제들은 pgtk 브랜치가 완성되면 점차 나아질 거임. 사전에 말했다시피 텍스트 버퍼 자료구조(gap buffer)만의 문제도 아님. 이건 생각보다 큰 파일들도 잘처리함. 핵심은 Elisp가 싱글 쓰레디드고, 이거 고치려면 GIL 뜯어내고 대부분 Elisp 코드 다시 써야함. 커플링이 강해서 Xi를 쓰는 건 솔까 무의미하고 Xi를 끼워넣어도 Elisp가 발목잡음. Font lock도 문젠데 곧 lsp처럼 tree-sitter가 자리잡으면 교체 가능할듯.
xi가 잘 설계된 이유가 Rope구조 물론 있지. 그치만 동시 편집기능(CRDT)에 상당한 공을 들였다고 느껴졌음. 트리시터는 이미 사용중. 정규식 파싱보다 훨 낫지. elisp문제는 정말 공감. 난 안드나 IOS처럼 UI쓰레드와 별개로 동작해야하며 Webworker같은것도 필요하다고 생각함. 프리징 생길때가 제일 많이 짜증남.
안그래도 최근에 emacs-devel에서 CRDT/OT 얘기 오고 감. 관심 있는 사람들 끼리 모여서 proposal하나 내던가 할 듯. 예전에 아톰에서 Teletype 써봤는데 진짜 유용할 듯. 쓰레딩은.. 아직 26부터 적용된 쓰레드 api (cooperative thread)도 활용하는 패키지들이 적으니... 난 다른 것 보다 gnus나 빨리 고쳤으면 좋겠다.
그리고 저 페북 포스트 올라왔을 때에 비해 지금 이맥스 개발 페이스가 더 빠름. 관심 있으면 emacs-devel 놀러와.
참고로 vscode 사이드바 view 메뉴에서 없앨 수 있을 걸? ctrl-b인가 이것도 있고.
바자체는 못없애지 않나유?
View -> Appearance -> Hide/Show Activity Bar
오 ㄱㅅㄱㅅ ++
이멕스가 느린이유는 더블버퍼링과는 상관이없습니다 고갱님 - dc App
UI랑 리스프 머신과 커플링이 너무 심해보이던데.