Trawling

개발·오픈소스 · 최신기사

개발 도구와 언어, 웹 기술과 오픈소스 프로젝트의 변화를 다룹니다.

Bend — 증명으로 AI의 실수를 막는 고속 프로그래밍 언어

발행

Bend는 C에 근접한 단일 코어 속도, 스레드나 락 없이 CPU·GPU로 확장되는 자동 병렬화, 그리고 Lean·Rocq식 증명 검사를 결합한 새 프로그래밍 언어입니다. LAWS.bend에 깨면 안 되는 법칙을 선언해 두면 AI가 이를 위반하는 코드를 배포할 수 없게 만들어, AI가 코드를 대신 쓰는 시대에 '의도를 정밀하게 명시하는 수단'을 표방합니다.

Vinix – V 언어로 작성된 모던 운영체제

발행

V 언어로 커널을 처음부터 작성한 Unix-like 운영체제 Vinix가 Apple Silicon Mac 지원과 Alpine Linux 바이너리 호환을 내세우며 다시 주목받고 있습니다. 부팅 후 약 100MB RAM과 1GB 디스크만 사용하며, Linux 시스템 콜 인터페이스를 구현해 Chromium, GIMP, Blender 등 기존 패키지를 네이티브로 실행합니다. 현재 M1 GPU 드라이버 개발이 진행 중이며, Wine과 x86 변환 레이어를 기반으로 한 게이밍 지원도 로드맵에 포함되어 있습니다.

C 개발자가 Python for 루프를 이해하게 된 순간 — range 함수를 파헤치며 배운 것들

발행

C 언어 배경의 개발자가 Python의 for 루프를 낯설어하다가 range 함수의 구조를 이해하면서 루프의 동작 방식을 파악하게 된 과정을 정리한 글입니다. range가 start·stop·step 인자를 받는 불변 시퀀스 객체이며, 크기와 무관하게 O(1)의 시간과 공간으로 생성된다는 사실을 설명하고, 비선형 반복은 while 루프가 더 적합하다는 점을 짚습니다.

내 에이전트에게 bash는 잘못된 언어였을까? — 2,150줄 bash를 Python으로 옮기며 배운 것

발행

한 번에 하나의 작업을 처리하는 소규모 AI 에이전트를 2,150줄의 bash에서 Python으로 하루 만에 포팅한 개발자의 회고입니다. 결론은 단순한 'bash가 틀렸다'가 아니라, 리라이트의 비용은 시작 전에 이미 결정되어 있으며, 표현력 부족이 성능보다 먼저 설계를 지배한다는 분석입니다. 포팅 결과 코드는 40% 줄었지만 총 라인 수는 주석 때문에 오히려 늘었다는 역설적인 수치도 담겨 있습니다.

Rust 커뮤니티 주의보 — 유명 Rust 개발자와 인기 크레이트 소유자를 노린 표적 공격 진행 중

발행

Rust 프로젝트가 rust-lang 멤버와 인기 크레이트(crates) 소유자를 노리는 표적 공격 캠페인이 진행 중이라고 공식 경고했습니다. 공격자는 채용·계약 등을 미끼로 한 화상 통화를 통해 악성코드를 설치하게 만들고, 탈취한 계정으로 악성 크레이트를 배포하려는 것이 목적입니다. Rust 사용자라면 MFA 상태와 계정 로그인 기록을 점검할 것이 권고됩니다.

Tilia — Haskell을 위한 새로운 포매터

발행

Mark Karpov이 처음부터 새로 작성한 Haskell 포매터 Tilia가 Hackage에 첫 릴리스로 공개되었습니다. ghc-lib-parser 기반 위에서 오랫동안 난제로 꼽히던 연산자 픽시티(fixity) 추론과 CPP 전처리기 지원을 원리 있는 방식으로 해결하려 시도했다는 점이 핵심입니다. 포매터가 Cabal 빌드 플랜과 공생하며 실제 의존성 정보를 읽어 정확도를 보장하는 설계가 특징입니다.

골든 스파이크, 그리고 Vale(n) 프로그래밍 언어의 부활 — rustc와 직접 통신하는 Rust++ 언어를 향하여

발행

Vale 언어의 저자 Evan Ovadia가 Rust 컴파일러와 직접 통신하는 새 언어 Valen의 첫 상호운용 성공 사례를 공개했습니다. C ABI를 우회하고 rustc를 라이브러리로 구동해 언어 경계를 넘는 제네릭 호출과 Rust 트레이트 구현을 실현했으며, 최종 목표는 경계를 넘나드는 메모리 안전성입니다.

Quarkus 4가 Spring Boot 4를 겨냥한다 — 2026년 두 자바 프레임워크의 실제 비교

발행

Quarkus 4와 Spring Boot 4.x가 2026년 11월 같은 시기에 주요 릴리스를 앞두고 있습니다. Quarkus는 Vert.x 5 기반 I/O 코어 전면 재작성과 Project Leyden AOT로 기동 시간을 3초에서 900ms까지 줄이는 등 공격적인 변화를, Spring Boot는 모듈화와 점진적 개선으로 대응하고 있습니다. JVM 백엔드를 운영한다면 향후 몇 달이 향후 수년간의 기본값을 결정한다는 것이 저자의 진단입니다.

facebook/mms-300m — 1,400개 이상 언어로 사전학습된 Meta의 다국어 음성 모델

발행

Meta(Facebook) AI가 공개한 MMS(Massively Multilingual Speech) 프로젝트의 3억 파라미터 체크포인트입니다. 약 50만 시간 분량, 1,400개 이상 언어의 음성 데이터로 Wav2Vec2 자기지도학습 방식으로 사전학습됐으며, ASR·번역·분류 같은 다운스트림 작업에 파인튜닝해 사용하는 기반 모델입니다.

malloc() 알고리즘 비교 — 아레나 아키텍처에서 NUMA·락프리 설계까지

발행

멀티스레드 프로그램에서 힙이 병목이 되는 이유를 설명하고, dlmalloc부터 snmalloc까지 주요 메모리 할당자를 스레드 안전성·CAS 경합·NUMA 지역성·파편화 관점에서 비교한 글입니다. 워크로드 유형별로 어떤 할당자를 고르고 무엇을 피해야 하는지 추천표까지 제시합니다. 임베디드·저지연·NUMA 환경에서 할당자 선택을 고민하는 개발자에게 유용한 참고 자료입니다.

Laravel 앱 전체를 php-wasm에 넣고 폰에서 돌려봤습니다 — 무엇이 깨졌는가

발행

php-wasm으로 브라우저에서 코드 조각을 실행하는 데모는 흔하지만, NativeBlade는 vendor/를 포함한 Laravel + Livewire 앱 전체를 서버 없이 WebView 안에서 구동합니다. PHP가 JavaScript의 비동기 작업을 기다릴 수 없다는 근본 제약을 'sentinel 출력 후 exit, 캐시 기반 재실행'이라는 독특한 우회법으로 해결했으며, 이 과정에서 드러나는 결정적 재실행·요청 큐·null origin 등의 실전 문제들을 상세히 공유합니다.

Fitz의 아이소모픽 하이드레이션 — 서버가 첫 화면을 그리고 WASM이 DOM을 그대로 인계받는다

발행

FitzLiveViews 시리즈 8편으로, .fitzv 컴포넌트 하나가 서버에서는 HTML로 렌더링되고 클라이언트에서는 WASM 앱으로 부팅해 서버가 그린 DOM 노드를 재생성 없이 그대로 '입양(adopt)'하는 하이드레이션 구현을 다룹니다. 가상 DOM 재조정이 없어 hydration mismatch 자체가 성립하지 않고, 프레임워크 런타임을 클라이언트에 싣지 않는다는 점이 차별점입니다.

2014년에 만든 임시 PHP 패치가 2,000만 회 설치됐습니다 — 오늘 deprecated 처리합니다

발행

저자가 2014년 AOL CMS 업그레이드 중 임시로 작성한 http_build_url() 폴리필이 12년간 Packagist에서 약 2,000만 회 설치되고 WordPress 플러그인·Debian 등에 번들되며 널리 퍼졌습니다. PHP 8.5에 표준 URI API가 도입된 지금, 저자는 유지보수나 인수인계 대신 패키지를 deprecated 처리하기로 결정했습니다.

C++26: 자명한 무한 루프는 더 이상 미정의 동작이 아니다

발행

C++에서 while (true); 같은 부수 효과 없는 무한 루프는 지금까지 미정의 동작(UB)이었고, Clang은 이를 최적화로 제거해 루프 뒤의 코드가 실행되는 일까지 벌어졌습니다. C++26의 P2809R3은 '자명한 무한 루프(trivial infinite loop)'라는 좁은 범주를 정의해 이를 유효한 동작으로 바꾸고, 루프 본문을 std::this_thread::yield() 호출로 대체해 forward progress를 보장합니다. C에서는 이미 C11부터 유효했던 동작이라 C와 C++의 불필요한 분기도 해소됩니다.

google-bert/bert-base-uncased — 마스크드 언어 모델링으로 사전학습된 대표적 영문 인코더 모델

발행

Google이 공개한 BERT의 base uncased 버전으로, 1억 1천만 개 파라미터를 가진 영문 사전학습 모델입니다. Masked Language Modeling(MLM)과 Next Sentence Prediction(NSP) 두 가지 목표로 자기지도학습되었으며, 분류·토큰 분류·질의응답 같은 다운스트림 태스크에 파인튜닝해 사용하도록 설계되었습니다. Hugging Face에서만 월 4,700만 회 이상 다운로드되는 사실상의 표준 인코더 모델입니다.

선언형 GUI 툴킷 Slint 1.18 출시 — FlexboxLayout·스프링 애니메이션·실험적 Vello 렌더러

발행

Rust 기반 선언형 GUI 툴킷 Slint가 1.18 버전을 공개했습니다. 이번 릴리스는 컴파일러가 더 작고 빠른 바이너리를 생성하도록 개선됐고, 웹의 Flexbox를 옮긴 FlexboxLayout, 스프링 애니메이션, 런타임 z-order 변경 등 생산성 개선이 중심입니다. 실험적 Vello 렌더러와 접근성·언어 서버 개선도 포함됐습니다.

폴란드어로 코딩하는 프로그래밍 언어를 만들었다 — 그 과정에서 Ruby에 대해 배운 7가지

발행

Ruby 개발자가 'x = 5를 입력하고 머신이 동작하기까지 무슨 일이 일어나는지' 궁금해 시작한 주말 프로젝트가 18개월 후 표준 라이브러리, async/await, 디버거, 자체 웹 프레임워크를 갖춘 폴란드어 키워드 스크립트 언어 AlexScript로 성장했습니다. throw/catch를 이용한 return 구현, UTF-8 바이트 단위 렉싱, 네이티브-유저 메서드 테이블 통합, Fiber 기반 비동기 런타임 등 인터프리터를 Ruby로 직접 만들며 얻은 구체적인 성능·설계 교훈을 정리합니다.

Unicode 18.0.0 — 13,007자 추가, Jurchen·Seal·Proto-Cuneiform 세 개의 새 문자 체계 수록

발행

Unicode Consortium이 Unicode Standard 18.0.0의 베타 리뷰 페이지를 공개했습니다. 13,007자가 추가되어 총 172,808자가 되며, Jurchen(여진), Seal(소전), Proto-Cuneiform 숫자라는 세 개의 새 스크립트가 수록됩니다. 줄바꿈·그래핌 클러스터 규칙 수정과 Unihan 프로퍼티 개편 등 구현체 마이그레이션에 영향을 주는 변경도 다수 포함되어 있습니다.

unsigned long int vs unsigned long long int — Linux와 직접 만든 32bit OS 사이에서 겪은 골칫거리

발행

취미로 32bit OS를 개발하는 저자가 `typedef unsigned long u64`가 자기 OS에서는 32bit, Linux에서는 64bit로 해석되면서 타이밍 함수가 통째로 깨졌던 경험을 공유합니다. sizeof 검증 과정, 오버로드 가능한 memset, 그리고 JavaScript식 이벤트 큐로 구현한 스케줄러 설계까지 함께 소개하며, C의 데이터 모델(LP64/LLP64) 차이가 왜 중요한지 보여줍니다.