2024-01-01から1年間の記事一覧

Myth and truth in Haskell asynchronous exceptions

This article explains my best current practice on asynchronous exceptions in Haskell using the standard library - Control.Exception. Other libraries for safe exceptions are out of scope. The followings are the definitions of two kinds of e…

Labeling threads in Haskell

GHC 9.6 provides a function to list up the current threads finally. The function is listThreads exported from the GHC.Conc.Sync module. listThreads is a killer debug method for thread leaks. If you have Haskell programs which run for a lon…

A new architecture for QUIC in Haskell

In typical UDP programming, unconnected sockets are used both in the client and server sides. sendto() is used to specify a peer address while recvfrom() is utilized to receive a peer address. In the quic library in Haskell, I used connect…

A new architecture for HTTP/2 in Haskell

GHC 9.6 provides listThreads finally. Just for curious, I have implemented a thread monitor in http2-server, a test command tool for the http2 library in Haskell. This revealed that huge numbers of Haskell lightweight threads are used. See…

山口でのエギング振り返り

今週末、春のアオリイカの3杯目を釣ったら、なぜ釣れるようになったか、振り返りをやります。— 山本和彦 (@kazu_yamamoto) 2024年7月4日 「分かってしまうと、なぜ分からなかったのか分からなくなる」 と言うわけで、いつもは技術的なことしか書かないけれど…

Status report of dnsext

This article reports the current status of the dnsext packages in Haskell. If you don't know what dnsext is, please read "Developing network related libraries in Haskell in 2022FY" first. The purpose of this project is provide DNS full res…

Releasing tls library version 2.0.0 in Haskell

I needed to implement the session ticket mechanism for my project. In addition to this coding, I decided to improve the tls library in Haskell drastically. So, I have spent three months to do so and finally released tls vresion 2.0.0. This…

APIから見たTLS 1.2の同期性と1.3の非同期性

TLS

プロトコル自体を比べるとTLS 1.2よりもTLS 1.3の方が簡潔で洗練されている。しかし、APIの視点から見ると、TLS 1.3は非同期性が高くなる。同期性的なTLS 1.2のプロトコル設計には、妥当性があると気づいたので記録を残す。 以下のような API を考える new -…

私とテストと自動化と

何度か講演でこの話をしたのだが、気が向いたのでエッセンスを書き下しておこうと思う。 テスト駆動という言葉が流行る前にプログラマとなった私は、当初どのようにテストを書いてよいのか分からなかった。そんなとき、(当時はオーム社で現在はラムダノート…

セッション再開に関するTLS1.2と1.3の違い

TLS

これまでTLS 1.3とセッションID方式は実装したことがあったが、この経験だけではTLS 1.2に対するTLS 1.3の利点に気づいていなかった。この二ヶ月の間に、セッションチケット方式を実装し、また引き継いだTLS 1.2のコードを大幅にリファクタリングした過程で…