Udon VM 向けのコンパイラを作ろうとしている[2]

- 即値があれば何でもできる回 - EXTERN 関数の一覧を列挙したところ命名規則と矛盾した名前のものが1069個も見つかった回 の二本立てです
1

前回のがめっちゃ見られてるけど基本的に自分用のメモなので他の人のツイートもいっぱい入ってます

𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

IL2CPP のこと考えると動的コード生成は無理なんじゃないかなあ…… Quest 版がどうやって動いてるのか知らぬが

2019-12-21 10:55:25
Ram.Type-0@VRC @RamType0

@cannorin_vrc 少なくともVRCのSteam版はIL2CPP使ってないしQuestは普通にAndroidだからリフレクション使えたはず

2019-12-21 11:00:50
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

@Ram_Type64_Mod0 だと思うけど Android も IL2CPP 使えるからパフォーマンスのために使ってるかもしれないし一応チェックしておかないとですね……

2019-12-21 11:04:53
Ram.Type-0@VRC @RamType0

@cannorin_vrc 一応それこそ初期のJVMみたいにプラットフォーム別でインタプリタとJITコンパイルの実装があるってのも可能なAPIにはなってた あとまあパフォーマンス目当てでIL2CPP使っててもUdonが普及した環境下ではUdonJITあるMonoにパフォーマンスで惨敗しそう

2019-12-21 11:08:28
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

要望書いたあ: Request: Metadata of built-in EXTERNs for static analysis | Voters | VRChat feedback.vrchat.com/vrchat-udon-cl…

2019-12-21 11:17:10
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

Udon の EXTERN の命名規則めちゃくちゃすぎて(.NET からの直訳すぎて)笑えない、特に名前から static method と instance method の区別ができない点がクソです

2019-12-21 13:07:44
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

言語を作るにあたって、「UAssembly 単体では変数の任意値での初期化が実質できない」というのがデカすぎる、最低でも Model-Update アーキテクチャにする必要がありそう

2019-12-21 13:56:30
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

やっぱり VRChat は IL2CPP に移行するつもりなのか(Udon の作りからなんとなくそんな気がしていた)

2019-12-21 14:14:47
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

> VRChat is switching from Mono to IL2CPP with the 2018.4 engine upgrade. This has a number of upsides but unfortunately it comes with the requirement that all code is AOT (Ahead of Time) compiled. This means we cannot dynamically generate any .NET Assembly at runtime.

2019-12-21 14:16:22
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

> This is definitely complicated matters but much of Udon’s development has been working around this limitation.

2019-12-21 14:16:28
madorama@VRChat @madorama_vrc

UAssemblyだと"Hello, udon!"が消え去ってしまうけど、三つ目みたいにすれば一応動くのか pic.twitter.com/Su4LhgvFAJ

2019-12-21 16:49:25
拡大
拡大
拡大
madorama@VRChat @madorama_vrc

変数の初期値もどこかに消えちゃうけどこれも書き直してやればOKだった pic.twitter.com/6oCFvkaz6v

2019-12-21 17:01:02
拡大
拡大
拡大
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

リフレクションで無理やり EXTERN 一覧を取得してる

2019-12-21 18:02:04
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

すんごいアドホックだけど EXTERN 一覧を取得してきちんと型も見ることができそうな気配がしてきた 続きは夜中

2019-12-21 18:30:11
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

嘘ついても仕方ないので言ってしまいますが、Udon SDK に対して本格的に逆アセンブルをかけ始めたのでらBAN されないようにわたしのためにオイノリしてください

2019-12-21 18:31:17
Ram.Type-0@VRC @RamType0

Udon実装に合わせてIL2CPPに移行したから動的コード生成できなくなったよって何故??何故???

2019-12-21 19:58:00
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

@Ram_Type64_Mod0 なんとなくそんな気はしてた(ふつう IL.Emit するし……)

2019-12-21 20:00:45
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

@zz_roba 変数は全て Unity のエディタ上とかでセットする感じなので、普通の言語と同じ感じでは作れないです

2019-12-21 20:11:24
Ram.Type-0@VRC @RamType0

@cannorin_vrc Udonに合わせて移行するの謎すぎへんか……

2019-12-21 20:19:14
𝚌𝚊𝚗𝚗𝚘𝚛𝚒𝚗 @cannorin3

UdonVM がランタイムとして異常すぎるので、いい感じの中間レイヤを用意しようとせずに最初から UAssembly 念頭において作った方が良さそうな匂いがする

2019-12-21 20:27:18
1 ・・ 4 次へ