3장. 컴파일러 및 도구

iBFT 항목에 따라 dracut는 VLAN을 설정

이전에 dracut 유틸리티는 iBFT에 VLAN 매개 변수가 존재하고 유효할 지라도 VLAN 네트워크 인터페이스를 생성하지 않았습니다. 이번 업데이트에서 VLAN과 함께 iSCSI 부팅은 예상대로 작동합니다.

System z 바이너리에서 gcc는 핫패칭을 지원

gcc 핫패칭 속성은 System z 바이너리에 있는 멀티 스레드된 코드의 온라인 패칭 지원을 구현하는 것입니다. 이번 업데이트에서 기능 속성을 사용하여 특정 핫패칭 기능을 선택할 수 있고 -mhotpatch= 명령행 옵션을 사용하여 모든 기능의 핫패칭을 활성화할 수 있습니다.
핫패칭을 사용하면 소프트웨어 크기 및 성능에 악영향을 미치므로 일반적 기능으로 핫패치 지원을 활성화하지 않고 특정 기능에 대해서만 핫패칭을 사용할 것을 권장합니다.

TLS 버전의 curl 지원 변경

이번 업데이트에서 NSS로 협상되는 마이너 TLS 프로토콜 버전을 지정하기 위해 curl의 새로운 옵션 --tlsv1.0, --tlsv1.1, --tlsv1.2을 도입하고 있습니다. 이를 위해 libcurl API에 해당 CURL_SSLVERSION_TLSv1_0, CURL_SSLVERSION_TLSv1_1, CURL_SSLVERSION_TLSv1_2 상수가 소개되고 있습니다. 기존의 curl--tlsv1 옵션의 시멘틱과 libcurl API의 CURL_SSLVERSION_TLSv1 상수는 클라이언트와 서버 모두에서 지원되는 최신 TLS 1.x 프로토콜을 협상하도록 수정되어 있습니다.

값이 없는 경우 Python ConfigParser의 옵션 처리

Python ConfigParser는 각 옵션에 대해 값이 필요하도록 고안되었지만 my.cnf와 같이 특정 설정 파일에는 값이 없는 옵션이 있습니다. 결과적으로 ConfigParser는 이러한 설정 파일을 읽어 오지 못했습니다. 이러한 기능은 Python 2.6.6에 백포트되어 ConfigParser는 값이 없는 옵션이 있는 설정 파일을 읽어올 수 있습니다.

tcpdump는 -J, -j, --time-stamp-precision 옵션 지원

커널, glibc, libpcap이 나노초 단위의 타임 스탬프 해결 상태를 얻기 위해 API를 제공하는 것과 같이 tcpdump는 이러한 기능을 사용하기 위해 업데이트되었습니다. 사용자는 사용 가능한 타임 스탬프 소스를 쿼리 (-J), 특정 타임 스탬프 소스를 설정 (-j), 지정된 해결 상태를 사용하여 타임 스탬프 요청 (--time-stamp-precision) 등을 실행할 수 있습니다.

SCSI 장치 간의 데이터를 복사하는 유틸리티 개선

SCSI 프로토콜의 장점을 갖는 스토리지 장치 간의 데이터 복사를 위한 보다 효율적인 유틸리티가 sg3_utils 패키지에 도입되어 있습니다. 이러한 기능을 활성화하기 위해 sg_xcopysg_copy_results 프로그램이 sg3_utils 패키지에 백포트되어 있습니다.

ethtool은 사용자 정의 RSS 해시 키 정의 지원

ethtool이 개선되어 RSS의 사용자 정의 해시 키를 정의할 수 있습니다. 이러한 기능 개선에 따라 수신된 트래픽에 따라 수신 큐를 이용하여 예상 트래픽에 적합한 키를 선택하여 성능 및 보안 모두를 향상시킬 수 있습니다.

tcpdump에 Setdirection 지원 추가

tcpdump 패키지에 setdirection 지원이 추가되어 -P 플래그 인수로 지정할 수 있습니다. 수신 패킷의 경우에는 (-P in), 전송 패킷의 경우에는 (-P out), 두 패킷 모두의 경우에는 (-P inout)를 설정하여 캡쳐할 수 있습니다.

sysctl은 시스템 디렉토리 그룹에서 읽을 수 있음

이번 업데이트에서는 sysctl 유틸리티에 새로운 --system 옵션을 소개하고 있습니다. 이 옵션은 sysctl을 활성화하여 시스템 디렉토리 그룹에서 설정 파일을 처리할 수 있습니다.

mcelog 패키지는 업스트림 버전 109로 업그레이드됨

mcelog 패키지는 업스트림 버전 109로 업그레이드되어 버그 수정 및 기능 개선을 제공합니다. 특히 mcelog는 Intel Core i7 CPU 아키텍처를 지원합니다.

biosdevname은 업스트림 버전 0.6.2로 업그레이드됨

biosdevname 패키지가 업스트림 버전 0.6.2로 업그레이드되었습니다. 그 중에서 새로운 Mellanox 드라이버의 dev_port 속성을 통해 FCoE 장치의 이름 지정을 무시할 수 있습니다.

PCRE 라이브러리의 개선

바이너리 파일이 유효한 UTF-8 시퀀스가 아닌 경우 grep 유틸리티가 PCRE 매칭 실패에서 복구할 수 있도록 다음과 같은 기능이 PCRE 라이브러리에 백포트되어 있습니다:
pcre_exec() 함수는 PCRE_ERROR_NOMATCH 오류를 보고하거나 무한 루핑하는 대신 범위를 벗어난 시작 오프셋 값을 확인하고 PCRE_ERROR_BADOFFSET 오류를 보고할 수 있습니다.
* 잘못된 UTF-8 주제 문자열에서 UTF-8 일치를 위해 pcre_exec() 함수를 호출하고 ovector 어레이 인수 크기가 충분할 경우 무효한 UTF-8 바이트에 있는 첫 번째 주제 문자열의 오프셋과 상세한 이유 코드가 ovector 어레이 요소에 반환됩니다. 또한 pcretest 유틸리티를 사용하여 이러한 내용을 표시할 수 있습니다. 이번 업데이트에서 pcre_compile() 함수는 마지막 바이트 대신 첫 번째 무효한 UTF-8 바이트를 보고함에 유의합니다. 또한 공개적 사용을 목적으로 하지 않는 pcre_valid_utf8() 함수의 서명이 변경되었음에 유의합니다. 마지막으로 pcretest 유틸리티는 오류 코드에 읽기 쉬운 오류 메세지를 추가하고 있습니다.

glibc 동적 로더에서 Intel AVX-512 지원

glibc 동적 로더는 Intel AVX-512 확장을 지원합니다. 이번 업데이트에서 동적 로더를 통해 필요한 AVX-512 레지스터를 저장 및 복원할 수 있기 때문에 AVX-512를 사용하는 감사 모듈로 인해 AVX-512를 사용하는 애플리케이션에 오류가 발생하지 않도록 합니다.

Valgrind에서 Intel MPX 명령을 인식

Valgrind는 Intel MPX (Memory Protection Extensions) 명령이나 MPX bnd 접두사를 사용하는 명령을 인식하지 않았습니다. 결과적으로 Valgrind는 SIGKILL 신호와 함게 MPX 명령을 사용한 프로그램을 종료시켰습니다. 업데이트를 통해 Valgrind는 새로운 MPX 명령 및 bnd 접두사를 인식할 수 있습니다. 현재 모든 새로운 MPX 명령은 동작이 없는 명령으로 구현되어 있기 때문에 bnd 접두사는 무시됩니다. 결과적으로 MPX 명령이나 bnd 접두사를 사용하는 프로그램은 MPX가 CPU에 활성화되어 있지 않는 것처럼 Valgrind에서 실행되므로 더이상 종료되지 않습니다.

free 유틸리티는 읽기 쉬운 출력 지원

새로운 -h 옵션이 free 유틸리티에 추가되었습니다. 이 옵션은 모든 출력 필드를 단위를 포함하여 최소 3자리로 표시하도록 자동으로 조정할 수 있게 하여 출력을 읽기 쉽게하려는 것이 목적입니다.

w 유틸리티는 -i 옵션을 지원

w 유틸리티에는 -i 옵션이 포함되어 있어 FROM 란에 호스트 이름 대신 IP 주소를 표시합니다.

vim은 버전 7.4로 리베이스

vim 패키지가 업스트림 버전 7.4로 업데이트되어 버그 수정 및 기능 개선을 제공합니다. 주요 변경 사항은 다음과 같습니다: - Vim 텍스트 편집기에서 undofile 옵션을 설정하여 활성화하면 변경 사항을 영구적으로 되돌리기할 수 있습니다. 기본값으로 버퍼를 언로드할 때 버퍼용으로 작성된 변경 트리는 파기됩니다. 하지만 변경 사항을 영구적으로 되돌리도록 활성화하면 Vim은 자동으로 변경 내역을 저장하고 버퍼를 다시 열 때 이를 복원합니다. - 이번 업데이트에서는 새로운 정규 표현식 엔진을 소개하고 있습니다. 이전의 엔진은 역추적 알고리즘을 사용했습니다. 텍스트에 대한 패턴 일치가 한 방향으로 행해져 일치에 실패하면 다른 방향에서 패턴 일치가 수행되었습니다. 단순한 패턴의 경우 이러한 엔진이 제대로 작동했지만 긴 텍스트에 있는 복잡한 패턴의 일치 작업 실행에는 오랜 시간이 소요되었습니다. 새로운 엔진에서는 상태 머신 논리를 사용하여 현재 문자로 가능성이 있는 모든 대체를 시도하여 가능한 패턴 상태를 저장합니다. 이러한 과정은 단순한 패턴의 경우 이전의 엔진보다 약간의 시간이 더 걸리지만 긴 텍스트의 복잡한 패턴 일치의 경우 이전 보다 신속하게 처리됩니다. 가장 주목할 만한 변경 사항은 행 수가 많은 JavaScript 및 XML 파일의 구문 강조가 개선된 것입니다.