2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【wasm】ブラウザでC++。Emscriptenを語ろう

1 :L:2019/01/15(火) 19:50:48.94 ID:cXSiB+ud.net
タイトル通り。

・canvas への描画が可能なことを確認。
・emscripten_sleep() でその場で停止できることを確認。
・付属の emrun や mongoose などで Local Server を作れば、local だけで
 wasm の起動が出来ることを確認。
・mongoose からは、cgi も起動でき、XmlHttpRequest()でローカルファイルを
JSから読み込め、cgi も自由に起動できることを確認。
・ローカル・ファイルアクセス、clipboard の読み書きの他、Local OS の
 全ての機能を自由にできる可能性有り。
・これを使えば、Java の JVM に変わる新たなローカル仮想環境ができる。

2 :デフォルトの名無しさん:2019/01/19(土) 11:38:40.03 ID:P/iwNPAz.net
【wasm を使う際に難しそうな事柄色々】
・async, await
・yield [ function generator ]
・setjmp(), longjmp()
・sleep() ; emscripten_sleep() で実装されてはいるが、とても複雑な方法で実装。バグ有り。
・Atomics, wait(), notify()

【ヒント】
1. wasm からは、JSの関数を呼び出せる。
2. JS からは、wasmの関数を呼び出せる。
3. JS からは、XmlHttpRequest() で WebServer 経由で外部ファイルを読み出せる。
4. XmlHttpRequest() の代わりに fetch() も使えるらしい。
5. JS では、eval(文字列); によって、文字列の中に書かれているJSコードを実行できる。
6. 1と5を使えば、wasmからJSの任意のコードを実行段階で変化する動的な引数を付けて
 呼び出されるように出来る。
7. Emscripten では、EM_ASM(), EM_ASM_INT() 文は、*.ll コードでは、
  それぞれに対応した関数を call するコードに置き換わる。

3 :デフォルトの名無しさん:2019/01/19(土) 12:31:16.19 ID:P/iwNPAz.net
【asm.js】

・asm.js は、JS のサブセット。だから、JS を超えることは出来ないらしい。

・Emscripten は、Em+Script+en という造語らしい。「Em+xxx+en」は「xxx化する」
 の意味なので、Emscripten は、「Script 化する」の意味となる。

・Emscripten は元々、C/C++ コードを wasm ではなく、JS コードのサブセットで
 あるところの asm.js に変換するシステムだったらしい。

・だから今でも、いったん asm.js に直してから binaryen で wasm に
 変換しているらしい(←推定)。

・asm.js の仮想マシンの主記憶は JS の HEAP32[] 配列が対応するらしい。

・仮想マシンのスタックポインタは JS の STACKTOP という名前の変数で、C/C++ の
 auto local な変数は、HEAP32[STACKTOP + ofs] の形式で参照されることが多い。

【wasm】

・wasm は、バイナリ形式だがテキスト形式も存在し、wast、wat と呼ばれ、
 LISP の S 式に近い人間が可読な形式になっている。
 
【LLVM】

・LLVM は、*.bc がバイナリ形式。*.ll が人間が可読な形式。Emscriptenでは、
 拡張子が bc の代わりに o とされている。

・llvm-as で、*.ll を *.bc に変換できる。

4 :デフォルトの名無しさん:2019/01/19(土) 13:02:28.07 ID:P/iwNPAz.net
誤: auto local な変数は、HEAP32[STACKTOP + ofs] の形式で参照されることが多い。
正: auto local な変数は、HEAP32[(STACKTOP<<2) + ofs] の形式で参照されることが多い。

5 :デフォルトの名無しさん:2019/01/19(土) 15:43:48.91 ID:P/iwNPAz.net
【VM (Virtual Machine) としての wasm】

・結論から言うと、wasm は、VM としては、JVM や、flash VMより劣っていると思う。
 例としては、「同期オブジェクト(Win32 のWaitForSingleObject()相当)」や、
 sleep() もほぼ、wasm でちゃんと実装できそうなのは、Chrome と、FireFoxに限られる事。

・ところが、Platform 会社の「思惑(Mac上の開発環境の使用の強制)」や
 「訴訟問題(GoogleとOracleの裁判)」により、上記の二つのVMは除外されて行く
 傾向にあり、スマフォでも使えるVMとして残っていくのは、wasm と .NET だけ
 になっていきそうな気がする。

・だから、言語のFRONT END開発者としては、スマフォでも使えるVMとしての選択肢は
 wasm が有力ではあるが、機能面で(かなりの)問題があるというジレンマが生じる。

・これは、GAFA プラットフォーム支配の問題点の一つ。

------------------
[WHY APPLE WON'T ALLOW ADOBE FLASH ON IPHONE]
https://www.wired.com/2008/11/adobe-flash-on/

6 :デフォルトの名無しさん:2019/01/21(月) 19:24:23.00 ID:x6DE2oRu.net
Browser と Windows で同じプログラムが動く Widget のサンプル
(作りかけ)

http://www.nowsmartsoft.shop/

ひきこもりの L より。

7 :L:2019/01/22(火) 15:48:18.25 ID:6S+2YJAI.net
XmlHttpRequest() は、同期モードにすれば、CGI の動作が完了するまで
待てる気がする。もし、その CGI が、内部で Sleep( 1000 ) 相当の待機を
行えば、JS を、その場で 1秒間 待機させることが出来るかもしれない。

8 :デフォルトの名無しさん:2019/01/22(火) 17:47:28.65 ID:6S+2YJAI.net
Android の主要言語はJavaだが、VMは、JVM ではなく、Google 製の
ART (旧Dalvik) の VM を使っている。

だから、このVMは残っていくんだ・・・。
Google は、もっぱら wasm 路線だと思っていたんだが・・・。

9 :デフォルトの名無しさん:2019/01/24(木) 22:53:00.98 ID:/05KE7l4.net
>>3 >>4
どうやら、STACKTOP、HEAP32[] を使うのは、asm.js 流で、
wasm の stack はまた別系統になっているらしい。

前者は、global 領域に確保された HEAP32 配列を使うので、通常の
CPUアーキテクチャでのスタックの実装法に近い。そのため、CPUで
出来ることは何でも出来るといっても過言ではない。

一方、wasm の stack には、今のところ stack pointer が存在していない
らしい。だから、stack の値を検査したり、独自にコピーして保存して
何らかの効果を得たりすることも出来ないと思われる。
一方で、wasmでの標準的な作法なので、auto 変数もこのやり方
を使うことになっているため、ブラウザでJITなどは、CPUレジスタに
割り付けることによる速度向上が見られるかもしれない。

ここでジレンマが生じる。実は、wasm では、sleep() 機能を使う際には、
-s ASYNCIFY=1 を指定しなくてはならない。すると、前者の実装方に
なるだろう。すると、wasm での標準的な方法ではなくなるために、
CPUレジスタへの割付が行われない可能性がある。

なお、話が複雑になるが、ASYNCIFY=1 の指定は、現在の JS の WebAPI の仕様
と絡むと、emscripten_sleep() だけの問題ではなく、非常に重要と言っても過言ではない。

結論を言ってしまえば、OpenFileDialog() のようなもので、ユーザーがファイル名を
選択するのをその場で「待つ」事や、getch() や bat ファイルの pause 文のように
キー入力を待つことのような、便利な機能がはっきり言って実装不可能になってしまう。

これは長くて深い話なので、ちゃんと説明するのは難しい。

10 :デフォルトの名無しさん:2019/01/24(木) 23:11:44.56 ID:/05KE7l4.net
>>9
正しくは、「WebAPI」ではなく、ブラウザ上の JS で使える EventLoop などの
仕様のこと。

1. JS では、Win32 の GetMessage() や PeekMessage() のような、
 Event Queue の現在の中身を直接を調べるような関数が存在しないらしい事。
2. WebWorker で WorkerThread を作っても、結局、DOMには
 アクセスできない事。
3. さらに、WorkerThrad では、イベントを受け取ることも出来ない事。
4. Win32 の GetAsyncKeystate() のような、イベントによらないでキーの
  On/Off 状態を取得する方法が無いこと。
5. 以上の事は、OpenFileDialog() や getch()、pause() 文の模倣をそのままでは
 原理的に不可能にする可能性がとても高い。

[回避策]
a. C/C++ のステートメントの実行を一行実行するたびにイベントループに戻る
 ような「インタプリタ的な」実行法を採用する。これは、「Emterpreter」
 (「Emscripten」と似ているが違うので注意)なるやり方が相当。
b. 関数のコンパイルの仕方を大幅に変更する方法。これが、ASYNCIFY=1
 に相当すると思われる。具体的には、関数で「待つ」必要がある場合には、
 イベントループに戻る。このことは、結論的には、JSやwasmの色々な機能不足を
 一挙に解決できる。イベントループに戻ることで、キーやマウスのイベントを
 受け取ることも出来るようになるし、タイマーイベントが発生するまでCPUを
 hlt 状態にすることも出来るようになる。この事は実は似ているが、よく考えると
 別の事柄でもあったりするので、説明が難しいが、とにかく、一挙に色々な
 事を解決できるようになる。GetAsyncKeyState() 相当の関数が無いことと
 Atomics の wait(), wake(), notify() が、限られたブラウザでしか実装されて無い事
 の問題も解決する。誤解を招かずに説明するには話が長くなるのが・・・。

11 :デフォルトの名無しさん:2019/01/24(木) 23:42:39.89 ID:/05KE7l4.net
>>10
誤: 3. さらに、WorkerThrad では、イベントを受け取ることも出来ない事。
正: 3. さらに、WorkerThread では、(キーボードやマウスなどからの)
    「外部イベント」を受け取ることも出来ない事。

・WorkerThread でも、postMessage() によるソフトウェア的なイベントは受け取ることが
 できる。

・ EventTarget の dispatchEvent() を使えば、強制的にイベント・ハンドラを呼び出すことが
 できる。この時、ハンドラの実行が開始され、実行が完了するまで呼び出し元には帰って
 こないらしい。そのため、この呼び出し方は「同期的呼び出し(Synchronously invoke)」
 とされる。


色々考えてみたが、今ある全ての JS の関数、wasm の機能をどんな組み合わせで使っても、
C/C++ の関数を独特な特殊な形式までコンパイルしてやら無いと、getch(), pause(),
OpenFileDialog() のような機能は実現できないと思われる。

それが、「-s ASYNCIFY=1」だと思う。sleep() に関してだけは、Atomics の wait(),
wake() や、>>7 に書いた方法で実装できると思われる。

なお、JS の、async, await, yield などは、使える可能性はあるが、しかし、C/C++ を
wasm に直すことを考えたとき、使うのが難しいか、または、使えても効率はあまりよくない、
または、問題が生じてしまう、と考えている。例えば、wasm に直さずに、asm.js のように
js レベルまでのコンパイルでよいなら、async, await は、何とか利用できる気がする。
それでも、それらの仕様がどうも貧弱なので、それが問題。というのは、2段階以上の
深い関数では、await はエラーになってしまうらしいから、使いたい全ての関数に
async 修飾をしなくてはならない事になりそう。

また、説明するのが難しいが、結局、ASYNCIFY=1 でやっていることと余り変わらないという
か、>>9 のSTACKTOP, HEAP32[] を使うのと、async, await, yield は結局は本質的に同じような気がする。

12 :デフォルトの名無しさん:2019/01/25(金) 00:01:31.69 ID:58XK3b4v.net
>>9
>一方、wasm の stack には、今のところ stack pointer が存在していない
>らしい。

ここは、興味深い話として、

1. LLVM には、C の longjmp(), setjmp() の他、 C++ の throw, catch も、
 直接的なサポートがある。

2. LLVM には、仮想レジスタは有っても「CPUレジスタ」的なものは(ある意味では)
 「存在しない」が「スタックポインタ」は、一応、存在している。

3. LLVM には、(EIP のような)「命令ポインタ」的なものは存在していない(ハズ)。
 関数内には、ラベルを書くことが出来て、br 命令で比較的自由に飛ぶことも出来る。
 ところが、全く別の関数への大域的な、jmp 命令のようなものは多分無い。

4. 一番言いたいことは、上記の「2.」のこと。LLVM にはスタックポインタを直接
  触ることが出来る。それなのに、wasm では出来ない(らしい)。この事は、
  結構理不尽な感じがする。

5. 実CPUでは簡単かつ効率よく出来てしまう事が、wasmではできない。
6. Win32 では簡単に出来てしまうことが JS では出来ない。メッセージ・キューの読み出し。
 独自イベントループの記述。while ( GetMessage(&msg ) ) { DispathMessage( &msg); } みたいな。
7. 結果、BASIC でも、35年前の昔から簡単に出来ていた input "a="; a 見たいな事が、JS では出来ない。

13 :デフォルトの名無しさん:2019/01/27(日) 02:20:20.81 ID:UeSsBKpf.net
>>9
>どうやら、STACKTOP、HEAP32[] を使うのは、asm.js 流で、
>wasm の stack はまた別系統になっているらしい。

C/C++ の文字列のポインタを JS の関数に渡して、JSで
文字列として扱いたい場合、Emscripten が用意している
Pointer_stringify() という JS の関数を使うことになる。

この関数のソースを見てみたところ、例えば、
writeArrayToMemory: function(array, buffer) {
for (var i = 0; i < array.length; i++) {
HEAP8[ buffer++ ] = array[i];
}
}
のような関数を使っており、HEAP8[] 配列が使われている。
これは、asm.js 流の stack を恐らく「必ず」使っている事を
意味するのだと思う。言いたいことは、wasm の 「nativeな」
stack の仕組みを使わずに、JS の global 変数的に TypedArray
として HEAP8[] を確保して、それを「必ず」使っている、ということ。
そうでなければ、Pointer_stringify() 関数が使えなくなってしまうはずだから。

その結果、wasm の native stack を使って無いので、ブラウザの JIT が働いても、
CPUレジスタが効率よく使われる可能性は低くなる。

ただ、C/C++ と JS 間の文字列の受け渡しは大切で、上記のような実装以外は
現状、多分できそうにない。なら、結論的には、Emscripten がどんなに
改良されても、wasm 側に何らかの改良が施されない限り、wasm の native stack
を使用した wasm コードは根本的に生成できないと思われる。

14 :デフォルトの名無しさん:2019/01/27(日) 02:29:37.09 ID:UeSsBKpf.net
>>13
確認が必要ではあるが、ある意味では「良い」こととして
-s ASYNCIFY=1 を指定しても、指定しなかったときに比べた
速度低下は、native stack を使うかどうかに起因する事は
ない可能性がある。だから、-s ASYNCIFY=1 は、そんなに
気兼ねすることなく使ってもいい可能性が出てくる。

というか、-s ASYNCIFY=1 は、Emscriptenの作者の気持ちは
離れていっているかもしれないが、実際にはこれなしでは、
Windows を模倣したような汎用的な ToolKit は作れない
と思うが・・・。

15 :デフォルトの名無しさん:2019/01/27(日) 02:56:58.37 ID:UeSsBKpf.net
>>14
>というか、-s ASYNCIFY=1 は、Emscriptenの作者の気持ちは
>離れていっているかもしれないが、

実は、さらに効率が悪いと思われる「Emterpreter」という、C/C++
のソースをバイトコードにコンパイルして、インタプリタ的に実行して
しまう方式の方に、Emscripten の作者の心は向いているのかも知れない。
-s ASYNCIFY=1 は、「推奨しない」が、新しい方式として、「Emterpreter」
を挙げているようにも思える書き方がされているようなので。

16 :L:2019/01/27(日) 14:04:20.14 ID:UeSsBKpf.net
LLVM の alloca を wasm の native スタックに対応させずに、
グローバル変数的な、HEAP32[STACKTOP + ofs] の方に対応させた上で工夫すれば、
ASYNCIFY=1 的なものや、yield, async, await, function generator 的なものも
LLVM の LL コード以後の backend 層を修正する事無く実現可能ではないかと思っていた。

でも、LLVM の仮想レジスタ(%10 みたいな) の方も同様に HEAP32[] の方に
移さないと、多分、駄目だろう・・・。一時的に使うものは除いて。
一時的に使っているだけかどうかを最適化層で判定して、一時的ではないもの
だけを HEAP32[] の方に移さないと、アプリの実行速度は下がる。
本当は、LL コードは仮想レジスタに対しては最適化が強く利くはずなので、
なるべく仮想レジスタだけで済むならそれに越したことは無い。
グローバル変数の最適化はかなり難しいのd。

17 :デフォルトの名無しさん:2019/01/27(日) 16:09:38.70 ID:UeSsBKpf.net
Emscriptenの emcc で、ASYNCIFY=1 を指定した場合、1つのイベント・ハンドラ
の処理が完了する前に別のイベント・ハンドラが起動してしまうことがあるらしい。
例えば、Windows でいうところの OnMouseMove() ハンドラの中で少し
時間のかかる処理をしていたとする。例として、ハンドラの中で printf()
を使い、端末のスクロールに時間がかかってしまうとか。その場合、
そのイベント・ハンドラの処理が完了する前に、新しい OnMouseMove()
イベントが生じてしまう事があるらしい。

普通、Windows でも、JS でも、マウス・イベントなどは、イベント・キューの中
に蓄えられ、待ち行列を形成し、今実行中のイベント・ハンドラの処理が
完了するまでは次のイベント・ハンドラが実行されることは無い
(Win32では、ハンドラの中で SendMessage() を行えば話は違ってくるが。)。

ところが、ASYNCIFY=1 を指定した場合、printf() 関数の中で、新しい
マウス・イベントに対しての OnMouseMove() が、また呼び出されることが
あるようだ。これも確定事項ではない。しかし、いくつかの実験が不可解な
挙動をしていたのを、今から考えればでそう思えて来た。

そのときは、ASYNCIFY=1 を指定すると、printf() が「バグる」と思って
いたのだが。そういうカラクリだったのか・・・。

18 :L:2019/01/29(火) 10:27:43.11 ID:8rAEnTT8.net
Emscriptenを使わずに、clang で wasm を出力してみたところ、
C の local auto 変数は、wasm の native stack(shadow stack) ではなく、
グローバル変数(wast において $global$0 という名前 ) を stack pointer
(asmjs における STACKTOP) として、memory なる HEAP8[] 相当の
JS 配列の中に確保されることが分かった。

つまり、asm.js を途中に介さないで直接 wasm を出力した場合でも、
local auto 変数は、wasm の native stack に確保されるわけではなく、
ちゃんと、HEAP8[SATCKTOP + ofs] のような意味でJS の グローバル変数の
HEAP8[] 配列のようなものの中に確保されていると言うこと。

だから、C の local auto 変数の(先頭)アドレスを取得することも出来るし、
C のglobal 変数のアドレスと、全く同じ扱いにすることが出来ている。
wasm において、Cのポインタの中に入っている「アドレス」は、
HEAP8[] 配列の index 番号である。だから、0 に近い小さな値となっている。
ポインタの値が、10 の場合、HEAP8[10] に対応している。

また、この memory は、現状、wasm 側で確保して、それを、JS 側に export
している。JS 側は、それを必要あらば、HEAP8[] 配列に「投影」することが出来る。
HEAP8 という名前は仮のもので、任意の名前をつけることが出来る。
また、同じ memory 領域を HEAP32、HEAP16、HEAP8 として、重ねるように
配列に投影することも出来る。

19 :L:2019/01/30(水) 15:30:21.11 ID:vB8508VG.net
・LLVM は、割と簡単にデバッグ用の行番号情報を入れることが出来る。
・emcc で、-g4 と --source-map-base オプションを使えば、
 それを、sourcemap なる JS のデバッグ情報ファイルに出力できる。
・FireFox Debveloper Edition では、普通に C のソースに break point
 を指定して、wasm のプログラムをブラウザ上でデバッグできることを
 確認した。
・ただし、Web に出ている情報は、少しずつ間違っているか、または、
 現状に合ってないので、実験しないと上手くいく方法は分からなかった。

[emcc を使わないで、wasm-ld.exe を使って debug 情報を入れる方法]

・wasm-ld.exe は、wasm 用のリンカであり、入力は elf 形式似た *.o 。
 出力は、*.wasm 形式。wast が見たい場合は、wasm-dis.exe で変換する。
・この *.o は、emcc の *.o とは別。emcc の *.o は、単に拡張子が
 変わっているだけで、中身は *.bc と同じ。
・この elf 的な方の *.o は、clang で、*.bc を入力して作ることが出来る。
・wasm-ld.exe は、実験してみると、多分。この elf 的な *.o しか入力として受け付けない。
・wasm-ld.exe は、今のところ、直接的には、sourcemap を出力できないらしい。
・しかし、*.wasm の中には、既に dwarf 形式でデバッグ情報が入っているかもしれない。
・なぜなら、wast に変換してみてみると、ファイルの最後の方に ; ・・・ のコメントとして、
 それらしき記述があるから。
・この wasm の中の dwarf 情報は、wasm-dwarf なるプログラムで、sourcemap に変換
 することが出来るらしい。ところが、このプログラムは、「Rust言語」を使って書かれている
 らしい。
・だから、emcc を使わなくても、デバッグ情報を最後まで出力できる道は一応は、存在している
 かも知れない。
・最大の問題は、wasm-dwarf が Rust 言語で書かれていること。exe に直す方法があれば
 便利になると思う。

20 :デフォルトの名無しさん:2019/01/30(水) 15:49:47.96 ID:vB8508VG.net
Rust は、コンパイル言語なので、rustc コマンドでコンパイルすれば良いだけ
だったかも。

21 :デフォルトの名無しさん:2019/01/30(水) 22:10:26.01 ID:GmcWmER+.net
・wasm-dwarf を試してみたて、ちゃんと、sourcemap 形式のものを出力
 することはできた。
・FireFox Dev Ed. でCソースの行番号レベルのソースレベル・デバッグっぽい
 ことが出来る寸前まではいけた。ブレイクポイントは設定できる。
 しかし、実際にそこで停止することは出来なかった。
・もしかすると、wasm-dwarf の出力する sourcemap ファイルの mapping 部分は
 正しくないかもしれない。

・llvm-dwarfdump なるコマンドがあり、exeバイナリも容易に入手できる。
 そのコマンドを -all オプションを指定して使うと、*.wasm の中のデバッグ情報を
 全部見ることができるらしい。
・LLVM 公式サイトには、LLVM の操作ライブラリもおいてあるが、llvm-dwarfdump.exe
 や、wasm-emscripten-finalize.exe などのツール類は、そのライブラリを使って
 作られている気がする。サイズがどのコマンドも大きいくなっているのはそのせいかもしれない。
 たくさんの機能を持った汎用のライブラリがそのまま exe の中に入っているためにそう
 なっている気がするから。

22 :デフォルトの名無しさん:2019/01/30(水) 23:38:06.00 ID:YAuiBXnQ.net
もしかして、ここまですべて同じ人?

23 :デフォルトの名無しさん:2019/01/30(水) 23:56:12.42 ID:GmcWmER+.net
[エンタープライズ号、航海日誌 第5016日]

emcc を使わずに wasm をソースレベルデバッグしたい場合、
JSファイルではなくて、wasm そのものの中に、その事をマークしなければならない。

そしてそれは、「 custom section "sourceMappingURL"」なるものの中に、
JSファイルで、//# sourceMappingURL=xxxx と書く場合の xxxx の部分
の文字列を入れることで行えるらしい。

ただし今のところ、この section だけを上手く書き換える方法が良く分かってない。
wasm-emscripten-finalize.exe を使えば、書き換えることは可能ではあるが、
wasm 本体のコード部分のバイナリも変わってしまうらしいので、アドレス値が
ずれてしまうので、結局、sourcemap が狂ってしまう。

だから、何とかして、この section だけに文字列を追加する方法を見出さなくて
はならない。

24 :デフォルトの名無しさん:2019/01/31(木) 00:30:00.40 ID:OGxiQZdZ.net
結論的に言えば、
・custom section は、id=0 の section で、割と簡単に作ることが出来る。
known section は、id >=1 になっているので、区別が付く。
custom section は、文字列で、好きな名前をつけることが出来る。
・wasm ファイル自体が、section を chunk 方式のように羅列している
 だけなので、意外と簡単に section の追加が出来るかもしれない。
 section は、入れ子になることはなく、単に global level で1次元配列のように
 直線的に羅列されているだけらしい。ただし、それぞれのsectionのサイズは
 可変長なので、配列ではなく、「chunk」である。
・ただし、text format の wast では、custom section を定義する方法が
 用意されていないようなので、binary 形式の wasm を直接修正する
 必要があると思う。

25 :デフォルトの名無しさん:2019/01/31(木) 09:53:09.92 ID:OGxiQZdZ.net
Emscripten を使わなくても、ブラウザ上の wasm で、Cソース上の break point
で停止させることに成功した。

なお、海外のサイトを検索しても、その報告例は見つからなかった。

26 :デフォルトの名無しさん:2019/02/01(金) 17:28:19.91 ID:WOdIBupf.net
wasm は、JS の WebAssembly.instantiate() 系の関数を上手く使うと、既に、
WebWorker スレッドのコンテキストにおいても実行する事が出来るらしい。

また、実験的な確認は取れてないが、JS の WebAssembly 関連の関数の仕様と
先日から調査した HEAP8[] などによる memoy の扱い方やグローバル変数や
スタック変数の確保の仕方、ポインタ変数の中身の意味などから総合的に判断すると、
別ファイルの*.wasm を複数 instance 化できてもおかしくない仕様になっている
と思う。

ちなみに、C の関数ポインタは、wasm でも使用できることを実験して確認した。
そして、wasm においては、「関数アドレス」ではなく、「関数番号」となる。
番号に対応した関数の「関数名(関数オブジェクト)」は、table なる wasm
内の section に配列的に並べられている。
そして、JSコードからも、そのテーブルの読み書き、追加が可能。

だから、動的に関数を追加して、動的リンクなども出来てもおかしくない仕様に
なっている。

27 :デフォルトの名無しさん:2019/02/01(金) 17:38:50.44 ID:WOdIBupf.net
wasm, wast において:

・call_indirect の引数は、関数アドレスではなく、関数番号となる。
 この番号は、table section のエントリへの index 番号となっている。

・store アドレス, 値
・load アドレス

の「アドレス」部分は、memory section の先頭からの offset 値に
なっている。memory section は、JS コードからも参照する事が出来て、
8, 16, 32 BIT の配列としてアクセスする事が出来る。名前は任意に
ついけられるが、HEAP8[], HEAP16[], HEA32[] という配列に「投影」
してアクセスする事が出来る。型が決まった配列に投影するやり方は、
TypedArray への投影として行う。一方、32BIT値などを、アラインを
気にせずに中途半端なアドレスを指定してアクセスするには、
DataView が便利である。なお、TypedArray へ投影する場合でも、
アラインがずれている変なアドレスを先頭アドレスにして 32BIT 値の
配列にすることも可能らしい。

なお、普通のJSでは、数値は、全て 64BIT double 型の不動小数点型である。
TypedArray では、ちゃんとBIT 数を指定した整数型としての配列を作る
ことが出来る。ただし、上の例では配列を作っているのではなく、配列へ
「投影」している。

28 :デフォルトの名無しさん:2019/02/01(金) 22:39:58.03 ID:q39qofSl.net
[用語解説]
エントリ = アセンブリレベルのデータにおいて時々使われる言葉。
      同じサイズのデータが並んでいるような場合に、各データが
      入っている「箱」、のような意味。
      C言語の配列における各要素が入っている小さな箱のようなイメージ。
     「room」「folder」などの言葉も大体同じ意味かもしれない。

29 :L:2019/02/01(金) 22:54:21.57 ID:q39qofSl.net
[独断と偏見の見解]

辞書に置いては、英語版でも日本語版でも、「エントリ」や「インデックス」
の意味がはっきり言って「間違っている」。自分が読んできたコンピュータ系の
技術文書に置いては、

インデックス = 「index number」のように使われて、配列の「要素番号」
        配列の添え字の意味であり、それ以外の意味で使われることは
        まずない。BYTE  a[256]; に対して、a[idx] の idx がそれ。
        変数名としては、大体 idx か index。一方、id は、identifier の
        場合が多くて、識別子。意味も少し似ていて混同してもそんなに
        問題ないかも知れないが。英語圏に置いて、配列の添え字は、大体
        index number という言葉が使われる。subscript も使われる
        こともたまにある気もするが、そっちは「下付き文字」の意味で、
        ニュアンスが結構違うと思う。

エントリ = ネットの辞書にあるような、「データ入力」や「エントリ・モデル」の
      意味ではほぼ絶対に使われない。配列や行列やテーブルの要素の
      入っている箱のような意味。「データ入力」は、多分、「data input」
      ということが多いと思う、なんとなくだが。

30 :デフォルトの名無しさん:2019/02/03(日) 18:21:17.31 ID:gzQofkZX.net
Emscripten や、その付属ライブラリなしで malloc(), free() ( <--- dlmalloc ) を
使うことに成功した。dlmalloc と 自分のアプリで wasm 分けずに、 リンクして
単一のwasm で行ける。 wasm の起動処理も必要なビルトイン的なJS関数の準備も、
全部自前で書いた JS で行っている。

31 : :2019/02/03(日) 19:50:39.97 ID:t4xt++Qj.net
>>29
>それ以外の意味で使われることはまずない
「まずない」というのはちょっと極端ですね…
今思いついたところでは、インデックスレジスター絡みのアドレッシングとか命令とか、はありうると思いますね
あと index には「指標」という意味がありますから、OS 等の動きや効率を計算して振る舞いを変えるための状況指示関数みたいなものを index と呼ぶ可能性もあります

32 :L:2019/02/04(月) 11:11:39.60 ID:fEV2g5eo.net
>>31
結論から先に言っておくと、とても言いにくいことだけど、あなたの意見はおいらの見解とは合わない。

>今思いついたところでは、インデックスレジスター絡みのアドレッシングとか命令とか、
>はありうると思いますね

Intel CPU の IA32 の「アドレッシングモード」は、Mod/RM で指定する。メモリから
データを読み書きする場合には「間接アドレッシングモード」を使い、元々の意図
としては次のようになっている。ただし、アセンブリ言語の使い方はとても自由で、
絶対この意味で使わなくてはいけないというわけではなく、元々、Intel も別の意味での
使い方も想定している。だから、言葉の意味とは違った使い方がされていることとがある。
そしてそれは悪いことではない。だから注意が必要:

[base + index * scale + offset]

base = ベースレジスタ(配列の先頭アドレスに当たる)。base は基盤。だから、先頭アドレスの意味になる。
index = インデックスレジスタ(配列の添え字に当たる)
scale = 1,2,4,8 ; スケールファクタ(配列の要素のバイト数にあたる)
offset = オフセットアドレス(ベースアドレスを少しずらす目的か、または、逆にこっちをベースアドレスにする使い方がある)

C 言語で、TYPE arr[N]; と宣言すると、TYPE 型を要素が N 個集まった配列が定義できる。
上記の間接アドレスで、scale は、sizeof(TYPE) とする事が想定されている。つまり、
arr[index] ---> [&arr + index * sizeof(TYPE)] のように置き換わり、
scale = sizeof(TYPE); の場合に相当する。だから、この場合も、index は紛れもなく配列の添え字である。

ただし、scale=1 に設定することで、index の部分にベースアドレスを指定することも出来るように
なるので、実際のアセンブリ言語では、index が添え字であるという元々の意味を超え、さまざまな使われ
方がされている。しかし、それは、index の言葉の意味が「添え字」である、という事を否定すること
にはならない。

33 :L:2019/02/04(月) 11:25:05.10 ID:fEV2g5eo.net
Z80 には、IX、IY という16BITレジスタがあり、
LD A,(IX + 4)
使い方が出来た。4 の部分は、8BIT の定数を指定する。
Z80のアドレス幅は16BITだったので、8BIT 値では、ベースアドレス
を指定することは出来ない。その意味では、IX は、配列の添え字ではなく、
先頭アドレスを指定するのがほぼ必須となっていた。

でもこれは、いまからずっと古い話で、どういう経緯かは分からないが、
index は、今では、99.9 % 位は、配列の添え字(文字の位置もここでは同義と
考える)という意味で使われるようになってきている。例えば、言語としては
C/C++ よりは新しい JS においても、indexOf() がある。これも文字の位置を
返す関数なので、配列の添え字と同一視する事が出来、index という言葉が、
やはり配列の添え字として使われていることが分かる。

最近では、配列とリンクリストの違いが分かってない人が増えているので、
index の意味を誤解する人が出てきているかもしれない。

34 :L:2019/02/04(月) 11:34:20.94 ID:fEV2g5eo.net
>>1
>あと index には「指標」という意味がありますから、OS 等の動きや効率を計算して
>振る舞いを変えるための状況指示関数みたいなものを index と呼ぶ可能性もあります

Intel Manual や、Microsoft (MSDN Libydary など), JavaScript, Java, Ruby, Perl
などではそのような使い方がされることはないといっても過言ではない。

35 :L:2019/02/04(月) 11:36:44.96 ID:fEV2g5eo.net
なお、誤解を与える前に書いておくと、これは、99%位、記憶に頼って書いている。
Mod/RM の部分は、100%脳内の記憶から書いた。

36 :L:2019/02/05(火) 01:17:05.71 ID:1Lt6uOg9.net
>>6
[Wasm & Windows 共通 GUI Toolkit, with NWSC used]

http://nowsmartsoft.atwebpages.com/

↑ 別の無料サーバー(海外のもの) に置き直してみた。

[事情]
>>6 で借りてる無料サーバーは、サーバー(Xrea)自体が
 BitDefender Traffinc Light の BlackList に入ってしまっていて、「黄色」ランプ
 になっていたので気になっていた。過去に この Xrea サーバーのバナー広告がトロイ
 の木馬に感染してしまっていたらしい(当然だが、オイラとは全く関係ない)。 

・新しいサーバーは、BitDefender Traffinc Light の BlackList に入ってないので
 緑色のランプになっている。

37 :デフォルトの名無しさん:2019/02/05(火) 15:47:24.76 ID:1Lt6uOg9.net
Emscripten を使わずに、>>36 のビルドに成功。
分割コンパイル時の最後のリンク時間が速くならずに困っていたのが、
激速になった。また、出力される wasm、ランタイムの js、html のサイズが
小さくなり、ランタイムがシンプルになって何をやってるのかとても分かり
易くなった。ライブラリも何をやってるのか分かり易くなったしサイズも
激減したので、配布も楽になりそう。処理系もほぼ全てバイナリになったので
Python や node.js、Java などの処理系の配布も不要になった。

38 :L:2019/02/05(火) 18:27:56.95 ID:1Lt6uOg9.net
>>37
ひきこもりのLが、早速、設置してみた。

[1]. Emscripten を使わず、nwsc と clang-toolset と nwstk と dlmalloc だけ(?)を使って作ったもの :

URL: http://nowsmartsoft.atwebpages.com/

index.html : 2KB
start.js  : 16KB (wasm の起動とJS側の関数類)
test.wasm : 67KB (wasm アプリ本体)

nwsc は、独自 C++ nex compiler で、llvm のフロントエンド。wasm 用の
独自拡張を持っており、Emscripten と同様の EM_ASM({・・・}, ・・・);
が使えるが、その場合、JS 関数を直接、JS ファイルに出力するので、
恐らく Emscripten より効率が良いと思う。

test.wasm は、wasm-opt.exe で最適化すれば、もっと小さく出来る。
start.js も minimize ツールを使えばもっと小さく出来る。
また、test.wasm は、今後、圧縮して配布することも可能だと思われる。

--------------------------------------------------------------------------------------
[2]. nwsc と Emscripten (emsdk, emcc, clang, binaryen, ライブラリなど) を使って作ったもの :

URL: http://nowsmartsoft.atwebpages.com/emcc

index.html  : 8KB
MainWnd.js  : 123KB (wasm の起動とJS側の関数類)
MainWnd.wasm : 104KB (wasm アプリ本体)

なお、Emscripten でも、もっと小さく作ることは可能かもしれない。また、今回は、-s ASYNCIFY=1 は使ってない。

39 :デフォルトの名無しさん:2019/02/07(木) 00:00:12.17 ID:FsbblVW+.net
age

40 :デフォルトの名無しさん:2019/02/07(木) 17:57:22.68 ID:fRacvqu0.net
https://i.redd.it/7vuxeeptx2f21.png

↑ Chrome 内で (試作品の) 独自 Windows System (?) を実行中のキャプチャ
画像。

41 :L:2019/03/11(月) 12:54:38.07 ID:HTmv6ctw.net
>>1
自作 C++ compiler nwsc で、bsync, bwait, bresume, bcall なるものを実装し、
bsync 修飾された関数にはコンパイラが変形した特殊なコードを出力する
事で、JSのイベントループの制限を突破することに成功した。次のことが出来る
ようになった/なる:

1. イベントハンドラ実行中に、独自のイベントループを作ってそこで任意のイベントの発生を
 待機/処理する。メニュー・イベントのハンドラの中でハンドラを終了する事無く、
 独自のファイル入力ダイアログを出し、OK/CANCELボタンが押されるまで待機し、
 続けて必要な処理を行うこと。

2. CPUパワーや電力を消費する事無く、その場で待機する事ができる Sleep() 関数の実装。

3. getch(), getche(), (ポケコン)BASIC の pause, wait, input 相当のものの実装。

#なお、bsync などの語頭の「b」は、「async(非同期)」の a を b に変えたもの。
 JS の async, await より強力なので a の次を表す意味で b にした。

42 :L:2019/03/29(金) 10:50:18.05 ID:sD1xGsa7.net
>>1
自作 wasm demo を更新した。
・Ctrl+ +, Ctrl + - での拡大縮小、Ctrl+Shift+I での開発者モードへの遷移(Chrome)が可能に。
・コンソール出力(textarea)へのコピペに対応。
・サーバーに置いてある jpg ファイルを読み込んで独自 Window 内への描画に対応。
 回転表示可能。
・demo1 : 2枚の Windowにedit widget のテスト。メニューあり。ブラウザ内にある
 独自Window のドラッグ移動とサイズ変更が可能。
・demo2 :2枚の jpg 画像を読み込んで表示するテスト。
・同じソースからビルドした Windows native 版も手元にある。
・Window も Widget 類も全部自前で描画しているのでタイトルバーの色や枠の太さなどは
 自由に変えられる。原則的に native 版と wasm版で pixel 単位で全く同じ見た目。

http://nowsmartsoft.atwebpages.com
http://nowsmartsoft.atwebpages.com/demo1/index.html
http://nowsmartsoft.atwebpages.com/demo2/index.html

43 :L:2019/03/31(日) 12:58:32.59 ID:vDO0/VaM.net
>>1
wasmとcanvas 2Dを使った3D地形(?)のスクロールサンプルを作ってみた。

http://nowsmartsoft.atwebpages.com/demo_land/index.html

ご覧ください。思っていたよりはちょっと遅いかな。
WebGL使ったら速くなるかもしれない。

44 :デフォルトの名無しさん:2019/04/01(月) 14:17:41.70 ID:QUlyRw/u.net
どうせWebGL使うんだったらwasm使う意味なくね

45 :L:2019/04/01(月) 14:30:39.86 ID:YLhs0zdh.net
wasmがなぜ重要かは、まだ言わない。

46 :デフォルトの名無しさん:2019/04/01(月) 14:40:56.11 ID:bzrp4n7u.net
naclとは別物なの?

47 :デフォルトの名無しさん:2019/04/01(月) 15:00:24.18 ID:RkAplvWW.net
>>46
wasm (= WebAssembly) は、NaCl (= Google Native Client)
とは別物。

48 :デフォルトの名無しさん:2019/04/01(月) 15:07:19.83 ID:bzrp4n7u.net
PNaClを使ってたんやね

49 :デフォルトの名無しさん:2019/04/01(月) 15:12:02.16 ID:YLhs0zdh.net
Google Native Client は、WebAssemblyの普及に伴いそちらにリソースを
集中するため開発を終了し、2019年にChromeから削除されることが発表
された。

50 :デフォルトの名無しさん:2019/04/01(月) 15:22:44.69 ID:RkAplvWW.net
>>48

>>42 >>43」は、PNaCl ではなく、WebAssembly を使ってる。

51 :デフォルトの名無しさん:2019/04/01(月) 17:34:37.66 ID:RkAplvWW.net
>>1
どうも世界には、Java でも C# でもない共通プラットフォームを作りたがってる人たちがいて、
その中には、FireFox, Google, Apple が含まれるらしい。

WASI = WebAssembly System Interface

なるものの標準化が進められており、例えば、native のファイルシステムに直接アクセスできるようになり、
それによって wasm がブラウザ内部に留まらず、Javaのようなプラットフォーム非依存の共通アプリケーション
が作れる存在になることを目指しているらしい。


# 2019/03/27 の記事:
https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/
# 2019/03/28 の記事:
https://www.infoworld.com/article/3384920/mozillas-wasi-takes-webassembly-beyond-the-browser.html



なぜかタイムリーに Java への批判が出てきた。
「Java は安全な言語ではない」:
# 2019/03/28 の記事:
https://lemire.me/blog/2019/03/28/java-is-not-a-safe-language/

52 :デフォルトの名無しさん:2019/04/02(火) 01:15:22.26 ID:LpV8NoZ4.net
>>1
Adobe自身も、FlashからWebAssemblyに移行するらしい:
https://blogs.adobe.com/japan/201707adobe-flash-update/

>>50
アメリカの掲示板 Reddit での WASI のスレッド:
[Standardizing WASI: A system interface to run WebAssembly outside the web]
https://www.reddit.com/r/programming/comments/b65yn7/standardizing_wasi_a_system_interface_to_run/

53 :デフォルトの名無しさん:2019/04/02(火) 02:11:54.11 ID:N1DZco4a.net
何度もあらわれては消えていく"write once run anywhere"のコンセプト・・
はてさてどうなりますやら

54 :デフォルトの名無しさん:2019/04/02(火) 11:07:57.88 ID:5+C+zQyU.net
wasabiならもっと流行るはず

55 :デフォルトの名無しさん:2019/04/02(火) 13:50:43.70 ID:ZD2r0ERn.net
>>53
C#も、XamarineもUnityもその思想をやろうとしてると思うけど。

56 :デフォルトの名無しさん:2019/04/03(水) 01:36:20.38 ID:UEgi/Llh.net
「C# Run Anywhere」でGoogleって、海外のサイトを見ていたら、
C#は設計上は、仮想マシン上で動くことになってるけど、MS公式の
Runtimeで、大体動くのは、大体WindowsとMacだけで、実質、
Windows向けだと書いている人がいた(それが本当かどうかは分からないけど)。
少なくとも、以下のようなことは大体正しいのではないかと思う。
・MSにとって、C#がマルチプラットフォームになることはマイナスである。
・MSはC#をRun anywhere にすることには力を入れてないか、目指していない。

57 :L:2019/04/03(水) 15:29:38.83 ID:+15LYwzR.net
>>43
結論から言うと、ゲームに置いては、ブラウザ内アプリと native アプリのどちらで
組むかは、速度性能で選ぶ必要がなくなりそうだ。理由は以下の通り:

今回、試しに描画部分をWebGLに変えてみたら、劇的に高速になった。
詳しくは分からないが、恐らく native アプリで Direct3D を使った場合に匹敵するくらい
の速度が出てると思う。結果、多くのゲームに関してはブラウザ内アプリとnative アプリで
速度差がほとんど出ないと思われる。なぜなら、mainプログラムでは描画に関しては
全く何もやることが無いといっても過言ではないのに、大抵のゲームでは描画以外の
計算は物凄く軽いから。
人体の間接などを滑らかに描画するボーンの演算ですら、プログラマブルな Vertex Shader
により GPUで行えるし、パイプライン化されているので相当重い計算でも、描画速度には
ほとんど影響を与えない可能性が高い。

58 :L:2019/04/03(水) 18:27:34.57 ID:+15LYwzR.net
>>1
一応、作ってみたものを公開しておくので見てね。

地形データの WebGL によるワイヤーフレーム描画のデモ:
http://nowsmartsoft.atwebpages.com/demo_land_WebGL/index.html

地形データの WebGL によるポリゴン描画のデモ:
http://nowsmartsoft.atwebpages.com/demo_land_Polygon/index.html


まだそんなに高速化は施してないので、もっと高速になる余地がある。
例えば、頂点データはフレーム描画毎にコピーしてしまっている。
頂点カラーも 0〜255 の BYTE 形式から、0.0〜1.0 の float 形式に
wasm のコードで変換している。それらは本来は不要なものだけど、
今回は修正せずに見切り発車的にそのまま公開した。

それと、実際にやってみると、時々ガタガタと止まった感じがするけど、
それは、JavaScript の GC (Garbage Collection) が時々起動してしまって
いるからだと思う。

wasm を使っていても、グラフィック描画のためにはどうしてもJavaScript
は使わざるを得ないので、いつのまにかこうなってしまっていた。もう
ちょっと工夫すれば、GC の発生を抑えることが出来るんではないかと思っている。
今回、WebGL を始めて使ったので、その際、ネットにあったサンプルをそのまま
使ってみている部分があり、その結果、OnDraw() 関数の中で TypedArray 配列
を new したりしてしまっている。それが一番の原因ではないかと思われる。

59 :デフォルトの名無しさん:2019/04/04(木) 10:51:29.71 ID:4Pg7/9jZ.net
WebGL
https://tech.griphone.co.jp/2018/11/05/js-on-unity-webgl/

60 :L:2019/04/04(木) 16:12:58.84 ID:LemJlt/3.net
>>1
Voxel space 風の3D表示をやってみたので見てね v(⌒▽⌒)У
http://nowsmartsoft.atwebpages.com/demo_land_Voxel/index.html

61 :L:2019/04/05(金) 16:28:39.72 ID:xS705/9I.net
>>1
一応、スマホのタッチ入力によるWindowの移動やサイズ変更に対応してみたよ。
実機では一度も試してない(スマホ持ってない)ので動作報告あったらうれしいな:
http://nowsmartsoft.atwebpages.com/

62 :デフォルトの名無しさん:2019/04/05(金) 19:37:10.55 ID:IRsRTegS.net
すまん
正直広告がうざくて萎える

63 :L:2019/04/05(金) 19:50:46.66 ID:xS705/9I.net
>>62
PCでテストしてたら広告が出てこなかったかが気づかなかったけど、
Chromeのスマホモードで見てみたら、非常に問題ある位置に広告が出て
来ることが分かって今、めちゃくちゃ対処に困ってるょ。
位置を変える方法が見つからない・・・。Ninja Analyzerのものなのか、
ZettaHosting (atwebpages) のものなのかも分からない。

64 :デフォルトの名無しさん:2019/04/06(土) 02:27:57.47 ID:/MkWaZI9.net
>>62
広告、消えたよ。

65 :デフォルトの名無しさん:2019/04/06(土) 02:53:07.58 ID:/MkWaZI9.net
広告、最初の導入ページには残ってるけど、各demoページでは消えてるらしい。

66 :デフォルトの名無しさん:2019/04/06(土) 03:17:09.51 ID:d3+s3AWp.net
レイトレーシングやってほしい

67 :L:2019/04/06(土) 12:27:52.58 ID:c/dtyqqS.net
>>1
地形生成のアルゴリズムを変えて、山っぽくしてみたよ。
荒涼とした山肌に、心休まる緑が点在するょ:
http://nowsmartsoft.atwebpages.com/demo_Mountain/index.html

地形データは、起動後に自分で生成してるょ。

68 :L:2019/04/06(土) 12:55:17.11 ID:c/dtyqqS.net
Windows に最初から入ってるブラウザの IE では残念ながら見られないので
FireFox か Chrome を入れてね。FireFox が速いみたい。

69 :デフォルトの名無しさん:2019/04/06(土) 16:08:04.28 ID:DWbJNRMu.net
ソースはいつ公開しますか?

70 :デフォルトの名無しさん:2019/04/06(土) 16:11:15.39 ID:d06Kh2dO.net
>>69
応援してくれる人が多そうなら公開するかなぁ。

71 :デフォルトの名無しさん:2019/04/06(土) 16:20:00.28 ID:c/dtyqqS.net
言い忘れてたけど、これは新しい言語 C++ nex のコンパイラ nwsc と
新タイプの統合開発環境のデモ的なものなので、そっちを応援してくれる
人が増えそうならデモや TOOLKIT(NWSTK) のソースを公開しようかな
と思ってる。

72 :デフォルトの名無しさん:2019/04/06(土) 16:29:49.76 ID:c/dtyqqS.net
ちなみに、おいらは引きこもりなのでお金が無いんだょ。

73 :デフォルトの名無しさん:2019/04/07(日) 16:35:02.31 ID:e/tK/Nk6.net
>>1
海外の掲示板などでに出ていた Wasm が VM(Virtual Machine)として、
JVM (Java の VM) や Flash の VM より優れていると考えられている点の
内、今思い出せるものと書いておく:

1. JVM や FlashVM は、それぞれ一社のものだが、Wasm の VMは、
  FireFox, Chrome, Apple などの多数のベンダーの合議により
  決まった公開仕様である事。例えば、Googleが自分勝手に
 何かしようとしても、FireFox などがそれに逆らうことが出来る(?)
 ため、問題が生じにくい、と書いている人がいた。

2. 実際、第三者的な組織から、Lucet, wasmer, wasp, wasabi,
 binaryen(元々有ったが) など色々出てきているらしい。

3. そもそも、JVM は、設計が、ほぼ Java 専用になっていて、例えば、
  変数の型などのMeta情報が Java 専用だったり、GCを前提とした
  仮想コード、仮想マシンになっているらしい。その結果、
  FrontEnd に C/C++ などを含めた広く一般的な言語が対応
 するのは難しいらしい。つまり、一般的な言語の BackEnd
 としては無理があるらしい。

4. JVM は、セキュリティー上の問題がある、とされていた。
 なんでも、ブラウザと JVM の境界線上で問題が生じることが多いらしい。
 クラッカーは、ブラウザと JVM の間のセキュリティー上の約束事や
 (仕様上の)意思疎通の齟齬(?)を見つけて何かやってくるのか知れない。

5. JVM はブラウザの拡大率を変更しても追従しにくいが、wasm だと
 追従しやすいらしい。

74 :デフォルトの名無しさん:2019/04/07(日) 16:59:47.19 ID:e/tK/Nk6.net
>>73
6. JVMを使うには、使いたい人が自分で JRE をインストールする必要があったが、
 wasm だと、IE以外の新しいバージョンの主要なブラウザなら全て最初から
 対応している事。そのため、多くの人に届きやすいプラットフォームである。

7. Java(Applet)やFlashは既に、数年後にはChromeからは実行できなくなる予定で
 あるが、wasm は逆に、Flash(Adobe) までもが backend として対応すると
 宣言している。

75 :デフォルトの名無しさん:2019/04/08(月) 18:03:38.12 ID:pvsbwYPC.net
>>1
ウェブ・アプリをローカルで実行したい場合に参考になりそうなもの
・Google Gears
・PWA = Progressive Web Apps
・WASI = Wasm System Interface
・blob, fetch, XHR

76 :デフォルトの名無しさん:2019/04/08(月) 18:17:36.29 ID:N9bPT30p.net
>>75
・Electron, Chronium ---> ブラウザの枠を超えた Window が出せる。
・Chrome Apps (廃止)

77 :L:2019/04/21(日) 17:21:20.81 ID:1Wk1O9hC.net
http://nowsmartsoft.atwebpages.com/

↑ demo1 の EditWidget が、MobileのOn-Screen Keyboardに対応して、
PCでも日本語の入力が出来るようになったよ。

「今まで出来なかったの?」って? ブラウザのせいだよ〜!

78 :デフォルトの名無しさん:2019/05/18(土) 16:05:19.62 ID:dUyfgnsN.net
>>1
ブラウザ上だとタイトルバーとURLアドレス欄で画面に無駄が消費されてしまう問題は、
「WebView」のようにアプリの内部にブラウザを埋め込んでしまえばいい。
それを使えば、キャッシュされてしまう問題も回避できるかもしれない。

79 :デフォルトの名無しさん:2019/05/18(土) 17:12:47.28 ID:4C+see96.net
google「そう思ってDesktopPWAって枠組み用意しときました」

80 :デフォルトの名無しさん:2019/05/18(土) 17:59:00.81 ID:81A5W8ik.net
PWAの作り方は良く分からないけど、アプリの審査がいらないのは
子供達にも向いてるかもね。

81 :デフォルトの名無しさん:2019/05/18(土) 18:07:19.99 ID:dUyfgnsN.net
でも、https必須らしいので、年間維持費がかかりそう。
・登録料無料のhttpsを使うのには独自ドメインが必須らしい。
・サブドメン方式でhttps使う場合は探した限り無料で出来るレンタルサイトはない。

82 :デフォルトの名無しさん:2019/05/18(土) 18:09:37.44 ID:4C+see96.net
デスクトップPWA
https://developers.google.com/web/progressive-web-apps/desktop
日本語版ないからクロムの翻訳機能使ってくれ

83 :デフォルトの名無しさん:2019/05/19(日) 01:51:24.70 ID:Z8fjcguw.net
世の中なんでも結局は金金金か!!

84 :デフォルトの名無しさん:2019/05/19(日) 11:00:10.59 ID:NVj9TkQF.net
ほんそれ

85 :デフォルトの名無しさん:2019/05/19(日) 11:10:01.48 ID:CRfL0LbB.net
github pagesあるやんけ

86 :デフォルトの名無しさん:2019/05/19(日) 11:28:02.61 ID:sA5/dcdL.net
netlifyあるやんけ

87 :デフォルトの名無しさん:2019/05/19(日) 12:52:29.06 ID:z0IbZyMD.net
https://yutakaaoki.github.io/
↑良く分からんけど、ひとまず https で wasm のデモ・ページ作ってみたで〜

88 :デフォルトの名無しさん:2019/05/19(日) 17:06:00.28 ID:+a0Gc7NS.net
wasm ていう単語見るたびにいつもこいつが頭に浮んでしまう
https://ja.wikipedia.org/wiki/%E3%82%8F%E3%81%95%E3%81%8A#/media/File:Wasao.jpg

89 :デフォルトの名無しさん:2019/05/19(日) 17:57:24.92 ID:pfNk1t/q.net
twitter の #wasm タグ、今年に入ってから急激に活発になってる気がする。
去年は数週間に一回の書き込み、みたいな感じだったようだけど、今月なんかは
数十分に一回の書き込み位になってる。求人広告まで沢山出だして、wasm技術者
を探す第一回目の会議(?)みたいなものまで出てきたらしい。

90 :デフォルトの名無しさん:2019/05/19(日) 18:01:09.59 ID:pfNk1t/q.net
ITの世界では、良く分からないところで誰かが商売に結び付けて大儲けし出す
事が多かったから、先に動こうとしてるんだろうか。クラウドとかも本当に
メリットがあるかどうかおいておいて、ブームのようにして大金が動いている。

91 :デフォルトの名無しさん:2019/05/19(日) 19:04:28.84 ID:pfNk1t/q.net
The web always wins. # ウェブはいつも勝つ
と書いてる人がいた。
面白い見方だな。

92 :デフォルトの名無しさん:2019/05/19(日) 19:11:38.67 ID:pfNk1t/q.net
「Wasmで最も重要なのは、Secutrityの面である」
と書いている。WasmはSandBox内で動作しているので安全だと。

なるほど、「Webがいつも勝つ」一つの原因は、安全性が高いことなのか・・・。
そういえばブラウザ上で動いている限り、まずウイルス感染しないな・・・。
そうか、スマホが流行る原因も、マシンのトラブルが少ないからかもしれないな。
PCだとOSが不安定になって使えなくなることが多いのと対照的。
なるほどなぁ・・・。

93 :デフォルトの名無しさん:2019/05/19(日) 19:25:02.22 ID:pfNk1t/q.net
https://byterot.blogspot.com/2019/05/why-webassembly-matters.html

ここにそのことが書いてあるよ。

94 :デフォルトの名無しさん:2019/05/20(月) 14:01:02.69 ID:pxNnSyNl.net
上手くいけば、AppStore登録の月額利用料金が開発者にかからないでiPhone/iPad
ようのアプリが作れるかも知れない。
iOSでも、去年の3月くらいにSafariもPWAに対応したらしいし、Chromeも使える。
となると、ウェブアプリをWasmで作っておいて、PWAを使えば普通のアプリの
ようにHome画面にアイコンを登録できるし、実行時にアドレスバーも出さなく
できる。Safariで駄目な場合は、iOS用のChromeもある。

95 :デフォルトの名無しさん:2019/08/11(日) 11:35:01.71 ID:UiwR3IAb.net
wikiで宣伝はアカンでよ

96 :デフォルトの名無しさん:2019/09/12(木) 22:35:47.25 ID:Uy9QyXie.net
>>40
トンでもねぇ色彩センスwww
さすがに草不可避wwwww

97 :デフォルトの名無しさん:2019/09/13(金) 10:13:11.78 ID:wKEqF87n.net
NG かどうか試してみる
http://nowsmartsoft.atwebpages.com/

98 :デフォルトの名無しさん:2019/11/18(月) 16:14:21.51 ID:Vzii0sJA.net
C++をソースとするwasmとPWA(Progressive Web Application)化できる
ことを実際に確認することが出来た。Chrome+Win7の組み合わせで
wasmアプリをローカルにインストールできてデスクトップにアイコン
を作成することができる。アイコンをクリックすると、ある種の
nativeアプリの様な雰囲気で起動できる。

99 :デフォルトの名無しさん:2019/11/18(月) 16:14:54.06 ID:Vzii0sJA.net
C++をソースとするwasmをPWA(Progressive Web Application)化できる
ことを実際に確認することが出来た。Chrome+Win7の組み合わせで
wasmアプリをローカルにインストールできてデスクトップにアイコン
を作成することができる。アイコンをクリックすると、ある種の
nativeアプリの様な雰囲気で起動できる。

100 :デフォルトの名無しさん:2019/11/18(月) 16:15:25.78 ID:Vzii0sJA.net
age

101 :デフォルトの名無しさん:2019/11/18(月) 19:53:09.11 ID:Vzii0sJA.net
https://yutakaaoki.github.io/pwa-wasm-demo1-B/

ここに wasmアプリが置いてあるが、Chromeで訪れると アドレスバーの右の方に
「インストール」という文字が現れ、しばらくすると、○で囲った + 記号に変わる。
そこをクリックすると、PWAとしてローカルPCにインストールできる。
または、右上の縦に3つの点があるボタンを押してみると、
『「PWA NWSTK」をインストール...』
というメニュー項目が出来ているので、そこをクリックしても同じ機能が働く。

102 :デフォルトの名無しさん:2019/11/20(水) 09:18:48.73 ID:Zp1gFICP.net
Mozilla、Fastly、Intel、Red HatがWebAssemblyをターゲットに「The Bytecode Alliance」
https://news.mynavi.jp/article/20191118-925267/

103 :デフォルトの名無しさん:2019/11/20(水) 12:43:45.81 ID:vKT/00gf.net
>>101
https://yutakaaoki.github.io/
ここにおいてあるものは、全部PWAに対応してみた。
Windowsならインストールできると思う。
AndroidやiPhoneなどでも出来るか試して欲しい。

104 :デフォルトの名無しさん:2019/11/20(水) 12:51:31.62 ID:vKT/00gf.net
>>103
まだ本当の意味でのソースではないけど、
https://github.com/YutakaAoki/YutakaAoki.github.io
以下の
https://github.com/YutakaAoki/YutakaAoki.github.io/tree/master/demo1
などに index.htmlや、*.wasm, *.js, manifest.json などは置いてある。

wasmアプリの作り方、PWAの作り方、wasmとPWAの組み合わせ方、に興味のある人は
参考までに。

105 :デフォルトの名無しさん:2019/11/20(水) 13:48:41.27 ID:pcdm34G4.net
で、これで何ができるの?

106 :デフォルトの名無しさん:2019/11/20(水) 14:49:34.93 ID:vKT/00gf.net
>>105
・セキュリティーが凄く強いアプリ。信用できないようなサイトからインストール
 しても、レジストリには読み書きできないし、システムフォルダや他のアプリの
 フォルダには、人間がマウスやキーボードなどから実際に指示しない限りは書き込めないし、
 読み込むことも出来ない。変な場所にインストールされたり、スタートアップ起動などに
 勝手にされることも無い。
・アプリの体験版をインストールすることなく、普段のウェブ閲覧の延長線上に
 試せるのでユーザーは遊び半分で気軽に試すことが出来る。また、掲示板などから
 リンクを張った先がすぐにアプリとなっている。その後、デスクトップや
 ホーム画面にアイコンを追加し、単独アプリの用に振舞うことが出来る。
・なぜか全てがウェブに移行するようになっており、「いつもウェブが勝つ」。
・iPhoneやiPad用のアプリが無料で開発出来る可能性がある。今までは、
 それらをターゲットに開発するには、Mac実機がどうしても必要となり、
 かつ、AppStoreに登録しないと配布することも出来なかったが、AppStoreは
 年会費も必要で、生涯にわたってずっとコストが掛かかり続けていた。
・ブラウザが互換性を保つので、PCで試して動けば、AndroidやiPhoneでも
 近い動作になる可能性が高い。
・Chrome, FireFox, Safari, Edge, Opera なども wasm に対応している
 (ただし、ツールキット側がテストはしておく必要はある。)。

107 :デフォルトの名無しさん:2019/11/20(水) 15:00:00.13 ID:AFHj5vY6.net
Java Appletと何が違うの?

108 :デフォルトの名無しさん:2019/11/20(水) 15:00:41.97 ID:vKT/00gf.net
>>106
【追加】
・画面が、Ctrl+ +, Ctrl+ -で好きなように拡大縮小できるので、近視や老眼などで
 目が悪い人でも好きな文字の大きさで読むことが出来る。それがWebアプリでも、
 PWAアプリ化したものでも出来る。
・ツールキットも含めてサイズがとても小さい。ブラウザさえ使える状態であれば、
 DLLやランタイムのインストールが全く不要。demo1は、*.htmlや*.js, *.wasm全て
 合わせて 150KB、demo-Mountainは、153KB。JavaランタイムもQtランタイムも
 MFCのDLLも何も要らない。

109 :デフォルトの名無しさん:2019/11/20(水) 15:11:39.18 ID:vKT/00gf.net
>>107
・Java Appletは、訴訟トラブルのせいか、ChromeもFireFoxが対応しなくなって
 しまった。
・wasm は、C++ が使えるので、GC を使わないプログラムが出来、
 メモリが多く使うウェブアプリを作ろうとした場合に、体感速度が非常に
 違ってくる。Javaだと、GCが走ると一分間停止するようなことがあった。
 wasm と C++ の組み合わせだと、このようなことが起きないので、
 プログラムした通りの一定の速度が維持できる。
・Java は、逆コンパイルするとほぼ元ソースに戻せてしまう性質があった。
 それを防ぐには曖昧化などが必要であり、手間や(ツール購入の)コスト
 が掛かった。曖昧化するためにコンパイル時間が増大した。
・Javaが有料化したという話がある。これについては諸説あるのでよく分からない。

110 :デフォルトの名無しさん:2019/11/20(水) 15:14:47.33 ID:vKT/00gf.net
>>109
・Java Applet より起動が速い。

111 :デフォルトの名無しさん:2019/11/20(水) 15:18:23.10 ID:vKT/00gf.net
>>110
・wasm内部からは、EM_ASM()構文などで自由にJavaScriptが使えるので、
 XHRやfetch()などを自由に使ったAjax流儀のプログラムが行える。
・簡単に HTML 要素と共存できる。
・ブラウザの画面を拡大したような場合に、JavaAppletだと追従するのが
 難しく、できないことはないがタイムラグが生じ易かった。
 Ctrl+ + での拡大も、JavaApplet 部分だけは置いていかれるようなことに
 なったので、対応したければ独自に工夫する必要があった。

112 :デフォルトの名無しさん:2019/11/20(水) 15:54:16.93 ID:vKT/00gf.net
>>111
・iOSでは、もともとJavaが使えないと聞いている。
・Androidは、基本がJavaではあるが、実際には、Google独自実装となってしまって
 おり、 Sun/OracleのJavaで昔からの標準の Swingなどを使ったものは動か
 せない。これが訴訟問題になった最も大きな原因の一つらしい。

113 :デフォルトの名無しさん:2019/11/20(水) 19:15:30.47 ID:vKT/00gf.net
>>108
ツールキットに用意されて無い機能を追加したい場合、JavaScript として書けば
よいのであらゆるプラットフォームへ迅速に対応できる。
他のツールキットの場合は、iOS/Andorid/Win/Mac/Linux など用にそれぞれ
書く必要がある。

114 :デフォルトの名無しさん:2019/11/21(木) 15:21:55.41 ID:0fDEV4Sz.net
PWAは、頻繁にアップデートしたいアプリに向いている。

115 :デフォルトの名無しさん:2019/11/21(木) 16:02:31.75 ID:0fDEV4Sz.net
PWA化後のデスクトップのアイコンが、物凄くいろいろなことをやっても古いまま
全く更新できなく立った。
どうしよう。

116 :デフォルトの名無しさん:2019/11/24(日) 12:10:37.33 ID:Tuk9Q29U.net
Safariで動いていたよ。
ホーム画面への追加のボタンも出ていた。

117 :デフォルトの名無しさん:2019/11/26(火) 01:08:23 ID:t9NWfcZD.net
PWAだとストアの審査が要らない。通常、iPhoneのアプリは、iPhone流の
インターフェースを持って無いと審査に通らない(Appleに脅威をもたらすと
考えられるだけで審査に通らない可能性もある。YahooゲームやLINEゲームが
AppleにBANGされた歴史もある。)。PWAの場合はそんなことはなく自由
なので、PCやAndroid、iPhoneで完全に同じインターフェースにすることもできる。
そうすれば、開発も楽になる。

118 :デフォルトの名無しさん:2019/11/26(火) 01:16:04 ID:t9NWfcZD.net
PWAの場合、ブラウザとnative風アプリの操作感が統一できるのでユーザーは
安心して使える。WindowsとiPhoneで同じインターフェースのアプリになる。
今まではAppleの審査のためにそのようなことは出来なかった。Windowsに慣れて
いるが、iPhoneを使っている人にはWindows流インターフェースの方が好まれる
可能性があるにも関わらず。

AppleはiPhoneらしさを強要するが、逆にどのプラットフォームでも同じ操作感
であることには、開発者のみならずユーザーにもメリットがある。

119 :デフォルトの名無しさん:2019/11/26(火) 01:22:29 ID:t9NWfcZD.net
Appleは審査が厳しいが、自社がそのアプリが出てくると(競争に負けて)業績が
落ちそうだと判断するともっともらしい理由を付けて審査を通さなかったり、
長く時間をかけて手間をかけさせたりする可能性がある。PWAだとその心配が無い。
ただし、PWA専用のダウンロードサイトを作ろうとすると、そのサイト自体に
規制がかかったことがあるそうだ。Appleはまるで中国や北朝鮮のようだ。

120 :デフォルトの名無しさん:2019/11/26(火) 01:24:58 ID:t9NWfcZD.net
>>118
https://blogs.adobe.com/japan/web-the-death-of-the-standalone-app-and-what-comes-next/
1. より一貫したデザインを提供できます。3つの異なるデザインをiOS、Android、
 レスポンシブサイトとそれぞれ用意する代わりに、PWAの場合はすべての環境に
 対応する1つのアプリをデザインします。これはアプリ開発にかかる時間を短縮
 するだけでなく、デザインの一貫性にも繋がります。デザイナーは、1つのガイド
 ライン作成に集中でき、より有意義に時間を使うことができます。

2. 複数チャネルの組み合わせが容易です。ユーザーは、どんなデバイスから
 アクセスしても一貫性のある体験を求めています。あるデバイスで使い始め、
 他のデバイスに切り替えて再開することは自然な動作です。帰宅途中の通勤電車で
 ショッピングカートに目に付いた商品を入れたあと、自宅のPCからきちんと商品を
 確認して購入手続きを完了できるような機能はどうでしょうか?PWAであれば
 最小限の投資で実現できるでしょう。

121 :デフォルトの名無しさん:2019/11/27(水) 01:56:02.82 ID:T7KqQ5kC.net
独自GUIを乗せることで使い勝手で他のアプリと差別化できるかも。

122 :デフォルトの名無しさん:2019/11/27(水) 01:59:18 ID:T7KqQ5kC.net
>>121
今までなら独自GUIはAppleの審査に落ちる可能性があったが、PWAなら
自由になる。それでAppleの伝統を超えた使い勝手のGUIシステムを備えた
アプリを提供できれば他のアプリと差別化できる可能性が出てくる。

123 :デフォルトの名無しさん:2019/12/06(金) 02:20:17 ID:ZSKvcFXv.net
Webアプリの場合、URLのパラメータによって、プレイ中のゲーム画面
にいきなりリンクすることが出来るようになる。これで、ゲーム画面の「シェア」
が出来る。例えば、RPGで経験値、体力、魔力、所持アイテム、地図上の座標、
タワーの階層、的の位置などを全部URLのパラメータに直してしまえば、
そのシーンを他の人にシェアして、そこからプレイし始めてもらえる。これは、
native ゲームにはなかった特徴。blob や base64 による URL 化などを使えば
データをURL化することは難しくはない。URLが長くなりすぎる問題はある
かも知れないが。

124 :デフォルトの名無しさん:2019/12/06(金) 02:24:38 ID:ZSKvcFXv.net
>>123
RPGなどでセーブデータが大きすぎてURL化に適さない場合は、
サーバー上にシーンを圧縮セーブしておいて、その識別番号をシェアする手もある。
ユーザーが各自で無料ストレージサービスを借りて、そこにセーブしておいて、
それをシェアする手もある。

125 :デフォルトの名無しさん:2019/12/06(金) 02:45:16 ID:ZSKvcFXv.net
インストール型のゲームだと、URLを書くだけで一瞬で動いている場面を他人が
見ることはできない。しかし、ウェブゲームだとそれが出来る。ただし、
この場合、ゲームサイズを小さく作ることが重要になる。その意味で、
サイズがコンパクトになるwasmと、コンパクトなサイズのゲームライブラリが
重要となる。

126 :デフォルトの名無しさん:2019/12/06(金) 02:50:45 ID:ZSKvcFXv.net
ゲーム全体のデータが巨大だとしても、1つのシーンを見るために必要なデータは
ごく少ない。その意味で、プログラム部分(コード)部分のサイズさえ小さければ、
ポリゴンやテクスチャやマップのデータは巨大でも良い。大部分のデータは
サーバー上に置いて置けばいいのだから。これで、ゲームシーンを快適に
シェアできるようになる。これが、ブラウザゲームならではの新しい価値。

127 :デフォルトの名無しさん:2019/12/06(金) 02:56:52 ID:ZSKvcFXv.net
インストール型ゲームでも動いているゲーム画面をシェアすることも不可能ではないが、
それには、同じゲームをインストールすることが前提となる。
一方、ブラウザゲームでは、例えば、2ch/5ch にリンクアドレスのURLを
入れるだけで、一秒後には、そのシーンを見られて、プレイも出来る。

128 :デフォルトの名無しさん:2019/12/08(日) 12:57:08.43 ID:hM3Qn2JU.net
テニスゲーム:
https://yutakaaoki.github.io/demo_tennis/

129 :デフォルトの名無しさん:2019/12/10(火) 08:37:25 ID:jvY2kg1T.net
WebAssemblyがW3Cの勧告に到達。「WebAssembly Core Specification 」「WebAssembly Web API」「WebAssembly JavaScript Interface 」の3つ
https://www.publickey1.jp/blog/19/webassemblyw3cwebassembly_core_specification_webassembly_web_apiwebassembly_javascript_interface_3.html

130 :デフォルトの名無しさん:2019/12/10(火) 14:13:47.04 ID:uv70k2ai.net
ブラウザの中でのwasmは、現状、ローカルファイルシステムには自由にはアクセス
できないが、その場合、mongoose.exe, Ruby, Python などでローカルサーバー
を起動すれば、ブラウザ内のwasmプログラムから cgi プログラムを起動できるので
ローカルOSのAPIは何でも利用できるようになるので、ローカルファイルシステムにも
自由に読み書きできるようになる。もし、このサーバープログラムが十分に高速なら、
DirectInput などを利用してフォースフィードバック付きのジョイスティックも
wasmゲームから使えるようになる。

131 :デフォルトの名無しさん:2019/12/10(火) 14:26:39.38 ID:48kVELqA.net
ローカルサーバーをnode.jsで書くの流行ったな

132 :デフォルトの名無しさん:2019/12/10(火) 14:28:32.93 ID:uv70k2ai.net
>>130
ちなみに、mongoose.exe は、BSD/MIT 系ライセンス。
サイズは100MBを超えてしまっているが、Luaを無効にしてソースから
ビルドし直すと、すると、サイズが1MBくらいになる。

133 :デフォルトの名無しさん:2019/12/10(火) 14:36:55.20 ID:uv70k2ai.net
mongoose.exe + CGIプログラム を配布すれば、ある種の Java仮想マシンJVMの
代替になる。JavaのSwingでGUIアプリを作る場合も JVM のインストールが必要に
なるが、それが、mongoose.exe + CGI プログラム。しかし、JVMよりサイズが
小さいのでインストールが容易。

134 :デフォルトの名無しさん:2019/12/10(火) 16:23:17 ID:uv70k2ai.net
>>129
それとは直接関係ないけど、海外のサイトで昨日、目にしたのは、Googleは、
MicrosoftからOSの制御力を奪おう(無くそう)としているという見方。
PWAを発案したのもGoogle。
IntelやMozilla、RedHat、Fastlyも、別方向でwasmを拡大しようとしているので、
恐らく一社がコントロールしようとしてもwasmの勢力拡大は止められない
思われる。PWAに関しては微妙で Appleは渋々対応している感じでは有るが、
対応しないとむしろ不利になると経営判断している可能性もある。
分からないが。

135 :デフォルトの名無しさん:2019/12/12(木) 19:22:14.47 ID:Z8SHCwDj.net
5chの広告に表示されている「ビビッドアーミー」などのG123なるものを
やってみたら、少なくともWebGLが、昔のPC-9801の最後期レベルよりも高速な
グラフィックをかけることがはっきり分かった。と言うか恐らく、初期のPlayStation
よりは緻密で速いと思う。

また、Fragment Shader は再帰的関数呼び出しでも何でも書けるようで、
レイトレーシングでも何でも出来ることがわかった。つまり、WebGLを
使ったブラウザゲームは、レイトレーシングやパストレーシングレベルの
3Dグラフィックを使ったものでも何でもできるようだ。

また、Chrome には、FileSystem API だけではなく、native file systema API なる
実験的拡張がある。これはデフォルトでは disable だが、enable にすれば、
本当に native のファイルシステムのディレクトリ内のファイル一覧を取得したり
自由に読み書きできるようになるらしい。

Wasmもある程度速いし、もはや、nativeアプリは要らないかも。
Webアプリは、Win/Mac/Linux/iOS/Android 全てに共通で、
「1バイナリ」で Write Once, Run Anywhere がほぼ実現しているので
ブラウザをOSとみなした場合、WindowsやiOS, Android のどれよりも
シェアが大きい。これは native アプリの時代が終焉するかもしれない。

136 :デフォルトの名無しさん:2019/12/12(木) 19:26:35.52 ID:Z8SHCwDj.net
>>135
訂正。
使ったGPUは、エントリーモデルの(ビジネス用の)劇安 Intel CPU に内臓の
Intel HD グラフィックのもの。それでさえ、初期 PlayStation レベルを
超えたグラフィックが描けているようだった。

137 :デフォルトの名無しさん:2019/12/13(金) 00:07:05.15 ID:wVkcEFxk.net
PWAは自社に不利になるはずなのに何故、Appleも採用したかについて。
PWAはGoogleが推進しているものだが、Googleは、検索エンジンを
iOSのデフォルト検索エンジンにしてもらうために、毎年Appleに
一兆円を払っている。ところが、このカネの流れのために、
AppleもGoogleの意向を無視できない状況になっているのではないか
と考えられる。

138 :デフォルトの名無しさん:2019/12/13(金) 10:10:45.11 ID:V90d9jYd.net
板違い
マ板池

139 :デフォルトの名無しさん:2019/12/30(月) 11:57:40.01 ID:WPyQm6xM.net
アップル、Mac App Store外アプリの「公証」要件を厳格化。2020年2月3日から
https://japanese.engadget.com/jp-2019-12-25-mac-app-store-2020-2-3.html

140 :デフォルトの名無しさん:2019/12/30(月) 12:16:48.85 ID:WAqdspci.net
登録済でも放置されてるものは消えるのか
胸熱

141 :デフォルトの名無しさん:2020/01/05(日) 08:50:18.44 ID:FwkgyDD/.net
ブラウザでゲームのマップ作れて操作するのは見たことあるよ。
もう今ブラウザ主流?
ただいちいちサイトに繋いだりサーバーにアクセスするから普通のアプリよりは不安要素あるけど。セーブもしたりできるしな。
何でブラウザでやるのかがわからない。

142 :デフォルトの名無しさん:2020/01/05(日) 16:24:57.29 ID:UrHjpLCo.net
>>141
ある外国の学者が言ったそうだ。
「存在する技術はぎりぎりまで使われる」
と。

典型的な例は、HDDの容量が以前では考えられないほど増大しているのに、テレビ録画など新しい使い方が見出されていつまでたっても不足していること。

ユーザー目線で考えたときのブラウザでやるメリットは、
・インストール作業が要らないこと。もし起動が十分速ければ、次々とゲームを試すことも出来る。
・理論上は、URLに状態やセーブ番号などを含ませておけば、そのURLを掲示板などに張っておくだけでプレイ場面を世界中の人に見て貰えること。
・プログラムがブラウザのサンドボックス内から外に悪さが出来ないので、たとえ野良アプリであってもマシンにあく栄起用を与える可能性が低いこと。
・iOS/Android/Windows/Mac/Linux など全く違うOSでも全く同じ使用感でゲームが出来ること。
・Appleの独自規制に引っかかることもないので開発者の自由な発想のゲームで遊ぶことが出来る。

143 :デフォルトの名無しさん:2020/01/05(日) 18:19:27.95 ID:UrHjpLCo.net
https://www.businessinsider.jp/post-187542

*アップルは、国境を超えて表現を規制する力を持っている。

アップルのガイドラインでは、性的な表現について、次のような記載がある。

「Webster辞書で『美的または情緒的な感覚ではなく、性的興奮を引き起こすような、性器または性行為の明確な記述または表示』と定義される、あからさまに性的またはわいせつなコンテンツ」

欧米や日本、イスラム教徒の多い中東など、国、地域ごとに「わいせつ」の考え方には違いがある。

しかし、デベロッパーに対しては、アメリカのアップルが決めたガイドラインが一律に適用されるため、「ローカルルールは存在しない」と言われる。

6〜7年ほど前、ゲームの世界でも、ガラケーからスマホに一気に移行する波が訪れた。そのころには、アップルの基準に合わせるため、露出度の高い女性キャラクターの服装を描き直す作業に追われたという。

ゲーム会社の幹部のひとりは「アップルは、国境を超えて表現を規制する力まで持った。しかし本来は、国や企業がそれぞれの文化や戦略に合わせて考えるべきことなのでは。現状では、毒っけのあるコンテンツはつくれない」と話す。

144 :デフォルトの名無しさん:2020/01/07(火) 18:36:15.80 ID:f028J8AQ.net
昔の chip8 という CPU エミュレータが一瞬で起動しちゃう:

https://blog.scottlogic.com/2017/12/13/chip8-emulator-webassembly-rust.html
https://colineberhardt.github.io/wasm-rust-chip8/web/

二番目のリンク先で、start というボタンをマウスでクリック後、wキーを押すとブロック崩しの様なゲームが動き出す。
キーボードのqで左、eで右にラケットが動く。

145 :デフォルトの名無しさん:2020/03/11(水) 16:21:40.05 ID:QRZvOF73.net
https://yutakaaoki.github.io/demo1/index.html
MessageBox が出せるようになった。
C++のプログラム中で
nexMessageBox("タイトル文字列","メッセージ文字列", MB_OKCANCEL);
などとすると、ボタンが押されるまでその場で停止する。
JSやブラウザ、Wasmでは、本来、「その場で待機」することは出来ないので、
nwsc の bsync, bwait, bresume 機構を用いている。

146 :デフォルトの名無しさん:2020/03/11(水) 16:24:14.20 ID:QRZvOF73.net
>>145
なお、JSとC++の組み合わせる際に、ちょっとした問題があって、今のところ、トータル200個以上のWindowを生成すると異常を来たすので、決して、ダイアログを何度も生成しないでね・・・。
理論上は直せるけれど、まだ直せてない。

147 :デフォルトの名無しさん:2020/03/11(水) 19:28:39.62 ID:SBKaA+2H.net
STLが使いたい。

148 :デフォルトの名無しさん:2020/03/11(水) 20:30:36.35 ID:QRZvOF73.net
>>147
以下は他のコンパイラを使う場合は関係ない話だけど。
コンテナ類は、C++ nexでも本家C++以上に便利になるように独断と偏見で独自サポートしている。
STLは、templateをかなり深く使用していると思われるので、C++ nex側のそれに追いつけなければ、そのままではSTLのコンパイルは難しい。
なお、今のところtemplateを簡単に使えるようにしたtemplなるものを C++ nexでもサポートしているが、本家C++のtemplateも徐々にサポートしていく予定。

149 :デフォルトの名無しさん:2020/03/27(金) 04:03:07.14 ID:VaiYZBCN.net
Wasmアプリは次のようなことで需要がありそうだ:
・nativeアプリの場合、ストレージの容量制限でインストールできない事があるが、
 Wasmならブラウザ内で動くのでその心配は少ない。
・nativeアプリの場合、インストールするのに新しいVersionのOSを要求されること
 があるが、Wasmなら、余り関係ない。

150 :デフォルトの名無しさん:2020/03/27(金) 04:06:39.29 ID:VaiYZBCN.net
>>149
nativeアプリの場合、Win7で動いていたものがWin10で動かなかったり、逆に、Win10を要求されたり
する。
Androidアプリの場合も、バージョン○○以上が必要条件などとあったりする。

ところが、Wasmアプリの場合、余りそういうことは無い。
ブラウザのバージョンが有る一定以上のものでありさえすれば、OSの種類やバージョンに関係なく動く可能性が高い。

151 :デフォルトの名無しさん:2020/03/27(金) 04:51:51 ID:VaiYZBCN.net
アプリストアにはアプリが多すぎて、まみれてしまう。
ウェブアプリなら、検索エンジンからダイレクトに探せるのでアプリストアよりは、まみれる度合いがましになる。

152 :デフォルトの名無しさん:2020/03/27(金) 05:08:06.41 ID:VaiYZBCN.net
・WasmやPWAが、TwitterやLineなどでshareし易いことは、
 企業にとってはのどから手が出るくらい価値がある。
 nativeアプリだと気に入ったアプリを友達にシェアしにくいが、
 WasmアプリだとURLだけですぐにシェアできる。これはアプリの普及や
 宣伝にとって意義は大きい。
・PC/Mac/iPhone/Androidで見た目や使い勝手が同じであることは、
 アプリのブランド価値を高める。
 これは、コンビニが全国で同じレイアウトと品揃えであることで
 安心感と利便性を高めることで勝ち残ってきたことと通じるものがある。

153 :デフォルトの名無しさん:2020/03/27(金) 05:14:54 ID:VaiYZBCN.net
企業にとっては、プラットフォームごとにビルドし直さないでよいことだけでも
価値は大きい。
マルチプラットフォーム対応なのに最終プログラムが1種類だけで済むことは
メンテナンス性は劇的に向上する。
nativeアプリをマルチプラットフォームに対応させる場合、OSごとにビルドされた
最終プログラムのバックアップだけでも慎重を要し、生産性が下がる。
開発時にはいちいち、各プラットフォームごとにビルドする時間と手間、
テストが必要で、その時にトラブルも出易かった。例えば、
新しいバージョンのAndroidが出てきたら、新しいAndroidSDKをインストール
しなくてはならないが、それでツールキット側のバージョンが合わなくてトラブル
が発生し、その解決のために一週間以上も無駄になることもあっただろう。
Wasmなら、最終プログラムは一度ビルドするだけで済むのでそのようなトラブルが
生じないし、テスト工数も激減する。

154 :デフォルトの名無しさん:2020/04/13(月) 18:12:02 ID:iwZw4XGM.net
MDI Child Window に対応 :
https://yutakaaoki.github.io/demo1/index.html

155 :◆QZaw55cn4c :2020/04/13(月) 21:47:32 ID:fZC6wvDm.net
>>153
で、ブラウザごとにデバッグするわけですか…

156 :デフォルトの名無しさん:2020/04/13(月) 23:46:07 ID:iwZw4XGM.net
>>155
HTML5は他企業も含めた共通規格なので、一度決まった仕様は比較的安定して動作するため、ツールキット側が一度デバッグしてあれば、そので動くアプリは1つのブラウザで動作チェックしさえすれば、ツールキットがサポートしているどのブラウザでも動作し易い。

157 :デフォルトの名無しさん:2020/04/14(火) 00:37:46 ID:ESEtnroG.net
HTML5はGoogleの規格なので、Googleの都合でいかようにも変わると思います。

158 :デフォルトの名無しさん:2020/04/14(火) 01:07:56.72 ID:tGjJf6XN.net
>>157
確かにFireFoxのMozillaもGoogle傘下にあるようなものだし。
でも、SafariやEdgeもあるので、今まで動いていた古い仕様が動かなくなる可能性は割と低そうという希望的観測がある。

159 :デフォルトの名無しさん:2020/04/14(火) 01:12:20.23 ID:tGjJf6XN.net
でも、実行プログラムがindex.htmlとmain.wasmなどの1種類で、
プラットフォームごとにビルドし直さなくて良いというのは安心感はある。

160 ::2020/04/14(火) 19:22:31.95 ID:42R+WK0w.net
>>156
write once, run anywhere といわれていた Java JVM も、蓋を開けてみれば write once, debug anywhere となってしまった現実をご存知ですか?

161 ::2020/04/14(火) 19:23:13.73 ID:42R+WK0w.net
>>159
でもデバッグは各ブラウザ毎にしないといけませんね…

162 :デフォルトの名無しさん:2020/04/15(水) 14:42:27 ID:mfdeAm0A.net
>>161
やはり、「XX OS対応」と書くためには、XX OSでテストする必要はあるでしょう。
ただ、ビルド回数が少なくて済むことは時間の節約になりますし、
他の事で手一杯の忙しいときに、あるプラットフォーム向けのビルドだけ
(起きるはずも無い)エラーが起きてその対応に追われる心配も無いです。

163 :デフォルトの名無しさん:2020/04/15(水) 14:46:20 ID:mfdeAm0A.net
>>162
1. Win/Android/iOS/Mac/Linuxで最終テストは必要。
2. しかし、ソース修正後、ビルドは一度だけでよい。
3. 2.により、仕上げの段階で1箇所修正するだけで5つのプラットフォームごとに
 5回ビルドして5回テストする、という効率の悪い事態は起きない。

164 :デフォルトの名無しさん:2020/05/25(月) 03:25:23.82 ID:Q3BVyDlx.net
あがれ

165 :デフォルトの名無しさん:2020/05/28(木) 17:15:51 ID:1yt8qEqJ.net
懸念事項だったローカルファイルシステムへのファイル保存について、
今後の Edge Browser では何か進展が有るらしい。

Native file system access
Up until now websites were not allowed to save files in a specific location on the user device.
This meant that online photo editors required users to upload the photo they wanted to edit and then download it to their device, while a native one would have just given the option to replace the existing one.
Starting from Edge 86 (version 83 is the latest one at the time of writing) developers will be able to replace all files the user selects in a session, thus enabling productivity apps on the web to even more useful.

166 :デフォルトの名無しさん:2020/05/28(木) 17:47:36.62 ID:1yt8qEqJ.net
>>165
どうやら、PWAアプリを起動時に指定したファイル群に、ユーザーにファイルダイアログで毎回選択させること無くいつでもアプリがプログラム的に書きこめるようになるらしい。

167 :デフォルトの名無しさん:2020/07/14(火) 00:20:51.75 ID:cduOb3hQ.net
age

168 :デフォルトの名無しさん:2021/03/11(木) 04:16:55.67 ID:+SL5WZRG.net
wasmからGPU使うにはWebGL呼び出しになりますか?

169 :デフォルトの名無しさん:2021/03/20(土) 23:25:10.94 ID:j+8OkN/E.net
>>168
WebGPU は使ったことは無いが、WebGL 以外に WebGPU もある。
Wasmはそれ自体では副作用や入出力は行えないので、やりたいときはJSを
使うことになるので、GPUを使いたい場合は、JSでGPUを使う方法を調べる
ことになる。Wasmは、EM_ASM 文などの中に書いた JS コードを呼び出す
ことで副作用や入出力を行う。

170 :デフォルトの名無しさん:2021/07/10(土) 01:15:43.14 ID:dgZojN/o.net
Wasm ならどんな言語でも同じだろ

171 :デフォルトの名無しさん:2021/09/14(火) 18:18:01.42 ID:Wng5bteL.net
age

172 :デフォルトの名無しさん:2022/02/04(金) 02:46:38.22 ID:tMDf8XuC.net
age

173 :デフォルトの名無しさん:2022/06/21(火) 12:20:06.79 ID:TERGIQkG.net
WebAssemblyを普及させたい

☆WebAssembly総合
・Wasmer - The Universal WebAssembly Runtime
https://wasmer.io/
-> WASI(WebAssembly System Interface)とEmscriptenに準拠したWASMを実行できるランタイム

・WAPM - WebAssembly Package Manager
https://wapm.io/
-> WebAssembly製ツール/ライブラリのパッケージマネージャー


☆C/C++
・wasi-sdk - WASI-enabled WebAssembly C/C++ toolchain
https://github.com/WebAssembly/wasi-sdk
-> WebAssemblyのLLVM、clangコンパイルサポート
Emscriptenとは異なりWASMバイナリのみ生成する


☆Rust
・wasm-pack - your favorite rust -> wasm workflow tool!
https://github.com/rustwasm/wasm-pack
-> WebAssemblyのrustcコンパイルサポート

Yew - Rust / Wasm framework for building client web apps
https://yew.rs/ja/
-> WebAssembly によってマルチスレッドな Web アプリのフロントエンドを作ることができる、モダンな Rust のフレームワーク

174 :デフォルトの名無しさん:2022/06/21(火) 12:28:27.45 ID:TERGIQkG.net
最近のWebAssemblyのニュース

Publickey - Enterprise IT × Cloud Computing × Web Technology / Blog より
https://www.publickey1.jp/programming-lang/webassembly/

175 :デフォルトの名無しさん:2022/06/23(木) 17:39:28.38 ID:fwy13iz2.net
WebAssemblyが気になるので調べてみた - Qiita
https://qiita.com/t_katsumura/items/ff379aaaba6931aad1c4

176 :デフォルトの名無しさん:2022/06/23(木) 18:38:00.25 ID:fwy13iz2.net
WebAssembly活用プロジェクト
https://madewithwebassembly.com/

177 :デフォルトの名無しさん:2022/06/23(木) 21:37:11.74 ID:fwy13iz2.net
WebAssembly Powered Augmented Reality Sudoku

This project makes use of the WebAssembly build of OpenCV (a C++ computer vision library), Tensorflow (a machine learning library) and a solver written in Rust. It neatly demonstrates how WebAssembly allows you to write performance-critical web-based applications in a wide range of languages.

https://github.com/ColinEberhardt/wasm-sudoku-solver
Solverhttps://raw.githubusercontent.com/ColinEberhardt/wasm-sudoku-solver/master/sudoku-solver.gif

178 :デフォルトの名無しさん:2022/06/24(金) 00:36:37.46 ID:LDIZz9eS.net
WASMとRustはVue.js/React.jsを打倒するのか? - JSへの侵略の歴史
https://zenn.dev/koduki/articles/c07db4179bb7b86086a1

179 :デフォルトの名無しさん:2022/06/24(金) 00:38:27.46 ID:LDIZz9eS.net
Typescriptの次はRustかもしれない
https://zenn.dev/akfm/articles/81713d4c1275ac64a75c

180 :デフォルトの名無しさん:2022/07/03(日) 14:38:54.59 ID:y5Z2gZOd.net
WASMのビルド作業はやたら面倒臭いが、何かビルド用ツールが出てるのかな
Linux環境じゃないとconfigureが生成できないから、プロジェクトのビルドなんてやってられないだろ
ところでWASMに64bitメモリが実装されれば可能性が大きく広がる予感

181 :デフォルトの名無しさん:2022/07/03(日) 15:41:32 ID:2unnqsUi.net
>>180
Linuxの話題は、あわしろを召喚しちまうから、やめとけ。

182 :デフォルトの名無しさん:2022/07/03(日) 16:58:00.23 ID:y5Z2gZOd.net
あわしろって誰?w
WASMのroadmapを見ると、Firefoxが一番進んでるみたいだ
何だかんだFirefoxは開発者向けとしては最先端を走り続けているんだな

183 :デフォルトの名無しさん:2022/07/03(日) 17:11:46.18 ID:6NN4RBvO.net
Linuxの掟とか唱えてる人じゃなかったっけ?

184 :デフォルトの名無しさん:2022/07/03(日) 20:06:52.80 ID:SwvkPEGK.net
age

185 :デフォルトの名無しさん:2022/07/03(日) 20:29:55.44 ID:o4Z3tiIf.net
>>182
あわしろ氏って誰?QZ より頭いいの?

186 :デフォルトの名無しさん:2022/07/03(日) 23:33:33.23 ID:C1pvOjRy.net
あわしろは、Linux 総帥

よく雑誌に記事を書いている

187 :デフォルトの名無しさん:2022/07/04(月) 01:35:21.33 ID:nNTJcKgT.net
マナーにうるさい
おまえはLinuxを使う資格がないが口癖

188 :デフォルトの名無しさん:2022/07/04(月) 02:35:19.54 ID:hEC4WOUu.net
>>177
えぐ

189 :デフォルトの名無しさん:2022/07/04(月) 07:02:36.02 ID:E8MuawGm.net
>>173
>wasi-sdk
GLESやSDL2の対応はどうなんだろ
誰かちゃちゃっと準公式サイトを作ってくれないかなw

190 :デフォルトの名無しさん:2022/07/05(火) 08:37:06.79 ID:HXH2KDmV.net
WASMではまだ並列処理が弱いのが悲しい所だな
Web Worker使えるけど、window配下オブジェクトが共有できないからな

191 :デフォルトの名無しさん:2022/08/05(金) 10:52:36 ID:WoKhwB7u.net
>>189
対応してないはず。

192 :デフォルトの名無しさん:[ここ壊れてます] .net
wasm

193 :デフォルトの名無しさん:[ここ壊れてます] .net
現在、Rubykaigi で、Ruby の Wasm 対応についての話しになっているらしい。
Ruby3.2から正式にブラウザでRubyが使えるようになる予定なので、
Rubyのインストールが難しい初心者にとっても楽になるとの事。
また、irb(インタラクティブRuby?)がブラウザでも動いて、対話的に計算
できるらしい。
Rubykaigiは、9/8から9/10の三日間の予定らしい。

194 :デフォルトの名無しさん:2022/09/08(木) 14:13:55.50 ID:2tFquaAS.net
Rubyは、おわこん
とKENYAも言っている

195 :デフォルトの名無しさん:2022/09/08(木) 21:16:10.23 ID:EF/qt7ve.net
Ruby on Rails 7 で、Rubyの検索数が増えているらしい。
新しい変更があると、検索数が増えるみたい

JavaScript(JS), Python の検索数が多いのは、素人が多く、難しいからかも。
逆に、Rubyの検索数が増えないのは、プロが多く、簡単だからかも

Rails 7では、Hotwire などの新機能が出たので、プロも検索したのかも

米国年収では、JSが6万ドル、Railsが9万ドルと、かなりの差がある。
素人とプロの開発者の違いかも

JSは素人や個人開発が多く、
Railsは小企業から大企業まで、プロが多いのかも

196 :デフォルトの名無しさん:2022/09/09(金) 01:00:16.49 ID:NUzzWOKg.net
rubyのwasmに需要があるかどうかは置いといて、新技術を積極的に取り入れる姿勢は評価できる
これでもっとwasmが普及するといいな

197 :デフォルトの名無しさん:2022/09/09(金) 01:26:40.60 ID:OjVwznsu.net
ブラウザ上でWasmを使うサービスやアプリならばRuby利用は遅くて重くて大きくて不利だね
だからどうしてもRubyをブラウザ上で動かしたい遊び目的だけかな
Wasm使ってプログラミングしたいならC++かRustのどちらか

198 :デフォルトの名無しさん:2022/09/09(金) 02:28:27.53 ID:n8dQNxep.net
Ruby は遅くても、可読性が高くバグらないから、高品質でプログラミングしやすい。
C++, Rust などは難しさが桁違い

ビジネスでは、Rubyよりもかなり遅れる。
他社に市場シェアを取られてしまう

例えば、SASS がそう。
Rubyで作られて、C++ で作られるまで数年以上遅れた。
次に、C++で保守出来なくなって、Dart へ移った

Rubyは可読性が高いから保守できるが、
他の言語は無理で、最終的に放置されるだけ

199 :デフォルトの名無しさん:2022/09/14(水) 08:03:14.57 ID:ZrnGb3cN.net
>>198
ところがRustはRubyに似ていて可読性が高いよ
RustはRubyとクロージャ引数の記述方法も |x| で同じだし
RustはRubyと同じようにイテレーターのメソッドチェーンを多用できるし
もちろん遅延評価されるし
Rubyよりも改善されてる点も多いからRustはRubyよりも可読性が高いよ

200 :デフォルトの名無しさん:2022/09/26(月) 11:00:46.19 ID:NmZ8KQlQ.net
>>199
Rustは俺が知ってる言語の中で、実用的な言語の中では最も可読性が低い
部類に入る。

201 :デフォルトの名無しさん:2022/09/26(月) 13:14:00.63 ID:fgpUNuss.net
>>200
Rustは可読性の高さで気に入っている
ほとんどの言語と比べてイーブンか上

Wasm記述で現実的な言語の中だと更に
可読性の低いC++は論外だから
調査研究でもRustが最も使われている

202 :デフォルトの名無しさん:2022/09/26(月) 14:28:49.61 ID:TCGzsvbI.net
可読性という人によって解釈が異なる単語じゃなくてどういう要素が可読性を高めている/低めているか説明して欲しいな

203 :デフォルトの名無しさん:2022/09/27(火) 16:07:51.55 ID:vP3LfdbR.net
この板のRustのアンチスレにも、Rustの分かりにくさについてのサンプルコード
があがってる。

204 :デフォルトの名無しさん:[ここ壊れてます] .net
下手くそに書かれたコードが読みづらいというのは言語の問題なのかね?

205 :デフォルトの名無しさん:2022/09/27(火) 20:29:03.01 ID:ltFhtHvy.net
>>204
それはウソで、Rustはどうせきれいに書けない。

206 :デフォルトの名無しさん:2022/09/28(水) 00:49:27.76 ID:JQpGo85s.net
>>205
あなたにとってはあらゆるRustコードは綺麗には見えないということですね
好みの問題では?

207 :デフォルトの名無しさん:2022/09/28(水) 01:04:38.83 ID:JQpGo85s.net
>>205
ここじゃ迷惑だから続きはアンチスレでよろしく

208 :デフォルトの名無しさん:2022/09/28(水) 15:21:20.76 ID:01v6ubok.net
>>206
長ったらしくて煩雑。

209 :デフォルトの名無しさん:2022/10/02(日) 18:22:14.52 ID:fl0K/H95.net
Rustは抽象化されたプログラミングによって分かりやすく短く書けるね
タイプ数を少なく短く書けるという意味ではなく

210 :デフォルトの名無しさん:[ここ壊れてます] .net
>>209
そうは思えないが。

211 :デフォルトの名無しさん:[ここ壊れてます] .net
>>209 散々C++で痛い目をみた人が作っているからね。現実的なモノでしょうね。

212 :デフォルトの名無しさん:[ここ壊れてます] .net
>>211
そうでもなかろう。

213 :デフォルトの名無しさん:2022/10/30(日) 00:34:23.75 ID:CRXE5x4x.net
オンライン FM シンセサイザ:
https://yutakaaoki.github.io/test_say/index.html

214 :デフォルトの名無しさん:2022/10/30(日) 16:23:33.75 ID:tfYpbifo.net
age

215 :デフォルトの名無しさん:2022/11/08(火) 18:21:56.35 ID:Rs+gm7Tf.net
age

216 :デフォルトの名無しさん:2023/01/06(金) 22:20:11.40 ID:+u5r9Ozg.net
Rubyにおけるwasmランタイム実装のCRuby、バイナリサイズはstdlib込みだと25MB、brotli圧縮かけて5.0MBだってさ
微妙だけどキャッシュ込みなら5.0MBはギリ許せるのか、、?
https://logmi.jp/tech/articles/327679

217 :デフォルトの名無しさん:2023/01/07(土) 16:27:35.31 ID:/1wD2KzB.net
>>216
まだ大き過ぎる。

218 :デフォルトの名無しさん:2023/01/07(土) 16:34:06.31 ID:St5PAkDm.net
>>217
だよねぇ、、うーん

219 :デフォルトの名無しさん:2023/02/10(金) 08:51:49.30 ID:wdaGPD+T.net
キタコレ
wasmにgc搭載
https://www.publickey1.jp/blog/23/webassemblychrome_111dartwebassembly.html

220 :デフォルトの名無しさん:2023/02/12(日) 13:09:16.81 ID:HnI2C6C6.net
>>219
これが標準化仕様になるんかね

221 :デフォルトの名無しさん:2023/04/20(木) 11:24:36.10 ID:rsMxrIXz.net
うおおおお

サーバサイドWebAssemblyに、かつてのCGIの仕組みを取り込んだ「WCGI」をWasmerが発表。すぐ起動し安全に分離されるWebAssemblyの特長が活きる
https://www.publickey1.jp/blog/23/webassemblycgiwcgiwasmerwebassembly.html

総レス数 221
97 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★