Plan 9 계열 운영체제 9front 가 그래픽 변환 API 개편, 원격 디버깅, 새 하드웨어 드라이버를 중심으로 기능을 확장함
개편된 affinewarp API 를 page
, Doom을 비롯한 게임과 이미지 도구에 적용하고, 고정소수점 정밀도와 BGR15 처리 성능을 개선함
원격 gdb
를 /proc
로 마운트하는 gdbfs(4) 와 Synaptics 터치패드 드라이버, UPS용 USB HID 배터리 드라이버, USB 설명자 출력 도구를 추가함
libsec
에 SHA3·SHAKE 및 HMAC 함수 를 넣고 awk
테스트 스위트와 git/commit -p
부분 커밋을 추가했으며, Git packfile 파싱과 여러 보안·메모리 오류를 수정함
PC·Raspberry Pi·MNT Reform·QEMU용 설치 이미지를 제공하며, PC/pc64 커널의 x2APIC 지원 과 gefs·네트워크·USB·메일·Git 전반의 안정성 개선을 포함함
그래픽 변환과 affinewarp API
affinewarp API 를 개편하고 확대·축소와 화면 변환이 필요한 여러 프로그램을 새 API로 전환함
page
는 탐색과 확대·축소에 affinewarp(2)
를 사용함
Doom, eui
, rotzoomer
등 게임과 image/affinewarp
, image/histogram
이 새 API를 사용함
games/doom
은 업스케일링에도 affinewarp(2)
를 적용함
libdraw
와 libmemdraw
의 Warp 고정소수점 정밀도 를 13비트로 높임
libmemdraw
는 BGR15용 최적화 픽셀 루틴과 수평·수직선 특수 처리를 추가하고, 정수 오버플로 검사와 오류 처리를 보강함
libmemlayer
는 memlaffinewarp()
의 목적지·원본 사각형 초기화 오류를 수정함
draw(2)
문서는 mkwarp()
의 새 동작과 affinewarp()
설명을 반영함
원격 디버깅과 개발 도구
새 gdbfs(4) 는 원격 gdb
를 /proc
형태로 마운트하는 파일 서버임
메모리 쓰기의 짧은 버퍼와 인자 파싱 오류 메시지의 off-by-one 문제를 수정함
gdb
프로세스를 파일 서버 프로세스의 note group에서 실행하고 표준 스택 크기를 사용함
매뉴얼에 기본 포트를 추가하고 문구를 다듬음
awk
에 테스트 스위트 를 추가하고, 일치 항목이 없을 때 RLENGTH
가 잘못 설정되는 문제를 고침
컴파일러 cc
는 최대 include 디렉터리 수를 늘리고 불완전 정의 타입의 주소 처리와 클래스·타입 지정자 처리를 수정함
acid
는 중단점 명령이 asm()
출력을 훼손하지 않도록 변경함
커널과 하드웨어 지원
PC/pc64 커널에 x2APIC 지원을 구현함
CPU 0이 x2APIC을 사용할 때 이를 활성화하며 *x2apic=
설정을 지원함
LAPIC·IOAPIC 관리를 배열에서 연결 리스트로 바꾸고 MP 인터럽트 코드를 재작업함
ACPI의 _CRS
메서드를 열거하며 *noenumcrs=
로 비활성화할 수 있음
Synaptics 터치패드용 devmouse 드라이버 를 추가하고 절대 좌표 마우스 추적의 nil 포인터 충돌을 수정함
devkbd
에는 인터럽트가 고장 난 시스템을 위한 *kbdpoll=
부팅 매개변수를 추가함
9boot
는 부팅 전에 PXE 스택을 수동으로 중지하며, bootaa64.efi
를 /arm64
에 설치함
Intel·Realtek·Oxford Semi 장치를 비롯한 여러 네트워크·UART 장치 ID와 지원을 추가함
USB xHCI 초기화, Radeon의 amd64 KADDR
panic, VMX 부동소수점 레지스터 쓰기의 잠재적 버퍼 오버플로를 수정함
USB·전원·네트워크
nusb/battery
에 UPS용 USB HID 배터리 드라이버 를 추가함
stats
가 shr/usb/battery
를 읽고 두 배터리의 용량을 합산할 수 있음
nusb/dump
는 USB 장치 설명자를 사람이 읽을 수 있는 형태 로 출력함
nusb/joy
에 Xbox 360 호환 컨트롤러 2종을 추가하고, nusb/disk
의 USB 엔드포인트 제한 시간을 늘림
이더넷 계층은 링크가 내려갔을 때 전송을 막고, 우회 처리 중 패킷 손실과 RX DMA 정지 및 전송 고착 문제를 수정함
IP 계층은 헤더보다 짧은 패킷을 올바르게 처리하고 전달 전에 전체 헤더가 있는지 확인함
ICMPv6의 잠재적 범위 밖 접근과 ip/tinc
의 재생 방지 필터 오류를 고침
tlssrv
에는 연결 점유를 제한하는 -T
타임아웃 옵션 을 추가함
보안과 암호 라이브러리
libsec
에 SHA3·SHAKE 함수군 과 SHA3·SHA2 BIGMAC HMAC 함수를 추가하고 APE용 libsec
에도 동기화함
blake2s
블록 분할, named curve 검색의 off-by-one, X.509 대체 이름 추가 처리를 수정함
ecdsaverify()
에서 s < n
검사가 실패하던 오타를 바로잡음
libc
는 stat
포맷 과정의 버퍼 오버플로와 문자열 끝을 넘어 읽던 utfwbreak
를 수정하고, privalloc
메모리를 0으로 초기화함
Git packfile 파싱에서 정수 오버플로·부호 확장 을 추가로 검사하고 의심스러운 이름을 거부함
파일 시스템과 Git 작업 흐름
gefs
는 스냅샷과 deadlist의 참조 횟수·충돌 복구·일관성 검사 를 대폭 보강함
불변 스냅샷에 쓰거나 설정을 기록하지 못하도록 막음
충돌 시 deadlist 일관성, 이중 해제, 참조 횟수 누수와 트리 불일치를 수정함
check
가 참조 횟수를 검증하고 종료 시 상태를 출력함
읽기 전용 모드, 짧은 디스크 읽기, 스냅샷 보존 설정과 제어 인터페이스를 정리함
git/commit -p
로 부분 커밋 을 지원하며, 새 파일과 namespace 처리 및 수정된 hunk가 있는 파일만 포함하는 동작을 수정함
Git은 하위 디렉터리·submodule·중복 ref·빈 저장소의 HEAD 처리와 packfile offset 파싱을 개선함
git/pull
은 브랜치를 전환하기 전에 변경 로그를 보여주며, git/fs
는 .git
경로로의 walk를 차단함
disk/qcowfs
는 새 refcount block의 참조 횟수를 1로 설정함
프로그램과 사용자 경험
htmlfmt
는 링크를 기본적으로 각주 형태 로 출력하고 문서 제목을 한 번만 표시함
upas/Mail
도 각주 URL 형식을 사용하며 메시지 작성 과정의 누수를 수정함
rio
와 samterm
은 마우스 chord를 더블 클릭 시작으로 오인하지 않으며, 버튼 1·3 스크롤의 momentum 동작을 수정함
Mega Drive 에뮬레이터는 6버튼·두 번째 포트 컨트롤러, SEGA mapper와 TMSS 를 지원함
Game Boy 에뮬레이터는 save state에 SRAM을 함께 저장함
astro
는 3자를 넘는 시간대 이름을 지원하고 Egypt DST 시간대 이름을 수정함
mothra
, patch
, Mail
, zuke
등에서 파일 누수, 잘못된 패치 대상, 렌더링 및 표지 이미지 잔상 문제를 수정함
다운로드와 지원 플랫폼
PC용 ISO, Raspberry Pi·MNT Reform용 IMG, QEMU용 QCOW2 이미지 를 제공함
pi.img
는 Raspberry Pi 1·2·3에서 사용할 수 있음
pi3.img
는 Raspberry Pi 3·4에서 사용할 수 있음
PC ISO는 CD에 굽거나 USB 매체에 직접 기록할 수 있음
Raspberry Pi와 MNT Reform 이미지는 SD 카드에 직접 기록함
배포 파일과 체크섬은 9front ISO 미러 에서 확인할 수 있음
소스는 9front Git 저장소 , 릴리스 매뉴얼은 DASH 1 에서 제공함
댓글과 토론