現状targetがesnextじゃないならあまり使わないほうがよい Reason 以下のようなシンプルなケースを考える。 class A { #field = 1; something() {return this.field;} } targetがesnext以外だと var __classPrivateFieldGet = (this && this.__classPrivateF…
2019 Javascriptエンジン俯瞰 こんにちは 2019 Javascript Advent Calendarの11日目です 2019はJSエンジンが新たに2つもリリースされた まずFacebook産のhermes もう一つがFFMPEG作者のbellardが実装したquickjs この2つを見ていこうと思う ちなみにhermesは…
最近、JSエンジンが何故かいくつか出て来たのでいっちょ見て見ることに 最初はFacebookが実装したjavascriptエンジンHermes(エルメス)の実装を見てみた 面倒くさいのでコードとかは引用しない 概要 どうやらReactNativeの高速化のために実装したエンジンのよ…
V8のJSON.parseについて 最近(ちょっと前か)話題のオブジェクトリテラルよりもJSON.parseのほうが早い件について。 その理由を内部実装の観点から書く。 また注意点を最後に書いた。 話題のブログは以下から https://v8.dev/blog/cost-of-javascript-2019 パ…
久しぶりに時間が少しあったので、今更ながらReact hooksで遊んでみた。 Redux とりあえず、useReducerとか触ってみたけど、redux勢には物足りない感... reduxをReact hooksで使えるやつ探したらfacebookが出してるredux-react-hookを見つけた。 使ってるう…
久しぶりのブログはこちらのアドベントカレンダー adventar.org WeJSについて We are Javascritpers wajs.connpass.com 初心者登壇歓迎なJavascript勉強会 最近はJS初心者歓迎も兼ねていて、多方面で参加しやすい勉強会になってる 思い出 21Cafeでやってると…
タイトルの通りなんだけど、書くのが遅れてしまった。 V8 のmasterにマージされた。 機能 javascriptのプロポーザルで数値リテラルの間にアンダースコアを挿入できるやつ 現在stage3にあってまだ正式に採用されているわけではない。 github.com このスライド…
V8のObject.entries/valuesを高速化したよというお話 Object.entires/values そもそもObject.entries、Object.valuesとは何かというと、 GitHub - tc39/proposal-object-values-entries: ECMAScript Proposal, specs, and reference implementation for Obje…
Spectre and Meltdownについては前回書いたが、 各ブラウザベンダーがとっている対応について今回は書く。 といっても大したことではないのだが。 対応一覧 Google Chrome SharedArrayBufferのデフォルト無効化とPerformance.nowの解像度を下げる(どこまで…
今回CPUに依存する脆弱性が発見されて大きな問題となっている。 そこで正月休みを使ってこの問題の解説を試みる。 Disclaimer 私はセキュリティの専門家ではないので間違えた情報があるかもしれない。 一次情報を載せておくので怪しい場合にはそこにアクセス…
Node.js Advent Calendar 2017 25日目の記事です。トリとなります。 さて先日11/26・27日に行われたNode学園祭でv8について発表させて頂いたが、 30分という制約上色々カットせざるを得なかった。 またv8のコードを読む・コントリビュートする上で伝えられる…
C++ AdventCalendarの12日目 普段私はWEBのフロントエンドを仕事にしている。 つまり使う言語はjavascript/typescript等のScript言語だ。 ただ前職や趣味、OSS等でC++によく触っていたので昔実装したmallocの話をすることにした。 mallocとは mallocとはC言…
TypeScript2.6が出たので変更点を記載 RCからほぼ変更点がない。 Strict Function Typeフラグの導入 --strictFunctionTypesというフラグが導入される。 このフラグは--strictフラグに内包されており、--strictの場合は自動でONになるが、 --strictFunctionTy…
Ecmascriptにprotocolを実装するという提案がある。 proposal-first-class-protocol もともとGotanda.jsで発表した内容だけどいろいろ追記した。 資料はこれ speakerdeck.com 内容 元々はinterfaceの提案だった。 それが名前と形を変えてprotocolの提案にな…
ひょんなことから HTML5 Conference に登壇する機会をいただけることに。 タイトルはDeep dive into TypeScriptということで、TypeScriptの紹介や、RoadMap・Issuesの話とかをさせて頂くつもり 同じ時間帯に任天堂の方のセッションとかあってアレなんですが…
Typescript 2.5がでたので変更点をメモ Optional-catch-bindingの導入 catch節のエラーオブジェクトが省略可能になった。 現在Stage3のOptional catch bindingが導入された形に。 サンプル let input = "..."; try { JSON.parse(input); } catch { // ^ catc…
typescript2.4がでたので新機能を確認。 Dynamic Import Expressionsのサポート import('...')式がサポートされた。 import式を使うことで多くのバンドラーがコード分割をすることが可能になるので、 module: esnextで出力するのがおすすめだそう。 async fu…
問題 for-await-ofのボディで配列への分割代入を行うと、 Cannot read property 'file' of undefined というエラーを投げてトランスパイルに失敗する。 どうやらscopeの解析に失敗しているらしい。 サンプルコード async function g(t) { return new Promise…
面倒だったので備忘録 Polyfillの設定 とりあえずwebpackはrequireしないと駄目。 でも既存のコードを一切変えずにpolyfillをインストールしたい。 webpack.ProvidePluginを使う。 new webpack.ProvidePlugin({ 'Promise': 'es6-promise', 'Symbol': 'es6-sy…
とりあえず、Webpackを導入したがそのままだと色々問題が多かったので以下の事をやった。 まあ今更感あるが。 typescriptのallowSyntheticDefaultImportsをfalseにする。 production用とdev用のconfigをいい感じにわける node_modulesのdllを生成する。 type…
以前、東京Node学園25時限目で発表した内容を修正して書いていこうと思う。 というわけで、V8にバイトコードインタープリタ Ignition が搭載された。 このインタープリタは単純そうに見えて非常にわかりづらいので解説していく。 バイトコードインタープリタ…
typescript 2.3 rcがアナウンスされた 主な変更点は以下の通り –strictオプションの追加 以下の型チェックオプションを有効にする –noImplicitAny –strictNullChecks –noImplicitThis –alwaysStrict 以下の様に部分的にOFFにもできる { "compilerOptions": {…
全然ドキュメントがなかったので備忘録。 ClosureCompilerみたいにプロパティ名もmangleしたい。 こんなの const x = { doSomething() {return ...} doNothing() {} } x.doSomething(); x.doNothing(); const x = { a() {return ...} b() {} } x.a(); x.b();…
ES6のComputed Property Nameは非常に便利だが、トランスパイラを併用すると問題が起きがちである。 それを確認していく。 Base const SYMBOL = Symbol('foo-bar-baz'); const obj = { [SYMBOL]: 1, name: 'brn', job: 'engineer' } typescript var SYMBOL =…
表題の通り ES proposal のdecoratorをつかってメモ化のようなことをするライブラリを前に書いたので、 キレイにして、GitHubに公開した。 GitHub - brn/cache-decorator: javascript method/function cache decorator. インストール npm install cache-deco…
ふとパフォーマンスが気になったので調査した。 記憶が正しければ、callよりも遅いはず。 というわけでレッツ検証 事前準備 package.json { "name": "bench", "version": "1.0.0", "description": "", "main": "index.js", "author": "brn", "license": "MIT…
パネルディスカッション 参加者 @yosuke_furukawa @koba04 @yositosi (Togetter CEO) @janus_wel (CureApp CTO) 全体的にReactNativeはWebの技術をどう活かせるか、 ワンソース・マルチユースができるか等の話だった。 あとReactNativeの将来性とか 全体的に…
React / Redux を活用したリクルートテクノロジーズのフロントエンド開発 古川陽介 さん(@yosuke_furukawa) speakerdeck.com 以下メモ 言いたいこと フレームワークは作るものに合わせて作る リクルートのWeb トップページに検索があり、 検索するとリストビ…
V8 blogに話が出ていたが、V8のfor in構文が高速化したらしいので、 コードと共におっていこうと思う。 For In とは for (const key in object) { } このような構文でObjectのキーをイテレーションする機能。 この構文を何故高速化したかというと、Facebook…
AngularとDartの勉強会でした。 以下メモ Angular4がやってくる!?新機能ダイジェスト Asai Masahiko Angular 4がやってくる!? 新機能ダイジェスト.pdf - Google ドライブ Semantic Versioningの導入 非推奨ポリシーの導入(2つのメジャーリリースを…