crownyc 윈도우 이식 4수정 + 리눅스 정적(musl) 재빌드 + 패키지 갱신
개요
오늘(2026-07-07) 이전 세션의 설치프로그램 감사에서 문서화된 잔여 과제 3건을 완료: ①crownyc.exe Windows 빌드 4수정(가드 방식) ②Linux x64 정적(musl) 재빌드 ③배포 패키지(.ccp) 갱신 + npm 게시.
무엇을 했는지
1. Windows 4수정 (정본 /Users/ef/CrownyOS/crownyc/crownyc.c, 전부 #ifdef _WIN32/#ifndef _WIN32 가드)
- usleep/ftruncate 매크로 vs unistd.h 순서 —
_WIN32블록 진입 직후
#include <unistd.h> 추가(매크로 정의보다 앞). mingw 프로토타입 재선언
충돌 해소.
- crownyc_jit.c POSIX 전용 include —
#ifndef _WIN32 ... #include "crownyc_jit.c" #else ... #endif
cj_init()/cj_note_call() Windows용 no-op 스텁 추가. v0 JIT는
핫디스패치 미배선(항상 BAIL)이라 기능 손실 없음.
- setsockopt() 캐스트 — 실제로는 7개 콜사이트(문서 추정 6개보다 1개 많음,
(const char*)&opt 캐스트 — Winsock
요구사항이며 POSIX에서도 무해(암묵적 void→char 변환과 동일).
- SO_REUSEPORT 가드 —
#ifdef SO_REUSEPORT ... #endif로 감싸 Windows
2. 3플랫폼 빌드 검증
- macOS (정본): 임시경로 빌드 →
--version(11.0.2 유지)·RPN(3 7 더해→10)·
cp로 같은 경로에 덮어쓴 직후 실행하면mv(새 inode로 rename)로 교체하면 정상 실행. 향후 바이너리
교체는 반드시 mv 사용.
x86_64-w64-mingw32-gcc -O2 -o crownyc.exe crownyc.c -lm -lws2_32nd_hash의 FNV-1a 64비트 상수가 Windows
unsigned long(LLP64, 32비트)로 truncate되는 기존 이슈, 이번 이식과 무관,
해시 알고리즘 동작 자체엔 영향 없어 별도 이슈로 남김). hanseonc_high.exe,
toau_pack.exe도 빌드 성공. PE32+ x86-64 포맷 확인. Wine 미설치로 실행
미검증(빌드/링크만).
- Linux x64 정적(musl):
x86_64-linux-musl-gcc -O2 -static -o crownyc_linux crownyc.c -lm -lpthread
file로 ELF 64-bit ... statically linked 확인.
TLS(crowny_tls.c)는 __APPLE__ 미정의 시 non-Apple 스텁 경로 사용(기존
코드에 이미 있던 분기, 손대지 않음) — HTTPS opcode는 스텁상 -1 반환.
hanseonc_high도 동일 방식 정적빌드 성공. QEMU/Docker 미설치로 실행 자체는
미검증(정적링크 확인까지).3. 패키지 갱신
/Users/ef/crowny-hanseon-dist/linux/bin/,staging/linux-x64/bin/— 6/21
.bak-2026-06-21로 보존). README-버전주의.md 갱신.
staging/windows-x86/—bin-experimental/에crownyc.exe신규 추가(기존
src/crownyc.c 정본 동기화,
README.md를 "소스만 배포"에서 "바이너리 동봉"으로 전면 갱신.
한선씨설치-linux-x64.ccp,한선씨설치-windows-x86.ccp재생성(ccp a) →
/Users/ef/crowny-hansunc/public/dist/에 배포(구버전 .bak-2026-07-07-이전
보존) → curl로 200 + 정확한 크기(linux 2,709,811B / windows 1,482,191B) 확인.
download.htmlLinux/Windows 카드 문구 갱신(Windows: "소스만" → "바이너리
4. npm 게시
pkg/에서npm version patch→ 11.0.2 → 11.0.3.- CHANGELOG.md에 v11.0.3 항목(윈도우 이식 가드 4종 + 리눅스 정적빌드 상세) 추가.
npm publish(verdaccio, localhost:4873) 성공 — 121 files, 708.6kB tarball.npm view @crowny/crownyc --registry http://localhost:4873 versions→
[ '11.0.0', '11.0.1', '11.0.2', '11.0.3' ] 확인.관련 파일
/Users/ef/CrownyOS/crownyc/crownyc.c(정본, 4수정 적용, 백업:
crownyc.c.bak-2026-07-07-윈도우이식전)
/Users/ef/CrownyOS/crownyc/crownyc(정본 바이너리, 백업:
crownyc.bak-2026-07-07-윈도우이식전)
/Users/ef/CrownyOS/crownyc/pkg/crownyc.c,pkg/crownyc,pkg/CHANGELOG.md,
pkg/package.json(11.0.3)
/Users/ef/crowny-hanseon-dist/linux/bin/{crownyc,hanseonc_high}(정적 재빌드)/Users/ef/crowny-hanseon-dist/staging/{linux-x64,windows-x86}/(패키징 소스)/Users/ef/crowny-hanseon-dist/설치/한선씨설치-{linux-x64,windows-x86}.ccp[.sha256]/Users/ef/crowny-hansunc/public/dist/한선씨설치-{linux-x64,windows-x86}.ccp[.sha256]/Users/ef/crowny-hansunc/public/download.html
잔여 이슈
- Windows 실행 검증 미완(Wine 미설치) — 실 Windows 환경 또는 Wine 설치 후
- Linux 정적빌드 실행 검증 미완(QEMU/Docker 미설치, arm64 Mac에서 x86_64 ELF
nd_hash의 FNV-1a 64비트 상수가 Windowsunsigned long(32비트)에서
uint64_t 사용 권장).
- macOS 바이너리 교체 시
cp(in-place overwrite) → SIGKILL 함정 신규 발견,