タスク: XML処理ライブラリの変更

Issue #355 resolved
k4nagatsuki repo owner created an issue

前々から廃止が予告されていたstd.xmlが、いよいよdmd 2.092.0βで非推奨になりました。そのため、XML関係の処理を置換する必要があります。

D1+TangoからD2+Phobos移行当時、後々似たような事があるかもしれないと思って、XML関係の処理はcwx.xmlにラッパを用意する形で集約してあります。そのため、この中だけ書き換えればOKです。

移行先にはいくつか候補があります。

  1. 公式で推奨されているdxmlなど、サードパーティのライブラリに切り替える。
  2. undeaDを使う。
  3. 一時期パッチ当てのためにそうしていたように、std.xmlをcwxeditorのコードベースに含める。

Phobosから除かれる理由として挙げていたように、そもそもstd.xmlは性能がよくありませんし、#319にあるようなアクセス違反の問題も抱えています。2.と3.を選択するとこれらの問題を引きずる事になります。

せっかくなので、ここは他のライブラリへの移行したいと考えています。まずはdxmlを試してみます。

Comments (4)

  1. k4nagatsuki reporter

    pull request #37

    dxmlによる実装です。まだマージしていません。

    性能を測ってみましたが、私の環境では読み込みでは約2倍、書き込みでは約10倍も速度が上がりました。std.xmlの廃止理由としてパフォーマンスが挙がっていた事にも納得です。

    ついでに#319の問題もおそらくなくなり、これまでハッシュ順で出力されていた属性の順序が固定される、テキスト中の"がエンコードされなくなる(式が読みやすくなる)といった副次的な効果も期待できます。移行しない理由がありません。

    ただ、データ入出力のコア部分の変更になるので、たとえテスト版でもビルドしたものを公開するのはまだちょっと怖いです。個人的なリポジトリの方にビルドを公開しておくので、余裕のある方はシナリオのバックアップを取った上でテストをお願いします:

  2. Log in to comment