...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

DFLをdmd 2.101.0で動くようにしたのとライセンスについて

この記事はD言語 Advent Calendar 2022の5日目の記事です。

 

DFLは、D言語GUIアプリケーションを書けるライブラリであり、.NET の Windows Formsライブラリに似た使用感を持っています。

本家DFLの更新が止まっていたので、そこからforkして非公式のリポジトリを作って、しばらくの間は最新のdmdで使えるように更新していました。

私のforkにプルリクエストをもらうこともありましたが、英語がよく分からなかったりテスト環境がうまく作れなかったりしている中、忙しくなって全然触れなくなり、日常ではちょっとしたツールをD言語PowerShellで書くくらいで、プログラミング自体をあまりしていませんでした。

DFLは、2015年に自分がGitHubに最後のコミットをした後、さらに別のfork先のリポジトリで2018年まで更新されていましたが、最後のコミットメッセージで「Deprecate」と打ち込まれてそこで終わっていました。

 

時間ができたので、今のD言語の練習がてら、数年ぶりにDFLを触ってみています。

なんとか、最新のdmd 2.101.0でビルドして、サンプルコードを動作させられました。

D言語の標準ライブラリPhobosのstd.streamはとっくの昔に廃止されているので、undeaDライブラリに入っているundead.stream.dを代わりに使いました。

今後DFLをビルドするためには、undeaDライブラリをビルドして得られるundead.libファイルが必要です。

修正したDFLのコードはこちら。

github.com

 

undeaDライブラリを教えてもらいました。ありがとうざいました。

 

さて、DFLのライセンスが不明と書かれているサイトがあったので調べていたら、2014年にDFLの原作者Christopher E. Miller氏から本家サイトにコメントが出ていたみたいです。

www.dprogramming.com

Final Update
Sat, 01 Nov 2014 15:30:00 -0700
Hi, I'm writing this to make it official, dprogramming.com will no longer have any updates. I'll be archiving the content and leaving it up as long as possible for historical reasons.
dprogramming.com was the home of some of my D projects. It was started so long ago when the web was a different place and I was still fairly new to the game.
D was once an obsession and pleasure of mine, but I've since moved on. The D community is very smart and I wish them the best. I certainly have learned a lot from them. Since I'm no longer using D, the languages that have my interest at the moment are Lua and Rust.
To make it clear and allow code forking, I hereby release DFL and Entice Designer source code under dual licenses: boost and/or zlib/libpng, for the versions which were released on dprogramming.com. Please see the GUI Libraries wiki page for DFL forks.
Thank you,
- Christopher E. Miller

いくつかあるfork版DFLについてもご存じのようですね。

リポジトリには原作者が書いたlicense.txtも入っていますが、サイトには「dual licenses: boost and/or zlib/libpng」と書いてありましたので、簡単に紹介しておきます。

 

次の記事では、DFLのビルド方法について説明します。