TnFOX

TnFOX
TnFOX 휴대성 툴킷
개발자니얼 더글러스
최종 릴리즈
2010년 3월 24일, 12년 전(2010년[1] 3월 24일)
저장소
기입처C++, Python
운영 체제크로스 플랫폼
유형개발 라이브러리
면허증.GNU 약소 일반 공중 사용 허가서
웹 사이트http://www.nedprod.com/TnFOX/

TnFOX 이식성 툴킷은 FOX용으로 개발된 애플리케이션을 TnFOX용으로 쉽게 재컴파일할 수 있도록 직교 기능(FOX API를 실질적으로 변경하지 않음)을 구현하는 대부분의 추가 코드를 포함하는 FOX GUI 툴킷의 포크입니다.이례적으로 TnFOX는 일부 Qt 라이브러리 클래스의 API 에뮬레이션도 포함하고 있습니다.저자에 따르면 이것은 Qt에서 FOX로 상당한 프로젝트를 포팅하기 위해 이루어졌다고 합니다.추가된 기능의 대부분은 풀 「포트성 툴킷」라이브러리를 실장하고 있기 때문에, 1개의 프로그램을 어디에서라도 실행할 수 있습니다.이는 GUI의 휴대성만을 제공하는 FOX와는 다릅니다.따라서 TnFOX는 운영 체제 추상화 계층의 한 예입니다.

FOX와 달리 TnFOX는 제한된 C++ 컴파일러 및 운영 체제 세트만 지원합니다.Microsoft 의 C++ 컴파일러 v7.1 이후, GCC v3.2 이후, 및 인텔 C++ 컴파일러 v8 이후만을 서포트하고 있습니다.또한 Windows 2000 이상, Linux 2.6 커널 이상, FreeBSDMac OS X 10.4 이상에서만 실행되지만 프로세서나 아키텍처에서는 실행할 수 없습니다.

TnFOX에는 Boost 기반의 Python용 자동 생성된 바인딩이 포함되어 있습니다.Python 라이브러리 - 이러한 복잡성 때문에 GCC v4에 -fvisibility 기능을 추가해야 했습니다.[2]그러나, 이러한 품질과 상태는 최근 몇 년 동안 저하되고 있습니다.

2012년부터 도서관은 저자에 의해 유지되지 않는다.[3]

TnFOX의 주요 기능

TnFOX의 보다 독창적인 기능 중 하나는 C++ 메타프로그래밍을 많이 사용한다는 것입니다만, 이것은 GUI측에서 완전히 배제되어 있습니다(FOX 호환성을 위해서).완전한 경량 메타프로그래밍 툴킷이 포함되어 있어 타입 리스트, 타입 특성, 컴파일 타임 로직, 펑터, 가상 테이블 컴파일, 수평 타입 리스트 인스턴스화 등을 포함한 부스트 메타프로그래밍 라이브러리에서 제공되는 많은 작업을 가능하게 합니다.Boost와는 달리 최신 C++ 컴파일러의 필요성 때문에 모든 메타프로그래밍은 컴파일러 간에 일관되게 동작하며 추악한 매크로를 필요로 하지 않습니다.

또 다른 특이한 특징은 퍼베이시브 예외 처리와 안전성을 사용하는 것입니다.이러한 예외 처리에서는 어떤 회선이든 항상 예외를 발생시킬 가능성이 있다고 간주됩니다.TnFOX는 SQL 트랜잭션과 같은 오류 발생 시 어떤 작업을 취소해야 하는지 추적하기 위한 C++ 롤백 메커니즘(원래 Andrei Alexandrescu가 제안)을 제공합니다.이 접근법의 한 가지 문제는 오브젝트 파괴 중에 예외가 중첩될 수 있다는 것입니다.ISO C++ 표준에서는 즉시 프로그램 종료를 필요로 합니다.TnFOX는 소스 전처리를 통해 이 문제를 회피하고 추가 지원 코드를 추가합니다.

v0.88 릴리스의 특이한 추가 기능은 Google Translate를 사용하여 로케일 문자열을 변환하는 것입니다.특히 짧은 문자열의 경우 유틸리티가 의심스럽지만 변환 시간을 절약할 수 있습니다.

대부분의 휴대성 툴킷과 달리 TnFOX는 매우 광범위한 프로파일링을 통해 최대 속도와 최소한의 메모리 사용을 실현하도록 성능을 조정했습니다.2개의 스레드가 같은 캐시 라인에 기입되지 않도록 하는 튜닝을 포함한 강력한 멀티스레딩을 지원합니다(캐시 라인 바운싱과 병렬 처리량의 큰 병목 현상이 발생합니다).옵션으로 자체 스레드 캐싱 메모리 할당기를 사용하고 메모리 부족 상태에 따라 메모리 사용 속도를 자동으로 바꾸는 동적 알고리즘을 사용하며, SSE 운영(리그)으로 자동 컴파일되는 SIMD 벡터의 메타프로그래밍 구현을 포함하여 매우 강력한 x86 및 x64 특정 최적화 기능을 갖추고 있습니다.SSE4까지 지원).자체 어셈블러 작성 고속 뮤텍스 구현, 커널로의 시스콜을 피하기 위한 광범위한 내부 캐싱 및 메타프로그래밍을 활용하여 시리얼화와 역직렬화를 자동으로 구현함으로써 임의의 C++ 오브젝트 인스턴스를 한 장소에서 다른 곳으로 전송할 수 있는 자체 프로세스 간 통신 프레임워크를 갖추고 있습니다.이는 임의의 C++ 오브젝트인스턴스를 BLOB 필드에 바인드하기만 하면 추가 코드가 필요 없는 SQL 데이터베이스 인터페이스에서 특히 두드러집니다.

TnFOX는 OpenSSL 라이브러리와 SQLite 라이브러리의 복사본을 선택적으로 포함하여 강력한 암호화와 기본 SQL 데이터베이스 구현을 구현합니다.모듈러로 개별 DLL 세트로 구축하거나 단일 리시스적으로 구축할 수 있습니다.또, 호스트 operating system ACL 의 시큐러티도 완전하게 서포트하고 있어, 중요한 데이터가 스왑 파일에 들어가지 않게 보호하는 방법과 삭제된 부분을 자동적으로 완전 삭제하는 방법도 알고 있습니다.프로세스를 실행 중인 사용자와 필요에 따라 권한을 에스컬레이션하는 방법에 액세스할 수 있습니다.

데몬 및 시스템프로세스의 이식성 툴킷으로 적합한 GUI 빌드는 없습니다.X11/GDI 의존관계는 없습니다.

TnFOX는 이미 이들을 지원하는 컴파일러를 위해 C++0x 기능을 추가하기 시작했습니다.이것은 ISO C++ 표준의 다음 리비전입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Release 0.88.1". 24 March 2010. Retrieved 23 July 2018.
  2. ^ 네드 프로덕션 - GCC 심볼 가시성 패치
  3. ^ Niall Douglas의 2012년 3월의 코멘트를 참조해 주세요.최근 몇 년간 TnFOX에 대한 작업이 많지 않았습니다. 아마도 슬프게도 TnFOX에 있는 내 코드 40,000개 이상의 행은 대부분 썩게 될 것이다.

외부 링크