近況 2023-04-30

今月の活動 (gingerなど)

ミローネ言語

  • パフォーマンスの測定をした
    • TreeMap (赤黒木) の回転のコストが高い
    • このへんのデータ構造をephemeralにすると速くなりそうな気はするが、永続性を利用している箇所が少なからずあって、すぐには置き換えられなさそう
    • 中間表現の構造の構築 (アロケーション) とかもコストが高い
    • これに関してはアーキテクチャ上の問題なのでどうしようもない気がする

ginger

  • hsp3-debug-window-adapter
    • ドキュメントを書いた: commit
  • hsp3-analyzer-mini のドキュメントも書かないといけないなと思っているが、あまり書けていない
    • パーサやLSPなど、実装の範囲が広いので大変
  • hsp3-debug-ginger
    • パッケージのアップデートやRustのエディションの更新とかをしようとしたが、動かなかったので、動かす方法を考えている
    • また、どういうわけかTCP通信を使ってアダプターとDLLの間を接続していた
      • いま思うと名前付きパイプのほうがいい (通常、TCPはネットワーク越しの通信に使う)

hashtag-ext

https://github.com/vain0x/hashtag-ext

  • ロケーション間の関連性を示すためにハッシュタグを使うことがある
  • ハッシュタグをシンボルの一種として参照の検索機能などを使えるようにする拡張機能があると便利そうだと思っている
  • 作ろうとしたが作りかけになっている

並行処理

LSPにせよDAPにせよ並行処理は必要そうなので調査している。次の記事とか:

参考: マルチスレッド・プログラミングの道具箱

セマフォやイベント変数という抽象は、いまとなってはいまいちなようだ。 ミューテックス (ロック) と条件変数 (待機) を組み合わせるのがよいらしい

ミューテックス+条件変数でチャネルを作れる。 チャネルを使うGo言語の並行処理もよいらしいので調べた:

参考: Goでの並行処理を徹底解剖!

そう考えるとプロセス間のチャネルを用意するのがよさそう。実際、boostにそういうライブラリがある:

boost::interprocess::message_queue (1.82.0)

(これのためにboostに依存するのがどうなのかというところ。依存関係は極力減らしたいため)

関連記事