TnFOX
「TnFOX」
TnFOXの移植ツールキットのフォークであるFOX FOX用に開発されたアプリケーションを容易TnFOX用に再コンパイルすることができるように直交する機能(すなわち、実質的にFOXのAPIを変更しない)を実装する追加コードのほとんどを持つGUIツールキット。異常なことに、TnFOXにはいくつかのQtライブラリクラスのAPIエミュレーションも含まれています-著者によると、これは実質的なプロジェクトをQtからFOXに移植するために行われました。追加された機能のほとんどは、完全な「ポータビリティツールキット」ライブラリを実装しているため、1つのプログラムを記述してどこでも実行できます。これは、GUIのポータビリティのみを提供するFOXとは異なります。したがって、TnFOXはオペレーティングシステムの抽象化レイヤーの例です。
TnFOXポータビリティツールキット
開発者
ニール・ダグラス
安定リリース
v0.88 / 2008年6月13日 (2008-06-13)
リポジトリ
github .com / ned14 / tnfox
で書かれている
C ++、Python
オペレーティング・システム
クロスプラットフォーム
タイプ
開発ライブラリ
ライセンス
GNU劣等一般公衆利用許諾契約書
Webサイト
http://www.nedprod.com/TnFOX/
FOXとは異なり、TnFOXは制限されたC ++コンパイラとオペレーティングシステムのセットのみをサポートします。MicrosoftのC ++コンパイラv7.1以降、GCC v3.2以降、およびIntel C ++コンパイラv8以降のみをサポートします。また、Windows 2000以降、Linux 2.6カーネル以降、FreeBSDおよびMac OS X 10.4以降でのみ動作しますが、どのプロセッサまたはアーキテクチャでも動作します。
TnFOXには、Boost.Pythonライブラリに基づいてPython用に自動的に生成された独自のバインディングが含まれています。これらの複雑さのために、GCCv4以降に-fvisibility機能を追加する必要がありました。しかし、これらの品質と状態は近年衰退しています。
2012年をもって、ライブラリはその作者によって維持されなくなりました。
コンテンツ
1 TnFOXの実質的な機能
2 も参照してください
3 参考文献
4 外部リンク
TnFOXの実質的な機能
TnFOXのより独創的な機能の1つは、C ++メタプログラミングを多用することですが、これはGUI側から完全に遠ざけられています(FOX互換性のため)。タイプリスト、タイプ特性、コンパイル時ロジック、ファンクター、仮想テーブルコンパイル、水平タイプリストのインスタンス化など、Boostメタプログラミングライブラリによって提供される多くの操作を可能にする完全な軽量メタプログラミングツールキットが含まれています。Boostとは異なり、最新のC ++コンパイラが必要なため、すべてのメタプログラミングは、醜いマクロを必要とせずに、コンパイラ間で一貫して動作します。
もう1つの珍しい機能は、広範囲にわたる例外処理と安全性の使用です。これにより、任意の行が常に例外をスローする可能性があると想定されます。TnFOXは、SQLトランザクションのように、エラーが発生した場合に特定の段階で元に戻す必要のある操作を追跡するためのC ++ロールバックメカニズム(Andrei Alexandrescuによって最初に提案されたもの)を提供します。このアプローチの問題の1つは、オブジェクトの破棄中にネストされた例外がスローされる可能性があることです。これは、ISO C ++標準では、プログラムをすぐに終了する必要がTnFOXは、ソースの前処理を介してこの問題を回避し、サポートコードを追加します。
v0.88リリースの奇妙な追加は、Google翻訳を使用してロケール文字列を変換することです。特に短い文字列の場合、有用性は疑わしいものですが、それでも翻訳中の時間を節約できる可能性が
ほとんどの移植性ツールキットとは異なり、TnFOXは非常に広範囲にプロファイルされ、最大速度と最小のメモリ使用量のためにパフォーマンスが調整されています。2つのスレッドが同じキャッシュラインに書き込むことを回避するためのチューニングを含む強力なマルチスレッドサポートがあります(これにより、キャッシュラインがバウンスし、並列スループットが大幅にボトルネックになります)。オプションで、独自のスレッドキャッシングメモリアロケータを使用し、メモリの不足状態に応じてメモリ使用量と速度を交換する動的アルゴリズムを自動的に使用し、SSE操作に自動的にコンパイルされるSIMDベクトルのメタプログラミング実装を含む非常に強力なx86およびx64固有の最適化を備えています(SSE4サポートまで)。独自のアセンブラで記述された高速ミューテックス実装、カーネルへのsyscallを回避するための広範な内部キャッシング、およびメタプログラミングを活用してシリアル化と逆シリアル化を自動的に実装することにより、任意のC ++オブジェクトインスタンスをある場所から別の場所に転送できる独自のプロセス間通信フレームワークを備えています。これは、任意のC ++オブジェクトインスタンスをBLOBフィールドにバインドするだけで、それ以上のコードが不要なSQLデータベースインターフェイスで特に顕著です。
TnFOXには、強力な暗号化とデフォルトのSQLデータベース実装をそれぞれ実装するために、OpenSSLライブラリとSQLiteライブラリのコピーがオプションで含まれています。個別のDLLのセットとしてモジュール式に構築することも、モノリシックに構築することもできます。また、ホストオペレーティングシステムのACLセキュリティを完全に移植可能にサポートし、機密データがスワップファイルに入らないように保護する方法と、削除された部分を自動的に細断処理する方法を知っています。プロセスを実行しているユーザーと、必要に応じて特権をエスカレーションする方法にアクセスできます。
デーモンおよびシステムプロセスの移植性ツールキットとして適したGUIビルドはありません。これにはX11 / GDIの依存関係はありません。
TnFOXは、それらをサポートするコンパイラー用にC ++ 0x機能の追加をすでに開始しています。これは、ISO C ++標準の次のリビジョンです。
も参照してください
無料のオープンソースソフトウェアポータル
ウィジェットツールキット
オペレーティングシステムの抽象化レイヤー
ウィジェットツールキットのリスト
FOXツールキット
Qt
参考文献
^ nedProductions-GCCシンボル可視性パッチ ^ Niall Douglasによる2012年3月のコメントを参照してください:近年、TnFOXに関する作業はあまりありません…おそらく、そして悲しいことに、TnFOXの自分のコードの40,000行以上のほとんどは少し腐敗したままになります。
外部リンク
プロジェクトホームページ
TnFOX&oldid=1023393213″