Elixir PR 대충 읽기 (4.21-4.30)

May 08, 2017

Elixir 대충 읽기

Add Process.cancel_timer/2

두번째 인자에 옵션을 넘길 수 있도록 시그니처가 하나 추가됨.

간단하게 설명하자면 Process.send_after/3으로 예약해둔 전송을 취소함. 옵션으로는 동기/비동기 처리 여부 설정(:async), 결과 정보 반환 여부(:info) 설정이 가능함.

Calendar: add support for ISO8601 basic format

ISO8601의 ‘-‘를 포함하지 않는 기본 형식이 있는데, 옵션으로 이를 지원. 무슨놈의 엔드포인트가 이렇게 많은지, 하면서 보고 있었는데 입력 형식이 많아서…

Make defoverridable/1 accept a module name as an argument

아직 비헤이비어의 동작에 대해서 명확히 몰라서 좀 애매하지만, 기존에 구현해야하는 메소드 목록을 defoverridable로 제공했다면, 이제 비헤이비어 모듈명 자체를 넘기는 것으로 간략화할 수 있도록 하는 패치.

이쪽도 잠깐 좀 읽어봤는데, 이대로라면 1.5나 1.6언저리부터 프로토콜의 @impl 어노테이션 이름이 갈릴지도…

Change module attribute name that stores internal protocol metadata

그리고 곧장 @protocol_metadata 라는 이름으로 갈렸습니다. 이거 업데이트되면 한동안 파란이 일거 같은데…

Use single-equals when comparing variables in bin/elixir

…변수 비교에 ==을 쓰는건 bash 뿐인가[..]

Avoid warnings in hd/1 and tl/1 tests

PR 내용은 별거 없는데, 하나 발견한 부분이 있어서 메모.

method([])라고 넘기면 warning: this expression will fail with ArgumentError라는 경고가 떨어지는 모양. 재귀에서 많이 쓰는 패턴이니 아마 컴파일 타임에서 에러를 주는 듯 싶다.

Validate the value of the @on_load attribute

Module@on_load라는 훅이 있는데, 여기에 넘기는 값을 검증하도록 변경됨.

Support :on_timeout in Task.async_stream and friends

Task.async_stream 시리즈에서 타임아웃이 발생할 경우 사용할 전략을 선택 가능하게끔 개선. 기본값이 프로세스를 죽이는 거라니, 같은 기분.

감상

이번에도 딱히 이상할 건 없고, 좀 더 친절한 검증과 동시성에 대한 지원이 눈에 보이는듯. 기저 VM으로 BEAM을 쓰다보니 언어 자체가 안정적이라서 그런가, 싶기도 하고 그렇다.