TnFOX - TnFOX

Sada nástrojů pro přenositelnost TnFOX
VývojářiNiall Douglas
Stabilní uvolnění
v0.88 / 13. června 2008 (2008-06-13)
Úložiště Upravte to na Wikidata
NapsánoC ++, Krajta
Operační systémCross-platform
TypVývojová knihovna
LicenceGNU Lesser General Public License
webová stránkahttp://www.nedprod.com/TnFOX/

The Sada nástrojů pro přenositelnost TnFOX je vidličkou LIŠKA Sada nástrojů GUI s většinou přidaného kódu implementujícího ortogonální funkce (tj. Podstatně nemění FOX API), takže aplikace vyvinuté pro FOX lze snadno překompilovat pro TnFOX. TnFOX neobvykle obsahuje také emulace API některých Qt tříd knihoven - podle autora to bylo provedeno k přenesení významného projektu z Qt do FOX. Většina přidaných funkcí implementuje úplnou knihovnu „nástrojů pro přenositelnost“, takže lze napsat jeden program, který lze spustit kdekoli - liší se to od FOX, který většinou poskytuje pouze samotnou přenositelnost GUI. TnFOX je tedy příkladem abstrakční vrstva operačního systému.

Na rozdíl od FOX podporuje TnFOX pouze omezenou sadu kompilátorů a operačních systémů C ++. Podporuje pouze Překladač Microsoft C ++ v7.1 a novější, GCC v3.2 a novější a Překladač Intel C ++ v8 nebo novější. Také také běží dál Windows 2000 nebo později, Linux 2.6 jádra nebo novější, FreeBSD a Mac OS X 10.4 nebo novější, i když na jakémkoli procesoru nebo architektuře.

TnFOX obsahuje své vlastní automaticky generované vazby pro Krajta založené na knihovně Boost.Python - taková složitost vyžadovala přidání funkce -fvisibility do GCC v4 a dále.[1] Jejich kvalita a stav však v posledních letech upadaly.

Knihovna již od roku 2012 není jejím autorem udržována. [2]

Podstatné vlastnosti TnFOX

Jednou z nejoriginálnějších funkcí TnFOX je jeho velké využití C ++ metaprogramování i když je to zcela drženo stranou od GUI (pro kompatibilitu FOX). Součástí balení je plně odlehčená sada nástrojů pro metaprogramování, která umožňuje mnoho operací poskytovaných Zvýšit knihovna metaprogramování, včetně seznamů typů, typových znaků, logiky kompilace, funktorů, kompilace virtuálních tabulek, vytváření instancí seznamu horizontálních typů a dalších. Na rozdíl od Boost, kvůli požadavku na moderní kompilátor C ++, všechny metaprogramování fungují konzistentně napříč překladači bez nutnosti ošklivých maker.

Další neobvyklou vlastností je použití pervazivní zpracování výjimek a bezpečnost, při níž se předpokládá, že jakýkoli řádek vždy potenciálně vyvolá výjimku. TnFOX poskytuje C ++ mechanismus vrácení zpět (jak původně navrhl Andrei Alexandrescu ) sledovat, jaké operace je třeba v dané fázi vrátit, pokud dojde k chybě - spíše jako a SQL transakce. Jedním z problémů tohoto přístupu je možnost vnořených výjimek při zničení objektu, která podle normy ISO C ++ vyžaduje okamžité ukončení programu - TnFOX tento problém obchází pomocí předzpracování zdroje a přidáním dalšího podpůrného kódu.

Je třeba použít nepředvídatelný doplněk k verzi v0.88 Překlady Google převést jeho národní řetězce. I když má pochybnou užitečnost, zejména pro kratší řetězce, může přesto ušetřit čas během překladů.

Na rozdíl od většiny nástrojů pro přenositelnost byl TnFOX velmi rozsáhle profilován a výkon vyladěn pro maximální rychlost a minimální využití paměti. Má silnou podporu multithreadingu včetně ladění, aby se zabránilo zápisu dvou vláken na stejnou linku mezipaměti (což způsobí odskakování linek mezipaměti a výrazně zúží paralelní propustnost). Volitelně používá svůj vlastní alokátor paměti pro ukládání do mezipaměti vláken, automaticky používá dynamické algoritmy, které budou obchodovat s rychlostí pro využití paměti podle podmínek nedostatku paměti a má velmi silné specifické optimalizace pro x86 a x64, včetně metaprogramovací implementace vektorů SIMD, které se automaticky kompilují dolů do operací SSE (až po podporu SSE4). Má vlastní rychlou implementaci mutexu napsanou v assembleru, rozsáhlé interní ukládání do mezipaměti, aby se zabránilo syscallům v jádře, a vlastní komunikační rámec mezi procesy, který může přenášet libovolné instance objektů C ++ z jednoho místa na druhé využitím metaprogramování k automatické implementaci serializace a deserializace. To je zvláště patrné v jeho rozhraní databáze SQL, kde lze jednoduše svázat libovolnou instanci objektu C ++ s polem BLOB a není vyžadován žádný další kód.

TnFOX volitelně obsahuje kopie OpenSSL knihovna a SQLite knihovny za účelem implementace jejího silného šifrování a její výchozí implementace databáze SQL. Může být postaven modulárně jako sada samostatných dll nebo monoliticky. Má také plnou přenosnou podporu pro zabezpečení ACL hostitelského operačního systému a ví, jak chránit citlivá data před vstupem do odkládacího souboru, a navíc automaticky skartovat všechny odstraněné části. Může přistupovat k tomu, který uživatel proces spouští a jak podle potřeby stupňuje svá oprávnění.

Má to žádné GUI sestavení vhodné jako sada nástrojů pro přenositelnost pro démony a systémové procesy. To nemá žádné závislosti X11 / GDI.

TnFOX již začal přidávat C ++ 0x funkce pro ty překladače, které je podporují - jedná se o další revizi standardu ISO C ++.

Viz také

Reference

  1. ^ ned Productions - Oprava viditelnosti symbolu GCC
  2. ^ Viz březen 2012 komentář autor: Niall Douglas: V posledních letech se na TnFOX moc nepracovalo ... Pravděpodobně a smutně bude většina z více než 40 000 řádků mého vlastního kódu v TnFOX ponechána trochu hnilobě.

externí odkazy