What goes on/what's going on:2021年04月22日分

2021/04/22(Thu)

[オレオレN6] distrib/sets/lists/*滅ぼしたい

チラ見しただけでひどい出鱈目っぷりを了解したので、とりあえずLC_NUMERICとLC_MONERARYの(mon_)?(thousands_sep|decimal_point|grouping)の監査をはじめることにした、よってそれが終わるまでディアゴスティーニ週刊printf(3)は中断です。

なおLC_MONETARYについてはcurrency_symbolのユーロ記号もISO-8859-15とかUTF-8では代替表示でなくU+20AC表示しないと問題あるはずだけど、一度に全部やるとグチャグチャになるし、手をつける前に欧州連合が瓦解してユーロ無くなる可能性もワンチャンあってそれに賭けたい気分である。

世界でユーザー1名のOSが国際化する意味はと一瞬考えこんでしまうが、ワイがある日ホースラヴァーファット氏のようにヴァリス神からのピンク色のレーザー照射を脳に受信してありとあらゆる言語をペラペーラになる可能性もあるのでな。

ついでにこの20年でISO8859-*ではなくUTF-8を使う人間の方が多くなったし、せいぜい数MBのストレージサイズを気にするような時代でもなくなったので、UTF-8 localeも作るように作業してるのだが、新しくインストールされるファイルが増えるたびにetc/mtree/*とdisrib/sets/lists/*の修正が発生しクソめんどくさい。

前者はmtreeはpermissionやらのsecurity checkを担ってるからまだ我慢できるのだけど、後者は前者と重複する定義があるしそもそも頓挫したsyspkgのためだけの非常に煩雑な今や用無しラ・フランスな記述が要求され、無意味な作業と脳が認知すると残り少ない脳細胞が全滅する。 現状build release時にreleasedirにゴミが残ってないかのチェックと、etcupdate(1)が警告するobsoleteとなったファイルの情報にしか使ってないのに、作業量多過ぎなのである。

そもそもアレが導入された頃にMakefileはすべてを知ってるんだからこんなもん手書きすること自体異常なのでは…という意見を述べたことあるのだが、他のdeveloperの方にはあまり賛同いただけなかったと記憶している。 ワイの意見ではmakeのターゲット叩けば自動でdisrib/sets/lists/*は更新されるべきだったのだが、反論としてはMakefileの記述が間違ってた時が怖い、distrib/sets/lists/*との整合性でそれが検出できるとかなんとかだったと思う。 でも正しく更新されたかのチェックはcvs diffの差分で一目瞭然で判るよなぁ…と思ったのだがそれ以上は黙っていた。まぁワイはワークエリア外のことについてはノータッチというポリシーだったし。

似たようなものにp**srcにもPLISTというクソめんどくせえシロモノがあるけど、あれはmake(1)ですらないかもしれん3rd partyなbuild systemをwrapするものだからまぁやむを得ない。 しかしそういう制限が前提にあってもLIBTOOLIZE_PLISTとかPLIST_TYPE=dynamicで動的に生成するようになっとるからな、結局自分でめんどくささを体験するかしないかの違いなんやな。

ということでありとあらゆることを自分の手を動かさないとどうにもならんオレオレN6では、ビルドシステムからはlint(1)に引退いただくのとdistrib/sets/lists/*滅ぼすってのはいつかやりたい。 まぁそのいつかがくる日まで生きていられるかどうかは日に日に怪しくなっているが、蝉は、やがて死ぬる午後に気づいた。ああ、私たち、もっと仕合せになってよかったのだ。 もっと遊んで、構わなかったのだ。という事なのである。

[文字コード] ARMSCIIとUnicode 7.0

アルメニアのLC_NUMERIC修正してて気づいたけど、ARMSCII-8の0xA1に存在するArmenian Eternity Signって結局Unicode 7.0で収録されたんだな。 まぁ絵文字がばんばん入る時代にいまさら「残念!これは文字じゃありません!宗教シンボルだからダメです!」って理屈は通らんもんな。今なら例の金の字とかも通るのでは?

昔のように文字で無いものを収録するスペースなどない(キリッ)どころでなく、絵だろうが何だろうがコードポイント埋めないと存在理由が無くなるグダグダUnicode会社なので、近い将来菊紋と桐紋そして家紋5000種類が入り、欧州人がそれにつられて貴族の紋章も入り、悔しくなったメリケン人が刺青をUnicodeに提案しだすまでまであと10年かからないと思う。

確かワイが最後にiconvdataの更新かけたのUnicode 8.0で誰も使わなそうなshift_jis-{docomo,kddi,softbank}とか生やしたときだっけか、見落としてたなぁいかんいかん。 つーか今13.0でもうすぐ14.0なのか…ずいぶんサボってたもんだな、まぁそれどころじゃなかったんだけど。

ということでまたひとつLegacy EncodingにあってUnicodeに無い文字が消えてしまったか、とはいえUnicode 7.0はまた余計なことして

と右巻き左巻き(政治じゃねえぞ)とどっちも採用したよとかやらかしとるんだが、これARMSCII-8の0xa1はどっちになるんだこれ。

今は消失してる ArmSCII WGのページをウェイバックすると左巻きの革命的大勝利な感じだけども、じゃあ逆にUnicodeからARMSCII-8へ変換する時に右巻きは左巻きに転向させるのかそれとも処刑か悩むなこれ。

このARMSCIIは小さな文字集合にも関わらずUnicodeのブレブレっぷり楽しめるいいサンプルであった、この宗教シンボルの収録可否とかだけでなく、他にも0xA2のArmenian Ligature "ew"は合成文字なので合成するのか分解するのかとかね。

ちなみに一部の変換表ではこの宗教シンボルを未割当領域のU+0530に勝手に割り当てたり、似てるからって❁(U+2741 EIGHT PETALLED OUTLINED BLACK FLORETTE)に勝手にフォールバックする実装があったけども、ワイの書いたCitrus iconvの変換表ではそうはせず私用領域(PUA)に割り当てていた。

ということで現状PUAに割り振っとる文字が今のUnicodeでどうなってるかも調べないとなぁ。