# Elixir 1.17 출시: 패턴의 집합 이론적 타입, 기간, OTP 27

> Clean Markdown view of GeekNews topic #15310. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15310](https://news.hada.io/topic?id=15310)
- GeekNews Markdown: [https://news.hada.io/topic/15310.md](https://news.hada.io/topic/15310.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-06-13T09:43:43+09:00
- Updated: 2024-06-13T09:43:43+09:00
- Original source: [elixir-lang.org](https://elixir-lang.org/blog/2024/06/12/elixir-v1-17-0-released/)
- Points: 1
- Comments: 1

## Topic Body

### Elixir v1.17 출시: 집합 이론적 타입, 캘린더 지속 시간, Erlang/OTP 27 지원

#### 점진적 집합 이론적 타입 경고

- Elixir v1.17은 패턴에서 타입을 추론하고 이를 사용해 프로그램을 타입 체크하는 집합 이론적 타입을 도입함.
- 이 타입 시스템은 기존 소프트웨어를 변경하지 않고도 코드베이스의 오류와 버그를 찾을 수 있게 해줌.
- 현재는 경고를 통해서만 개발자들이 이 타입 시스템과 상호작용할 수 있음.
- 주요 경고:
  - 존재하지 않는 키에 대한 패턴 매칭
  - 존재하지 않는 키에 대한 접근
  - 모듈이 아닌 곳에서 함수 호출
  - 익명 함수 호출 시 함수가 아닌 것을 호출
  - 구조체 간의 비교
  - 겹치지 않는 타입 간의 비교
  - 잘못된 바이너리 패턴 매칭
  - 정의되지 않은 예외 구조체를 구출하려는 시도
  - 구출된 예외에서 정의되지 않은 필드 접근

#### Erlang/OTP 지원

- Elixir v1.17은 Erlang/OTP 27을 지원하며, Erlang/OTP 24에 대한 지원을 중단함.
- Elixir 개발자들은 Erlang/OTP 26 이상으로 마이그레이션할 것을 권장함.
- Erlang/OTP 27의 주요 기능:
  - json 모듈 추가
  - 프로세스 레이블 (proc_lib:set_label/1) 추가

#### 새로운 Duration 데이터 타입과 날짜 이동 함수

- Elixir v1.17은 Duration 데이터 타입과 날짜, 시간, 날짜 시간을 주어진 기간만큼 이동시키는 API를 도입함.
- 예시:
  ```elixir
  iex> Date.shift(~D[2016-01-31], month: 2)
  ~D[2016-03-31]
  ```
- Duration은 간격, 반복 이벤트, 일정 모델링에 필수적임.
- DateTimes의 경우, Elixir는 시간대 변경을 올바르게 처리함.

#### 기타 주요 변경 사항

- 새로운 Keyword.intersect/2,3 함수 추가.
- 새로운 Mix 프로파일러 mix profile.tprof 추가.
- Kernel.is_non_struct_map/1 가드 추가.
- Elixir의 Logger가 gen_statem 보고서를 포맷하고 Erlang/OTP 27 프로세스 레이블을 포함함.

### GN⁺의 의견

- **집합 이론적 타입**: 이 타입 시스템은 코드의 안정성과 신뢰성을 높이는 데 큰 도움이 될 수 있음. 특히, 대규모 프로젝트에서 유용함.
- **Erlang/OTP 27 지원**: 최신 버전의 Erlang/OTP를 지원함으로써 성능과 기능 면에서 많은 이점을 제공함.
- **Duration 데이터 타입**: 시간대와 캘린더를 고려한 날짜 이동 기능은 일정 관리와 같은 애플리케이션에서 매우 유용함.
- **타입 시스템의 한계**: 현재는 함수 경계 너머의 타입 분석이 불가능하므로, 이 부분은 향후 업데이트에서 개선될 필요가 있음.
- **경쟁 제품**: 다른 언어들, 예를 들어 TypeScript와 같은 정적 타입 시스템을 제공하는 언어들과 비교해볼 때, Elixir의 접근 방식은 동적 언어의 유연성을 유지하면서도 타입 안정성을 제공함.

## Comments



### Comment 26205

- Author: neo
- Created: 2024-06-13T09:43:44+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40656747) 
- Elixir와 Erlang 팀이 최근 몇 년 동안 뛰어난 성과를 내고 있음. 라이브러리와 책 저자들의 기여도 큼. Elixir와 OTP의 커밋을 지켜보며 흥미로움을 느낌. 모든 관련자들에게 감사함.

- Elixir를 백엔드로 사용한 사이드 프로젝트에서 생산적이고 즐거운 경험을 함. LiveView의 생산성을 높이 평가하지만, 네트워크 연결이 불안정한 경우에는 적합하지 않음. Elixir가 LiveView와 분리되어도 충분히 재미있게 사용할 수 있음.

- 스타트업을 Elixir로 풀스택 개발 중이며, 지금까지 사용한 기술 중 가장 훌륭함. 친구들에게 Elixir의 장점을 전파 중. RabbitMQ와 클라이언트가 OTP 27에서 작동하면 좋겠음.

- Elixir와 Erlang 개발자들의 멋진 작업에 감사함. Elixir의 대규모 채택을 위해 "타입이 없다"는 변명이 사라지길 기대함. 계속해서 좋은 성과를 내길 바람.

- 10년 동안 Elixir에 대해 읽어왔고, 언어를 사랑함. 하지만 주류 언어보다 낮은 급여 때문에 Elixir 관련 직업을 포기함. 기술 스택보다 급여와 멋진 제품이 더 중요함. 여전히 Elixir를 멀리서 지켜보는 것은 재미있음.

- 이번 릴리스의 멋진 기능은 `get_in/1`의 추가임. 예를 들어, `get_in(struct.foo.bar)`에서 `foo`가 `nil`을 반환하면 `bar`에 접근해도 오류가 발생하지 않음.

- 이번 릴리스가 내가 원하던 마지막 조각임. 앞으로의 단계가 기대됨. 언어는 이제 100% 기능이 완비되었다고 생각함.

- 타입 시스템에 대해 기대가 큼. José가 "점진적 타입 시스템"이라고 설명한 것을 기억함. 이는 단계적으로 추가될 예정임. 다음 단계에서 새로운 타입 시스템 관련 기능이 나올지 궁금함. 특히 새로운 컴파일러 최적화를 기대함.

- 이번 릴리스에 매우 흥분됨. Elixir IntelliJ 플러그인에 자원이 투입되길 바람. VSCode를 사용하는 것이 즐겁지 않음.

- "집합 이론적 타입"이 무엇을 의미하는지 아는 사람이 있는지 궁금함. 프로그래밍 언어에 관심이 많지만 이 용어는 처음 들어봄.
