はじめに
この記事は、@kjunichiの2015年パーソナルアドベントカレンダーの10日目の記事です。
libtrusterdで超簡単にJuliでHTTP2サーバーを作ってみたが
libtrusterdという自分が開発を進めているHTTP2サーバーを実現するmrubyが組み込まれた共有ライブラリを Juliaから呼び出すことで、Julia(0.4.2)でHTTP2サーバーの実装を試みた。
OSXで以下実施。
git clone https://github.com/kjunichi/libtrusterd.git cd libtrusterd git clone https://github.com/mruby/mruby.git cd mruby cp -f ../build_config.rb . PKG_CONFIG_PATH=/usr/local/opt/zlib/lib/pkgconfig:/usr/local/opt/openssl/lib/pkgconfig CXXFLAGS="-I/usr/local/opt/libev/include" CFLAGS="-I/usr/local/opt/libev/include -I/usr/local/opt/openssl/include" LDFLAGS="-L/usr/local/lib -L/usr/local/opt/openssl/lib" rake cd .. rake cd example
Juliaのコード部分
以下のような短いJuliaのコードで、何と!JuliaでHTTP2サーバーが実現!
としたかったが、
function mycallback(script::Cstring) # println("Hello, world! from Julialang") println(bytestring(script)) return convert(Cint,0)::Cint end const mycallback_c = cfunction(mycallback, Cint, (Cstring,)) const confPath = "./test.conf.rb" m = ccall( (:boot_from_file_path,"../libtrusterd"), Cint, (Cstring,Ptr{Void}), confPath, mycallback_c)
結果
微妙に動かない
julia trusterd.jl Util.write_pid before Util.write_pid after nil nil warning: don't set run_user, so run with uid=501 #<HTTP2::Server:0x7fbc611593c0> "test" class:Call, method:py_exec this is trusterd! signal (6): Abort trap: 6 __pthread_kill at /usr/lib/system/libsystem_kernel.dylib (unknown line)
To be continue...
printlnをコメントアウトして、julia側での標準出力を一切行わなければ、 正常に動いているような気もする。もう少し、何かわかると良いのだけど。。。
関連記事
- Julia言語で任意の点を散布図を描画するには
- 1/7がつくる楕円をJulia言語でプロットする
- Juliaでaobenchを使って並列処理を試した その1
- mruby-juliaでPythonもmrubyから呼び出せるようになった
- JuliaでWebSocketを扱うには
HTTP2つながり
- HTTP2でexpressを動かす
- mrubyのHTTP2サーバーでWebGLでGopherを出そうとした
- libtrusterdでHTTP/2でphpを動かして分かったことのその後 #知見
- ElectronはHTTP2が喋れないのか?