狠狠撸
Submit Search
Source Code of Dart
?
5 likes
?
12,281 views
N
nothingcosmos
Follow
Dart VM and dart2js and dartium
Read less
Read more
1 of 19
Download now
More Related Content
Source Code of Dart
1.
Source?Code?of?Dart Outline ソースコードの構成 Server
の構成 Client の構成 最新の状況 2013/08/03?Shinjuku.dart?2nd nothingcosmos?<nothingcosmos@gmail.com>
2.
関連 URL http://code.google.com/p/dart/ Dart
の google?project http://code.google.com/p/dart/wiki/GettingTheSource ソースコードの取得方法 http://api.dartlang.org/docs/releases/latest/index.html Dart?API?Reference http://www.dartlang.org/ Dart の公式ページ
3.
ソースコードのディレクトリ dart +?sdk/lib +?sdk/lib/_internal +?pkg +?tests +?samples +?compiler +?editor dart/runtime +?bin +?include +?lib +?platform +?vm +?tests/vm
4.
ソースコードの構成 dart +?sdk/lib +?pkg +?tests +?samples Dart は公式ページに情報が揃っている。 もしくはここのサンプルコードを見るのが良いかも 下手にぐぐると古い情報、動かないコードが多い TOP
のディレクトリ SDK のライブラリ各種 (dart:xxx) SDK の標準パッケージ SDK のテストコード SDK のサンプル集
5.
ソースコードの構成 ( 処理系
) dart +?compiler??@Java??dartanalyzer +?editor???????@Java??eclipse?plugin と indexer +?sdk/lib/_internal/compiler??@Dart??dart2js +?runtime????@C++??Dart?VM Client サイドは dart2js のコードを参照 Server サイドは Dart VM のコードを参照
6.
Server の構成 (Dart?VM)
dart/runtime +?bin +?include +?lib +?platform +?vm +?vm/*_ia32 patch/natives BUILTIN と IO を定義 Dart?VM の API を定義 sdk/lib と連携するレイヤ OS 抽象のレイヤ VM の本体 arch 依存の定義 dispatch 用のシンボル
7.
runtime/lib runtime/bin BOOTSTRAP_ NATIVES Server の構成 (Dart?VM) runtime/platform OS(Linux,
Windows, MacOS, Android) ISA(arch) ia32/x64/arm/mips runtime/vm runtime/ include sdk/lib IO_NATIVES runtime/vm/os patch_class runtime/lib/*.dart runtime/bin/*.dart sdk/lib/io Runtime
8.
runtime/lib runtime/bin BOOTSTRAP_ NATIVES Server の構成 (Dart?VM) runtime/platform OS(Linux,
Windows, MacOS, Android) ISA(arch) ia32/x64/arm/mips runtime/vm runtime/ include sdk/lib IO_NATIVES runtime/vm/os patch_class runtime/lib/*.dart runtime/bin/*.dart sdk/lib/io I/O や Network 並行処理 Dart の世界 Debugger で 追える境界 C++ の境界 Native Extensions シンボルを定義 VM が担当する 計算やリソース管理
9.
Client の構成 (dart2js/dartium)
Client 環境は sdk/lib/html を使用可能 chrome,??html,??indexed_db,??js,??svg,??typed_data web_audio,??web_gl,??web_sql ブラウザ非依存の API のサブディレクトリ sdk/lib/web_gl/dartium/web_gl_dartium.dart sdk/lib/web_gl/dart2js/web_gl_dart2js.dart なぜ分かれているのか
10.
dartium Client の構成 (dartium) dart
runtime sdk/libsdk/lib/html Auto-generated library Web IDL runtime/ include native symbol dartium で定義された シンボルを Native Extensions を使用して直接呼出て連携する。 dartium からの制御は include で定義された API 経由で dart runtime に指示 標準化された API を IDL から自動生成 dartium 連携用
11.
Client の構成 (dartium) Bindings
(Dart API) Dart VM dartium/src/third_party/WebKit/Source/bindings/dart dartium/src/third_party/WebKit/Source/bindings/v8
12.
file:sdk/lib/web_gl/dartium/web_gl_dartium.dart // DO NOT
EDIT // Auto-generated dart:web_gl library. //dart.dom.web_gl import 'dart:collection'; import 'dart:_collection-dev' hide deprecated; import 'dart:html'; import 'dart:html_common'; import 'dart:typed_data'; import 'dart:async'; import 'dart:nativewrappers'; @DocsEditable() @DomName('WebGLLoseContext') // http://www.khronos.org/registry/webgl/extensions/WEBGL_lose_context/ @Experimental() class LoseContext extends NativeFieldWrapperClass1 { @DomName('WebGLLoseContext.loseContext') @DocsEditable() void loseContext() native "WebGLLoseContext_loseContext_Callback"; @DomName('WebGLLoseContext.restoreContext') @DocsEditable() void restoreContext() native "WebGLLoseContext_restoreContext_Callback"; } file:sdk/lib/_internal/libraries.dart "nativewrappers": const LibraryInfo( "html/dartium/nativewrappers.dart", category: "Client", implementation: true, documented: false, platforms: VM_PLATFORM), //dartium WebIDL file:dart/third_party/WebCore/core/html/ canvas/WebGLLoseContext.idl
13.
Client の構成 (dart2js)
Dart?VM が入っていないブラウザにも対応 Dart から JavaScript?+?source?map を生成 dartium と dart2js の挙動の違いに注意 Dart の仕様→ dart2js の仕様→ JavaScript の仕様 int の仕様の違いが大きいかも Dart?VM???throw_on_javascript_int_overflow=true int が 53/54bit に収まらないときに例外を投げる dart2js では、 dart の int と javascript の int の違い
14.
いろんなブラウザ (Dart VM
はいってないよ ) Client の構成 (dart2js) dart2js sdk/libsdk/lib/html Auto-generated library Web IDL 標準化された API 群 JavaScript Engine out.js out.js.map out.js.deps Dart から JavaScript に変換 deps と source map 標準化された API を IDL から自動生成 標準のシンボル dartium と共通
15.
いろんなブラウザ (Dart VM
はいってないよ ) Client の構成 (dart2js) dart2js sdk/libsdk/lib/html Auto-generated library Web IDL 標準化された API 群 JavaScript Engine out.js out.js.map out.js.deps 標準化された API は IDL で定義 IDL → Dart → JavaScript → JavaScript Engine から叩く ブラウザが制御するのは JavaScript Engine ブラウザ共通の境界
16.
file:sdk/lib/web_gl/dart2js/web_gl_dart2js.dart // DO NOT
EDIT - unless you are editing documentation as per: // https://code.google.com/p/dart/wiki/ContributingHTMLDocumentation // Auto-generated dart:web_gl library. //dart.dom.web_gl import 'dart:collection'; ... 省略 import 'dart:_js_helper' show Creates, JSName, Null, Returns, convertDartClosureToJS; import 'dart:_foreign_helper' show JS; import 'dart:_interceptors' show Interceptor, JSExtendableArray; @DocsEditable() @DomName('WebGLLoseContext') // http://www.khronos.org/registry/webgl/extensions/WEBGL_lose_context/ @Experimental() class LoseContext extends Interceptor native "WebGLLoseContext" { @DomName('WebGLLoseContext.loseContext') @DocsEditable() void loseContext() native; @DomName('WebGLLoseContext.restoreContext') @DocsEditable() void restoreContext() native; }
17.
最新の状況 (Dart) 7
月に beta 版 (M5) をリリース。 Dart の言語仕様と Server?API は安定。 Breaking?changes は減ってきたよね? Dart 始めるなら今でしょ。 最近は Dromaeo や Dromaeo.dart でチューニング 性能出すための注意点も公開されている。 http://www.dartlang.org/articles/numeric?computation/ 機能追加の issue は今がチャンスだと思う。
18.
最新の状況 (Dart?VM) ARM
と MIPS 対応をがんばっている。 mirror 系の API を大幅修正。 Bugfix も多め。 UNIMPLEMENTED の個数を計算 (6/16??>?7/28) ia32???7????>??6 x64????18???>?17 arm????79???>?23?(8 月中に完了しそうな勢い ) mips???117??>?75
19.
最新の状況 (dart2js と
dartium) Dart の仕様→ dart2js の仕様→ JavaScript の仕様 正直ハマりどころだと思う dart2js の仕様、注意点、ガイドライン等一切不明。 今は plymer.dart と angler.dart をたべて 注意点の洗い出しや、仕様を調整中なのでは? http://build.chromium.org/p/client.dart/console dartium/firefox/chrome/safari/ie9/ie10 で確認
Download