@ikeji ふとgtk-serverのことを考えて、やっぱりああいうのいいなと思い出してた。
けどもっと汎化して考えたら、本当に必要なのはCインタプリタとその簡易記法なのではないか、という気がしてきた。
Conversation
Notices
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 02:15:49 JST 斎藤ただし -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 28-Dec-2023 02:15:49 JST ikeji @tadd APIが十分stableならね -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 12:32:55 JST 斎藤ただし @ikeji APIてどこのことかな?
Gtk側ならまぁあんなもんだし、インタプリタの記法の話かな。
でもそれだとしても、Cそのままなら超stableではある。 -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 28-Dec-2023 12:32:55 JST ikeji @tadd ソフトウエアをデプロイする時に、どこまでを気をつけるべきか、という話だったと思う。
Rubyで書かれたソフトウエアを配る時に、Rubyとか、Gemのバージョンを固定して配る人が多い。
で、gtkのバージョンを固定したくない、と思うので、gtk-serverは枯れててよさそう?と思った。 -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 12:40:48 JST 斎藤ただし @ikeji だとすると(脳内で復元中)、Gtkのメジャーバージョンの差異(違いすぎる)じゃなくて、マイナーかパッチの差異の話だったんだよね、きっと。
たぶんその場でも、自分が理解追いついてなかった気がしてそれはすまぬ。 -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 28-Dec-2023 12:40:48 JST ikeji @tadd メジャーバージョンアップだと、書き直さないといけなさそうだね。 -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 12:40:49 JST 斎藤ただし @ikeji そういえばそうだった、文脈すっかり忘れててごめんm(_ _)m
だとするとそうか、ABIやらリンクやら気にしなくていい、みたいな話も含めてか。プレーンテキストとstdioにしたら結合ゆるくて良さそう、と。 -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 28-Dec-2023 14:08:31 JST ikeji @tadd Rubyで書かれてるGemはいいんだけど、特定のバイナリ(ここではlibgtk2)に依存してるとして、そのバイナリのバージョンは固定すべきか?みたいな問題があると思ってる。 -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 14:08:32 JST 斎藤ただし @ikeji Bundlerとかのバージョン固定の話は、自分は前から分かってない意識がある。
Rubyだと(自分の知る限り)、アプリはGemfile.lockをパッケージ・リポジトリに入れろ、ライブラリは入れるな、が推奨だった気がする。
けどnpm調べてたら、どっちも入れろ、だった。
で、言語関係なく良し悪しがどこまで言えるのか、何も分かってない…λ -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 28-Dec-2023 14:16:14 JST ikeji @tadd Rubyライブラリはgem/bundlerで入れて、バイナリライブラリはdebだと、たまにコンパイルできないくみあわせに合わない? -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 14:16:15 JST 斎藤ただし @ikeji うーん、実行環境にもよるよね。ELFレベルだと(今の議論の範囲では)普通しなさそう(無理?)だから、debとかレベルの話かな?
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 14:32:54 JST 斎藤ただし @ikeji また話を端折り過ぎたかも。
Bundlerとかの話はインストール時だし、ABIやらプレーンテキストにする互換性の話は実行時のはずで、それらとのつながりが、でした。 -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 28-Dec-2023 14:32:54 JST ikeji @tadd
えーと、
<-a-> libgtk <-b-> ruby/gtk(or gtk-server) <-c-> cRuby <-d-> [自分が書いたコード]
の間の互換性をどうやって担保するかという話だと思うんだけど、
どれをdebで、どれをGemで入れるか。
境目をaにする(全部gemで入れる)のは完璧かもしれないけど、現実的ではなく、
今の環境は境目がbの事が多そう。
俺の提案はcで、
「Cインタプリタを作る」というのはdみたいになるんじゃないかと思った。 -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 28-Dec-2023 14:32:55 JST 斎藤ただし @ikeji コンパイル、というとlibgtk-3-0-devとかの話になるかな。
自分はぱっと思い出せないけど、その(C?)ソースの中身によるのは分かる。
それと、やっぱインストール時とか実行時とのつながりが分からなかった。 -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Tuesday, 02-Jan-2024 20:30:41 JST ikeji @tadd それだと、別解としてRuby-FFI経由でgtkを呼ぶのもありな気がしてきた。 -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 02-Jan-2024 20:30:42 JST 斎藤ただし @ikeji で、自分のCインタプリタ+α案は<-c->だった。
gtk-serverの受理する文法は(ぱっと見以上に分かってないけど)Cの意味論+暗黙のスタック、位に見えて、Cにほぼ直訳できそうな予感がした。これが最初に「簡易記法」って書いたやつ。
なので新しいgtk-serverとして、入力をsed+αしたのを(既存の)インタプリタに食わせれば行けない?というご提案でした。(インタプリタごと作るつもりは全くなかった) -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 02-Jan-2024 20:30:43 JST 斎藤ただし @ikeji 遅れてごめん、暇なときでよいです。
まず整理ありがとう。自分がすっかり、木を見て森を見ずだったのを理解。
-
ikeji (ikeji@ostatus.ikeji.ma)'s status on Tuesday, 02-Jan-2024 23:43:34 JST ikeji @tadd gtkよりffiの方がAPIが変わらなそう? -
斎藤ただし (tadd@best-friends.chat)'s status on Tuesday, 02-Jan-2024 23:43:35 JST 斎藤ただし @ikeji ふむふむ、それのメリットは?
-
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 04-Jan-2024 15:49:01 JST ikeji @tadd GIRって何? -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 04-Jan-2024 15:49:02 JST 斎藤ただし @ikeji なるほど、確かに個別のライブラリ自体に依存しないの分かる。分かる、が、まーgtk-server方式と同じレイヤーならましかも、てことかな。
あとgtkなら、やっぱGIR経由でいいじゃん、で終わる気もする。 -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 04-Jan-2024 15:50:25 JST ikeji @tadd GObject Introspection Repository これか -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Thursday, 04-Jan-2024 15:51:58 JST ikeji @tadd https://rubygems.org/gems/gir_ffi/versions/0.15.9#:~:text=gir_ffi%200.15.9.%20GirFFI%20creates%20bindings%20for%20GObject%2Dbased,provided%20by%20the%20GObject%20Introspection%20Repository%20(GIR)
そしてすでにFFI経由っぽい -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Saturday, 06-Jan-2024 01:28:04 JST ikeji @tadd 既にそうなってるんだとすると、それは素晴しい。
dlopen経由だと *-dev パッケージをaptで入れなくても済む、ぐらいのメリットがあるかなぁ。In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Saturday, 06-Jan-2024 01:28:05 JST 斎藤ただし @ikeji あとバインディング自動生成もそれなりにできたはずで、*.gir(だった気がする)の中身はXML形式のIDLだね。
Alt+F2→lg、とかいうコナミコマンドを叩くと出てくるJSで遊ぶために目で読んだりしてた。ほんとは自然言語でも説明書いといて欲しくはある。In conversation permalink -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Saturday, 06-Jan-2024 01:50:50 JST ikeji @tadd
https://github.com/ruby-gnome/ruby-gnome/blob/master/gtk4/ext/gtk4/rb-gtk4.h
```#include <gtk/gtk.h>```してるから、-devはいりそう。In conversation permalink Attachments
-
斎藤ただし (tadd@best-friends.chat)'s status on Saturday, 06-Jan-2024 01:50:51 JST 斎藤ただし @ikeji だよねだよね。全然ちゃんと追ってないけど、たしかに(ライブラリごとには).cがほぼないみたい。https://github.com/ruby-gnome/ruby-gnome/tree/master/gtk4
あとlibffi関係は、自分が混乱してた気がしてきた。
GIR自体の関係soはさっき書いたとおり、原理的にはどっちでも良いはず。話を聞いたのはむしろ、自動生成関係かも。
でその先は、GIRが助けていつもdlopen相当してるのかもしれない。extconf.rbにhave_libraryがなさそうなんだよね。なので既に-devいらないのかも。(今できないので推測すまん)In conversation permalink -
ikeji (ikeji@ostatus.ikeji.ma)'s status on Saturday, 06-Jan-2024 02:05:22 JST ikeji @tadd まあ、その方向性も正しい気がするけど、今のところメジャーな意見にはなってなさそう。 In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Saturday, 06-Jan-2024 02:05:23 JST 斎藤ただし @ikeji なるほど、さんくすー
In conversation permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Saturday, 06-Jan-2024 02:05:23 JST 斎藤ただし @ikeji とか見てたらCORBAさんを思い出したりした。GNOME、ORBit、Bonobo... 懐古厨になってしまう
In conversation permalink
-