Scala Nativeでhttp4sなどを使おうとするとビルドタイミングでこのようなメッセージが出たりする:
Found a call to not defined static method Member(Top(java.nio.channels.AsynchronousServerSocketChannel),D4openL42java.nio.channels.AsynchronousChannelGroupL49java.nio.channels.AsynchronousServerSocketChannelEo). Static methods are generated since Scala Native 0.4.3, report this bug in the Scala Native issues. Call defined at file:/home/runner/work/fs2/fs2/io/jvm-native/src/main/scala/fs2/io/net/SocketGroupPlatform.scala:94:53
対応
epollcatをライブラリに追加する(READMEも軽く読もう)。
なぜ
fs2-ioの上に造られているライブラリをScala Native向けにビルドしようとすると、JVMと違ってNativeそのものには非同期I/O用の仕組みがないのでビルドできない。
そこでepollcatの出番となる。epollcatはepoll/kqueueのラッパーであり、fs2-ioが必要とする非同期I/O処理を肩代わりする。
使い方はIOApp
をEpollApp
に、またはIOApp.Simple
をEpollApp.Simple
に置換するだけだ。