하스켈 위클리 494호: catlang으로 SQL로 컴파일되는 언어, 자유 어플리커티브와 핸들 패턴, GHC 9.14.1-alpha3, 웹 프레임워크 테스트 전략, GHC API Windows DLL 삽질기, Kaggle 스타일 워크플로우, 프로퍼티 기반 테스트의 축소(shrinking), GHC 생태계의 새로운 역할, io-sim으로 적시성 검증 등. 채용과 프로젝트 소식 포함.
또 한 주의 Haskell Weekly에 오신 것을 환영합니다! Haskell은 안전하고 순수 함수형인 프로그래밍 언어로, 빠르고 동시성이 뛰어난 런타임을 제공합니다. 이 글은 그 커뮤니티에서 일어나는 일들을 주간으로 요약한 것입니다.
요즘 일을 잠시 쉬게 되어서, 평소답게 썩 현명하지만은 않은 방식으로 시간을 보내고 있습니다. 구체적으로는 SQL로 컴파일되는 작은 프로그래밍 언어를 만들었습니다. 이름은 catlang입니다. 새 쿼리 언어를 만들었다는 뜻은 아닙니다. 이는 컴파일러가 하나의 거대한
SELECT문을 뱉어내는 프로그래밍 언어입니다. 그 쿼리를 postgres에서 실행하면, 프로그램의 출력이 나옵니다.
이 글에서는 우리가 핸들을 어떻게 사용해 왔는지, “자유 구조물(free structures)”이 무엇인지, 자유 어플리커티브가 원격 시스템과의 인터페이스에서 겪던 몇 가지 문제를 얼마나 우아하게 해결해 주었는지, 그리고 그것이 “핸들 패턴”과 얼마나 잘 맞물리는지를 살펴봅니다.
GHC 개발자들은 GHC 9.14.1의 세 번째 알파 릴리스를 공개하게 되어 매우 기쁩니다.
우리의 접근 방식과 다소 독특한 설계의 결과로, 테스트해야 할 표면적이 매우 넓습니다. 각 레이어는 저마다 창의적인 방식으로 깨질 수 있고, 강력한 자동화 테스트 모음이 우리의 정신 건강을 (어느 정도) 지켜 줍니다. 이 글의 목표는 컴파일러 주도형 풀스택 프레임워크에서 전통적인 테스트가 코드 생성과 개발자 경험과 교차하는 지점에서의 실용적인 테스트 방법을 보여주는 것입니다.
최근에 하스켈 코드를 “검사”하고 사용자에게 피드백을 줄 수 있는 프로그램을 만들어 보려고 했습니다. 그런데 이 검사기가 Windows에서도 동작해야 하고, 이미 실행 중인 C++ 프로그램의 컨텍스트에서 작동해야 했습니다. 이 부분에서 일이 눈덩이처럼 불어나 수 시간의 씨름으로 이어졌습니다.
하스켈 생태계에서는 Kaggle처럼 대화형 스크립트를 작성하기 쉽게 만드는 작업이 많이 진행되어 왔습니다. 여기서는 세 가지 도구—dataframe(제가 만든 도구), hasktorch, IHaskell—의 시너지를 소개하고자 합니다.
축소는 프로퍼티 기반 테스트에서 매우 중요한 단계입니다. 테스트를 위해 함수에 대한 랜덤 입력을 생성하면, 그 랜덤 입력에는 불필요하고 산만한 세부 정보가 자주 섞여 있습니다. 축소의 목적은 그 노이즈를 제거해 최소한의 테스트 케이스가 나오게 하는 것입니다. 이번 에피소드에서는 축소기를 작성하는 방법을 살펴보고, 몇 가지 함정에 대해 논의하며, 좋은 축소기를 작성할 때 마주치는 더 미묘한 어려움들을 어떻게 다룰 수 있는지 탐구합니다.
깨어 있는 시간의 큰 부분을 GHC에 대해 생각하는 데 바친 지 10년이 넘었고, 이제는 새로운 것을 시도해 볼 때가 된 것 같습니다. 앞으로 몇 달 안에 저는 Positron AI에서 새로운 장을 시작할 예정이며, AI 추론의 기하급수적으로 커지는 환경적 영향을 완화하는 일을 하게 됩니다.
동시성 시스템은 비결정적 특성 때문에 테스트와 검증이 어렵습니다. 실행할 때마다 달라지는 동작을 검증하는 것은 쉽지 않습니다. 경쟁 상태는 스레드 스케줄링의 비결정적 세계에서 활개를 칩니다. 더 어려운 것은 적시성 제약을 검증하는 일, 즉 작업이 정해진 기한 내에 완료되도록 보장하거나 부하 상황에서도 서비스 보장을 유지하게 하는 일입니다. 전통적 테스트 접근법은 동시성에서 고전하고, 목킹 전략은 실제 운영 장애를 일으키는 스레드, 시간, 공유 상태 사이의 미묘한 상호작용을 포착하지 못하는 경우가 많습니다.
숙련된 하스켈 개발자를 찾고 있습니다. 원격 근무 가능. 가급적 동일하거나 가까운 시간대면 좋습니다. 2개 포지션이 열려 있습니다.
미국 또는 캐나다에서 채용하며, 원격 또는 샌프란시스코, 뉴욕, 포틀랜드 근무가 가능합니다. 분명히 하자면, 이번 인턴십은 미국이나 캐나다에 거주해야 합니다.
Dear-imgui-2.4.0 출시 작성: wiz
FuNes 작성: Arthur Jamet
FuNes는 Haskell로 작성된 닌텐도 엔터테인먼트 시스템(NES) 에뮬레이터입니다.
cql과cql-io(각각 4.1.0.0과 2.0.0) 패키지 후보를 발표하게 되어 기쁩니다. 두 패키지는 함께 Haskell용 Cassandra 드라이버를 이룹니다.
타입 수준 문자열 파서 조합기 라이브러리 Symparsec의 대규모 업데이트를 Hackage에 릴리스했습니다. 이전 버전에는 한계가 있었습니다. 상호 재귀적이거나 특정 실패 가능한 파서를 정의하는 것이 불가능해 보였죠. 이제 그 제약은 과거의 일이 되었습니다.
stack프로젝트에서 여러 개의 실행 파일을 만드는 방법이 궁금했던 적이 있나요? 저도 없었습니다. 제가 갖고 놀던 실험에서 그게 안 된다는 걸 발견하기 전까지는요.
오늘은 지난주에 시작한 동적 계획법(DP)에 대한 학습을 이어갑니다. 지난주 문제에서는 매우 작은 메모리 풋프린트를 사용할 수 있었고, 몇 개의 이전 값만 기억하면 됐습니다. 이번 주에는 새로운 해를 채워 넣는 데 도움이 되도록 더 긴 길이의 이전 값 배열을 저장하도록 강제하는, 매우 정석적인 DP 문제를 살펴봅니다.