CPython AArch64 JIT 패치 노트 읽는 법: ‘관측되지 않은’ 버그라도 운영팀이 신경 써야 하는 이유 meta_description: CPython PR #148198(GH-146128)은 AArch64에서 JIT 코드의 상수 값이 부분적으로 손상될 수 있는 이론적 버그를 수정하기 위해, 문제 소지가 있던 “33rx” 릴로케이션 최적화(폴딩)를 제거했다. 관측 사례가 없어도 이런 패치가 중요한 이유(무증상 데이터 오염 가능성), 어떤 환경에서 의미가 커지는지(AArch64 + JIT 사용), 그리고 서비스 운영자가 지금 바로 할 수 있는 점검/롤백/테스트 체크리스트를 실무 관점에서 정리한다. meta_keywords: python,cpython,jit,aarch64,arm64,relocation,constant corruption,patch,stencil,optimizer,performance,stability,regression testing,release engineering,build,production,observability,risk meta_robots: index,follow 파이썬 릴리즈 노트나 PR을 보면 가끔 이런 문장이 나온다. “이 이슈는 theoretical이며, unmodified Python 인터프리터에서는 관측되지 않았다.” 대부분의 개발자는 여기서 스크롤을 내린다. “그럼 우리랑 상관 없겠네.” 근데 운영 관점에서는 오히려 반대로 읽는 게 맞다. 관측되지 않았다는 건, 관측이 어려운 종류 일 수도 있다 특히 이번 PR #148198(GH-146128)은 표현이 꽤 무섭다. AArch64 JIT 코드에서 상수 값이 “부분적으로 손상(partially corrupted)”될 수 있음 크래시가 아니라, 값이 조용히 틀어지는 유형은 재현이 어렵고 로그가 남기 힘들고 버그 티켓이 “가끔 결과가 이상함”으로 올라온다 그래서 이 글은 코어 구현 해설이 ...
Python 3.15의 base64 ‘패딩 옵션’이 반가운 이유: URL-safe 토큰/서명 검증에서 자주 깨지는 지점 정리 meta_description: CPython PR #147974(gh-73613)는 Python 3.15에서 base64/base32 인코딩·디코딩에 padded 옵션을 추가해, ‘=’ 패딩이 없는 입력도 더 명확하게 처리할 수 있게 했다. 이 글은 왜 패딩이 문제를 만드는지(웹 토큰, URL-safe, 로그/전달 과정의 손실), 어떤 함수가 어떻게 바뀌는지(padded 기본값/strict 모드와의 관계), 그리고 서비스 코드에서 안전하게 마이그레이션하는 체크리스트를 정리한다. meta_keywords: python,base64,binascii,base32,padding,urlsafe,token,encoding,decoding,validation,strict_mode,ignorechars,migration,backward compatibility,security,web,jwt,cookie,api,python 3.15 meta_robots: index,follow 운영하다 보면 base64는 “그냥 인코딩”이 아니다. 토큰 쿠키 URL 파라미터 서명/검증용 바이트 이런 데서 base64가 슬쩍 끼고, 그 순간부터 장애가 ‘간헐적’으로 보이기 시작한다. 특히 자주 깨지는 패턴이 이거다. 어떤 환경에서는 잘 디코딩되는데 어떤 환경에서는 Incorrect padding 류 에러가 난다 대부분 원인은 같다. ’=’ 패딩이 중간 전달 과정에서 잘리거나, 아예 없는 형태로 들어오기 때문 최근 CPython에 들어간 PR 하나가 이 문제를 꽤 깔끔하게 정리했다. CPython PR #147974 (gh-73613): Base32/Base64 without padding 지원 핵심은 새로운 옵션 한 단어다. padded= 이번...