Elixir PR 대충 읽기 (4.21-4.30)
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을 쓰다보니 언어 자체가 안정적이라서 그런가, 싶기도 하고 그렇다.