← 목록
기타 2026-07-07 6KB 읽기 7분

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 가드)

  1. usleep/ftruncate 매크로 vs unistd.h 순서_WIN32 블록 진입 직후
#include <unistd.h> 추가(매크로 정의보다 앞). mingw 프로토타입 재선언 충돌 해소.
  1. crownyc_jit.c POSIX 전용 include#ifndef _WIN32 ... #include "crownyc_jit.c" #else ... #endif
로 감싸고, cj_init()/cj_note_call() Windows용 no-op 스텁 추가. v0 JIT는 핫디스패치 미배선(항상 BAIL)이라 기능 손실 없음.
  1. setsockopt() 캐스트 — 실제로는 7개 콜사이트(문서 추정 6개보다 1개 많음,
RCVTIMEO/SNDTIMEO가 별도 라인). 전부 (const char*)&opt 캐스트 — Winsock 요구사항이며 POSIX에서도 무해(암묵적 void→char 변환과 동일).
  1. SO_REUSEPORT 가드#ifdef SO_REUSEPORT ... #endif로 감싸 Windows
미정의 심볼 컴파일 에러 방지.

2. 3플랫폼 빌드 검증

  • macOS (정본): 임시경로 빌드 → --version(11.0.2 유지)·RPN(3 7 더해→10)·
hello world(고수준) 전부 기준선과 동일 출력 확인 → 정본 교체.
  • 새 함정 발견: 실행파일을 cp로 같은 경로에 덮어쓴 직후 실행하면
  • SIGKILL(exit 137) — macOS 코드서명 캐시가 옛 inode에 결속되어 발생하는 것으로 추정. mv(새 inode로 rename)로 교체하면 정상 실행. 향후 바이너리 교체는 반드시 mv 사용.
  • pkg/crownyc.c 동기화(cp) + pkg 재빌드·검증 완료.
  • Windows (mingw): x86_64-w64-mingw32-gcc -O2 -o crownyc.exe crownyc.c -lm -lws2_32
  • 빌드 성공(에러 0, 경고 1건 — nd_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
    빌드 성공, 경고 0건. fileELF 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
    구버전(STR 패치 미포함) → 2026-07-07 정본 동기화 정적빌드로 교체(구버전은 .bak-2026-06-21로 보존). README-버전주의.md 갱신.
    • staging/windows-x86/bin-experimental/crownyc.exe 신규 추가(기존
    hanseonc_high.exe/toau_pack.exe와 함께 3종), src/crownyc.c 정본 동기화, README.md를 "소스만 배포"에서 "바이너리 동봉"으로 전면 갱신.
    • 한선씨설치-linux-x64.ccp, 한선씨설치-windows-x86.ccp 재생성(ccp a) →
    압축해제 라운드트립으로 바이너리 bit-identical 검증 완료 → sha256 재생성 → /Users/ef/crowny-hansunc/public/dist/에 배포(구버전 .bak-2026-07-07-이전 보존) → curl로 200 + 정확한 크기(linux 2,709,811B / windows 1,482,191B) 확인.
    • download.html Linux/Windows 카드 문구 갱신(Windows: "소스만" → "바이너리
    동봉", Linux: "2026-06-21 스냅샷" → "2026-07-07 정적 재빌드, 정본 동기화").

    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
    네이티브 실행 불가) — 실 Linux 환경 또는 에뮬레이션 환경에서 스모크 권장.
    • nd_hash의 FNV-1a 64비트 상수가 Windows unsigned long(32비트)에서
    truncate되는 기존 경고 — 이번 작업 범위 밖이나 Windows 실행 검증 시 해시 일관성 확인 필요(64비트 타입 명시로 수정 가능, uint64_t 사용 권장).
    • macOS 바이너리 교체 시 cp(in-place overwrite) → SIGKILL 함정 신규 발견,
    향후 정본 교체 프로토콜에 "반드시 mv" 명시 필요(메모리 feedback 등록 권장).