Overview
Warning: このライブラリはまだ活発に開発中であり、 APIは変更される可能性があります。
libhandlerはC言語で代数的エフェクトハンドラを実装します。安全かつ移植可能な方法でスタックをキャプチャすることで動作します。代数的エフェクト
ハンドラは、例えば直線的な方法で非同期コードをプログラムするために使用でき、libuvを使ったプログラミングをより便利にするために使用することを目指しています。
このライブラリは、付属の技術レポートで詳しく説明されています。代数的エフェクトの入門については、koka bookの関連セクションを参照してください。
Enjoy!
-- Daan.
Building
libhandlerのビルドは、独自のプロジェクトにリンクできる静的Cライブラリを生成することからなります。libhandlerは可能な限り移植性が高くなるように書かれていますが、スタックとsetjmpの実装に関するプラットフォーム固有の仮定に依存しています。新しい
プラットフォームでは注意深くテストしてください。現在テスト済みのプラットフォームは以下の通りです:
-
(
gcc,clang,cl)-x86-pc-windows(32 bit, Windows) -
(
gcc,clang,cl)-x64-pc-windows(64 bit, Windows) -
(
gcc,clang)-amd64-pc-linux(64 bit, Ubuntu 16.04) -
(
gcc,clang)-arm-linux(32 bit, ARMv7 (raspberry pi 3, Raspbian/Debian Jessie)) -
gcc-arm64-linux(64 bit, ARMv8 (raspberry pi 3, Gentoo Linux))
C++サポートは動作していますが、まだ開発中です。
test/libuvディレクトリ(devブランチ内)にlibuvとの統合のための初期テストコードがあります。Microsoft IDEソリューションにはlibuvでビルドするためのプロジェクトが含まれています。
Unix/MacOSX
通常のconfigureとmakeを使用してビルドします:
$ ./configure
$ make depend
$ make
リリース版をビルドするにはVARIANT=releaseを使用し、テストを実行するにはtestsをターゲットとして指定します。例:
$ make tests VARIANT=release
設定オプション:
--cc=<cc>: 使用するCコンパイラを指定します (例:gcc,clang, など)--cc-opts=<options>: 使用する追加のCコンパイラフラグを指定します (例:-m64).--asm-opts=<options>: 使用する追加のアセンブラフラグを指定します (例:-m64).--abi=<abi>: 呼び出し規約ABIを指定します。例:--abi=amd64または--abi=x64.--os=<os>: ターゲットOSを指定します。例:--os=windows.--ar=<archiver>: 静的ライブラリを作成するためのアーカイバを指定します (=ar).--cxx=<c++ compiler>: 使用するC++コンパイラを指定します (=$cc++).--link=<linker>: 使用するリンカを指定します (=$cc).
Makeパラメータ:
VARIANT=<debug|testopt|release> : ビルドバリアントを指定します。testoptは最適化されたビルドですが、アサーションが有効です。VALGRIND=1: メモリリーク検出のためにvalgrindの下でテストを実行します。
Makeターゲット:
staticlib: 静的ライブラリをビルドします。tests: テストをビルドして実行します。bench: ベンチマークをビルドして実行します。clean: すべての出力をクリーンします。staticlibxx: C++用にライブラリをビルドします (例外およびデストラクタのアンワインドサポート付き)。testsxx: C++用のテストをビルドして実行します。
Windows
Windowsでビルドする方法は3つあります:
-
Microsoft Visual C++ IDEを使用します。2015 Community edition は非商用利用で無料で利用できます。 ソリューションは以下で見つかります:
-
Windows 10で「Linuxサブシステム」を有効にします。インストール手順についてはMSDN を参照してください。有効にすると、コマンドプロンプトで
bashを実行してWindowsからUbuntu Linuxに入ることができます。 開発ツールをインストールするにはaptを使用します:sudo apt-get updatesudo apt install build-essentialsudo apt install clang
その後、上記で説明したように
configureとmakeを実行できます。 -
古いWindowsバージョンでは、http://msys2.github.ioで入手可能な
msys2を使用できます。インストール手順に注意深く従ってください。インストール後、msys2パッケージマネージャを使用してさらにツールをインストールできます:pacman -S mingw-w64-x86_64-gcc(c compiler)pacman -S mingw-w64-x86_64-gdb(debugger)pacman -S make(make)
その後、上記で説明したように
configureとmakeを実行できます。
Windows上で成功したbash設定は以下の通りです:
gcc-amd64-pc-linux-gnu
単に./configureを使用clang-amd64-pc-linux-gnu
sudo apt install clangの後に./configure --cc=clangを使用
msys2を使用したWindows上での成功した設定は以下の通りです:
gcc-x64-w64-mingw32
単に./configureを使用gcc-x86-w64-mingw32
mingw32シェルでmingw-w64-i686-toolchainをインストールして使用clang-x64-pc-windows
./configure --cc=/c/programs/llvm/bin/clangを使用。clang-x86-pc-windows(32-bit)
./configure --cc=/c/programs/llvm/bin/clang --cc-opts=-m32 --asm-opts=-m32を使用。
Visual Studio IDEを使用する場合:
cl-x64-pc-windows64-bitビルドを選択。cl-x86-pc-windows32-bitビルドを選択。
LibUV on Windows
x64ビルド用にVisual Studioで有効化されています。libuvのヘッダーとバイナリをメインのlibhandlerフォルダの下のlibuvフォルダに配置する必要があります。Windows用のバイナリはlibuv.orgで入手できます。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.