JSer.info #344 - Firefox 55.0がリリースされました。
- Firefox 55 for developers - Mozilla | MDN
- Firefox 55: first desktop browser to support WebVR ★ Mozilla Hacks – the Web developer blog
ECMAScriptにおいてはES2017のSharedArrayBuffer
、現在Stage 3のObject rest/spread propertiesのサポートが行われています。
加えてrequestIdleCallback
、WebVR API、Intersection Observer APIがサポートされています。
また、既存の挙動の変更としてスクロール位置の値を浮動小数点数として返すように変更、Selection APIの仕様追従、WebRTC APIの仕様追従が行われています。
既にChrome(11~)やFireox(50~)でも行われているバックグラウンドタブにおけるsetTimeout
などのスロットルについてですが、トラッキングスクリプトに対してはさらに強い制約がかかるようになりました。
Geolocation APIとStorage API(ストレージの容量を確認するAPI)はSecure Contexts(つまりHTTPS)でのみ有効となりました。
既にChrome(50~)において、Geolocation APIはSecure Contextのみとなっています。
- Geolocation API Removed from Unsecured Origins in Chrome 50 | Web | Google Developers
- Deprecating Powerful Features on Insecure Origins - The Chromium Projects
Bootstrap 4 Beta · Bootstrapが公開されました。Bootstrap 4 alphaから2年弱程度経っています。
3.xからの変更点として、LessからSassへ移行、FlexboxとGridシステムの改善、IE8/9のサポート終了、JavaScriptプラグインの書き直しなどが行われています。
詳細な変更点については次のIssueを見るとよさそうです。
Node.js 8.3.0がリリースされました。
このバージョンからV8 6.0が使われるようになり、新しい最適化コンパイラのTurbofanが有効化されています。
そのため、既存の最適化とは異なる傾向が出るようになっています。
たとえば今まではtry/catch
を含む関数は最適化が行われませんでしたが、Turbofanでは最適化されるようになっています。また、Function#bind
も今まではArrow Functionでラップした関数に比べて遅いものでしたが、ほぼ同等の速度がでるようになっています。
コードの最適化がどのように変わっているかについては、次の記事でコード例と共に紹介されています。
- GET READY: A NEW V8 IS COMING, NODE.JS PERFORMANCE IS CHANGING.
- Get ready: A new V8 is coming, Node.js performance is changing. | nearForm
そのため、Optimization killers · petkaantonov/bluebird Wikiで紹介されているような「最適化を妨げるコード」はTurboFanが使われているかで大きく変わっています。(Wikiの内容も更新されています)
興味がある人は読んでみるといいと思います。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Release v3.1.0 · sinonjs/sinon
github.com/sinonjs/sinon/releases/tag/v3.1.0
Sinon.js 3.1.0リリース
sandboxにファクトリメソッドの追加、
sandbox.stub
のリグレッションの修正など
Release v3.5.0 · webpack/webpack
github.com/webpack/webpack/releases/tag/v3.5.0
webpack v3.5.0リリース。
Dynamic ImportにwebpackMode
のオプションを追加、require.context
にcontext modeの第4引数を追加など
Microsoft/napajs: Napa.js: Multi-threaded JavaScript runtime
Node.jsで動くマルチスレッドライブラリ。元々BingでCPU-boundな処理を扱うために作られたもの。
スレッド(Worker)をまとめたZoneがあり、Zoneに対して値を渡してそれぞれのスレッドで処理が行える
Release Notes for Safari Technology Preview Release 37 | WebKit
webkit.org/blog/7862/release-notes-for-safari-technology-preview-release-37/
Safari Technology Preview Release 37リリース。
navigator.sendBeacon
、document.elementsFromPoint
のサポート。
Promise#finally
、optional catch
bindingのサポートなど
- tc39/proposal-optional-catch-binding: proposal for ECMAScript to allow omission of the catch binding
Node v8.3.0 (Current) | Node.js
nodejs.org/en/blog/release/v8.3.0/
Node v8.3.0リリース。
Turbofanが有効化されたV8 6.0へのアップグレード、WHATWG Encodingのサポートなど
Bootstrap 4 Beta · Bootstrap
blog.getbootstrap.com/2017/08/10/bootstrap-4-beta/
Bootstrap 4βリリース。
LessからSassへ、FlexboxとGridシステムの改善、IE8/9のサポート終了、JavaScriptプラグインの書き直しなど
Firefox 55 for developers - Mozilla | MDN
developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/55
Firefox 55リリース。
Object spread/rest operator、SharedArrayBufferに対応。
WebVR、requestIdleCallback、Intersection Observer API対応。
またSelection APIの仕様追従、Geo APIなどがSecure Contextのみで利用可能になるなど
- Firefox 55.0 リリースノート
- Firefox 55: first desktop browser to support WebVR ★ Mozilla Hacks – the Web developer blog
- Dummy
アーティクル
ZEIT – Next.js 3.0
Next.js 3.0リリース。
Static Exportのサポート、Dynamic Importのサポート、HMRの対応改善など
ES Modules in Node Today! – Web Dev @ Microsoft – Medium
medium.com/web-on-the-edge/es-modules-in-node-today-32cff914e4b
Node.jsで今後サポートが予定されているES modulesを扱えるようにするrequire extension hookライブラリ。
.mjs
対応やCommonJSとの相互運用性に考慮したオプションなどを持つ
- standard-things/esm: ES modules in Node today!
- node-eps/002-es-modules.md at master · nodejs/node-eps
Passing data between Promise callbacks
2ality.com/2017/08/promise-callback-data-flow.html
Promiseチェイン間における値のやり取りのパターンについて
The Modern Javascript Tutorial
JavaScript/DOM APIのチュートリアルサイト。
それぞれの項目ごとに解説やサンプル、演習問題がある。
Introduction to Preact — a smaller, faster React alternative
blog.logrocket.com/introduction-to-preact-a-smaller-faster-react-alternative-ad5532eb6d79
Preactについての記事。
Preactとは何か、Reactとの違いや互換性(preact-compat)について。
またPreactの基本的な使い方、preact-cliを使っての開発についてなど
スライド、動画関係
Javascript Performance by mikesherov
slides.com/mikesherov/javascript-performance
パフォーマンス最適化についてのスライド。
O(n^2)
なアルゴリズムを避ける、キャッシュとメモ化、GCを避ける。
不必要なImmutableを避ける、必要ないことはしない、パフォーマンス計測の仕方などについて。
npmやwebpackなど実際のプロジェクトの例などについて
サイト、サービス、ドキュメント
Investigating Performance of Object#toString in ES2015
ponyfoo.com/articles/investigating-performance-object-prototype-to-string-es2015
V8のObject.prototype.toString()
の最適化について。
ES2015でSymbol.toStringTag
が追加され、toStringはこの実装を考慮する必要がある。(toString自体はオブジェクトの型判定によく使われている)
オブジェクトがSymbol.toStringTag
を実装しているかのフラグをMapで持っておき、持ってない場合は余計なlookupを省くようにしたという話。
元々はSpiderMonkeyでデザインされていた方法をportした内容についての解説。
zeeshanu/learn-regex: Learn regex the easy way
github.com/zeeshanu/learn-regex
正規表現について簡単にまとめられたドキュメント。
基本的な使い方やメタ文字、フラグなどについて
ソフトウェア、ツール、ライブラリ関係
masakazu-yanai/char-canvas: Draw Tool for Ascii Art.
github.com/masakazu-yanai/char-canvas
CanvasライクなAPIでアスキーアートを扱うライブラリ。
darcyclarke/rawkit: 🦊 Immediately Open Chrome DevTools when debugging Node.js apps
Chromeの立ち上げとnode --inspect
のデバッガーへの接続を自動的に行うことができるツール
JSON to TypeScript interfaces and runtime type-checkers – quicktype
JSONからTypeScript/JSON Schema/Go/C#/Elmなどの型定義/interfaceを生成することができるツール
ream/ream: 🚀 Framework for building universal Vue.js app
UniversalなVueアプリのフレームワーク。
Next.jsやNuxt.jsのディレクトリ構造などの暗黙的な規約ではなく、明示的な設定/コードによりアプリケーションを作れるようにする目的