Bullshitting Blog

개소리하는 블로그

Actor 라이브러리에서 proc-macro 제거

Tags = [ actor ]

액터 라이브러리에서 proc-macro를 다시 제거했다.

결과적으로 중복코드를 많이 생성하는 것이기도 하고, 써보니까 오히려 보기에 더 지저분해짐. 물론 예쁘게 되도록 선언하지 못한 내 잘못이겠지만 말이다. 매크로는 derive macro까지 정복하고 활용해야지.

그것보다는, 결정적으로 동기만 지원하게 되어 있는 것이 가장 큰 문제였다. current 런타임을 불러와서 block_on을 이용하는데 신경 조금만 덜 쓰면 에러가 발생했다.

회사에서 리뉴얼하고 있는 서비스 개발 기한도 1주일밖에 안남은 시점인데 여기도 그걸 사용함. 그럼, 어떻게든 끼워맞춰 쓰는게 능사일까? 아니다. 내 경험 상, 그렇게 끼워맞추는데 시간이 더 들고, 실패 시 리스크가 훨씬 크다. ‘이거 하려고 내가 얼마나 공수를 많이 투입했는데’ 하는 순간 돌아올 수 없는 강을 건너게 된다. 심한 경우 라이브러리 하나 때문에 시스템 구조를 바꿔버리는 케이스도 생긴다. 설상가상으로, 그런 식으로 바꾸면 보통 문서 업데이트도 안한다. 곧 다시 개선할거라고 하며, 실제로는 그 부분을 까먹으며.

그래서 어제 모처럼 휴일이겠다, 바로 착수했다. proc-macro 걷어내고, bincode 인코딩을 통해 한 액터 시스템에서 여러 메시지 타입을 이용할 수 있도록 한 피쳐를 그 위에 올렸다. 기존에 마음에 안들던 trait 함수로 디폴트 넣어서 생략 가능하게끔 바꿈. 이제 벌써 4.0.0 버전이다.

적용은 그리 오래 걸리지 않았다. 물론 구조체 위치 등 정리할건 있지만 그냥 매크로가 써줄 애들을 다시 trait으로 원복했을 뿐이기 때문이다.

오늘은 4.1.0 버전을 개발할 생각이다. 액터 주소를 정규식으로 필터할 수 있도록 할 생각이다. 지금 글쓰는 도중에 구상 완료.